about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-04-21 21:01:04 +0200
committerMatthias Krüger <matthias.krueger@famsik.de>2024-04-21 21:04:32 +0200
commit67748015631ebbb798c6b8f2693fead06d06ce87 (patch)
treeda8dd2275cdc905c857f9f7c8f2135ba1e9947fe
parentaa31bad26b6bbf71c2072465ddb0dfe807c2b7d5 (diff)
downloadrust-67748015631ebbb798c6b8f2693fead06d06ce87.tar.gz
rust-67748015631ebbb798c6b8f2693fead06d06ce87.zip
crashes: add a couple more ICE tests
-rw-r--r--tests/crashes/123664.rs4
-rw-r--r--tests/crashes/123955.rs6
-rw-r--r--tests/crashes/124092.rs7
-rw-r--r--tests/crashes/124182.rs22
-rw-r--r--tests/crashes/124189.rs14
-rw-r--r--tests/crashes/124207.rs9
6 files changed, 62 insertions, 0 deletions
diff --git a/tests/crashes/123664.rs b/tests/crashes/123664.rs
new file mode 100644
index 00000000000..80c415fe07b
--- /dev/null
+++ b/tests/crashes/123664.rs
@@ -0,0 +1,4 @@
+//@ known-bug: #123664
+#![feature(generic_const_exprs, effects)]
+const fn with_positive<F: ~const Fn()>() {}
+pub fn main() {}
diff --git a/tests/crashes/123955.rs b/tests/crashes/123955.rs
new file mode 100644
index 00000000000..fdd58c84794
--- /dev/null
+++ b/tests/crashes/123955.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #123955
+//@ compile-flags: -Clto -Zvirtual-function-elimination
+//@ only-x86_64
+pub fn main() {
+    _ = Box::new(()) as Box<dyn Send>;
+}
diff --git a/tests/crashes/124092.rs b/tests/crashes/124092.rs
new file mode 100644
index 00000000000..c03db384e76
--- /dev/null
+++ b/tests/crashes/124092.rs
@@ -0,0 +1,7 @@
+//@ known-bug: #124092
+//@ compile-flags: -Zvirtual-function-elimination=true -Clto=true
+//@ only-x86_64
+const X: for<'b> fn(&'b ()) = |&()| ();
+fn main() {
+    let dyn_debug = Box::new(X) as Box<fn(&'static ())> as Box<dyn Send>;
+}
diff --git a/tests/crashes/124182.rs b/tests/crashes/124182.rs
new file mode 100644
index 00000000000..46948207df3
--- /dev/null
+++ b/tests/crashes/124182.rs
@@ -0,0 +1,22 @@
+//@ known-bug: #124182
+struct LazyLock<T> {
+    data: (Copy, fn() -> T),
+}
+
+impl<T> LazyLock<T> {
+    pub const fn new(f: fn() -> T) -> LazyLock<T> {
+        LazyLock { data: (None, f) }
+    }
+}
+
+struct A<T = i32>(Option<T>);
+
+impl<T> Default for A<T> {
+    fn default() -> Self {
+        A(None)
+    }
+}
+
+static EMPTY_SET: LazyLock<A<i32>> = LazyLock::new(A::default);
+
+fn main() {}
diff --git a/tests/crashes/124189.rs b/tests/crashes/124189.rs
new file mode 100644
index 00000000000..7c193ec1bce
--- /dev/null
+++ b/tests/crashes/124189.rs
@@ -0,0 +1,14 @@
+//@ known-bug: #124189
+trait Trait {
+    type Type;
+}
+
+impl<T> Trait for T {
+    type Type = ();
+}
+
+fn f(_: <&Copy as Trait>::Type) {}
+
+fn main() {
+    f(());
+}
diff --git a/tests/crashes/124207.rs b/tests/crashes/124207.rs
new file mode 100644
index 00000000000..a4e1c551890
--- /dev/null
+++ b/tests/crashes/124207.rs
@@ -0,0 +1,9 @@
+//@ known-bug: #124207
+#![feature(transmutability)]
+#![feature(type_alias_impl_trait)]
+trait OpaqueTrait {}
+type OpaqueType = impl OpaqueTrait;
+trait AnotherTrait {}
+impl<T: std::mem::BikeshedIntrinsicFrom<(), ()>> AnotherTrait for T {}
+impl AnotherTrait for OpaqueType {}
+pub fn main() {}