about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-06-16 20:38:08 +0200
committerMatthias Krüger <matthias.krueger@famsik.de>2024-06-16 20:38:08 +0200
commitff096f83f7b2f1f5feeeea9f29d23c9dde5393c9 (patch)
tree813000047aba840372d63dbd479ade8edf19eb12
parent55cac26a9ef17da1c9c77c0816e88e178b7cc5dd (diff)
downloadrust-ff096f83f7b2f1f5feeeea9f29d23c9dde5393c9.tar.gz
rust-ff096f83f7b2f1f5feeeea9f29d23c9dde5393c9.zip
more ice tests
-rw-r--r--tests/crashes/126062.rs11
-rw-r--r--tests/crashes/126148.rs23
-rw-r--r--tests/crashes/126182.rs10
-rw-r--r--tests/crashes/126267.rs30
-rw-r--r--tests/crashes/126269.rs12
-rw-r--r--tests/crashes/126272.rs28
-rw-r--r--tests/crashes/126359.rs9
-rw-r--r--tests/crashes/126376.rs14
-rw-r--r--tests/crashes/126377.rs29
-rw-r--r--tests/crashes/126385.rs10
-rw-r--r--tests/crashes/126389.rs15
-rw-r--r--tests/crashes/126416.rs20
-rw-r--r--tests/crashes/126521.rs11
13 files changed, 222 insertions, 0 deletions
diff --git a/tests/crashes/126062.rs b/tests/crashes/126062.rs
new file mode 100644
index 00000000000..9f1bec1d46e
--- /dev/null
+++ b/tests/crashes/126062.rs
@@ -0,0 +1,11 @@
+//@ known-bug: rust-lang/rust#126062
+struct Fail<T>(Fail);
+impl<T> Fail<i32> {
+    const C: () = panic!();
+}
+
+fn f<T>() {
+    if false {
+        let _val = &Fail::<T>::C;
+    }
+}
diff --git a/tests/crashes/126148.rs b/tests/crashes/126148.rs
new file mode 100644
index 00000000000..79f8887b401
--- /dev/null
+++ b/tests/crashes/126148.rs
@@ -0,0 +1,23 @@
+//@ known-bug: rust-lang/rust#126148
+
+#![feature(effects)]
+use std::ops::{FromResidual, Try};
+
+struct TryMe;
+struct Error;
+
+impl const FromResidual<Error> for TryMe {}
+
+impl const Try for TryMe {
+    type Output = ();
+    type Residual = Error;
+}
+
+const fn t() -> TryMe {
+    TryMe?;
+    TryMe
+}
+
+const _: () = {
+    t();
+};
diff --git a/tests/crashes/126182.rs b/tests/crashes/126182.rs
new file mode 100644
index 00000000000..2219a6cb5fa
--- /dev/null
+++ b/tests/crashes/126182.rs
@@ -0,0 +1,10 @@
+//@ known-bug: rust-lang/rust#126182
+
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+struct Cond<const B: bool>;
+
+struct Thing<T = Cond<0>>(T);
+
+impl Thing {}
diff --git a/tests/crashes/126267.rs b/tests/crashes/126267.rs
new file mode 100644
index 00000000000..c0604b90a67
--- /dev/null
+++ b/tests/crashes/126267.rs
@@ -0,0 +1,30 @@
+//@ known-bug: rust-lang/rust#126267
+
+#![feature(transmutability)]
+#![crate_type = "lib"]
+
+pub enum ApiError {}
+pub struct TokioError {
+    b: bool,
+}
+pub enum Error {
+    Api { source: ApiError },
+    Ethereum,
+    Tokio { source: TokioError },
+}
+
+mod assert {
+    use std::mem::BikeshedIntrinsicFrom;
+
+    pub fn is_transmutable<Src, Dst>()
+    where
+        Dst: BikeshedIntrinsicFrom<Src>, // safety is NOT assumed
+    {
+    }
+}
+
+fn test() {
+    struct Src;
+    type Dst = Error;
+    assert::is_transmutable::<Src, Dst>();
+}
diff --git a/tests/crashes/126269.rs b/tests/crashes/126269.rs
new file mode 100644
index 00000000000..ca4b76eb930
--- /dev/null
+++ b/tests/crashes/126269.rs
@@ -0,0 +1,12 @@
+//@ known-bug: rust-lang/rust#126269
+#![feature(coerce_unsized)]
+
+pub enum Foo<T> {
+    Bar([T; usize::MAX]),
+}
+
+use std::ops::CoerceUnsized;
+
+impl<T, U> CoerceUnsized<U> for T {}
+
+fn main() {}
diff --git a/tests/crashes/126272.rs b/tests/crashes/126272.rs
new file mode 100644
index 00000000000..3412c7d8f0f
--- /dev/null
+++ b/tests/crashes/126272.rs
@@ -0,0 +1,28 @@
+//@ known-bug: rust-lang/rust#126272
+
+#![feature(adt_const_params)]
+#![allow(incomplete_features)]
+
+use std::marker::ConstParamTy;
+
+#[derive(Debug, PartialEq, Eq, ConstParamTy)]
+struct Foo {
+    value: i32,
+    nested: &'static Bar<std::fmt::Debug>,
+}
+
+#[derive(Debug, PartialEq, Eq, ConstParamTy)]
+struct Bar<T>(T);
+
+struct Test<const F: Foo>;
+
+fn main() {
+    let x: Test<
+        {
+            Foo {
+                value: 3,
+                nested: &Bar(4),
+            }
+        },
+    > = Test;
+}
diff --git a/tests/crashes/126359.rs b/tests/crashes/126359.rs
new file mode 100644
index 00000000000..4b28c466b55
--- /dev/null
+++ b/tests/crashes/126359.rs
@@ -0,0 +1,9 @@
+//@ known-bug: rust-lang/rust#126359
+
+struct OppOrder<const N: u8 = 3, T = u32> {
+    arr: [T; N],
+}
+
+fn main() {
+    let _ = OppOrder::<3, u32> { arr: [0, 0, 0] };
+}
diff --git a/tests/crashes/126376.rs b/tests/crashes/126376.rs
new file mode 100644
index 00000000000..028dde6d438
--- /dev/null
+++ b/tests/crashes/126376.rs
@@ -0,0 +1,14 @@
+//@ known-bug: rust-lang/rust#126376
+mod a {
+    pub mod b {
+        pub mod c {
+            pub trait D {}
+        }
+    }
+}
+
+use a::*;
+use e as b;
+use b::c::D as e;
+
+fn e() {}
diff --git a/tests/crashes/126377.rs b/tests/crashes/126377.rs
new file mode 100644
index 00000000000..f8b9b693b65
--- /dev/null
+++ b/tests/crashes/126377.rs
@@ -0,0 +1,29 @@
+//@ known-bug: rust-lang/rust#126377
+
+#![feature(effects)]
+#![feature(generic_const_exprs)]
+
+mod assert {
+    use std::mem::{Assume, BikeshedIntrinsicFrom};
+
+    pub fn is_transmutable<
+        Src,
+        Dst,
+        const ASSUME_ALIGNMENT: bool,
+        const ASSUME_LIFETIMES: bool,
+        const ASSUME_SAFETY: bool,
+        const ASSUME_VALIDITY: bool,
+    >()
+    where
+        Dst: BikeshedIntrinsicFrom<
+            Src,
+            {  }
+        >,
+    {}
+}
+
+const fn from_options() -> Assume {
+    #[repr(C)] struct Src;
+    #[repr(C)] struct Dst;
+    assert::is_transmutable::<Src, Dst, {0u8}, false, false, false>();
+}
diff --git a/tests/crashes/126385.rs b/tests/crashes/126385.rs
new file mode 100644
index 00000000000..9e74e88c1ff
--- /dev/null
+++ b/tests/crashes/126385.rs
@@ -0,0 +1,10 @@
+//@ known-bug: rust-lang/rust#126385
+pub struct MyStruct<'field> {
+    field: &'_ [u32],
+}
+
+impl MyStruct<'_> {
+    pub fn _<'a>(field: &'a[u32]) -> Self<new> {
+    Self{field}
+    }
+}
diff --git a/tests/crashes/126389.rs b/tests/crashes/126389.rs
new file mode 100644
index 00000000000..7aa6ecad9a3
--- /dev/null
+++ b/tests/crashes/126389.rs
@@ -0,0 +1,15 @@
+//@ known-bug: rust-lang/rust#126389
+
+mod a {
+    pub mod b {
+        pub mod c {}
+    }
+}
+
+use a::*;
+
+use b::c;
+
+use c as b;
+
+fn c() {}
diff --git a/tests/crashes/126416.rs b/tests/crashes/126416.rs
new file mode 100644
index 00000000000..9b6c5169d44
--- /dev/null
+++ b/tests/crashes/126416.rs
@@ -0,0 +1,20 @@
+//@ known-bug: rust-lang/rust#126416
+
+trait Output<'a, T: 'a> {
+    type Type;
+}
+
+struct Wrapper;
+
+impl Wrapper {
+    fn do_something_wrapper<O, F>(&mut self, _: F)
+    where
+        F: for<'a> FnOnce(<F as Output<i32>>::Type),
+    {
+    }
+}
+
+fn main() {
+    let mut wrapper = Wrapper;
+    wrapper.do_something_wrapper(|value| ());
+}
diff --git a/tests/crashes/126521.rs b/tests/crashes/126521.rs
new file mode 100644
index 00000000000..0a025aabcf2
--- /dev/null
+++ b/tests/crashes/126521.rs
@@ -0,0 +1,11 @@
+//@ known-bug: rust-lang/rust#126521
+macro_rules! foo {
+    ($val:ident) => {
+        true;
+    };
+}
+
+fn main() {
+    #[expect(semicolon_in_expressions_from_macros)]
+    let _ = foo!(x);
+}