@@ -4,7 +4,7 @@ use crate::scan_expr::scan_expr;
44use crate :: unraw:: { IdentUnraw , MemberUnraw } ;
55use proc_macro2:: { Delimiter , TokenStream , TokenTree } ;
66use quote:: { format_ident, quote, quote_spanned} ;
7- use std:: collections:: { BTreeSet , HashMap , HashSet } ;
7+ use std:: collections:: { BTreeSet , HashMap } ;
88use std:: iter;
99use syn:: ext:: IdentExt ;
1010use syn:: parse:: discouraged:: Speculative ;
@@ -34,7 +34,7 @@ impl Display<'_> {
3434 let mut infinite_recursive = false ;
3535 let mut implied_bounds = BTreeSet :: new ( ) ;
3636 let mut bindings = Vec :: new ( ) ;
37- let mut macro_named_args = HashSet :: new ( ) ;
37+ let mut macro_named_args = BTreeSet :: new ( ) ;
3838
3939 self . requires_fmt_machinery = self . requires_fmt_machinery || fmt. contains ( '}' ) ;
4040
@@ -112,15 +112,22 @@ impl Display<'_> {
112112 out += & member. to_string ( ) ;
113113 continue ;
114114 }
115+ let formatvar_prefix = if bonus_display {
116+ "__display"
117+ } else {
118+ "__field"
119+ } ;
115120 let mut formatvar = IdentUnraw :: new ( match & member {
116- MemberUnraw :: Unnamed ( index) => format_ident ! ( "__field{}" , index) ,
117- MemberUnraw :: Named ( ident) => format_ident ! ( "__field_{}" , ident. to_string( ) ) ,
121+ MemberUnraw :: Unnamed ( index) => format_ident ! ( "{}{}" , formatvar_prefix, index) ,
122+ MemberUnraw :: Named ( ident) => {
123+ format_ident ! ( "{}_{}" , formatvar_prefix, ident. to_string( ) )
124+ }
118125 } ) ;
119126 while user_named_args. contains ( & formatvar) {
120127 formatvar = IdentUnraw :: new ( format_ident ! ( "_{}" , formatvar. to_string( ) ) ) ;
121128 }
122129 out += & formatvar. to_string ( ) ;
123- if !macro_named_args. insert ( member . clone ( ) ) {
130+ if !macro_named_args. insert ( formatvar . clone ( ) ) {
124131 // Already added to bindings by a previous use.
125132 continue ;
126133 }
0 commit comments