diff options
| -rw-r--r-- | src/test/ui/issues/issue-65230.rs | 22 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-65230.stderr | 44 |
2 files changed, 19 insertions, 47 deletions
diff --git a/src/test/ui/issues/issue-65230.rs b/src/test/ui/issues/issue-65230.rs index 10d9e810996..54141d2214c 100644 --- a/src/test/ui/issues/issue-65230.rs +++ b/src/test/ui/issues/issue-65230.rs @@ -1,19 +1,11 @@ -trait T { - type U; - fn f(&self) -> Self::U; -} +trait T0 {} +trait T1: T0 {} -struct X<'a>(&'a mut i32); +trait T2 {} -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 `'_`. -} +impl<'a> T0 for &'a (dyn T2 + 'static) {} + +impl T1 for &dyn T2 {} +//~^ ERROR mismatched types fn main() {} diff --git a/src/test/ui/issues/issue-65230.stderr b/src/test/ui/issues/issue-65230.stderr index 21e3f6b1ebb..d75428f3d53 100644 --- a/src/test/ui/issues/issue-65230.stderr +++ b/src/test/ui/issues/issue-65230.stderr @@ -1,38 +1,18 @@ -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... +error[E0308]: mismatched types --> $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 | impl T1 for &dyn T2 {} + | ^^ lifetime mismatch + | + = note: expected trait `<&dyn T2 as T0>` + found trait `<&(dyn T2 + 'static) as T0>` +note: the lifetime `'_` as defined on the impl at 8:13... + --> $DIR/issue-65230.rs:8:13 | -LL | fn f(&self) -> Self::U { - | ____________________________^ -LL | | self.0 -LL | | } - | |_____^ - = note: expected `<X<'a> as T>` - found `<X<'_> as T>` +LL | impl T1 for &dyn T2 {} + | ^ + = note: ...does not necessarily outlive the static lifetime error: aborting due to previous error -For more information about this error, try `rustc --explain E0495`. +For more information about this error, try `rustc --explain E0308`. |
