about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-05-28 00:28:52 +0000
committerbors <bors@rust-lang.org>2024-05-28 00:28:52 +0000
commit71213fd60700478ac9ddef2cb4ef43b7bb660a5b (patch)
tree26f694bf579b2c489b93616113de1630c7243b0c
parent84b40fc908c3adc7e0e470b3fbaa264df0e122b8 (diff)
parentbae945201f72cf548b3b2d8cfd545812cccfae4a (diff)
downloadrust-71213fd60700478ac9ddef2cb4ef43b7bb660a5b.tar.gz
rust-71213fd60700478ac9ddef2cb4ef43b7bb660a5b.zip
Auto merge of #125539 - matthiaskrgr:cräsh, r=jieyouxu
crashes: increment the number of tracked ones

r? `@jieyouxu`
-rw-r--r--tests/crashes/123255.rs13
-rw-r--r--tests/crashes/123276.rs25
-rw-r--r--tests/crashes/123887.rs15
-rw-r--r--tests/crashes/125013-1.rs5
-rw-r--r--tests/crashes/125013-2.rs16
-rw-r--r--tests/crashes/125014.rs17
-rw-r--r--tests/crashes/125059.rs12
-rw-r--r--tests/crashes/125323.rs6
-rw-r--r--tests/crashes/125476.rs4
-rw-r--r--tests/crashes/125512.rs10
-rw-r--r--tests/crashes/125553.rs15
-rw-r--r--tests/crashes/125556.rs14
-rw-r--r--tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs27
-rw-r--r--tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr125
-rw-r--r--tests/ui/const-generics/issues/issue-105821.rs2
15 files changed, 305 insertions, 1 deletions
diff --git a/tests/crashes/123255.rs b/tests/crashes/123255.rs
new file mode 100644
index 00000000000..a94a2a0422e
--- /dev/null
+++ b/tests/crashes/123255.rs
@@ -0,0 +1,13 @@
+//@ known-bug: rust-lang/rust#123255
+//@ edition:2021
+#![crate_type = "lib"]
+
+pub fn a() {}
+
+mod handlers {
+    pub struct C(&());
+    pub fn c() -> impl Fn() -> C {
+        let a1 = ();
+        || C((crate::a(), a1).into())
+    }
+}
diff --git a/tests/crashes/123276.rs b/tests/crashes/123276.rs
new file mode 100644
index 00000000000..d2246f59583
--- /dev/null
+++ b/tests/crashes/123276.rs
@@ -0,0 +1,25 @@
+//@ known-bug: rust-lang/rust#123276
+//@ edition:2021
+
+async fn create_task() {
+    _ = Some(async { bind(documentation_filter()) });
+}
+
+async fn bind<Fut, F: Filter<Future = Fut>>(_: F) {}
+
+fn documentation_filter() -> impl Filter {
+    AndThen
+}
+
+trait Filter {
+    type Future;
+}
+
+struct AndThen;
+
+impl Filter for AndThen
+where
+    Foo: Filter,
+{
+    type Future = ();
+}
diff --git a/tests/crashes/123887.rs b/tests/crashes/123887.rs
new file mode 100644
index 00000000000..68e2fb0325c
--- /dev/null
+++ b/tests/crashes/123887.rs
@@ -0,0 +1,15 @@
+//@ known-bug: rust-lang/rust#123887
+//@ compile-flags: -Clink-dead-code
+
+#![feature(extern_types)]
+#![feature(unsized_fn_params)]
+
+extern "C" {
+    pub type ExternType;
+}
+
+impl ExternType {
+    pub fn f(self) {}
+}
+
+pub fn main() {}
diff --git a/tests/crashes/125013-1.rs b/tests/crashes/125013-1.rs
new file mode 100644
index 00000000000..ae66d7a1466
--- /dev/null
+++ b/tests/crashes/125013-1.rs
@@ -0,0 +1,5 @@
+//@ known-bug: rust-lang/rust#125013
+//@ edition:2021
+use io::{self as std};
+use std::ops::Deref::{self as io};
+pub fn main() {}
diff --git a/tests/crashes/125013-2.rs b/tests/crashes/125013-2.rs
new file mode 100644
index 00000000000..a14c8a76b63
--- /dev/null
+++ b/tests/crashes/125013-2.rs
@@ -0,0 +1,16 @@
+//@ known-bug: rust-lang/rust#125013
+//@ edition:2021
+mod a {
+  pub mod b {
+    pub mod c {
+      pub trait D {}
+    }
+  }
+}
+
+use a::*;
+
+use e as b;
+use b::c::D as e;
+
+fn main() { }
diff --git a/tests/crashes/125014.rs b/tests/crashes/125014.rs
new file mode 100644
index 00000000000..b29042ee598
--- /dev/null
+++ b/tests/crashes/125014.rs
@@ -0,0 +1,17 @@
+//@ known-bug: rust-lang/rust#125014
+//@ compile-flags: -Znext-solver=coherence
+#![feature(specialization)]
+
+trait Foo {}
+
+impl Foo for <u16 as Assoc>::Output {}
+
+impl Foo for u32 {}
+
+trait Assoc {
+    type Output;
+}
+impl Output for u32 {}
+impl Assoc for <u16 as Assoc>::Output {
+    default type Output = bool;
+}
diff --git a/tests/crashes/125059.rs b/tests/crashes/125059.rs
new file mode 100644
index 00000000000..7e9f7414816
--- /dev/null
+++ b/tests/crashes/125059.rs
@@ -0,0 +1,12 @@
+//@ known-bug: rust-lang/rust#125059
+#![feature(deref_patterns)]
+#![allow(incomplete_features)]
+
+fn simple_vec(vec: Vec<u32>) -> u32 {
+   (|| match Vec::<u32>::new() {
+        deref!([]) => 100,
+        _ => 2000,
+    })()
+}
+
+fn main() {}
diff --git a/tests/crashes/125323.rs b/tests/crashes/125323.rs
new file mode 100644
index 00000000000..180b7bbad09
--- /dev/null
+++ b/tests/crashes/125323.rs
@@ -0,0 +1,6 @@
+//@ known-bug: rust-lang/rust#125323
+fn main() {
+    for _ in 0..0 {
+        [(); loop {}];
+    }
+}
diff --git a/tests/crashes/125476.rs b/tests/crashes/125476.rs
new file mode 100644
index 00000000000..aa9a081388d
--- /dev/null
+++ b/tests/crashes/125476.rs
@@ -0,0 +1,4 @@
+//@ known-bug: rust-lang/rust#125476
+//@ only-x86_64
+pub struct Data([u8; usize::MAX >> 16]);
+const _: &'static [Data] = &[];
diff --git a/tests/crashes/125512.rs b/tests/crashes/125512.rs
new file mode 100644
index 00000000000..1672b24a114
--- /dev/null
+++ b/tests/crashes/125512.rs
@@ -0,0 +1,10 @@
+//@ known-bug: rust-lang/rust#125512
+//@ edition:2021
+#![feature(object_safe_for_dispatch)]
+trait B {
+    fn f(a: A) -> A;
+}
+trait A {
+    fn concrete(b: B) -> B;
+}
+fn main() {}
diff --git a/tests/crashes/125553.rs b/tests/crashes/125553.rs
new file mode 100644
index 00000000000..142c06775bb
--- /dev/null
+++ b/tests/crashes/125553.rs
@@ -0,0 +1,15 @@
+//@ known-bug: rust-lang/rust#125553
+//@ edition:2021
+
+#[derive(Copy, Clone)]
+struct Foo((u32, u32));
+
+fn main() {
+    type T = impl Copy(Copy, Clone)
+    let foo: T = Foo((1u32, 1u32));
+    let x = move || {
+        let derive = move || {
+        let Foo((a, b)) = foo;
+    };
+    };
+}
diff --git a/tests/crashes/125556.rs b/tests/crashes/125556.rs
new file mode 100644
index 00000000000..f2e2a991b11
--- /dev/null
+++ b/tests/crashes/125556.rs
@@ -0,0 +1,14 @@
+//@ known-bug: rust-lang/rust#125556
+//@ compile-flags: -Znext-solver=coherence
+
+#![feature(generic_const_exprs)]
+
+pub struct A<const z: [usize; x]> {}
+
+impl A<2> {
+    pub const fn B() {}
+}
+
+impl A<2> {
+    pub const fn B() {}
+}
diff --git a/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs b/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs
new file mode 100644
index 00000000000..cd2dc3f4fe8
--- /dev/null
+++ b/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs
@@ -0,0 +1,27 @@
+// issue: rust-lang/rust#125520
+#![feature(generic_const_exprs)]
+//~^ WARN the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
+
+struct Outer<const A: i64, const B: i64>();
+impl<const A: usize, const B: usize> Outer<A, B>
+//~^ ERROR the constant `A` is not of type `i64`
+//~| ERROR the constant `B` is not of type `i64`
+//~| ERROR mismatched types
+//~| ERROR mismatched types
+where
+    [(); A + (B * 2)]:,
+{
+    fn i() -> Self {
+    //~^ ERROR the constant `A` is not of type `i64`
+    //~| ERROR the constant `B` is not of type `i64`
+        Self
+        //~^ ERROR mismatched types
+        //~| ERROR the constant `A` is not of type `i64`
+        //~| ERROR the constant `B` is not of type `i64`
+    }
+}
+
+fn main() {
+    Outer::<1, 1>::o();
+    //~^ ERROR no function or associated item named `o` found for struct `Outer` in the current scope
+}
diff --git a/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr b/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr
new file mode 100644
index 00000000000..2dbd69fd3bc
--- /dev/null
+++ b/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr
@@ -0,0 +1,125 @@
+warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:2:12
+   |
+LL | #![feature(generic_const_exprs)]
+   |            ^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
+   = note: `#[warn(incomplete_features)]` on by default
+
+error: the constant `A` is not of type `i64`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:38
+   |
+LL | impl<const A: usize, const B: usize> Outer<A, B>
+   |                                      ^^^^^^^^^^^ expected `i64`, found `usize`
+   |
+note: required by a bound in `Outer`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   |              ^^^^^^^^^^^^ required by this bound in `Outer`
+
+error: the constant `B` is not of type `i64`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:38
+   |
+LL | impl<const A: usize, const B: usize> Outer<A, B>
+   |                                      ^^^^^^^^^^^ expected `i64`, found `usize`
+   |
+note: required by a bound in `Outer`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   |                            ^^^^^^^^^^^^ required by this bound in `Outer`
+
+error: the constant `A` is not of type `i64`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:14:15
+   |
+LL |     fn i() -> Self {
+   |               ^^^^ expected `i64`, found `usize`
+   |
+note: required by a bound in `Outer`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   |              ^^^^^^^^^^^^ required by this bound in `Outer`
+
+error: the constant `B` is not of type `i64`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:14:15
+   |
+LL |     fn i() -> Self {
+   |               ^^^^ expected `i64`, found `usize`
+   |
+note: required by a bound in `Outer`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   |                            ^^^^^^^^^^^^ required by this bound in `Outer`
+
+error[E0308]: mismatched types
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   | ---------------------------------------- `Outer` defines a struct constructor here, which should be called
+...
+LL |     fn i() -> Self {
+   |               ---- expected `Outer<A, B>` because of return type
+...
+LL |         Self
+   |         ^^^^ expected `Outer<A, B>`, found struct constructor
+   |
+   = note:          expected struct `Outer<A, B>`
+           found struct constructor `fn() -> Outer<A, B> {Outer::<A, B>}`
+help: use parentheses to construct this tuple struct
+   |
+LL |         Self()
+   |             ++
+
+error: the constant `A` is not of type `i64`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9
+   |
+LL |         Self
+   |         ^^^^ expected `i64`, found `usize`
+   |
+note: required by a bound in `Outer`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   |              ^^^^^^^^^^^^ required by this bound in `Outer`
+
+error: the constant `B` is not of type `i64`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9
+   |
+LL |         Self
+   |         ^^^^ expected `i64`, found `usize`
+   |
+note: required by a bound in `Outer`
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   |                            ^^^^^^^^^^^^ required by this bound in `Outer`
+
+error[E0599]: no function or associated item named `o` found for struct `Outer` in the current scope
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:25:20
+   |
+LL | struct Outer<const A: i64, const B: i64>();
+   | ---------------------------------------- function or associated item `o` not found for this struct
+...
+LL |     Outer::<1, 1>::o();
+   |                    ^ function or associated item not found in `Outer<1, 1>`
+
+error[E0308]: mismatched types
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:44
+   |
+LL | impl<const A: usize, const B: usize> Outer<A, B>
+   |                                            ^ expected `i64`, found `usize`
+
+error[E0308]: mismatched types
+  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:47
+   |
+LL | impl<const A: usize, const B: usize> Outer<A, B>
+   |                                               ^ expected `i64`, found `usize`
+
+error: aborting due to 10 previous errors; 1 warning emitted
+
+Some errors have detailed explanations: E0308, E0599.
+For more information about an error, try `rustc --explain E0308`.
diff --git a/tests/ui/const-generics/issues/issue-105821.rs b/tests/ui/const-generics/issues/issue-105821.rs
index 282cbe9249d..e55da461605 100644
--- a/tests/ui/const-generics/issues/issue-105821.rs
+++ b/tests/ui/const-generics/issues/issue-105821.rs
@@ -1,5 +1,5 @@
 //@ failure-status: 101
-//@ known-bug: unknown
+//@ known-bug: rust-lang/rust#125451
 //@ normalize-stderr-test "note: .*\n\n" -> ""
 //@ normalize-stderr-test "thread 'rustc' panicked.*\n.*\n" -> ""
 //@ normalize-stderr-test "(error: internal compiler error: [^:]+):\d+:\d+: " -> "$1:LL:CC: "