Skip to content

Commit 2ad1964

Browse files
committed
rustc_typeck: Autoderef::finalize is always called with one &hir::Expr.
1 parent e56b119 commit 2ad1964

File tree

4 files changed

+9
-11
lines changed

4 files changed

+9
-11
lines changed

src/librustc_typeck/check/autoderef.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,9 @@ impl<'a, 'gcx, 'tcx> Autoderef<'a, 'gcx, 'tcx> {
149149
self.fcx.resolve_type_vars_if_possible(&self.cur_ty)
150150
}
151151

152-
pub fn finalize<E>(self, pref: LvaluePreference, exprs: &[E])
153-
where E: AsCoercionSite
154-
{
152+
pub fn finalize(self, pref: LvaluePreference, expr: &hir::Expr) {
155153
let fcx = self.fcx;
156-
fcx.register_infer_ok_obligations(self.finalize_as_infer_ok(pref, exprs));
154+
fcx.register_infer_ok_obligations(self.finalize_as_infer_ok(pref, &[expr]));
157155
}
158156

159157
pub fn finalize_as_infer_ok<E>(self, pref: LvaluePreference, exprs: &[E])

src/librustc_typeck/check/callee.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
5555
})
5656
.next();
5757
let callee_ty = autoderef.unambiguous_final_ty();
58-
autoderef.finalize(LvaluePreference::NoPreference, &[callee_expr]);
58+
autoderef.finalize(LvaluePreference::NoPreference, callee_expr);
5959

6060
let output = match result {
6161
None => {

src/librustc_typeck/check/method/confirm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ impl<'a, 'gcx, 'tcx> ConfirmContext<'a, 'gcx, 'tcx> {
137137
assert_eq!(n, pick.autoderefs);
138138

139139
autoderef.unambiguous_final_ty();
140-
autoderef.finalize(LvaluePreference::NoPreference, &[self.self_expr]);
140+
autoderef.finalize(LvaluePreference::NoPreference, self.self_expr);
141141

142142
let target = pick.unsize.unwrap_or(autoderefd_ty);
143143
let target = target.adjust_for_autoref(self.tcx, autoref);
@@ -445,7 +445,7 @@ impl<'a, 'gcx, 'tcx> ConfirmContext<'a, 'gcx, 'tcx> {
445445
"expr was deref-able {} times but now isn't?",
446446
autoderefs);
447447
});
448-
autoderef.finalize(PreferMutLvalue, &[expr]);
448+
autoderef.finalize(PreferMutLvalue, expr);
449449
}
450450
}
451451
Some(_) | None => {}

src/librustc_typeck/check/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2074,12 +2074,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
20742074
expr, base_expr, adj_ty, autoderefs,
20752075
false, lvalue_pref, idx_ty)
20762076
{
2077-
autoderef.finalize(lvalue_pref, &[base_expr]);
2077+
autoderef.finalize(lvalue_pref, base_expr);
20782078
return Some(final_mt);
20792079
}
20802080

20812081
if let ty::TyArray(element_ty, _) = adj_ty.sty {
2082-
autoderef.finalize(lvalue_pref, &[base_expr]);
2082+
autoderef.finalize(lvalue_pref, base_expr);
20832083
let adjusted_ty = self.tcx.mk_slice(element_ty);
20842084
return self.try_index_step(
20852085
MethodCall::expr(expr.id), expr, base_expr,
@@ -2757,7 +2757,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
27572757
if let Some(field) = base_def.struct_variant().find_field_named(field.node) {
27582758
let field_ty = self.field_ty(expr.span, field, substs);
27592759
if self.tcx.vis_is_accessible_from(field.vis, self.body_id) {
2760-
autoderef.finalize(lvalue_pref, &[base]);
2760+
autoderef.finalize(lvalue_pref, base);
27612761
self.apply_autoderef_adjustment(base.id, autoderefs, base_t);
27622762

27632763
self.tcx.check_stability(field.did, expr.id, expr.span);
@@ -2881,7 +2881,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
28812881
};
28822882

28832883
if let Some(field_ty) = field {
2884-
autoderef.finalize(lvalue_pref, &[base]);
2884+
autoderef.finalize(lvalue_pref, base);
28852885
self.apply_autoderef_adjustment(base.id, autoderefs, base_t);
28862886
return field_ty;
28872887
}

0 commit comments

Comments
 (0)