.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();
- }
}
}
+//~ 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.
}
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() {}
+//~ 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.
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
}
}
+//~ 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.
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() {