Rollup merge of #90305 - vandenheuvel:test_issue_87258, r=Mark-Simulacrum

Add regression test for #87258

Closes #87258.
This commit is contained in:
Matthias Krüger 2021-10-26 19:32:46 +02:00 committed by GitHub
commit fcc9a9a928
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,24 @@
#![feature(type_alias_impl_trait)]
#![feature(generic_associated_types)]
// See https://github.com/rust-lang/rust/issues/87258#issuecomment-883293367
trait Trait1 {}
struct Struct<'b>(&'b ());
impl<'d> Trait1 for Struct<'d> {}
pub trait Trait2 {
type FooFuture<'a>: Trait1;
fn foo<'a>() -> Self::FooFuture<'a>;
}
impl<'c, S: Trait2> Trait2 for &'c mut S {
type FooFuture<'a> = impl Trait1;
fn foo<'a>() -> Self::FooFuture<'a> { //~ ERROR
Struct(unimplemented!())
}
}
fn main() {}

View File

@ -0,0 +1,11 @@
error[E0700]: hidden type for `impl Trait` captures lifetime that does not appear in bounds
--> $DIR/issue-87258_a.rs:19:21
|
LL | fn foo<'a>() -> Self::FooFuture<'a> {
| ^^^^^^^^^^^^^^^^^^^
|
= note: hidden type `Struct<'_>` captures lifetime '_#7r
error: aborting due to previous error
For more information about this error, try `rustc --explain E0700`.

View File

@ -0,0 +1,26 @@
#![feature(type_alias_impl_trait)]
#![feature(generic_associated_types)]
// See https://github.com/rust-lang/rust/issues/87258#issuecomment-883293367
trait Trait1 {}
struct Struct<'b>(&'b ());
impl<'d> Trait1 for Struct<'d> {}
pub trait Trait2 {
type FooFuture<'a>: Trait1;
fn foo<'a>() -> Self::FooFuture<'a>;
}
type Helper<'xenon, 'yttrium, KABOOM: Trait2> = impl Trait1;
impl<'c, S: Trait2> Trait2 for &'c mut S {
type FooFuture<'a> = Helper<'c, 'a, S>;
fn foo<'a>() -> Self::FooFuture<'a> { //~ ERROR
Struct(unimplemented!())
}
}
fn main() {}

View File

@ -0,0 +1,11 @@
error[E0700]: hidden type for `impl Trait` captures lifetime that does not appear in bounds
--> $DIR/issue-87258_b.rs:21:21
|
LL | fn foo<'a>() -> Self::FooFuture<'a> {
| ^^^^^^^^^^^^^^^^^^^
|
= note: hidden type `Struct<'_>` captures lifetime '_#7r
error: aborting due to previous error
For more information about this error, try `rustc --explain E0700`.