about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2025-03-07 23:17:25 +0100
committerMatthias Krüger <matthias.krueger@famsik.de>2025-03-08 20:13:07 +0100
commit088b125853d35b23768cba8bf53b52a69d00fd03 (patch)
treeeac086e9735fb9f87fcea3cdac0be5b7c72b6c5b
parent07292ccccde8b64d87036b2f90b70bc54ab68456 (diff)
downloadrust-088b125853d35b23768cba8bf53b52a69d00fd03.tar.gz
rust-088b125853d35b23768cba8bf53b52a69d00fd03.zip
crashes: couple more tests
-rw-r--r--tests/crashes/136138.rs7
-rw-r--r--tests/crashes/136175-2.rs13
-rw-r--r--tests/crashes/136175.rs13
-rw-r--r--tests/crashes/136188.rs9
-rw-r--r--tests/crashes/136286.rs7
-rw-r--r--tests/crashes/136379.rs11
-rw-r--r--tests/crashes/136381.rs18
-rw-r--r--tests/crashes/136416.rs6
-rw-r--r--tests/crashes/136442.rs9
-rw-r--r--tests/crashes/136661.rs25
-rw-r--r--tests/crashes/136666.rs36
-rw-r--r--tests/crashes/136678.rs18
-rw-r--r--tests/crashes/136766.rs6
-rw-r--r--tests/crashes/136859.rs27
-rw-r--r--tests/crashes/136894.rs8
-rw-r--r--tests/crashes/137049.rs29
-rw-r--r--tests/crashes/137084.rs6
-rw-r--r--tests/crashes/137187.rs9
-rw-r--r--tests/crashes/137188.rs6
-rw-r--r--tests/crashes/137190-1.rs10
-rw-r--r--tests/crashes/137190-2.rs18
-rw-r--r--tests/crashes/137190-3.rs10
-rw-r--r--tests/crashes/137260.rs11
-rw-r--r--tests/crashes/137287.rs29
-rw-r--r--tests/crashes/137467-1.rs17
-rw-r--r--tests/crashes/137467-2.rs18
-rw-r--r--tests/crashes/137467-3.rs8
-rw-r--r--tests/crashes/137468.rs16
-rw-r--r--tests/crashes/137514.rs9
-rw-r--r--tests/crashes/137580.rs4
-rw-r--r--tests/crashes/137582.rs16
-rw-r--r--tests/crashes/137706.rs7
-rw-r--r--tests/crashes/137751.rs6
-rw-r--r--tests/crashes/137813.rs18
-rw-r--r--tests/crashes/137865.rs5
-rw-r--r--tests/crashes/137874.rs4
-rw-r--r--tests/crashes/137888.rs11
-rw-r--r--tests/crashes/137895.rs6
-rw-r--r--tests/crashes/137916.rs13
-rw-r--r--tests/crashes/138008.rs8
-rw-r--r--tests/crashes/138009.rs6
-rw-r--r--tests/crashes/138048.rs8
-rw-r--r--tests/crashes/138088.rs5
-rw-r--r--tests/crashes/138089.rs13
-rw-r--r--tests/crashes/138131.rs12
-rw-r--r--tests/crashes/138132.rs10
-rw-r--r--tests/crashes/138166.rs8
47 files changed, 569 insertions, 0 deletions
diff --git a/tests/crashes/136138.rs b/tests/crashes/136138.rs
new file mode 100644
index 00000000000..c3893dc9c8e
--- /dev/null
+++ b/tests/crashes/136138.rs
@@ -0,0 +1,7 @@
+//@ known-bug: #136138
+#![feature(min_generic_const_args)]
+struct U;
+struct S<const N: U>()
+where
+    S<{ U }>:;
+fn main() {}
diff --git a/tests/crashes/136175-2.rs b/tests/crashes/136175-2.rs
new file mode 100644
index 00000000000..28f8ff7fd1c
--- /dev/null
+++ b/tests/crashes/136175-2.rs
@@ -0,0 +1,13 @@
+//@ known-bug: #136175
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+trait Trait {}
+
+struct A<T>(T)
+where
+    [(); std::mem::offset_of!((T,), 0)]:;
+
+fn main() {
+    let x: A<dyn Trait>;
+}
diff --git a/tests/crashes/136175.rs b/tests/crashes/136175.rs
new file mode 100644
index 00000000000..0b5f2fdaa92
--- /dev/null
+++ b/tests/crashes/136175.rs
@@ -0,0 +1,13 @@
+//@ known-bug: #136175
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+trait Trait {}
+
+struct A<T>(T)
+where
+    [(); size_of::<T>()]:;
+
+fn main() {
+    let x: A<dyn Trait>;
+}
diff --git a/tests/crashes/136188.rs b/tests/crashes/136188.rs
new file mode 100644
index 00000000000..a701fc4c0b7
--- /dev/null
+++ b/tests/crashes/136188.rs
@@ -0,0 +1,9 @@
+//@ known-bug: #136188
+//@ compile-flags: --crate-type=lib -Znext-solver
+#![feature(type_alias_impl_trait)]
+
+type Opaque = Box<impl Sized>;
+
+fn define() -> Opaque { Box::new(()) }
+
+impl Copy for Opaque {}
diff --git a/tests/crashes/136286.rs b/tests/crashes/136286.rs
new file mode 100644
index 00000000000..f0ea14bd167
--- /dev/null
+++ b/tests/crashes/136286.rs
@@ -0,0 +1,7 @@
+//@ known-bug: #136286
+//@ compile-flags: --edition=2024
+
+#![feature(async_fn_in_dyn_trait)]
+trait A {
+    async fn b(self: A);
+}
diff --git a/tests/crashes/136379.rs b/tests/crashes/136379.rs
new file mode 100644
index 00000000000..077b373e3b5
--- /dev/null
+++ b/tests/crashes/136379.rs
@@ -0,0 +1,11 @@
+//@ known-bug: #136379
+#![feature(min_generic_const_args)]
+pub struct S();
+
+impl S {
+    pub fn f() -> [u8; S] {
+        []
+    }
+}
+
+pub fn main() {}
diff --git a/tests/crashes/136381.rs b/tests/crashes/136381.rs
new file mode 100644
index 00000000000..13ccc14a2c5
--- /dev/null
+++ b/tests/crashes/136381.rs
@@ -0,0 +1,18 @@
+//@ known-bug: #136381
+//@ compile-flags: -Zvalidate-mir -Zmir-enable-passes=+GVN
+#![feature(trait_upcasting)]
+
+trait A {}
+trait B: A {
+    fn c(&self);
+}
+impl B for i32 {
+    fn c(self) {
+        todo!();
+    }
+}
+
+fn main() {
+    let baz: &dyn B = &1;
+    let bar: &dyn A = baz;
+}
diff --git a/tests/crashes/136416.rs b/tests/crashes/136416.rs
new file mode 100644
index 00000000000..b233422af86
--- /dev/null
+++ b/tests/crashes/136416.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #136416
+#![feature(generic_const_exprs)]
+struct State<const S : usize = {}> where[(); S] :;
+
+struct Foo;
+struct State2<const S: usize = Foo> where [(); S]:;
diff --git a/tests/crashes/136442.rs b/tests/crashes/136442.rs
new file mode 100644
index 00000000000..0436debd565
--- /dev/null
+++ b/tests/crashes/136442.rs
@@ -0,0 +1,9 @@
+//@ known-bug: #136442
+//@ compile-flags: -Copt-level=0 -Zmir-enable-passes=+Inline -Zmir-enable-passes=+JumpThreading --crate-type lib
+pub fn problem_thingy(items: &mut impl Iterator<Item = str>) {
+    let mut peeker = items.peekable();
+    match peeker.peek() {
+        Some(_) => (),
+        None => return (),
+    }
+}
diff --git a/tests/crashes/136661.rs b/tests/crashes/136661.rs
new file mode 100644
index 00000000000..76161a566f4
--- /dev/null
+++ b/tests/crashes/136661.rs
@@ -0,0 +1,25 @@
+//@ known-bug: #136661
+
+#![allow(unused)]
+
+trait Supertrait<T> {}
+
+trait Other {
+    fn method(&self) {}
+}
+
+impl WithAssoc for &'static () {
+    type As = ();
+}
+
+trait WithAssoc {
+    type As;
+}
+
+trait Trait<P: WithAssoc>: Supertrait<P::As> {
+    fn method(&self) {}
+}
+
+fn hrtb<T: for<'a> Trait<&'a ()>>() {}
+
+pub fn main() {}
diff --git a/tests/crashes/136666.rs b/tests/crashes/136666.rs
new file mode 100644
index 00000000000..5cfed65fdf9
--- /dev/null
+++ b/tests/crashes/136666.rs
@@ -0,0 +1,36 @@
+//@ known-bug: #136666
+// Needed so that rust can infer that the A in what() is &()
+trait IsRef<T> {}
+struct Dummy;
+impl<'a> IsRef<&'a ()> for Dummy {}
+
+trait WithLifetime {
+    type Output<'a>;
+}
+impl<'t> WithLifetime for &'t () {
+    type Output<'a> = &'a ();
+}
+
+// Needed to prevent the two Foo impls from overlapping
+struct Wrap<A>(A);
+
+trait Unimplemented {}
+
+trait Foo {}
+impl<T> Foo for T where T: Unimplemented {}
+impl<A> Foo for Wrap<A>
+where
+    Dummy: IsRef<A>,
+    for<'a> A: WithLifetime<Output<'a> = A>,
+{
+}
+
+fn what<A>()
+where
+    Wrap<A>: Foo,
+{
+}
+
+fn main() {
+    what();
+}
diff --git a/tests/crashes/136678.rs b/tests/crashes/136678.rs
new file mode 100644
index 00000000000..e7d7de23bfe
--- /dev/null
+++ b/tests/crashes/136678.rs
@@ -0,0 +1,18 @@
+//@ known-bug: #136678
+#![feature(inherent_associated_types)]
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+struct B<const A: usize>;
+
+struct Test<const A: usize>;
+
+impl<const A: usize> Test<A> {
+    type B = B<{ A }>;
+
+    fn test(a: Self::B) -> Self::B {
+        a
+    }
+}
+
+pub fn main() {}
diff --git a/tests/crashes/136766.rs b/tests/crashes/136766.rs
new file mode 100644
index 00000000000..01fa07a05ae
--- /dev/null
+++ b/tests/crashes/136766.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #136766
+#![feature(generic_const_exprs)]
+trait A<const B: bool>{}
+impl A<true> for () {}
+fn c<const D: usize>(E: [u8; D * D]) where() : A<D>{}
+fn main() { c }
diff --git a/tests/crashes/136859.rs b/tests/crashes/136859.rs
new file mode 100644
index 00000000000..2c926eea5e2
--- /dev/null
+++ b/tests/crashes/136859.rs
@@ -0,0 +1,27 @@
+//@ known-bug: #136859
+#![feature(generic_const_exprs)]
+
+trait If<const COND: bool> {}
+impl If<true> for () {}
+
+trait IsZero<const N: u8> {
+    type Answer;
+}
+
+struct True;
+struct False;
+
+impl<const N: u8> IsZero<N> for ()
+where (): If<{N == 0}> {
+    type Msg = True;
+}
+
+trait Foobar<const N: u8> {}
+
+impl<const N: u8> Foobar<N> for ()
+where (): IsZero<N, Answer = True> {}
+
+impl<const N: u8> Foobar<{{ N }}> for ()
+where (): IsZero<N, Answer = False> {}
+
+fn main() {}
diff --git a/tests/crashes/136894.rs b/tests/crashes/136894.rs
new file mode 100644
index 00000000000..26bbb78717e
--- /dev/null
+++ b/tests/crashes/136894.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #136894
+#![feature(generic_const_exprs)]
+#![crate_type = "lib"]
+#![allow(incomplete_features, dead_code)]
+
+struct X<T>([(); f::<T>()]) where [(); f::<T>()]:;
+
+const fn f<T>() -> usize { panic!() }
diff --git a/tests/crashes/137049.rs b/tests/crashes/137049.rs
new file mode 100644
index 00000000000..a7132e4fa17
--- /dev/null
+++ b/tests/crashes/137049.rs
@@ -0,0 +1,29 @@
+//@ known-bug: #137049
+//@ compile-flags: --crate-type=lib
+#![feature(type_alias_impl_trait)]
+
+use std::marker::PhantomData;
+
+trait Project1 {
+    type Assoc1;
+}
+
+impl<T> Project1 for T {
+    type Assoc1 = ();
+}
+
+trait Project2 {
+    type Assoc2;
+}
+
+impl<T: Project1<Assoc1 = ()>> Project2 for PhantomData<T> {
+    type Assoc2 = ();
+}
+
+type Alias<T> = impl Project2;
+
+fn constrain<T>() -> Alias<T> {
+    PhantomData::<T>
+}
+
+struct AdtConstructor<T: Project1>(<Alias<T> as Project2>::Assoc2);
diff --git a/tests/crashes/137084.rs b/tests/crashes/137084.rs
new file mode 100644
index 00000000000..0f248c21206
--- /dev/null
+++ b/tests/crashes/137084.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #137084
+#![feature(min_generic_const_args)]
+fn a<const b: i32>() {}
+fn d(e: &String) {
+    a::<d>
+}
diff --git a/tests/crashes/137187.rs b/tests/crashes/137187.rs
new file mode 100644
index 00000000000..05cfb2b10e1
--- /dev/null
+++ b/tests/crashes/137187.rs
@@ -0,0 +1,9 @@
+//@ known-bug: #137187
+use std::ops::Add;
+trait A where
+    *const Self: Add,
+{
+    const fn b(c: *const Self) -> <*const Self as Add>::Output {
+        c + c
+    }
+}
diff --git a/tests/crashes/137188.rs b/tests/crashes/137188.rs
new file mode 100644
index 00000000000..fdd098d300f
--- /dev/null
+++ b/tests/crashes/137188.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #137188
+#![feature(min_generic_const_args)]
+trait Trait {}
+impl Trait for [(); N] {}
+fn N<T>() {}
+pub fn main() {}
diff --git a/tests/crashes/137190-1.rs b/tests/crashes/137190-1.rs
new file mode 100644
index 00000000000..bdfe883b712
--- /dev/null
+++ b/tests/crashes/137190-1.rs
@@ -0,0 +1,10 @@
+//@ known-bug: #137190
+//@ compile-flags: -Zmir-opt-level=2 -Zvalidate-mir
+trait A {
+    fn b(&self);
+}
+trait C: A {}
+impl C for () {}
+fn main() {
+    (&() as &dyn C as &dyn A).b();
+}
diff --git a/tests/crashes/137190-2.rs b/tests/crashes/137190-2.rs
new file mode 100644
index 00000000000..0c68b5aa4a5
--- /dev/null
+++ b/tests/crashes/137190-2.rs
@@ -0,0 +1,18 @@
+//@ known-bug: #137190
+trait Supertrait<T> {
+    fn method(&self) {}
+}
+
+trait Trait<P>: Supertrait<()> {}
+
+impl<P> Trait<P> for () {}
+
+const fn upcast<P>(x: &dyn Trait<P>) -> &dyn Supertrait<()> {
+    x
+}
+
+const fn foo() -> &'static dyn Supertrait<()> {
+    upcast::<()>(&())
+}
+
+const _: &'static dyn Supertrait<()> = foo();
diff --git a/tests/crashes/137190-3.rs b/tests/crashes/137190-3.rs
new file mode 100644
index 00000000000..88ae88e11bc
--- /dev/null
+++ b/tests/crashes/137190-3.rs
@@ -0,0 +1,10 @@
+//@ known-bug: #137190
+trait Supertrait {
+    fn method(&self) {}
+}
+
+trait Trait: Supertrait {}
+
+impl Trait for () {}
+
+const _: &dyn Supertrait = &() as &dyn Trait as &dyn Supertrait;
diff --git a/tests/crashes/137260.rs b/tests/crashes/137260.rs
new file mode 100644
index 00000000000..f1fa8a660dc
--- /dev/null
+++ b/tests/crashes/137260.rs
@@ -0,0 +1,11 @@
+//@ known-bug: #137260
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+trait Iter<const N: usize = { 1 + true }> {}
+
+fn needs_iter<const N: usize, T: Iter<N>>() {}
+
+fn test() {
+    needs_iter::<1, dyn Iter<()>>();
+}
diff --git a/tests/crashes/137287.rs b/tests/crashes/137287.rs
new file mode 100644
index 00000000000..59fdf568d36
--- /dev/null
+++ b/tests/crashes/137287.rs
@@ -0,0 +1,29 @@
+//@ known-bug: #137287
+
+mod defining_scope {
+    use super::*;
+    pub type Alias<T> = impl Sized;
+
+    pub fn cast<T>(x: Container<Alias<T>, T>) -> Container<T, T> {
+        x
+    }
+}
+
+struct Container<T: Trait<U>, U> {
+    x: <T as Trait<U>>::Assoc,
+}
+
+trait Trait<T> {
+    type Assoc;
+}
+
+impl<T> Trait<T> for T {
+    type Assoc = Box<u32>;
+}
+impl<T> Trait<T> for defining_scope::Alias<T> {
+    type Assoc = usize;
+}
+
+fn main() {
+    let x: Box<u32> = defining_scope::cast::<()>(Container { x: 0 }).x;
+}
diff --git a/tests/crashes/137467-1.rs b/tests/crashes/137467-1.rs
new file mode 100644
index 00000000000..1d62cba59a7
--- /dev/null
+++ b/tests/crashes/137467-1.rs
@@ -0,0 +1,17 @@
+//@ known-bug: #137467
+//@ compile-flags: --edition=2021
+enum Camera {
+    Normal { base_transform: i32 },
+    Volume { transform: i32 },
+}
+
+fn draw_ui(camera: &mut Camera) {
+    || {
+        let (Camera::Normal {
+            base_transform: _transform,
+        }
+        | Camera::Volume {
+            transform: _transform,
+        }) = camera;
+    };
+}
diff --git a/tests/crashes/137467-2.rs b/tests/crashes/137467-2.rs
new file mode 100644
index 00000000000..151d6a0767f
--- /dev/null
+++ b/tests/crashes/137467-2.rs
@@ -0,0 +1,18 @@
+//@ known-bug: #137467
+//@ compile-flags: --edition=2021
+
+enum Camera {
+    Normal { base_transform: i32 },
+    Volume { transform: i32 },
+}
+
+fn draw_ui(camera: &mut Camera) {
+    || {
+        let (Camera::Normal {
+            base_transform: _,
+        }
+        | Camera::Volume {
+            transform: _,
+        }) = camera;
+    };
+}
diff --git a/tests/crashes/137467-3.rs b/tests/crashes/137467-3.rs
new file mode 100644
index 00000000000..2140fe044a7
--- /dev/null
+++ b/tests/crashes/137467-3.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #137467
+//@ compile-flags: --edition=2021
+
+fn meow(x: (u32, u32, u32)) {
+    let f = || {
+        let ((0, a, _) | (_, _, a)) = x;
+    };
+}
diff --git a/tests/crashes/137468.rs b/tests/crashes/137468.rs
new file mode 100644
index 00000000000..cceb0502bd2
--- /dev/null
+++ b/tests/crashes/137468.rs
@@ -0,0 +1,16 @@
+//@ known-bug: #137468
+//@ compile-flags: -Copt-level=0 -Zmir-enable-passes=+GVN -Zvalidate-mir
+trait Supertrait<T> {}
+
+trait Identity {
+    type Selff;
+}
+
+trait Trait<P>: Supertrait<()> + Supertrait<<P as Identity>::Selff> {}
+
+impl<P> Trait<P> for () {}
+
+fn main() {
+    let x: &dyn Trait<()> = &();
+    let x: &dyn Supertrait<()> = x;
+}
diff --git a/tests/crashes/137514.rs b/tests/crashes/137514.rs
new file mode 100644
index 00000000000..7ae5f29e36e
--- /dev/null
+++ b/tests/crashes/137514.rs
@@ -0,0 +1,9 @@
+//@ known-bug: #137514
+//@ needs-rustc-debug-assertions
+#![feature(generic_const_exprs)]
+
+trait Bar<const N: usize> {}
+
+trait BB = Bar<{ 1i32 + 1 }>;
+
+fn foo(x: &dyn BB) {}
diff --git a/tests/crashes/137580.rs b/tests/crashes/137580.rs
new file mode 100644
index 00000000000..246c80ef556
--- /dev/null
+++ b/tests/crashes/137580.rs
@@ -0,0 +1,4 @@
+//@ known-bug: #137580
+fn main() {
+    println!("%65536$", 1);
+}
diff --git a/tests/crashes/137582.rs b/tests/crashes/137582.rs
new file mode 100644
index 00000000000..e21b6c9578b
--- /dev/null
+++ b/tests/crashes/137582.rs
@@ -0,0 +1,16 @@
+//@ known-bug: #137582
+#![feature(adt_const_params)]
+
+mod lib {
+    pub type Matrix = [&'static u32];
+
+    const EMPTY_MATRIX: Matrix = [[0; 4]; 4];
+
+    pub struct Walk<const CURRENT: usize, const REMAINING: Matrix> {
+        _p: (),
+    }
+
+    impl<const CURRENT: usize> Walk<CURRENT, EMPTY_MATRIX> {}
+}
+
+fn main() {}
diff --git a/tests/crashes/137706.rs b/tests/crashes/137706.rs
new file mode 100644
index 00000000000..0b46f9c237a
--- /dev/null
+++ b/tests/crashes/137706.rs
@@ -0,0 +1,7 @@
+//@ known-bug: #137706
+//@ needs-rustc-debug-assertions
+trait A {
+    fn b() -> impl IntoIterator<Item = ()>;
+}
+
+impl A<()> for dyn A {}
diff --git a/tests/crashes/137751.rs b/tests/crashes/137751.rs
new file mode 100644
index 00000000000..85ae3acd53d
--- /dev/null
+++ b/tests/crashes/137751.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #137751
+//@ compile-flags: --edition=2021 -Znext-solver=globally
+async fn test() {
+    Box::pin(test()).await;
+}
+fn main() {}
diff --git a/tests/crashes/137813.rs b/tests/crashes/137813.rs
new file mode 100644
index 00000000000..5d205ee5331
--- /dev/null
+++ b/tests/crashes/137813.rs
@@ -0,0 +1,18 @@
+//@ known-bug: #137813
+trait AssocConst {
+    const A: u8;
+}
+
+impl<T> AssocConst for (T,) {
+    const A: u8 = 0;
+}
+
+trait Trait {}
+
+impl<U> Trait for () where (U,): AssocConst<A = { 0 }> {}
+
+fn foo()
+where
+    (): Trait,
+{
+}
diff --git a/tests/crashes/137865.rs b/tests/crashes/137865.rs
new file mode 100644
index 00000000000..7ecd8c734d3
--- /dev/null
+++ b/tests/crashes/137865.rs
@@ -0,0 +1,5 @@
+//@ known-bug: #137865
+trait Foo {
+    type Assoc<const N: Self>;
+    fn foo() -> Self::Assoc<3>;
+}
diff --git a/tests/crashes/137874.rs b/tests/crashes/137874.rs
new file mode 100644
index 00000000000..44718809024
--- /dev/null
+++ b/tests/crashes/137874.rs
@@ -0,0 +1,4 @@
+//@ known-bug: #137874
+fn a() {
+    match b { deref !(0c) };
+}
diff --git a/tests/crashes/137888.rs b/tests/crashes/137888.rs
new file mode 100644
index 00000000000..6c13ae5fa91
--- /dev/null
+++ b/tests/crashes/137888.rs
@@ -0,0 +1,11 @@
+//@ known-bug: #137888
+#![feature(generic_const_exprs)]
+macro_rules! empty {
+    () => ();
+}
+fn bar<const N: i32>() -> [(); {
+       empty! {};
+       N
+   }] {
+}
+fn main() {}
diff --git a/tests/crashes/137895.rs b/tests/crashes/137895.rs
new file mode 100644
index 00000000000..bb624d2e9fa
--- /dev/null
+++ b/tests/crashes/137895.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #137895
+trait A {
+    fn b() -> impl ?Sized + 'a;
+}
+
+impl A for dyn A {}
diff --git a/tests/crashes/137916.rs b/tests/crashes/137916.rs
new file mode 100644
index 00000000000..3d6b0e0fbab
--- /dev/null
+++ b/tests/crashes/137916.rs
@@ -0,0 +1,13 @@
+//@ known-bug: #137916
+//@ compile-flags: --edition=2021
+use std::ptr::null;
+
+async fn a() -> Box<dyn Send> {
+    Box::new(async {
+        let non_send = null::<()>();
+        &non_send;
+        async {}.await
+    })
+}
+
+fn main() {}
diff --git a/tests/crashes/138008.rs b/tests/crashes/138008.rs
new file mode 100644
index 00000000000..4645b8c9d56
--- /dev/null
+++ b/tests/crashes/138008.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #138008
+//@compile-flags: --crate-type=lib -Copt-level=0
+#![feature(repr_simd)]
+const C: usize = 16;
+
+#[repr(simd)]
+pub struct Foo([u8; C]);
+pub unsafe fn foo(a: Foo) {}
diff --git a/tests/crashes/138009.rs b/tests/crashes/138009.rs
new file mode 100644
index 00000000000..a1b890823e7
--- /dev/null
+++ b/tests/crashes/138009.rs
@@ -0,0 +1,6 @@
+//@ known-bug: #138009
+#![feature(min_generic_const_args)]
+#[repr(simd)]
+struct T([isize; N]);
+
+static X: T = T();
diff --git a/tests/crashes/138048.rs b/tests/crashes/138048.rs
new file mode 100644
index 00000000000..fd59f46c752
--- /dev/null
+++ b/tests/crashes/138048.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #138048
+struct Foo;
+
+impl<'b> Foo {
+    fn bar<const V: u8>() {
+        let V;
+    }
+}
diff --git a/tests/crashes/138088.rs b/tests/crashes/138088.rs
new file mode 100644
index 00000000000..25496d804fe
--- /dev/null
+++ b/tests/crashes/138088.rs
@@ -0,0 +1,5 @@
+//@ known-bug: #138088
+#![feature(min_generic_const_args)]
+trait Bar {
+    fn x(&self) -> [i32; Bar::x];
+}
diff --git a/tests/crashes/138089.rs b/tests/crashes/138089.rs
new file mode 100644
index 00000000000..acf27072bdd
--- /dev/null
+++ b/tests/crashes/138089.rs
@@ -0,0 +1,13 @@
+//@ known-bug: #138089
+#![feature(generic_const_exprs)]
+#![feature(min_generic_const_args)]
+#![feature(inherent_associated_types)]
+struct OnDiskDirEntry<'a> {}
+
+impl<'a> OnDiskDirEntry<'a> {
+    const LFN_FRAGMENT_LEN: i64 = 2;
+
+    fn lfn_contents() -> [char; Self::LFN_FRAGMENT_LEN] {
+        loop {}
+    }
+}
diff --git a/tests/crashes/138131.rs b/tests/crashes/138131.rs
new file mode 100644
index 00000000000..f400c02de8d
--- /dev/null
+++ b/tests/crashes/138131.rs
@@ -0,0 +1,12 @@
+//@ known-bug: #138131
+#![feature(min_generic_const_args)]
+#![feature(inherent_associated_types)]
+struct Foo<'a> {
+    x: &'a (),
+}
+
+impl<'a> Foo<'a> {
+    fn foo(_: [u8; Foo::X]) {}
+}
+
+fn main() {}
diff --git a/tests/crashes/138132.rs b/tests/crashes/138132.rs
new file mode 100644
index 00000000000..3e31117c526
--- /dev/null
+++ b/tests/crashes/138132.rs
@@ -0,0 +1,10 @@
+//@ known-bug: #138132
+#![feature(min_generic_const_args)]
+struct b(Box<[u8; c]>);
+impl b {
+    fn d(self) {
+        self.0.e()
+    }
+}
+struct c<'a>(&'a u8);
+fn main() {}
diff --git a/tests/crashes/138166.rs b/tests/crashes/138166.rs
new file mode 100644
index 00000000000..98003bd6dae
--- /dev/null
+++ b/tests/crashes/138166.rs
@@ -0,0 +1,8 @@
+//@ known-bug: #138166
+#![feature(min_generic_const_args)]
+#![feature(inherent_associated_types)]
+struct a(Box<[u8; Box::b]>);
+impl a {
+  fn c(self) { self.0.d() }
+}
+fn main() {}