replaced wrong test with the correct mcve

This commit is contained in:
Sarthak Singh 2022-10-21 13:08:30 +05:30
parent b1ab3b738a
commit cc6ad45148
2 changed files with 11 additions and 36 deletions

View File

@ -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`.

View File

@ -1,42 +1,36 @@
// 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>;
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>> ;
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 } }
}
}