diff options
Diffstat (limited to 'src/test/ui/generic-associated-types/issue-89008.rs')
-rw-r--r-- | src/test/ui/generic-associated-types/issue-89008.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/test/ui/generic-associated-types/issue-89008.rs b/src/test/ui/generic-associated-types/issue-89008.rs new file mode 100644 index 000000000..669dbafb5 --- /dev/null +++ b/src/test/ui/generic-associated-types/issue-89008.rs @@ -0,0 +1,37 @@ +// check-pass +// edition:2021 + +#![feature(type_alias_impl_trait)] + +use std::future::Future; +use std::marker::PhantomData; + +trait Stream { + type Item; +} + +struct Empty<T> { + _phantom: PhantomData<T>, +} + +impl<T> Stream for Empty<T> { + type Item = T; +} + +trait X { + type LineStream<'a, Repr>: Stream<Item = Repr> where Self: 'a; + type LineStreamFut<'a, Repr>: Future<Output = Self::LineStream<'a, Repr>> where Self: 'a; + fn line_stream<'a, Repr>(&'a self) -> Self::LineStreamFut<'a, Repr>; +} + +struct Y; + +impl X for Y { + type LineStream<'a, Repr> = impl Stream<Item = Repr>; + type LineStreamFut<'a, Repr> = impl Future<Output = Self::LineStream<'a, Repr>>; + fn line_stream<'a, Repr>(&'a self) -> Self::LineStreamFut<'a, Repr> { + async { Empty { _phantom: PhantomData } } + } +} + +fn main() {} |