mirror of https://github.com/rust-lang/rust
36 lines
806 B
Rust
36 lines
806 B
Rust
//@ check-pass
|
|
|
|
// Regression test for an ICE: https://github.com/rust-lang/rust/issues/119916
|
|
|
|
#![feature(impl_trait_in_assoc_type)]
|
|
#![feature(type_alias_impl_trait)]
|
|
|
|
// `impl_trait_in_assoc_type` example from the bug report.
|
|
pub trait StreamConsumer {
|
|
type BarrierStream;
|
|
fn execute() -> Self::BarrierStream;
|
|
}
|
|
|
|
pub struct DispatchExecutor;
|
|
|
|
impl StreamConsumer for DispatchExecutor {
|
|
type BarrierStream = impl Sized;
|
|
fn execute() -> Self::BarrierStream {
|
|
|| -> _ {}
|
|
}
|
|
}
|
|
|
|
// Functions that constrain TAITs can contain closures with an `_` in the return type.
|
|
type Foo = impl Sized;
|
|
fn foo() -> Foo {
|
|
|| -> _ {}
|
|
}
|
|
|
|
// The `_` in the closure return type can also be the TAIT itself.
|
|
type Bar = impl Sized;
|
|
fn bar() -> impl FnOnce() -> Bar {
|
|
|| -> _ {}
|
|
}
|
|
|
|
fn main() {}
|