From cd64ff943889b1cda1029a4a0d906d934a47abeb Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Sun, 16 Apr 2017 06:25:18 +0300 Subject: [PATCH] rustc_typeck: fix binops needing more type informations to coerce. --- src/librustc_typeck/check/op.rs | 2 ++ src/test/run-pass/coerce-overloaded-autoderef.rs | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/librustc_typeck/check/op.rs b/src/librustc_typeck/check/op.rs index 5b174aaf895..42296006b79 100644 --- a/src/librustc_typeck/check/op.rs +++ b/src/librustc_typeck/check/op.rs @@ -411,6 +411,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { match method { Some(ok) => { let method = self.register_infer_ok_obligations(ok); + self.select_obligations_where_possible(); + let method_ty = method.ty; // HACK(eddyb) Fully qualified path to work around a resolve bug. diff --git a/src/test/run-pass/coerce-overloaded-autoderef.rs b/src/test/run-pass/coerce-overloaded-autoderef.rs index a053311a040..091e29dd18a 100644 --- a/src/test/run-pass/coerce-overloaded-autoderef.rs +++ b/src/test/run-pass/coerce-overloaded-autoderef.rs @@ -68,4 +68,8 @@ fn use_vec_ref(v: &Vec) { use_slice(&&&mut &&&v); } +fn use_op_rhs(s: &mut String) { + *s += {&String::from(" ")}; +} + pub fn main() {}