]> git.lizzy.rs Git - rust.git/commitdiff
replaced wrong test with the correct mcve
authorSarthak Singh <ss269@uw.edu>
Fri, 21 Oct 2022 07:38:30 +0000 (13:08 +0530)
committerSarthak Singh <ss269@uw.edu>
Fri, 21 Oct 2022 07:38:30 +0000 (13:08 +0530)
src/test/ui/generic-associated-types/bugs/issue-89008.rs [deleted file]
src/test/ui/generic-associated-types/bugs/issue-89008.stderr [deleted file]
src/test/ui/generic-associated-types/issue-89008.rs [new file with mode: 0644]

diff --git a/src/test/ui/generic-associated-types/bugs/issue-89008.rs b/src/test/ui/generic-associated-types/bugs/issue-89008.rs
deleted file mode 100644 (file)
index 012aa8d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-// check-fail
-// 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;
-
-trait Stream {
-    type Item;
-}
-
-struct Empty<T>(T);
-impl<T> Stream for Empty<T> {
-    type Item = ();
-}
-fn empty<T>() -> Empty<T> {
-    todo!()
-}
-
-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()}
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/generic-associated-types/bugs/issue-89008.stderr b/src/test/ui/generic-associated-types/bugs/issue-89008.stderr
deleted file mode 100644 (file)
index 3f72734..0000000
+++ /dev/null
@@ -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`.
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 (file)
index 0000000..669dbaf
--- /dev/null
@@ -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() {}