mirror of https://github.com/rust-lang/rust
31 lines
737 B
Rust
31 lines
737 B
Rust
//! This test checks that opaque type collection doesn't try to normalize the projection
|
|
//! without respecting its binders (which would ICE).
|
|
//! Unfortunately we don't even reach opaque type collection, as we ICE in typeck before that.
|
|
//! See #109281 for the original report.
|
|
//@ edition:2018
|
|
//@ error-pattern: expected generic lifetime parameter, found `'a`
|
|
|
|
#![feature(type_alias_impl_trait)]
|
|
|
|
use std::future::Future;
|
|
|
|
struct Foo<'a>(&'a mut ());
|
|
|
|
type Fut<'a> = impl Future<Output = ()>;
|
|
|
|
trait Trait<'x> {
|
|
type Thing;
|
|
}
|
|
|
|
impl<'x, T: 'x> Trait<'x> for (T,) {
|
|
type Thing = T;
|
|
}
|
|
|
|
impl Foo<'_> {
|
|
fn make_fut(&self) -> Box<dyn for<'a> Trait<'a, Thing = Fut<'a>>> {
|
|
Box::new((async { () },))
|
|
}
|
|
}
|
|
|
|
fn main() {}
|