@@ -179,7 +179,8 @@ fn encodable_substructure(
179
179
180
180
match * substr. fields {
181
181
Struct ( _, ref fields) => {
182
- let emit_struct_field = Ident :: new ( sym:: emit_struct_field, trait_span) ;
182
+ let fn_emit_struct_field_path =
183
+ cx. def_site_path ( & [ sym:: rustc_serialize, sym:: Encoder , sym:: emit_struct_field] ) ;
183
184
let mut stmts = Vec :: new ( ) ;
184
185
for ( i, & FieldInfo { name, ref self_, span, .. } ) in fields. iter ( ) . enumerate ( ) {
185
186
let name = match name {
@@ -189,11 +190,15 @@ fn encodable_substructure(
189
190
let self_ref = cx. expr_addr_of ( span, self_. clone ( ) ) ;
190
191
let enc = cx. expr_call ( span, fn_path. clone ( ) , vec ! [ self_ref, blkencoder. clone( ) ] ) ;
191
192
let lambda = cx. lambda1 ( span, enc, blkarg) ;
192
- let call = cx. expr_method_call (
193
+ let call = cx. expr_call_global (
193
194
span,
194
- blkencoder. clone ( ) ,
195
- emit_struct_field,
196
- vec ! [ cx. expr_str( span, name) , cx. expr_usize( span, i) , lambda] ,
195
+ fn_emit_struct_field_path. clone ( ) ,
196
+ vec ! [
197
+ blkencoder. clone( ) ,
198
+ cx. expr_str( span, name) ,
199
+ cx. expr_usize( span, i) ,
200
+ lambda,
201
+ ] ,
197
202
) ;
198
203
199
204
// last call doesn't need a try!
@@ -216,11 +221,14 @@ fn encodable_substructure(
216
221
cx. lambda_stmts_1 ( trait_span, stmts, blkarg)
217
222
} ;
218
223
219
- cx. expr_method_call (
224
+ let fn_emit_struct_path =
225
+ cx. def_site_path ( & [ sym:: rustc_serialize, sym:: Encoder , sym:: emit_struct] ) ;
226
+
227
+ cx. expr_call_global (
220
228
trait_span,
221
- encoder,
222
- Ident :: new ( sym:: emit_struct, trait_span) ,
229
+ fn_emit_struct_path,
223
230
vec ! [
231
+ encoder,
224
232
cx. expr_str( trait_span, substr. type_ident. name) ,
225
233
cx. expr_usize( trait_span, fields. len( ) ) ,
226
234
blk,
@@ -235,7 +243,10 @@ fn encodable_substructure(
235
243
// actually exist.
236
244
let me = cx. stmt_let ( trait_span, false , blkarg, encoder) ;
237
245
let encoder = cx. expr_ident ( trait_span, blkarg) ;
238
- let emit_variant_arg = Ident :: new ( sym:: emit_enum_variant_arg, trait_span) ;
246
+
247
+ let fn_emit_enum_variant_arg_path: Vec < _ > =
248
+ cx. def_site_path ( & [ sym:: rustc_serialize, sym:: Encoder , sym:: emit_enum_variant_arg] ) ;
249
+
239
250
let mut stmts = Vec :: new ( ) ;
240
251
if !fields. is_empty ( ) {
241
252
let last = fields. len ( ) - 1 ;
@@ -244,11 +255,11 @@ fn encodable_substructure(
244
255
let enc =
245
256
cx. expr_call ( span, fn_path. clone ( ) , vec ! [ self_ref, blkencoder. clone( ) ] ) ;
246
257
let lambda = cx. lambda1 ( span, enc, blkarg) ;
247
- let call = cx. expr_method_call (
258
+
259
+ let call = cx. expr_call_global (
248
260
span,
249
- blkencoder. clone ( ) ,
250
- emit_variant_arg,
251
- vec ! [ cx. expr_usize( span, i) , lambda] ,
261
+ fn_emit_enum_variant_arg_path. clone ( ) ,
262
+ vec ! [ blkencoder. clone( ) , cx. expr_usize( span, i) , lambda] ,
252
263
) ;
253
264
let call = if i != last {
254
265
cx. expr_try ( span, call)
@@ -265,23 +276,29 @@ fn encodable_substructure(
265
276
266
277
let blk = cx. lambda_stmts_1 ( trait_span, stmts, blkarg) ;
267
278
let name = cx. expr_str ( trait_span, variant. ident . name ) ;
268
- let call = cx. expr_method_call (
279
+
280
+ let fn_emit_enum_variant_path: Vec < _ > =
281
+ cx. def_site_path ( & [ sym:: rustc_serialize, sym:: Encoder , sym:: emit_enum_variant] ) ;
282
+
283
+ let call = cx. expr_call_global (
269
284
trait_span,
270
- blkencoder,
271
- Ident :: new ( sym:: emit_enum_variant, trait_span) ,
285
+ fn_emit_enum_variant_path,
272
286
vec ! [
287
+ blkencoder,
273
288
name,
274
289
cx. expr_usize( trait_span, idx) ,
275
290
cx. expr_usize( trait_span, fields. len( ) ) ,
276
291
blk,
277
292
] ,
278
293
) ;
294
+
279
295
let blk = cx. lambda1 ( trait_span, call, blkarg) ;
280
- let ret = cx. expr_method_call (
296
+ let fn_emit_enum_path: Vec < _ > =
297
+ cx. def_site_path ( & [ sym:: rustc_serialize, sym:: Encoder , sym:: emit_enum] ) ;
298
+ let ret = cx. expr_call_global (
281
299
trait_span,
282
- encoder,
283
- Ident :: new ( sym:: emit_enum, trait_span) ,
284
- vec ! [ cx. expr_str( trait_span, substr. type_ident. name) , blk] ,
300
+ fn_emit_enum_path,
301
+ vec ! [ encoder, cx. expr_str( trait_span, substr. type_ident. name) , blk] ,
285
302
) ;
286
303
cx. expr_block ( cx. block ( trait_span, vec ! [ me, cx. stmt_expr( ret) ] ) )
287
304
}
0 commit comments