Auto merge of #125539 - matthiaskrgr:cräsh, r=jieyouxu
crashes: increment the number of tracked ones r? `@jieyouxu`
This commit is contained in:
commit
71213fd607
15 changed files with 305 additions and 1 deletions
13
tests/crashes/123255.rs
Normal file
13
tests/crashes/123255.rs
Normal 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
25
tests/crashes/123276.rs
Normal 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
15
tests/crashes/123887.rs
Normal 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() {}
|
5
tests/crashes/125013-1.rs
Normal file
5
tests/crashes/125013-1.rs
Normal 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
16
tests/crashes/125013-2.rs
Normal 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
17
tests/crashes/125014.rs
Normal 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
12
tests/crashes/125059.rs
Normal 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
6
tests/crashes/125323.rs
Normal 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
4
tests/crashes/125476.rs
Normal 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
10
tests/crashes/125512.rs
Normal 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
15
tests/crashes/125553.rs
Normal 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
14
tests/crashes/125556.rs
Normal 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() {}
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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`.
|
|
@ -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: "
|
||||
|
|
Loading…
Add table
Reference in a new issue