@@ -107,12 +107,14 @@ impl Display<'_> {
107107 }
108108 } ;
109109 infinite_recursive |= member == * "self" && bound == Trait :: Display ;
110- if let Some ( & field) = member_index. get ( & member) {
111- implied_bounds. insert ( ( field, bound) ) ;
112- } else {
113- out += & member. to_string ( ) ;
114- continue ;
115- }
110+ let field = match member_index. get ( & member) {
111+ Some ( & field) => field,
112+ None => {
113+ out += & member. to_string ( ) ;
114+ continue ;
115+ }
116+ } ;
117+ implied_bounds. insert ( ( field, bound) ) ;
116118 let formatvar_prefix = if bonus_display {
117119 "__display"
118120 } else if bound == Trait :: Pointer {
@@ -129,15 +131,17 @@ impl Display<'_> {
129131 while user_named_args. contains ( & formatvar) {
130132 formatvar = IdentUnraw :: new ( format_ident ! ( "_{}" , formatvar. to_string( ) ) ) ;
131133 }
134+ formatvar. set_span ( span) ;
132135 out += & formatvar. to_string ( ) ;
133136 if !macro_named_args. insert ( formatvar. clone ( ) ) {
134137 // Already added to bindings by a previous use.
135138 continue ;
136139 }
137- let binding_value = match & member {
140+ let mut binding_value = match & member {
138141 MemberUnraw :: Unnamed ( index) => format_ident ! ( "_{}" , index) ,
139142 MemberUnraw :: Named ( ident) => ident. to_local ( ) ,
140143 } ;
144+ binding_value. set_span ( span. resolved_at ( fields[ field] . member . span ( ) ) ) ;
141145 let wrapped_binding_value = if bonus_display {
142146 quote_spanned ! ( span=> #binding_value. as_display( ) )
143147 } else if bound == Trait :: Pointer {
0 commit comments