@@ -66,10 +66,14 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
6666 krate : & str )
6767 -> P < Expr > {
6868 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+ ] ;
7074 let exprdecode = cx. expr_path ( cx. path_global ( trait_span, recurse) ) ;
7175 // 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 ) ;
7377 let blkdecoder = cx. expr_ident ( trait_span, blkarg) ;
7478
7579 return match * substr. fields {
@@ -78,7 +82,7 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
7882 Unnamed ( ref fields, _) => fields. len ( ) ,
7983 Named ( ref fields) => fields. len ( ) ,
8084 } ;
81- let read_struct_field = cx. ident_of ( "read_struct_field" ) ;
85+ let read_struct_field = cx. ident_of ( "read_struct_field" , trait_span ) ;
8286
8387 let path = cx. path_ident ( trait_span, substr. type_ident ) ;
8488 let result =
@@ -94,17 +98,17 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
9498 let result = cx. expr_ok ( trait_span, result) ;
9599 cx. expr_method_call ( trait_span,
96100 decoder,
97- cx. ident_of ( "read_struct" ) ,
101+ cx. ident_of ( "read_struct" , trait_span ) ,
98102 vec ! [ cx. expr_str( trait_span, substr. type_ident. name) ,
99103 cx. expr_usize( trait_span, nfields) ,
100104 cx. lambda1( trait_span, result, blkarg) ] )
101105 }
102106 StaticEnum ( _, ref fields) => {
103- let variant = cx. ident_of ( "i" ) ;
107+ let variant = cx. ident_of ( "i" , trait_span ) ;
104108
105109 let mut arms = Vec :: with_capacity ( fields. len ( ) + 1 ) ;
106110 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 ) ;
108112
109113 for ( i, & ( ident, v_span, ref parts) ) in fields. iter ( ) . enumerate ( ) {
110114 variants. push ( cx. expr_str ( v_span, ident. name ) ) ;
@@ -132,11 +136,11 @@ fn decodable_substructure(cx: &mut ExtCtxt<'_>,
132136 let variant_vec = cx. expr_addr_of ( trait_span, variant_vec) ;
133137 let result = cx. expr_method_call ( trait_span,
134138 blkdecoder,
135- cx. ident_of ( "read_enum_variant" ) ,
139+ cx. ident_of ( "read_enum_variant" , trait_span ) ,
136140 vec ! [ variant_vec, lambda] ) ;
137141 cx. expr_method_call ( trait_span,
138142 decoder,
139- cx. ident_of ( "read_enum" ) ,
143+ cx. ident_of ( "read_enum" , trait_span ) ,
140144 vec ! [ cx. expr_str( trait_span, substr. type_ident. name) ,
141145 cx. lambda1( trait_span, result, blkarg) ] )
142146 }
0 commit comments