Skip to content

Commit ca98712

Browse files
committed
Auto merge of #81411 - Skgland:deprecate_expr_method_call, r=varkor
Remove usages of `expr_method_call` in derive(Ord,PartialOrd,RustcEncode,RustcDecode) Preparing for deprecation of `expr_method_call` (#81295), by removing the remaining usages not covered by (#81294). I am not sure about the changes to `derive(RustcEncode,RustcDecode)`
2 parents 87bacf2 + 0375022 commit ca98712

File tree

5 files changed

+76
-43
lines changed

5 files changed

+76
-43
lines changed

compiler/rustc_builtin_macros/src/deriving/cmp/ord.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ pub fn ordering_collapsed(
4747
span: Span,
4848
self_arg_tags: &[Ident],
4949
) -> P<ast::Expr> {
50-
let lft = cx.expr_ident(span, self_arg_tags[0]);
50+
let lft = cx.expr_addr_of(span, cx.expr_ident(span, self_arg_tags[0]));
5151
let rgt = cx.expr_addr_of(span, cx.expr_ident(span, self_arg_tags[1]));
52-
cx.expr_method_call(span, lft, Ident::new(sym::cmp, span), vec![rgt])
52+
let fn_cmp_path = cx.std_path(&[sym::cmp, sym::Ord, sym::cmp]);
53+
cx.expr_call_global(span, fn_cmp_path, vec![lft, rgt])
5354
}
5455

5556
pub fn cs_cmp(cx: &mut ExtCtxt<'_>, span: Span, substr: &Substructure<'_>) -> P<Expr> {

compiler/rustc_builtin_macros/src/deriving/cmp/partial_ord.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,11 @@ pub fn cs_partial_cmp(cx: &mut ExtCtxt<'_>, span: Span, substr: &Substructure<'_
107107
if self_args.len() != 2 {
108108
cx.span_bug(span, "not exactly 2 arguments in `derive(PartialOrd)`")
109109
} else {
110-
let lft = cx.expr_ident(span, tag_tuple[0]);
110+
let lft = cx.expr_addr_of(span, cx.expr_ident(span, tag_tuple[0]));
111111
let rgt = cx.expr_addr_of(span, cx.expr_ident(span, tag_tuple[1]));
112-
cx.expr_method_call(span, lft, Ident::new(sym::partial_cmp, span), vec![rgt])
112+
let fn_partial_cmp_path =
113+
cx.std_path(&[sym::cmp, sym::PartialOrd, sym::partial_cmp]);
114+
cx.expr_call_global(span, fn_partial_cmp_path, vec![lft, rgt])
113115
}
114116
}),
115117
cx,

compiler/rustc_builtin_macros/src/deriving/decodable.rs

+28-19
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,19 @@ fn decodable_substructure(
9191
Unnamed(ref fields, _) => fields.len(),
9292
Named(ref fields) => fields.len(),
9393
};
94-
let read_struct_field = Ident::new(sym::read_struct_field, trait_span);
94+
let fn_read_struct_field_path: Vec<_> =
95+
cx.def_site_path(&[sym::rustc_serialize, sym::Decoder, sym::read_struct_field]);
9596

9697
let path = cx.path_ident(trait_span, substr.type_ident);
9798
let result =
9899
decode_static_fields(cx, trait_span, path, summary, |cx, span, name, field| {
99100
cx.expr_try(
100101
span,
101-
cx.expr_method_call(
102+
cx.expr_call_global(
102103
span,
103-
blkdecoder.clone(),
104-
read_struct_field,
104+
fn_read_struct_field_path.clone(),
105105
vec![
106+
blkdecoder.clone(),
106107
cx.expr_str(span, name),
107108
cx.expr_usize(span, field),
108109
exprdecode.clone(),
@@ -111,11 +112,14 @@ fn decodable_substructure(
111112
)
112113
});
113114
let result = cx.expr_ok(trait_span, result);
114-
cx.expr_method_call(
115+
let fn_read_struct_path: Vec<_> =
116+
cx.def_site_path(&[sym::rustc_serialize, sym::Decoder, sym::read_struct]);
117+
118+
cx.expr_call_global(
115119
trait_span,
116-
decoder,
117-
Ident::new(sym::read_struct, trait_span),
120+
fn_read_struct_path,
118121
vec![
122+
decoder,
119123
cx.expr_str(trait_span, substr.type_ident.name),
120124
cx.expr_usize(trait_span, nfields),
121125
cx.lambda1(trait_span, result, blkarg),
@@ -127,7 +131,9 @@ fn decodable_substructure(
127131

128132
let mut arms = Vec::with_capacity(fields.len() + 1);
129133
let mut variants = Vec::with_capacity(fields.len());
130-
let rvariant_arg = Ident::new(sym::read_enum_variant_arg, trait_span);
134+
135+
let fn_read_enum_variant_arg_path: Vec<_> =
136+
cx.def_site_path(&[sym::rustc_serialize, sym::Decoder, sym::read_enum_variant_arg]);
131137

132138
for (i, &(ident, v_span, ref parts)) in fields.iter().enumerate() {
133139
variants.push(cx.expr_str(v_span, ident.name));
@@ -138,11 +144,10 @@ fn decodable_substructure(
138144
let idx = cx.expr_usize(span, field);
139145
cx.expr_try(
140146
span,
141-
cx.expr_method_call(
147+
cx.expr_call_global(
142148
span,
143-
blkdecoder.clone(),
144-
rvariant_arg,
145-
vec![idx, exprdecode.clone()],
149+
fn_read_enum_variant_arg_path.clone(),
150+
vec![blkdecoder.clone(), idx, exprdecode.clone()],
146151
),
147152
)
148153
});
@@ -159,17 +164,21 @@ fn decodable_substructure(
159164
let lambda = cx.lambda(trait_span, vec![blkarg, variant], result);
160165
let variant_vec = cx.expr_vec(trait_span, variants);
161166
let variant_vec = cx.expr_addr_of(trait_span, variant_vec);
162-
let result = cx.expr_method_call(
167+
let fn_read_enum_variant_path: Vec<_> =
168+
cx.def_site_path(&[sym::rustc_serialize, sym::Decoder, sym::read_enum_variant]);
169+
let result = cx.expr_call_global(
163170
trait_span,
164-
blkdecoder,
165-
Ident::new(sym::read_enum_variant, trait_span),
166-
vec![variant_vec, lambda],
171+
fn_read_enum_variant_path,
172+
vec![blkdecoder, variant_vec, lambda],
167173
);
168-
cx.expr_method_call(
174+
let fn_read_enum_path: Vec<_> =
175+
cx.def_site_path(&[sym::rustc_serialize, sym::Decoder, sym::read_enum]);
176+
177+
cx.expr_call_global(
169178
trait_span,
170-
decoder,
171-
Ident::new(sym::read_enum, trait_span),
179+
fn_read_enum_path,
172180
vec![
181+
decoder,
173182
cx.expr_str(trait_span, substr.type_ident.name),
174183
cx.lambda1(trait_span, result, blkarg),
175184
],

compiler/rustc_builtin_macros/src/deriving/encodable.rs

+37-20
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ fn encodable_substructure(
179179

180180
match *substr.fields {
181181
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]);
183184
let mut stmts = Vec::new();
184185
for (i, &FieldInfo { name, ref self_, span, .. }) in fields.iter().enumerate() {
185186
let name = match name {
@@ -189,11 +190,15 @@ fn encodable_substructure(
189190
let self_ref = cx.expr_addr_of(span, self_.clone());
190191
let enc = cx.expr_call(span, fn_path.clone(), vec![self_ref, blkencoder.clone()]);
191192
let lambda = cx.lambda1(span, enc, blkarg);
192-
let call = cx.expr_method_call(
193+
let call = cx.expr_call_global(
193194
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+
],
197202
);
198203

199204
// last call doesn't need a try!
@@ -216,11 +221,14 @@ fn encodable_substructure(
216221
cx.lambda_stmts_1(trait_span, stmts, blkarg)
217222
};
218223

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(
220228
trait_span,
221-
encoder,
222-
Ident::new(sym::emit_struct, trait_span),
229+
fn_emit_struct_path,
223230
vec![
231+
encoder,
224232
cx.expr_str(trait_span, substr.type_ident.name),
225233
cx.expr_usize(trait_span, fields.len()),
226234
blk,
@@ -235,7 +243,10 @@ fn encodable_substructure(
235243
// actually exist.
236244
let me = cx.stmt_let(trait_span, false, blkarg, encoder);
237245
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+
239250
let mut stmts = Vec::new();
240251
if !fields.is_empty() {
241252
let last = fields.len() - 1;
@@ -244,11 +255,11 @@ fn encodable_substructure(
244255
let enc =
245256
cx.expr_call(span, fn_path.clone(), vec![self_ref, blkencoder.clone()]);
246257
let lambda = cx.lambda1(span, enc, blkarg);
247-
let call = cx.expr_method_call(
258+
259+
let call = cx.expr_call_global(
248260
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],
252263
);
253264
let call = if i != last {
254265
cx.expr_try(span, call)
@@ -265,23 +276,29 @@ fn encodable_substructure(
265276

266277
let blk = cx.lambda_stmts_1(trait_span, stmts, blkarg);
267278
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(
269284
trait_span,
270-
blkencoder,
271-
Ident::new(sym::emit_enum_variant, trait_span),
285+
fn_emit_enum_variant_path,
272286
vec![
287+
blkencoder,
273288
name,
274289
cx.expr_usize(trait_span, idx),
275290
cx.expr_usize(trait_span, fields.len()),
276291
blk,
277292
],
278293
);
294+
279295
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(
281299
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],
285302
);
286303
cx.expr_block(cx.block(trait_span, vec![me, cx.stmt_expr(ret)]))
287304
}

compiler/rustc_expand/src/base.rs

+4
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,10 @@ impl<'a> ExtCtxt<'a> {
10431043
.chain(components.iter().map(|&s| Ident::with_dummy_span(s)))
10441044
.collect()
10451045
}
1046+
pub fn def_site_path(&self, components: &[Symbol]) -> Vec<Ident> {
1047+
let def_site = self.with_def_site_ctxt(DUMMY_SP);
1048+
components.iter().map(|&s| Ident::new(s, def_site)).collect()
1049+
}
10461050

10471051
pub fn check_unused_macros(&mut self) {
10481052
self.resolver.check_unused_macros();

0 commit comments

Comments
 (0)