about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/crashes/126268.rs18
-rw-r--r--tests/crashes/131050.rs20
-rw-r--r--tests/crashes/132126.rs2
3 files changed, 28 insertions, 12 deletions
diff --git a/tests/crashes/126268.rs b/tests/crashes/126268.rs
new file mode 100644
index 00000000000..82e52fa115d
--- /dev/null
+++ b/tests/crashes/126268.rs
@@ -0,0 +1,18 @@
+//@ known-bug: #126268
+#![feature(min_specialization)]
+
+trait Trait {}
+
+impl<T> Trait for T {}
+
+trait Data {
+    type Elem;
+}
+
+struct DatasetIter<'a, R: Data> {
+    data: &'a R::Elem,
+}
+
+pub struct ArrayBase {}
+
+impl<'a> Trait for DatasetIter<'a, ArrayBase> {}
diff --git a/tests/crashes/131050.rs b/tests/crashes/131050.rs
index 07f8662d016..3e3a600ef3d 100644
--- a/tests/crashes/131050.rs
+++ b/tests/crashes/131050.rs
@@ -1,25 +1,21 @@
 //@ known-bug: #131050
 //@ compile-flags: --edition=2021
 
-fn query_as<D>() {}
+use std::future::Future;
 
-async fn create_user() {
-    query_as();
-}
+fn invalid_future() -> impl Future {}
 
-async fn post_user_filter() -> impl Filter {
-    AndThen(&(), || async { create_user().await })
+fn create_complex_future() -> impl Future<Output = impl ReturnsSend> {
+    async { &|| async { invalid_future().await } }
 }
 
-async fn get_app() -> impl Send {
-    post_user_filter().await
+fn coerce_impl_trait() -> impl Future<Output = impl Send> {
+    create_complex_future()
 }
 
-trait Filter {}
-
-struct AndThen<T, F>(T, F);
+trait ReturnsSend {}
 
-impl<T, F, R> Filter for AndThen<T, F>
+impl<F, R> ReturnsSend for F
 where
     F: Fn() -> R,
     R: Send,
diff --git a/tests/crashes/132126.rs b/tests/crashes/132126.rs
new file mode 100644
index 00000000000..6a42853d469
--- /dev/null
+++ b/tests/crashes/132126.rs
@@ -0,0 +1,2 @@
+//@ known-bug: #132126
+trait UnsafeCopy where Self: use<Self> {}