about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/ui/issues/issue-65230.rs22
-rw-r--r--src/test/ui/issues/issue-65230.stderr44
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`.