Skip to content

Commit 2585669

Browse files
committed
More robust scanning for fmt argument expressions
1 parent c005055 commit 2585669

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

impl/src/fmt.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::ast::Field;
22
use crate::attr::{Display, Trait};
3+
use crate::scan_expr::scan_expr;
34
use proc_macro2::TokenTree;
45
use quote::{format_ident, quote_spanned};
56
use std::collections::{BTreeSet as Set, HashMap as Map};
@@ -121,14 +122,16 @@ fn explicit_named_args(input: ParseStream) -> Result<Set<Ident>> {
121122
let mut named_args = Set::new();
122123

123124
while !input.is_empty() {
124-
if input.peek(Token![,]) && input.peek2(Ident::peek_any) && input.peek3(Token![=]) {
125-
input.parse::<Token![,]>()?;
125+
input.parse::<Token![,]>()?;
126+
if input.is_empty() {
127+
break;
128+
}
129+
if input.peek(Ident::peek_any) && input.peek2(Token![=]) && !input.peek2(Token![==]) {
126130
let ident = input.call(Ident::parse_any)?;
127131
input.parse::<Token![=]>()?;
128132
named_args.insert(ident);
129-
} else {
130-
input.parse::<TokenTree>()?;
131133
}
134+
scan_expr(input)?;
132135
}
133136

134137
Ok(named_args)

0 commit comments

Comments
 (0)