about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/crashes/139905.rs6
-rw-r--r--tests/crashes/140011.rs11
-rw-r--r--tests/crashes/140099.rs6
-rw-r--r--tests/crashes/140100.rs7
-rw-r--r--tests/crashes/140123-2.rs12
-rw-r--r--tests/crashes/140123-3.rs10
-rw-r--r--tests/crashes/140123-4.rs13
-rw-r--r--tests/crashes/140123.rs10
-rw-r--r--tests/crashes/140255.rs3
-rw-r--r--tests/crashes/140275.rs5
-rw-r--r--tests/crashes/140281.rs18
-rw-r--r--tests/crashes/140303.rs22
-rw-r--r--tests/crashes/140333.rs9
-rw-r--r--tests/crashes/140365.rs8
-rw-r--r--tests/crashes/140381.rs16
-rw-r--r--tests/crashes/140429.rs6
-rw-r--r--tests/crashes/140479.rs5
-rw-r--r--tests/crashes/140484.rs14
-rw-r--r--tests/crashes/140500.rs14
-rw-r--r--tests/crashes/140530.rs8
-rw-r--r--tests/crashes/140531.rs7
-rw-r--r--tests/crashes/140571.rs14
-rw-r--r--tests/crashes/140577.rs32
-rw-r--r--tests/crashes/140609.rs13
-rw-r--r--tests/crashes/140642.rs8
-rw-r--r--tests/crashes/140683.rs5
-rw-r--r--tests/crashes/140729.rs11
-rw-r--r--tests/crashes/140823.rs9
-rw-r--r--tests/crashes/140850.rs7
-rw-r--r--tests/crashes/140860.rs10
-rw-r--r--tests/crashes/140884.rs6
-rw-r--r--tests/crashes/140891.rs6
-rw-r--r--tests/crashes/140974.rs14
-rw-r--r--tests/crashes/140975.rs22
-rw-r--r--tests/crashes/141124.rs16
-rw-r--r--tests/crashes/141143.rs13
36 files changed, 396 insertions, 0 deletions
diff --git a/tests/crashes/139905.rs b/tests/crashes/139905.rs
new file mode 100644
index 00000000000..7da622aaaba
--- /dev/null
+++ b/tests/crashes/139905.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #139905
+trait a<const b: bool> {}
+impl a<{}> for () {}
+trait c {}
+impl<const d: u8> c for () where (): a<d> {}
+impl c for () {}
diff --git a/tests/crashes/140011.rs b/tests/crashes/140011.rs
new file mode 100644
index 00000000000..b9d57a2822d
--- /dev/null
+++ b/tests/crashes/140011.rs
@@ -0,0 +1,11 @@
+//@ known-bug: #140011
+//@compile-flags: -Wrust-2021-incompatible-closure-captures
+enum b {
+    c(d),
+    e(f),
+}
+struct f;
+fn g() {
+    let h;
+    || b::e(a) = h;
+}
diff --git a/tests/crashes/140099.rs b/tests/crashes/140099.rs
new file mode 100644
index 00000000000..fca12910055
--- /dev/null
+++ b/tests/crashes/140099.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #140099
+struct a;
+impl From for a where for<'any> &'any mut (): Clone {}
+fn b() -> Result<(), std::convert::Infallible> {
+    || -> Result<_, a> { b()? }
+}
diff --git a/tests/crashes/140100.rs b/tests/crashes/140100.rs
new file mode 100644
index 00000000000..0836ffe2d92
--- /dev/null
+++ b/tests/crashes/140100.rs
@@ -0,0 +1,7 @@
+//@ known-bug: #140100
+fn a()
+where
+    b: Sized,
+{
+    println!()
+}
diff --git a/tests/crashes/140123-2.rs b/tests/crashes/140123-2.rs
new file mode 100644
index 00000000000..6ed10b9dcc3
--- /dev/null
+++ b/tests/crashes/140123-2.rs
@@ -0,0 +1,12 @@
+//@ known-bug: #140123
+//@ compile-flags: --crate-type lib
+
+trait Trait {}
+
+impl Trait for [(); 0] {}
+
+const ICE: [&mut dyn Trait; 2] = [const { empty_mut() }; 2];
+
+const fn empty_mut() -> &'static mut [(); 0] {
+    &mut []
+}
diff --git a/tests/crashes/140123-3.rs b/tests/crashes/140123-3.rs
new file mode 100644
index 00000000000..a1dcd7fc39f
--- /dev/null
+++ b/tests/crashes/140123-3.rs
@@ -0,0 +1,10 @@
+//@ known-bug: #140123
+//@ compile-flags: --crate-type lib
+
+const ICE: [&mut [()]; 2] = [const { empty_mut() }; 2];
+
+const fn empty_mut() -> &'static mut [()] {
+    unsafe {
+        std::slice::from_raw_parts_mut(std::ptr::dangling_mut(), 0)
+    }
+}
diff --git a/tests/crashes/140123-4.rs b/tests/crashes/140123-4.rs
new file mode 100644
index 00000000000..39042d897ee
--- /dev/null
+++ b/tests/crashes/140123-4.rs
@@ -0,0 +1,13 @@
+//@ known-bug: #140123
+//@ compile-flags: --crate-type lib
+
+const ICE: [&mut [(); 0]; 2] = [const { empty_mut() }; 2];
+
+const fn empty_mut() -> &'static mut [(); 0] {
+    &mut []
+}
+// https://github.com/rust-lang/rust/issues/140123#issuecomment-2820664450
+const ICE2: [&mut [(); 0]; 2] = [const {
+    let x = &mut [];
+    x
+}; 2];
diff --git a/tests/crashes/140123.rs b/tests/crashes/140123.rs
new file mode 100644
index 00000000000..337b5f3cef0
--- /dev/null
+++ b/tests/crashes/140123.rs
@@ -0,0 +1,10 @@
+//@ known-bug: #140123
+//@ compile-flags: --crate-type lib
+
+const OK: [&mut [()]; 2] = [empty_mut(), empty_mut()];
+const ICE: [&mut [()]; 2] = [const { empty_mut() }; 2];
+
+// Any kind of fn call gets around E0764.
+const fn empty_mut() -> &'static mut [()] {
+    &mut []
+}
diff --git a/tests/crashes/140255.rs b/tests/crashes/140255.rs
new file mode 100644
index 00000000000..6b0ec1718b0
--- /dev/null
+++ b/tests/crashes/140255.rs
@@ -0,0 +1,3 @@
+//@ known-bug: #140255
+#[unsafe(macro_use::VAR2)]
+fn dead_code() {}
diff --git a/tests/crashes/140275.rs b/tests/crashes/140275.rs
new file mode 100644
index 00000000000..5ea04af0c8e
--- /dev/null
+++ b/tests/crashes/140275.rs
@@ -0,0 +1,5 @@
+//@ known-bug: #140275
+#![feature(generic_const_exprs)]
+trait T{}
+trait V{}
+impl<const N: i32> T for [i32; N::<&mut V>] {}
diff --git a/tests/crashes/140281.rs b/tests/crashes/140281.rs
new file mode 100644
index 00000000000..76858cfc74a
--- /dev/null
+++ b/tests/crashes/140281.rs
@@ -0,0 +1,18 @@
+//@ known-bug: #140281
+
+macro_rules! foo {
+    ($x:expr) => { $x }
+}
+
+fn main() {
+    let t = vec![
+        /// ‮test⁦ RTL in doc in vec!
+        //  ICE (Sadly)
+        1
+    ];
+
+        foo!(
+        /// ‮test⁦ RTL in doc in macro
+        1
+    );
+}
diff --git a/tests/crashes/140303.rs b/tests/crashes/140303.rs
new file mode 100644
index 00000000000..43a20b5e58e
--- /dev/null
+++ b/tests/crashes/140303.rs
@@ -0,0 +1,22 @@
+//@ known-bug: #140303
+//@compile-flags: -Zvalidate-mir
+use std::future::Future;
+async fn a() -> impl Sized {
+    b(c)
+}
+async fn c(); // kaboom
+fn b<d>(e: d) -> impl Sized
+where
+    d: f,
+{
+    || -> <d>::h { panic!() }
+}
+trait f {
+    type h;
+}
+impl<d, g> f for d
+where
+    d: Fn() -> g,
+    g: Future,
+{
+}
diff --git a/tests/crashes/140333.rs b/tests/crashes/140333.rs
new file mode 100644
index 00000000000..cec1100e6ad
--- /dev/null
+++ b/tests/crashes/140333.rs
@@ -0,0 +1,9 @@
+//@ known-bug: #140333
+fn a() -> impl b<
+    [c; {
+        struct d {
+            #[a]
+            bar: e,
+        }
+    }],
+>;
diff --git a/tests/crashes/140365.rs b/tests/crashes/140365.rs
new file mode 100644
index 00000000000..809ceaf35a0
--- /dev/null
+++ b/tests/crashes/140365.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #140365
+//@compile-flags: -C opt-level=1 -Zvalidate-mir
+fn f() -> &'static str
+where
+    Self: Sized,
+{
+    ""
+}
diff --git a/tests/crashes/140381.rs b/tests/crashes/140381.rs
new file mode 100644
index 00000000000..439ca694d56
--- /dev/null
+++ b/tests/crashes/140381.rs
@@ -0,0 +1,16 @@
+//@ known-bug: #140381
+pub trait Foo<T> {}
+pub trait Lend {
+    type From<'a>
+    where
+        Self: 'a;
+    fn lend(from: Self::From<'_>) -> impl Foo<Self::From<'_>>;
+}
+
+impl<T, F> Lend for (T, F) {
+    type From<'a> = ();
+
+    fn lend(from: Self::From<'_>) -> impl Foo<Self::From<'_>> {
+        from
+    }
+}
diff --git a/tests/crashes/140429.rs b/tests/crashes/140429.rs
new file mode 100644
index 00000000000..041eaf86c5c
--- /dev/null
+++ b/tests/crashes/140429.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #140429
+//@ compile-flags: -Zlint-mir --crate-type lib
+//@ edition:2024
+
+#![feature(async_drop)]
+async fn a<T>(x: T) {}
diff --git a/tests/crashes/140479.rs b/tests/crashes/140479.rs
new file mode 100644
index 00000000000..ed3ca887546
--- /dev/null
+++ b/tests/crashes/140479.rs
@@ -0,0 +1,5 @@
+//@ known-bug: #140479
+macro_rules! a { ( $( { $ [ $b:c ] } )) => ( $(${ concat(d, $b)} ))}
+fn e() {
+    a!({})
+}
diff --git a/tests/crashes/140484.rs b/tests/crashes/140484.rs
new file mode 100644
index 00000000000..92ec1984398
--- /dev/null
+++ b/tests/crashes/140484.rs
@@ -0,0 +1,14 @@
+//@ known-bug: #140484
+//@edition:2024
+#![feature(async_drop)]
+use std::future::AsyncDrop;
+struct a;
+impl Drop for a {
+    fn b() {}
+}
+impl AsyncDrop for a {
+    type c;
+}
+async fn bar() {
+    a;
+}
diff --git a/tests/crashes/140500.rs b/tests/crashes/140500.rs
new file mode 100644
index 00000000000..ee5b93ab821
--- /dev/null
+++ b/tests/crashes/140500.rs
@@ -0,0 +1,14 @@
+//@ known-bug: #140500
+
+#![feature(async_drop)]
+use std::future::AsyncDrop;
+struct a;
+impl Drop for a {
+    fn b() {}
+}
+impl AsyncDrop for a {
+    fn c(d: impl Sized) {}
+}
+async fn bar() {
+    a;
+}
diff --git a/tests/crashes/140530.rs b/tests/crashes/140530.rs
new file mode 100644
index 00000000000..7e0372a4bd8
--- /dev/null
+++ b/tests/crashes/140530.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #140530
+//@ edition: 2024
+
+#![feature(async_drop, gen_blocks)]
+async gen fn a() {
+  _ = async {}
+}
+fn main() {}
diff --git a/tests/crashes/140531.rs b/tests/crashes/140531.rs
new file mode 100644
index 00000000000..f664481d440
--- /dev/null
+++ b/tests/crashes/140531.rs
@@ -0,0 +1,7 @@
+//@ known-bug: #140531
+//@compile-flags: -Zlint-mir --crate-type lib
+//@ edition:2024
+#![feature(async_drop)]
+async fn call_once(f: impl AsyncFnOnce()) {
+    let fut = Box::pin(f());
+}
diff --git a/tests/crashes/140571.rs b/tests/crashes/140571.rs
new file mode 100644
index 00000000000..97fa1d8432d
--- /dev/null
+++ b/tests/crashes/140571.rs
@@ -0,0 +1,14 @@
+//@ known-bug: #140571
+pub trait IsVoid {
+    const IS_VOID: bool;
+}
+impl<T> IsVoid for T {
+    default const IS_VOID: bool = false;
+}
+impl<T> Maybe<T> for () where T: NotVoid + ?Sized {}
+
+pub trait NotVoid {}
+impl<T> NotVoid for T where T: IsVoid<IS_VOID = false> + ?Sized {}
+
+pub trait Maybe<T> {}
+impl<T> Maybe<T> for T {}
diff --git a/tests/crashes/140577.rs b/tests/crashes/140577.rs
new file mode 100644
index 00000000000..21e6b1e1522
--- /dev/null
+++ b/tests/crashes/140577.rs
@@ -0,0 +1,32 @@
+//@ known-bug: #140577
+//@ compile-flags: -Znext-solver=globally
+//@ edition:2021
+
+use std::future::Future;
+use std::pin::Pin;
+trait Acquire {
+    type Connection;
+}
+impl Acquire for &'static () {
+    type Connection = ();
+}
+fn b<T: Acquire>() -> impl Future + Send {
+    let x: Pin<Box<dyn Future<Output = T::Connection> + Send>> = todo!();
+    x
+}
+fn main() {
+    async {
+        b::<&()>().await;
+    }
+    .aa();
+}
+
+impl<F> Filter for F where F: Send {}
+
+trait Filter {
+    fn aa(self)
+    where
+        Self: Sized,
+    {
+    }
+}
diff --git a/tests/crashes/140609.rs b/tests/crashes/140609.rs
new file mode 100644
index 00000000000..ee8a4bb3048
--- /dev/null
+++ b/tests/crashes/140609.rs
@@ -0,0 +1,13 @@
+//@ known-bug: #140609
+#![feature(with_negative_coherence)]
+#![feature(generic_const_exprs)]
+#![crate_type = "lib"]
+trait Trait {}
+struct A<const B: bool>;
+
+trait C {}
+
+impl<const D: u32> Trait for E<D> where A<{ D <= 2 }>: FnOnce(&isize) {}
+struct E<const D: u32>;
+
+impl<const D: u32> Trait for E<D> where A<{ D <= 2 }>: C {}
diff --git a/tests/crashes/140642.rs b/tests/crashes/140642.rs
new file mode 100644
index 00000000000..ff75a6ec2f2
--- /dev/null
+++ b/tests/crashes/140642.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #140642
+#![feature(min_generic_const_args)]
+
+pub trait Tr<A> {
+    const SIZE: usize;
+}
+
+fn mk_array(_x: T) -> [(); <T as Tr<bool>>::SIZE] {}
diff --git a/tests/crashes/140683.rs b/tests/crashes/140683.rs
new file mode 100644
index 00000000000..74ea5c2533b
--- /dev/null
+++ b/tests/crashes/140683.rs
@@ -0,0 +1,5 @@
+//@ known-bug: #140683
+impl T {
+#[core::contracts::ensures]
+  fn b() { (loop) }
+}
diff --git a/tests/crashes/140729.rs b/tests/crashes/140729.rs
new file mode 100644
index 00000000000..a436ec58e8e
--- /dev/null
+++ b/tests/crashes/140729.rs
@@ -0,0 +1,11 @@
+//@ known-bug: #140729
+#![feature(min_generic_const_args)]
+
+const C: usize = 0;
+pub struct A<const M: usize> {}
+impl A<C> {
+    fn fun1() {}
+}
+impl A {
+    fn fun1() {}
+}
diff --git a/tests/crashes/140823.rs b/tests/crashes/140823.rs
new file mode 100644
index 00000000000..ca2d683beed
--- /dev/null
+++ b/tests/crashes/140823.rs
@@ -0,0 +1,9 @@
+//@ known-bug: #140823
+
+struct Container<T> {
+    data: T,
+}
+
+fn ice(callback: Box<dyn Fn(Container<&u8>)>) {
+    let fails: Box<dyn Fn(&Container<&u8>)> = callback;
+}
diff --git a/tests/crashes/140850.rs b/tests/crashes/140850.rs
new file mode 100644
index 00000000000..fd26097deda
--- /dev/null
+++ b/tests/crashes/140850.rs
@@ -0,0 +1,7 @@
+//@ known-bug: #140850
+//@ compile-flags: -Zvalidate-mir
+fn A() -> impl {
+    while A() {}
+    loop {}
+}
+fn main() {}
diff --git a/tests/crashes/140860.rs b/tests/crashes/140860.rs
new file mode 100644
index 00000000000..04da6bd832c
--- /dev/null
+++ b/tests/crashes/140860.rs
@@ -0,0 +1,10 @@
+//@ known-bug: #140860
+#![feature(min_generic_const_args)]
+#![feature(unsized_const_params)]
+#![feature(with_negative_coherence, negative_impls)]
+trait a < const b : &'static str> {} trait c {} struct d< e >(e);
+impl<e> c for e where e: a<""> {}
+impl<e> c for d<e> {}
+impl<e> !a<f> for e {}
+const f : &str = "";
+fn main() {}
diff --git a/tests/crashes/140884.rs b/tests/crashes/140884.rs
new file mode 100644
index 00000000000..6840760933a
--- /dev/null
+++ b/tests/crashes/140884.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #140884
+//@ needs-rustc-debug-assertions
+
+fn a() {
+    extern "" {}
+}
diff --git a/tests/crashes/140891.rs b/tests/crashes/140891.rs
new file mode 100644
index 00000000000..421919403ef
--- /dev/null
+++ b/tests/crashes/140891.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #140891
+struct A<const N: usize> {}
+impl<const N: usize> Iterator for A<N> {
+    fn next() -> [(); std::mem::size_of::<Option<Self::Item>>] {}
+}
+fn main() {}
diff --git a/tests/crashes/140974.rs b/tests/crashes/140974.rs
new file mode 100644
index 00000000000..ac1051a64fd
--- /dev/null
+++ b/tests/crashes/140974.rs
@@ -0,0 +1,14 @@
+//@ known-bug: #140974
+//@edition:2021
+#![feature(async_drop)]
+use core::future::AsyncDrop;
+
+async fn fun(_: HasIncompleteAsyncDrop) {}
+
+struct HasIncompleteAsyncDrop;
+impl Drop for HasIncompleteAsyncDrop {
+    fn drop(&mut self) {}
+}
+impl AsyncDrop for HasIncompleteAsyncDrop {
+    // not implemented yet..
+}
diff --git a/tests/crashes/140975.rs b/tests/crashes/140975.rs
new file mode 100644
index 00000000000..e11dd40612c
--- /dev/null
+++ b/tests/crashes/140975.rs
@@ -0,0 +1,22 @@
+//@ known-bug: #140975
+//@ compile-flags: --crate-type lib -Zvalidate-mir
+//@ edition: 2021
+#![feature(async_drop)]
+use std::{future::AsyncDrop, pin::Pin};
+
+struct HasAsyncDrop ;
+impl Drop for HasAsyncDrop {
+    fn drop(&mut self) {}
+}
+impl AsyncDrop for HasAsyncDrop {
+    async fn drop(self: Pin<&mut Self>) {}
+}
+
+struct Holder {
+    inner: HasAsyncDrop,
+}
+async fn bar() {
+    Holder {
+        inner: HasAsyncDrop
+   };
+}
diff --git a/tests/crashes/141124.rs b/tests/crashes/141124.rs
new file mode 100644
index 00000000000..38a2a55e1c4
--- /dev/null
+++ b/tests/crashes/141124.rs
@@ -0,0 +1,16 @@
+//@ known-bug: #141124
+struct S;
+trait SimpleTrait {}
+trait TraitAssoc {
+    type Assoc;
+}
+
+impl<T> TraitAssoc for T
+where
+    T: SimpleTrait,
+{
+    type Assoc = <(T,) as TraitAssoc>::Assoc;
+}
+impl SimpleTrait for <S as TraitAssoc>::Assoc {}
+
+pub fn main() {}
diff --git a/tests/crashes/141143.rs b/tests/crashes/141143.rs
new file mode 100644
index 00000000000..a4aa2f19a6c
--- /dev/null
+++ b/tests/crashes/141143.rs
@@ -0,0 +1,13 @@
+//@ known-bug: #141143
+trait TypedClient {
+    fn publish_typed<F>(&self) -> impl Sized
+    where
+        F: Clone;
+}
+impl TypedClient for () {
+    fn publish_typed<F>(&self) -> impl Sized {}
+}
+
+fn main() {
+    ().publish_typed();
+}