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,42 +1,36 @@
|
|||||||
// check-fail
|
// check-pass
|
||||||
// edition:2021
|
// edition:2021
|
||||||
// known-bug: #88908
|
|
||||||
|
|
||||||
// This should pass, but seems to run into a TAIT bug.
|
|
||||||
|
|
||||||
#![feature(type_alias_impl_trait)]
|
#![feature(type_alias_impl_trait)]
|
||||||
|
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
trait Stream {
|
trait Stream {
|
||||||
type Item;
|
type Item;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Empty<T>(T);
|
struct Empty<T> {
|
||||||
impl<T> Stream for Empty<T> {
|
_phantom: PhantomData<T>,
|
||||||
type Item = ();
|
|
||||||
}
|
}
|
||||||
fn empty<T>() -> Empty<T> {
|
|
||||||
todo!()
|
impl<T> Stream for Empty<T> {
|
||||||
|
type Item = T;
|
||||||
}
|
}
|
||||||
|
|
||||||
trait X {
|
trait X {
|
||||||
type LineStream<'a, Repr>: Stream<Item = Repr> where Self: 'a;
|
type LineStream<'a, Repr>: Stream<Item = Repr> where Self: 'a;
|
||||||
|
type LineStreamFut<'a, Repr>: Future<Output = Self::LineStream<'a, 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>;
|
||||||
|
|
||||||
fn line_stream<'a,Repr>(&'a self) -> Self::LineStreamFut<'a,Repr>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Y;
|
struct Y;
|
||||||
|
|
||||||
impl X for Y {
|
impl X for Y {
|
||||||
type LineStream<'a, Repr> = impl Stream<Item = Repr>;
|
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> {
|
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