replaced wrong test with the correct mcve
This commit is contained in:
parent
b1ab3b738a
commit
cc6ad45148
@ -1,19 +0,0 @@
|
||||
error[E0271]: type mismatch resolving `<Empty<_> as Stream>::Item == Repr`
|
||||
--> $DIR/issue-89008.rs:38:43
|
||||
|
|
||||
LL | fn line_stream<'a, Repr>(&'a self) -> Self::LineStreamFut<'a, Repr> {
|
||||
| ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<Empty<_> as Stream>::Item == Repr`
|
||||
| |
|
||||
| this type parameter
|
||||
|
|
||||
note: expected this to be `()`
|
||||
--> $DIR/issue-89008.rs:17:17
|
||||
|
|
||||
LL | type Item = ();
|
||||
| ^^
|
||||
= note: expected unit type `()`
|
||||
found type parameter `Repr`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0271`.
|
@ -1,30 +1,26 @@
|
||||
// check-fail
|
||||
// check-pass
|
||||
// edition:2021
|
||||
// known-bug: #88908
|
||||
|
||||
// This should pass, but seems to run into a TAIT bug.
|
||||
|
||||
#![feature(type_alias_impl_trait)]
|
||||
|
||||
use std::future::Future;
|
||||
use std::marker::PhantomData;
|
||||
|
||||
trait Stream {
|
||||
type Item;
|
||||
}
|
||||
|
||||
struct Empty<T>(T);
|
||||
impl<T> Stream for Empty<T> {
|
||||
type Item = ();
|
||||
struct Empty<T> {
|
||||
_phantom: PhantomData<T>,
|
||||
}
|
||||
fn empty<T>() -> Empty<T> {
|
||||
todo!()
|
||||
|
||||
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>;
|
||||
}
|
||||
|
||||
@ -32,11 +28,9 @@ 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()}
|
||||
async { Empty { _phantom: PhantomData } }
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user