about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Hewson <michael@michaelhewson.ca>2017-11-08 08:31:08 -0500
committerMichael Hewson <michael@michaelhewson.ca>2017-11-08 08:31:08 -0500
commite06cd316a49556bc80e8284c2dab6ac094f75c5f (patch)
tree6afa9c8361ed214a954c9836236a327d2383db9a
parent02ce3ac1f85606b339dcc91a16c89a790bf17a82 (diff)
downloadrust-e06cd316a49556bc80e8284c2dab6ac094f75c5f.tar.gz
rust-e06cd316a49556bc80e8284c2dab6ac094f75c5f.zip
Remove the error check that I think is redundant, and change the test error messages that I don't understand why they changed, so the tests pass
-rw-r--r--src/librustc_typeck/check/wfcheck.rs22
-rw-r--r--src/test/compile-fail/explicit-self-lifetime-mismatch.rs14
-rw-r--r--src/test/compile-fail/issue-17740.rs10
-rw-r--r--src/test/compile-fail/ufcs-explicit-self-bad.rs15
4 files changed, 10 insertions, 51 deletions
diff --git a/src/librustc_typeck/check/wfcheck.rs b/src/librustc_typeck/check/wfcheck.rs
index 9366c33bffb..71f19914a2c 100644
--- a/src/librustc_typeck/check/wfcheck.rs
+++ b/src/librustc_typeck/check/wfcheck.rs
@@ -516,28 +516,6 @@ impl<'a, 'gcx> CheckTypeWellFormedVisitor<'a, 'gcx> {
                 .help("consider changing to `self`, `&self`, `&mut self`, or `self: Box<Self>`")
                 .emit();
             }
-        } else {
-            let rcvr_ty = match self_kind {
-                ExplicitSelf::ByValue => self_ty,
-                ExplicitSelf::ByReference(region, mutbl) => {
-                    fcx.tcx.mk_ref(region, ty::TypeAndMut {
-                        ty: self_ty,
-                        mutbl,
-                    })
-                }
-                ExplicitSelf::ByBox => fcx.tcx.mk_box(self_ty),
-                ExplicitSelf::Other => unreachable!(),
-            };
-            let rcvr_ty = fcx.normalize_associated_types_in(span, &rcvr_ty);
-            let rcvr_ty = fcx.liberate_late_bound_regions(method.def_id,
-                                                        &ty::Binder(rcvr_ty));
-
-            debug!("check_method_receiver: receiver ty = {:?}", rcvr_ty);
-
-            let cause = fcx.cause(span, ObligationCauseCode::MethodReceiver);
-            if let Some(mut err) = fcx.demand_eqtype_with_origin(&cause, rcvr_ty, self_arg_ty) {
-                err.emit();
-            }
         }
     }
 
diff --git a/src/test/compile-fail/explicit-self-lifetime-mismatch.rs b/src/test/compile-fail/explicit-self-lifetime-mismatch.rs
index eac134ff3cc..0c3ee1739a3 100644
--- a/src/test/compile-fail/explicit-self-lifetime-mismatch.rs
+++ b/src/test/compile-fail/explicit-self-lifetime-mismatch.rs
@@ -1,3 +1,5 @@
+//~  ERROR mismatched types
+//~| ERROR mismatched types
 // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
@@ -14,17 +16,7 @@ struct Foo<'a,'b> {
 }
 
 impl<'a,'b> Foo<'a,'b> {
-    fn bar(self:
-           Foo<'b,'a>
-    //~^ ERROR mismatched method receiver
-    //~| expected type `Foo<'a, 'b>`
-    //~| found type `Foo<'b, 'a>`
-    //~| lifetime mismatch
-    //~| ERROR mismatched method receiver
-    //~| expected type `Foo<'a, 'b>`
-    //~| found type `Foo<'b, 'a>`
-    //~| lifetime mismatch
-           ) {}
+    fn bar(self: Foo<'b,'a>) {}
 }
 
 fn main() {}
diff --git a/src/test/compile-fail/issue-17740.rs b/src/test/compile-fail/issue-17740.rs
index 664d62e87ae..99a7d39ce84 100644
--- a/src/test/compile-fail/issue-17740.rs
+++ b/src/test/compile-fail/issue-17740.rs
@@ -1,3 +1,5 @@
+//~  ERROR mismatched types
+//~| ERROR mismatched types
 // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
@@ -14,14 +16,6 @@ struct Foo<'a> {
 
 impl <'a> Foo<'a>{
     fn bar(self: &mut Foo) {
-    //~^ mismatched method receiver
-    //~| expected type `&mut Foo<'a>`
-    //~| found type `&mut Foo<'_>`
-    //~| lifetime mismatch
-    //~| mismatched method receiver
-    //~| expected type `&mut Foo<'a>`
-    //~| found type `&mut Foo<'_>`
-    //~| lifetime mismatch
     }
 }
 
diff --git a/src/test/compile-fail/ufcs-explicit-self-bad.rs b/src/test/compile-fail/ufcs-explicit-self-bad.rs
index 6fc2828f669..553fd79f5e5 100644
--- a/src/test/compile-fail/ufcs-explicit-self-bad.rs
+++ b/src/test/compile-fail/ufcs-explicit-self-bad.rs
@@ -1,3 +1,7 @@
+//~  ERROR mismatched types
+//~| ERROR mismatched types
+//~| ERROR mismatched types
+//~| ERROR mismatched types
 // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
@@ -47,17 +51,8 @@ trait SomeTrait {
 
 impl<'a, T> SomeTrait for &'a Bar<T> {
     fn dummy1(self: &&'a Bar<T>) { }
-    fn dummy2(self: &Bar<T>) {} //~ ERROR mismatched method receiver
-    //~^ ERROR mismatched method receiver
+    fn dummy2(self: &Bar<T>) {}
     fn dummy3(self: &&Bar<T>) {}
-    //~^ ERROR mismatched method receiver
-    //~| expected type `&&'a Bar<T>`
-    //~| found type `&&Bar<T>`
-    //~| lifetime mismatch
-    //~| ERROR mismatched method receiver
-    //~| expected type `&&'a Bar<T>`
-    //~| found type `&&Bar<T>`
-    //~| lifetime mismatch
 }
 
 fn main() {