diff options
| author | rhysd <lin90162@yahoo.co.jp> | 2021-10-08 01:00:15 +0900 |
|---|---|---|
| committer | rhysd <lin90162@yahoo.co.jp> | 2021-10-09 00:07:37 +0900 |
| commit | 7b9ddbdcf261c0010b24f53281bf2f27d02eb6f2 (patch) | |
| tree | a880d11cf342266656ebd93b3b948a7dddad74a7 /src | |
| parent | ca8078d7b2e40c24a39e5fe2a910afef4c91ebfc (diff) | |
| download | rust-7b9ddbdcf261c0010b24f53281bf2f27d02eb6f2.tar.gz rust-7b9ddbdcf261c0010b24f53281bf2f27d02eb6f2.zip | |
Show detailed expected/found types in error message when trait paths are the same
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/error-codes/E0308-2.stderr | 4 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-20831-debruijn.stderr | 4 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-65230.rs | 19 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-65230.stderr | 38 | ||||
| -rw-r--r-- | src/test/ui/nll/issue-50716.stderr | 4 | ||||
| -rw-r--r-- | src/test/ui/variance/variance-contravariant-self-trait-match.stderr | 8 | ||||
| -rw-r--r-- | src/test/ui/variance/variance-covariant-self-trait-match.stderr | 8 | ||||
| -rw-r--r-- | src/test/ui/variance/variance-invariant-self-trait-match.stderr | 8 |
8 files changed, 75 insertions, 18 deletions
diff --git a/src/test/ui/error-codes/E0308-2.stderr b/src/test/ui/error-codes/E0308-2.stderr index 47fea5a23a7..0ac03195fa3 100644 --- a/src/test/ui/error-codes/E0308-2.stderr +++ b/src/test/ui/error-codes/E0308-2.stderr @@ -4,8 +4,8 @@ error[E0308]: mismatched types LL | impl Eq for &dyn DynEq {} | ^^ lifetime mismatch | - = note: expected trait `PartialEq` - found trait `PartialEq` + = note: expected trait `<&dyn DynEq as PartialEq>` + found trait `<&(dyn DynEq + 'static) as PartialEq>` note: the lifetime `'_` as defined on the impl at 9:13... --> $DIR/E0308-2.rs:9:13 | diff --git a/src/test/ui/issues/issue-20831-debruijn.stderr b/src/test/ui/issues/issue-20831-debruijn.stderr index 03e3311e0f3..02c80c29408 100644 --- a/src/test/ui/issues/issue-20831-debruijn.stderr +++ b/src/test/ui/issues/issue-20831-debruijn.stderr @@ -19,8 +19,8 @@ note: ...so that the types are compatible | LL | fn subscribe(&mut self, t : Box<dyn Subscriber<Input=<Self as Publisher>::Output> + 'a>) { | ^^^^^^^^^ - = note: expected `Publisher<'_>` - found `Publisher<'_>` + = note: expected `<MyStruct<'a> as Publisher<'_>>` + found `<MyStruct<'_> as Publisher<'_>>` error: aborting due to previous error diff --git a/src/test/ui/issues/issue-65230.rs b/src/test/ui/issues/issue-65230.rs new file mode 100644 index 00000000000..10d9e810996 --- /dev/null +++ b/src/test/ui/issues/issue-65230.rs @@ -0,0 +1,19 @@ +trait T { + type U; + fn f(&self) -> Self::U; +} + +struct X<'a>(&'a mut i32); + +impl<'a> T for X<'a> { + type U = &'a i32; + fn f(&self) -> Self::U { + self.0 + } + //~^^^ ERROR cannot infer an appropriate lifetime for lifetime parameter `'a` + // + // Return type of `f` has lifetime `'a` but it tries to return `self.0` which + // has lifetime `'_`. +} + +fn main() {} diff --git a/src/test/ui/issues/issue-65230.stderr b/src/test/ui/issues/issue-65230.stderr new file mode 100644 index 00000000000..21e3f6b1ebb --- /dev/null +++ b/src/test/ui/issues/issue-65230.stderr @@ -0,0 +1,38 @@ +error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'a` due to conflicting requirements + --> $DIR/issue-65230.rs:10:28 + | +LL | fn f(&self) -> Self::U { + | ____________________________^ +LL | | self.0 +LL | | } + | |_____^ + | +note: first, the lifetime cannot outlive the anonymous lifetime defined on the method body at 10:10... + --> $DIR/issue-65230.rs:10:10 + | +LL | fn f(&self) -> Self::U { + | ^^^^^ +note: ...so that reference does not outlive borrowed content + --> $DIR/issue-65230.rs:11:9 + | +LL | self.0 + | ^^^^^^ +note: but, the lifetime must be valid for the lifetime `'a` as defined on the impl at 8:6... + --> $DIR/issue-65230.rs:8:6 + | +LL | impl<'a> T for X<'a> { + | ^^ +note: ...so that the types are compatible + --> $DIR/issue-65230.rs:10:28 + | +LL | fn f(&self) -> Self::U { + | ____________________________^ +LL | | self.0 +LL | | } + | |_____^ + = note: expected `<X<'a> as T>` + found `<X<'_> as T>` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0495`. diff --git a/src/test/ui/nll/issue-50716.stderr b/src/test/ui/nll/issue-50716.stderr index 3dee3345db6..4e69dda8721 100644 --- a/src/test/ui/nll/issue-50716.stderr +++ b/src/test/ui/nll/issue-50716.stderr @@ -4,8 +4,8 @@ error[E0308]: mismatched types LL | let _x = *s; | ^^ lifetime mismatch | - = note: expected type `Sized` - found type `Sized` + = note: expected type `<<&'a T as A>::X as Sized>` + found type `<<&'static T as A>::X as Sized>` note: the lifetime `'a` as defined on the function body at 9:8... --> $DIR/issue-50716.rs:9:8 | diff --git a/src/test/ui/variance/variance-contravariant-self-trait-match.stderr b/src/test/ui/variance/variance-contravariant-self-trait-match.stderr index e35aec4c0ce..9455162732b 100644 --- a/src/test/ui/variance/variance-contravariant-self-trait-match.stderr +++ b/src/test/ui/variance/variance-contravariant-self-trait-match.stderr @@ -4,8 +4,8 @@ error[E0308]: mismatched types LL | impls_get::<&'min G>(); | ^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | - = note: expected type `Get` - found type `Get` + = note: expected type `<&'min G as Get>` + found type `<&'max G as Get>` note: the lifetime `'min` as defined on the function body at 10:21... --> $DIR/variance-contravariant-self-trait-match.rs:10:21 | @@ -23,8 +23,8 @@ error[E0308]: mismatched types LL | impls_get::<&'max G>(); | ^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | - = note: expected type `Get` - found type `Get` + = note: expected type `<&'max G as Get>` + found type `<&'min G as Get>` note: the lifetime `'min` as defined on the function body at 16:21... --> $DIR/variance-contravariant-self-trait-match.rs:16:21 | diff --git a/src/test/ui/variance/variance-covariant-self-trait-match.stderr b/src/test/ui/variance/variance-covariant-self-trait-match.stderr index a25d1044d42..3f3a69dde52 100644 --- a/src/test/ui/variance/variance-covariant-self-trait-match.stderr +++ b/src/test/ui/variance/variance-covariant-self-trait-match.stderr @@ -4,8 +4,8 @@ error[E0308]: mismatched types LL | impls_get::<&'min G>(); | ^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | - = note: expected type `Get` - found type `Get` + = note: expected type `<&'min G as Get>` + found type `<&'max G as Get>` note: the lifetime `'min` as defined on the function body at 10:21... --> $DIR/variance-covariant-self-trait-match.rs:10:21 | @@ -23,8 +23,8 @@ error[E0308]: mismatched types LL | impls_get::<&'max G>(); | ^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | - = note: expected type `Get` - found type `Get` + = note: expected type `<&'max G as Get>` + found type `<&'min G as Get>` note: the lifetime `'min` as defined on the function body at 17:21... --> $DIR/variance-covariant-self-trait-match.rs:17:21 | diff --git a/src/test/ui/variance/variance-invariant-self-trait-match.stderr b/src/test/ui/variance/variance-invariant-self-trait-match.stderr index 4a1d4d28b48..a80a5e41d03 100644 --- a/src/test/ui/variance/variance-invariant-self-trait-match.stderr +++ b/src/test/ui/variance/variance-invariant-self-trait-match.stderr @@ -4,8 +4,8 @@ error[E0308]: mismatched types LL | impls_get::<&'min G>(); | ^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | - = note: expected type `Get` - found type `Get` + = note: expected type `<&'min G as Get>` + found type `<&'max G as Get>` note: the lifetime `'min` as defined on the function body at 7:21... --> $DIR/variance-invariant-self-trait-match.rs:7:21 | @@ -23,8 +23,8 @@ error[E0308]: mismatched types LL | impls_get::<&'max G>(); | ^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | - = note: expected type `Get` - found type `Get` + = note: expected type `<&'max G as Get>` + found type `<&'min G as Get>` note: the lifetime `'min` as defined on the function body at 13:21... --> $DIR/variance-invariant-self-trait-match.rs:13:21 | |
