about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2017-04-16 06:25:18 +0300
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2017-04-16 06:25:18 +0300
commitcd64ff943889b1cda1029a4a0d906d934a47abeb (patch)
tree235c5f48f76597c9f3f575081d06fda78ee2696e
parent3725cab5ac1cb6a32b59b7731ce1d6e114c0ae00 (diff)
downloadrust-cd64ff943889b1cda1029a4a0d906d934a47abeb.tar.gz
rust-cd64ff943889b1cda1029a4a0d906d934a47abeb.zip
rustc_typeck: fix binops needing more type informations to coerce.
-rw-r--r--src/librustc_typeck/check/op.rs2
-rw-r--r--src/test/run-pass/coerce-overloaded-autoderef.rs4
2 files changed, 6 insertions, 0 deletions
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<u8>) {
     use_slice(&&&mut &&&v);
 }
 
+fn use_op_rhs(s: &mut String) {
+    *s += {&String::from(" ")};
+}
+
 pub fn main() {}