@@ -107,12 +107,14 @@ impl Display<'_> {
107
107
}
108
108
} ;
109
109
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) ) ;
116
118
let formatvar_prefix = if bonus_display {
117
119
"__display"
118
120
} else if bound == Trait :: Pointer {
@@ -129,15 +131,17 @@ impl Display<'_> {
129
131
while user_named_args. contains ( & formatvar) {
130
132
formatvar = IdentUnraw :: new ( format_ident ! ( "_{}" , formatvar. to_string( ) ) ) ;
131
133
}
134
+ formatvar. set_span ( span) ;
132
135
out += & formatvar. to_string ( ) ;
133
136
if !macro_named_args. insert ( formatvar. clone ( ) ) {
134
137
// Already added to bindings by a previous use.
135
138
continue ;
136
139
}
137
- let binding_value = match & member {
140
+ let mut binding_value = match & member {
138
141
MemberUnraw :: Unnamed ( index) => format_ident ! ( "_{}" , index) ,
139
142
MemberUnraw :: Named ( ident) => ident. to_local ( ) ,
140
143
} ;
144
+ binding_value. set_span ( span. resolved_at ( fields[ field] . member . span ( ) ) ) ;
141
145
let wrapped_binding_value = if bonus_display {
142
146
quote_spanned ! ( span=> #binding_value. as_display( ) )
143
147
} else if bound == Trait :: Pointer {
0 commit comments