Auto merge of #125539 - matthiaskrgr:cräsh, r=jieyouxu

crashes: increment the number of tracked ones

r? `@jieyouxu`
This commit is contained in:
bors 2024-05-28 00:28:52 +00:00
commit 71213fd607
15 changed files with 305 additions and 1 deletions

13
tests/crashes/123255.rs Normal file
View file

@ -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())
}
}

25
tests/crashes/123276.rs Normal file
View file

@ -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 = ();
}

15
tests/crashes/123887.rs Normal file
View file

@ -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() {}

View file

@ -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() {}

16
tests/crashes/125013-2.rs Normal file
View file

@ -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() { }

17
tests/crashes/125014.rs Normal file
View file

@ -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;
}

12
tests/crashes/125059.rs Normal file
View file

@ -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() {}

6
tests/crashes/125323.rs Normal file
View file

@ -0,0 +1,6 @@
//@ known-bug: rust-lang/rust#125323
fn main() {
for _ in 0..0 {
[(); loop {}];
}
}

4
tests/crashes/125476.rs Normal file
View file

@ -0,0 +1,4 @@
//@ known-bug: rust-lang/rust#125476
//@ only-x86_64
pub struct Data([u8; usize::MAX >> 16]);
const _: &'static [Data] = &[];

10
tests/crashes/125512.rs Normal file
View file

@ -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() {}

15
tests/crashes/125553.rs Normal file
View file

@ -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;
};
};
}

14
tests/crashes/125556.rs Normal file
View file

@ -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() {}
}

View file

@ -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
}

View file

@ -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`.

View file

@ -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: "