about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2021-10-16 08:02:24 +0200
committerGitHub <noreply@github.com>2021-10-16 08:02:24 +0200
commite8efe0931af2163682909e6e52ddd12b65b40d35 (patch)
tree54666abe8ead7ad939f9b34af3846e32bc83a939 /src/test
parent27a7ced29f952fc73adb25231f52c8b2d9535497 (diff)
parentc4f9eb1e5a6ab0f1eaf36170b083e28946c69e15 (diff)
downloadrust-e8efe0931af2163682909e6e52ddd12b65b40d35.tar.gz
rust-e8efe0931af2163682909e6e52ddd12b65b40d35.zip
Rollup merge of #89914 - jackh726:gat_genericboundfailure, r=estebank
Emit impl difference error for GenericBoundFailure too

Fixes #86787

r? ````@estebank````
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/generic-associated-types/impl_bounds.rs2
-rw-r--r--src/test/ui/generic-associated-types/impl_bounds.stderr12
-rw-r--r--src/test/ui/generic-associated-types/issue-86787.rs4
-rw-r--r--src/test/ui/generic-associated-types/issue-86787.stderr17
4 files changed, 19 insertions, 16 deletions
diff --git a/src/test/ui/generic-associated-types/impl_bounds.rs b/src/test/ui/generic-associated-types/impl_bounds.rs
index 27c135cb7cf..ff2ffec22c4 100644
--- a/src/test/ui/generic-associated-types/impl_bounds.rs
+++ b/src/test/ui/generic-associated-types/impl_bounds.rs
@@ -13,7 +13,7 @@ struct Fooy<T>(T);
 
 impl<T> Foo for Fooy<T> {
     type A<'a> where Self: 'static = (&'a ());
-    //~^ ERROR the parameter type `T` may not live long enough
+    //~^ ERROR `impl` associated type
     type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
     //~^ ERROR `impl` associated type
     //~| ERROR lifetime bound not satisfied
diff --git a/src/test/ui/generic-associated-types/impl_bounds.stderr b/src/test/ui/generic-associated-types/impl_bounds.stderr
index 649eadec515..f47b5f81e25 100644
--- a/src/test/ui/generic-associated-types/impl_bounds.stderr
+++ b/src/test/ui/generic-associated-types/impl_bounds.stderr
@@ -1,11 +1,11 @@
-error[E0310]: the parameter type `T` may not live long enough
+error: `impl` associated type signature for `A` doesn't match `trait` associated type signature
   --> $DIR/impl_bounds.rs:15:5
    |
+LL |     type A<'a> where Self: 'a;
+   |     -------------------------- expected
+...
 LL |     type A<'a> where Self: 'static = (&'a ());
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'static`...
-   = note: ...so that the definition in impl matches the definition from the trait
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ found
 
 error: `impl` associated type signature for `B` doesn't match `trait` associated type signature
   --> $DIR/impl_bounds.rs:17:5
@@ -85,5 +85,5 @@ LL | impl<T: std::marker::Copy> Foo for Fooy<T> {
 
 error: aborting due to 5 previous errors
 
-Some errors have detailed explanations: E0277, E0310, E0478.
+Some errors have detailed explanations: E0277, E0478.
 For more information about an error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generic-associated-types/issue-86787.rs b/src/test/ui/generic-associated-types/issue-86787.rs
index 57d478a9ef1..f1f05ea6627 100644
--- a/src/test/ui/generic-associated-types/issue-86787.rs
+++ b/src/test/ui/generic-associated-types/issue-86787.rs
@@ -21,8 +21,8 @@ where
 {
     type T = Either<Left::T, Right::T>;
     type TRef<'a>
-    //~^ the associated type
-    //~^^ the associated type
+    //~^ `impl` associated type signature
+    //~^^ `impl` associated type signature
     where
     <Left as HasChildrenOf>::T: 'a,
     <Right as HasChildrenOf>::T: 'a
diff --git a/src/test/ui/generic-associated-types/issue-86787.stderr b/src/test/ui/generic-associated-types/issue-86787.stderr
index e1ff7729211..648eff77d73 100644
--- a/src/test/ui/generic-associated-types/issue-86787.stderr
+++ b/src/test/ui/generic-associated-types/issue-86787.stderr
@@ -1,29 +1,32 @@
-error[E0309]: the associated type `<Left as HasChildrenOf>::T` may not live long enough
+error: `impl` associated type signature for `TRef` doesn't match `trait` associated type signature
   --> $DIR/issue-86787.rs:23:5
    |
+LL |       type TRef<'a>;
+   |       -------------- expected
+...
 LL | /     type TRef<'a>
 LL | |
 LL | |
 LL | |     where
 LL | |     <Left as HasChildrenOf>::T: 'a,
 LL | |     <Right as HasChildrenOf>::T: 'a
-   | |                                    - help: consider adding a where clause: `, <Left as HasChildrenOf>::T: 'a`
 LL | |     = Either<&'a Left::T, &'a Right::T>;
-   | |________________________________________^ ...so that the definition in impl matches the definition from the trait
+   | |________________________________________^ found
 
-error[E0309]: the associated type `<Right as HasChildrenOf>::T` may not live long enough
+error: `impl` associated type signature for `TRef` doesn't match `trait` associated type signature
   --> $DIR/issue-86787.rs:23:5
    |
+LL |       type TRef<'a>;
+   |       -------------- expected
+...
 LL | /     type TRef<'a>
 LL | |
 LL | |
 LL | |     where
 LL | |     <Left as HasChildrenOf>::T: 'a,
 LL | |     <Right as HasChildrenOf>::T: 'a
-   | |                                    - help: consider adding a where clause: `, <Right as HasChildrenOf>::T: 'a`
 LL | |     = Either<&'a Left::T, &'a Right::T>;
-   | |________________________________________^ ...so that the definition in impl matches the definition from the trait
+   | |________________________________________^ found
 
 error: aborting due to 2 previous errors
 
-For more information about this error, try `rustc --explain E0309`.