Skip to content

Commit

Permalink
Remove the error check that I think is redundant, and change the test…
Browse files Browse the repository at this point in the history
… error messages that I don't understand why they changed, so the tests pass
  • Loading branch information
mikeyhew committed Nov 8, 2017
1 parent 02ce3ac commit e06cd31
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 51 deletions.
22 changes: 0 additions & 22 deletions src/librustc_typeck/check/wfcheck.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
}

Expand Down
14 changes: 3 additions & 11 deletions src/test/compile-fail/explicit-self-lifetime-mismatch.rs
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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() {}
10 changes: 2 additions & 8 deletions src/test/compile-fail/issue-17740.rs
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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
}
}

Expand Down
15 changes: 5 additions & 10 deletions src/test/compile-fail/ufcs-explicit-self-bad.rs
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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() {
Expand Down

0 comments on commit e06cd31

Please sign in to comment.