@@ -66,10 +66,14 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
66
66
krate : & str )
67
67
-> P < Expr > {
68
68
let decoder = substr. nonself_args [ 0 ] . clone ( ) ;
69
- let recurse = vec ! [ cx. ident_of( krate) , cx. ident_of( "Decodable" ) , cx. ident_of( "decode" ) ] ;
69
+ let recurse = vec ! [
70
+ cx. ident_of( krate, trait_span) ,
71
+ cx. ident_of( "Decodable" , trait_span) ,
72
+ cx. ident_of( "decode" , trait_span) ,
73
+ ] ;
70
74
let exprdecode = cx. expr_path ( cx. path_global ( trait_span, recurse) ) ;
71
75
// throw an underscore in front to suppress unused variable warnings
72
- let blkarg = cx. ident_of ( "_d" ) ;
76
+ let blkarg = cx. ident_of ( "_d" , trait_span ) ;
73
77
let blkdecoder = cx. expr_ident ( trait_span, blkarg) ;
74
78
75
79
return match * substr. fields {
@@ -78,7 +82,7 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
78
82
Unnamed ( ref fields, _) => fields. len ( ) ,
79
83
Named ( ref fields) => fields. len ( ) ,
80
84
} ;
81
- let read_struct_field = cx. ident_of ( "read_struct_field" ) ;
85
+ let read_struct_field = cx. ident_of ( "read_struct_field" , trait_span ) ;
82
86
83
87
let path = cx. path_ident ( trait_span, substr. type_ident ) ;
84
88
let result =
@@ -94,17 +98,17 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
94
98
let result = cx. expr_ok ( trait_span, result) ;
95
99
cx. expr_method_call ( trait_span,
96
100
decoder,
97
- cx. ident_of ( "read_struct" ) ,
101
+ cx. ident_of ( "read_struct" , trait_span ) ,
98
102
vec ! [ cx. expr_str( trait_span, substr. type_ident. name) ,
99
103
cx. expr_usize( trait_span, nfields) ,
100
104
cx. lambda1( trait_span, result, blkarg) ] )
101
105
}
102
106
StaticEnum ( _, ref fields) => {
103
- let variant = cx. ident_of ( "i" ) ;
107
+ let variant = cx. ident_of ( "i" , trait_span ) ;
104
108
105
109
let mut arms = Vec :: with_capacity ( fields. len ( ) + 1 ) ;
106
110
let mut variants = Vec :: with_capacity ( fields. len ( ) ) ;
107
- let rvariant_arg = cx. ident_of ( "read_enum_variant_arg" ) ;
111
+ let rvariant_arg = cx. ident_of ( "read_enum_variant_arg" , trait_span ) ;
108
112
109
113
for ( i, & ( ident, v_span, ref parts) ) in fields. iter ( ) . enumerate ( ) {
110
114
variants. push ( cx. expr_str ( v_span, ident. name ) ) ;
@@ -132,11 +136,11 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
132
136
let variant_vec = cx. expr_addr_of ( trait_span, variant_vec) ;
133
137
let result = cx. expr_method_call ( trait_span,
134
138
blkdecoder,
135
- cx. ident_of ( "read_enum_variant" ) ,
139
+ cx. ident_of ( "read_enum_variant" , trait_span ) ,
136
140
vec ! [ variant_vec, lambda] ) ;
137
141
cx. expr_method_call ( trait_span,
138
142
decoder,
139
- cx. ident_of ( "read_enum" ) ,
143
+ cx. ident_of ( "read_enum" , trait_span ) ,
140
144
vec ! [ cx. expr_str( trait_span, substr. type_ident. name) ,
141
145
cx. lambda1( trait_span, result, blkarg) ] )
142
146
}
0 commit comments