From 8a77dea3ae2f711c7f39a412b87ef99f60c9631b Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Fri, 8 Nov 2024 13:11:46 -0500 Subject: [PATCH] Parse trait bound before deciding name for local binding --- impl/src/fmt.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/impl/src/fmt.rs b/impl/src/fmt.rs index 69997b2..77b0dee 100644 --- a/impl/src/fmt.rs +++ b/impl/src/fmt.rs @@ -90,15 +90,6 @@ impl Display<'_> { } _ => continue, }; - let mut formatvar = IdentUnraw::new(match &member { - MemberUnraw::Unnamed(index) => format_ident!("__field{}", index), - MemberUnraw::Named(ident) => format_ident!("__field_{}", ident.to_string()), - }); - while user_named_args.contains(&formatvar) { - formatvar = IdentUnraw::new(format_ident!("_{}", formatvar.to_string())); - } - out += &formatvar.to_string(); - let local = formatvar.to_local(); let mut binding_value = ToTokens::into_token_stream(match &member { MemberUnraw::Unnamed(index) => format_ident!("_{}", index), MemberUnraw::Named(ident) => ident.to_local(), @@ -128,6 +119,15 @@ impl Display<'_> { if let Some(&field) = member_index.get(&member) { implied_bounds.insert((field, bound)); } + let mut formatvar = IdentUnraw::new(match &member { + MemberUnraw::Unnamed(index) => format_ident!("__field{}", index), + MemberUnraw::Named(ident) => format_ident!("__field_{}", ident.to_string()), + }); + while user_named_args.contains(&formatvar) { + formatvar = IdentUnraw::new(format_ident!("_{}", formatvar.to_string())); + } + out += &formatvar.to_string(); + let local = formatvar.to_local(); infinite_recursive |= member == *"self" && bound == Trait::Display; if macro_named_args.insert(member) { bindings.push((local, binding_value));