Rollup merge of #58931 - estebank:elide-receiver-tyerr, r=varkor

Elide invalid method receiver error when it contains TyErr

Fix #58712.
This commit is contained in:
Pietro Albini 2019-03-08 09:42:03 +01:00 committed by GitHub
commit 254bc426b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 1 deletions

View File

@ -881,7 +881,9 @@ fn receiver_is_valid<'fcx, 'tcx, 'gcx>(
} else {
debug!("receiver_is_valid: type `{:?}` does not deref to `{:?}`",
receiver_ty, self_ty);
return false
// If he receiver already has errors reported due to it, consider it valid to avoid
// unecessary errors (#58712).
return receiver_ty.references_error();
}
// without the `arbitrary_self_types` feature, `receiver_ty` must directly deref to

View File

@ -0,0 +1,15 @@
struct AddrVec<H, A> {
h: H,
a: A,
}
impl<H> AddrVec<H, DeviceId> {
//~^ ERROR cannot find type `DeviceId` in this scope
pub fn device(&self) -> DeviceId {
//~^ ERROR cannot find type `DeviceId` in this scope
self.tail()
}
}
fn main() {}

View File

@ -0,0 +1,15 @@
error[E0412]: cannot find type `DeviceId` in this scope
--> $DIR/issue-58712.rs:6:20
|
LL | impl<H> AddrVec<H, DeviceId> {
| ^^^^^^^^ not found in this scope
error[E0412]: cannot find type `DeviceId` in this scope
--> $DIR/issue-58712.rs:8:29
|
LL | pub fn device(&self) -> DeviceId {
| ^^^^^^^^ not found in this scope
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0412`.