Skip to content

Commit adca7f1

Browse files
committed
Auto merge of rust-lang#141225 - matthiaskrgr:crashes_may2015, r=<try>
more ice tests try-job: aarch64-apple try-job: x86_64-msvc-1 try-job: x86_64-gnu try-job: dist-i586-gnu-i586-i686-musl try-job: test-various
2 parents b53e5c9 + 0443a66 commit adca7f1

36 files changed

+396
-0
lines changed

tests/crashes/139905.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//@ known-bug: #139905
2+
trait a<const b: bool> {}
3+
impl a<{}> for () {}
4+
trait c {}
5+
impl<const d: u8> c for () where (): a<d> {}
6+
impl c for () {}

tests/crashes/140011.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//@ known-bug: #140011
2+
//@compile-flags: -Wrust-2021-incompatible-closure-captures
3+
enum b {
4+
c(d),
5+
e(f),
6+
}
7+
struct f;
8+
fn g() {
9+
let h;
10+
|| b::e(a) = h;
11+
}

tests/crashes/140099.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//@ known-bug: #140099
2+
struct a;
3+
impl From for a where for<'any> &'any mut (): Clone {}
4+
fn b() -> Result<(), std::convert::Infallible> {
5+
|| -> Result<_, a> { b()? }
6+
}

tests/crashes/140100.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//@ known-bug: #140100
2+
fn a()
3+
where
4+
b: Sized,
5+
{
6+
println!()
7+
}

tests/crashes/140123-2.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//@ known-bug: #140123
2+
//@ compile-flags: --crate-type lib
3+
4+
trait Trait {}
5+
6+
impl Trait for [(); 0] {}
7+
8+
const ICE: [&mut dyn Trait; 2] = [const { empty_mut() }; 2];
9+
10+
const fn empty_mut() -> &'static mut [(); 0] {
11+
&mut []
12+
}

tests/crashes/140123-3.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@ known-bug: #140123
2+
//@ compile-flags: --crate-type lib
3+
4+
const ICE: [&mut [()]; 2] = [const { empty_mut() }; 2];
5+
6+
const fn empty_mut() -> &'static mut [()] {
7+
unsafe {
8+
std::slice::from_raw_parts_mut(std::ptr::dangling_mut(), 0)
9+
}
10+
}

tests/crashes/140123-4.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//@ known-bug: #140123
2+
//@ compile-flags: --crate-type lib
3+
4+
const ICE: [&mut [(); 0]; 2] = [const { empty_mut() }; 2];
5+
6+
const fn empty_mut() -> &'static mut [(); 0] {
7+
&mut []
8+
}
9+
// https://github.com/rust-lang/rust/issues/140123#issuecomment-2820664450
10+
const ICE2: [&mut [(); 0]; 2] = [const {
11+
let x = &mut [];
12+
x
13+
}; 2];

tests/crashes/140123.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@ known-bug: #140123
2+
//@ compile-flags: --crate-type lib
3+
4+
const OK: [&mut [()]; 2] = [empty_mut(), empty_mut()];
5+
const ICE: [&mut [()]; 2] = [const { empty_mut() }; 2];
6+
7+
// Any kind of fn call gets around E0764.
8+
const fn empty_mut() -> &'static mut [()] {
9+
&mut []
10+
}

tests/crashes/140255.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
//@ known-bug: #140255
2+
#[unsafe(macro_use::VAR2)]
3+
fn dead_code() {}

tests/crashes/140275.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
//@ known-bug: #140275
2+
#![feature(generic_const_exprs)]
3+
trait T{}
4+
trait V{}
5+
impl<const N: i32> T for [i32; N::<&mut V>] {}

tests/crashes/140281.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//@ known-bug: #140281
2+
3+
macro_rules! foo {
4+
($x:expr) => { $x }
5+
}
6+
7+
fn main() {
8+
let t = vec![
9+
/// ‮test⁦ RTL in doc in vec!
10+
// ICE (Sadly)
11+
1
12+
];
13+
14+
foo!(
15+
/// ‮test⁦ RTL in doc in macro
16+
1
17+
);
18+
}

tests/crashes/140303.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//@ known-bug: #140303
2+
//@compile-flags: -Zvalidate-mir
3+
use std::future::Future;
4+
async fn a() -> impl Sized {
5+
b(c)
6+
}
7+
async fn c(); // kaboom
8+
fn b<d>(e: d) -> impl Sized
9+
where
10+
d: f,
11+
{
12+
|| -> <d>::h { panic!() }
13+
}
14+
trait f {
15+
type h;
16+
}
17+
impl<d, g> f for d
18+
where
19+
d: Fn() -> g,
20+
g: Future,
21+
{
22+
}

tests/crashes/140333.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@ known-bug: #140333
2+
fn a() -> impl b<
3+
[c; {
4+
struct d {
5+
#[a]
6+
bar: e,
7+
}
8+
}],
9+
>;

tests/crashes/140365.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//@ known-bug: #140365
2+
//@compile-flags: -C opt-level=1 -Zvalidate-mir
3+
fn f() -> &'static str
4+
where
5+
Self: Sized,
6+
{
7+
""
8+
}

tests/crashes/140381.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//@ known-bug: #140381
2+
pub trait Foo<T> {}
3+
pub trait Lend {
4+
type From<'a>
5+
where
6+
Self: 'a;
7+
fn lend(from: Self::From<'_>) -> impl Foo<Self::From<'_>>;
8+
}
9+
10+
impl<T, F> Lend for (T, F) {
11+
type From<'a> = ();
12+
13+
fn lend(from: Self::From<'_>) -> impl Foo<Self::From<'_>> {
14+
from
15+
}
16+
}

tests/crashes/140429.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//@ known-bug: #140429
2+
//@ compile-flags: -Zlint-mir --crate-type lib
3+
//@ edition:2024
4+
5+
#![feature(async_drop)]
6+
async fn a<T>(x: T) {}

tests/crashes/140479.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
//@ known-bug: #140479
2+
macro_rules! a { ( $( { $ [ $b:c ] } )) => ( $(${ concat(d, $b)} ))}
3+
fn e() {
4+
a!({})
5+
}

tests/crashes/140484.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//@ known-bug: #140484
2+
//@edition:2024
3+
#![feature(async_drop)]
4+
use std::future::AsyncDrop;
5+
struct a;
6+
impl Drop for a {
7+
fn b() {}
8+
}
9+
impl AsyncDrop for a {
10+
type c;
11+
}
12+
async fn bar() {
13+
a;
14+
}

tests/crashes/140500.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//@ known-bug: #140500
2+
3+
#![feature(async_drop)]
4+
use std::future::AsyncDrop;
5+
struct a;
6+
impl Drop for a {
7+
fn b() {}
8+
}
9+
impl AsyncDrop for a {
10+
fn c(d: impl Sized) {}
11+
}
12+
async fn bar() {
13+
a;
14+
}

tests/crashes/140530.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//@ known-bug: #140530
2+
//@ edition: 2024
3+
4+
#![feature(async_drop, gen_blocks)]
5+
async gen fn a() {
6+
_ = async {}
7+
}
8+
fn main() {}

tests/crashes/140531.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//@ known-bug: #140531
2+
//@compile-flags: -Zlint-mir --crate-type lib
3+
//@ edition:2024
4+
#![feature(async_drop)]
5+
async fn call_once(f: impl AsyncFnOnce()) {
6+
let fut = Box::pin(f());
7+
}

tests/crashes/140571.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//@ known-bug: #140571
2+
pub trait IsVoid {
3+
const IS_VOID: bool;
4+
}
5+
impl<T> IsVoid for T {
6+
default const IS_VOID: bool = false;
7+
}
8+
impl<T> Maybe<T> for () where T: NotVoid + ?Sized {}
9+
10+
pub trait NotVoid {}
11+
impl<T> NotVoid for T where T: IsVoid<IS_VOID = false> + ?Sized {}
12+
13+
pub trait Maybe<T> {}
14+
impl<T> Maybe<T> for T {}

tests/crashes/140577.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//@ known-bug: #140577
2+
//@ compile-flags: -Znext-solver=globally
3+
//@ edition:2021
4+
5+
use std::future::Future;
6+
use std::pin::Pin;
7+
trait Acquire {
8+
type Connection;
9+
}
10+
impl Acquire for &'static () {
11+
type Connection = ();
12+
}
13+
fn b<T: Acquire>() -> impl Future + Send {
14+
let x: Pin<Box<dyn Future<Output = T::Connection> + Send>> = todo!();
15+
x
16+
}
17+
fn main() {
18+
async {
19+
b::<&()>().await;
20+
}
21+
.aa();
22+
}
23+
24+
impl<F> Filter for F where F: Send {}
25+
26+
trait Filter {
27+
fn aa(self)
28+
where
29+
Self: Sized,
30+
{
31+
}
32+
}

tests/crashes/140609.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//@ known-bug: #140609
2+
#![feature(with_negative_coherence)]
3+
#![feature(generic_const_exprs)]
4+
#![crate_type = "lib"]
5+
trait Trait {}
6+
struct A<const B: bool>;
7+
8+
trait C {}
9+
10+
impl<const D: u32> Trait for E<D> where A<{ D <= 2 }>: FnOnce(&isize) {}
11+
struct E<const D: u32>;
12+
13+
impl<const D: u32> Trait for E<D> where A<{ D <= 2 }>: C {}

tests/crashes/140642.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//@ known-bug: #140642
2+
#![feature(min_generic_const_args)]
3+
4+
pub trait Tr<A> {
5+
const SIZE: usize;
6+
}
7+
8+
fn mk_array(_x: T) -> [(); <T as Tr<bool>>::SIZE] {}

tests/crashes/140683.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
//@ known-bug: #140683
2+
impl T {
3+
#[core::contracts::ensures]
4+
fn b() { (loop) }
5+
}

tests/crashes/140729.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//@ known-bug: #140729
2+
#![feature(min_generic_const_args)]
3+
4+
const C: usize = 0;
5+
pub struct A<const M: usize> {}
6+
impl A<C> {
7+
fn fun1() {}
8+
}
9+
impl A {
10+
fn fun1() {}
11+
}

tests/crashes/140823.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@ known-bug: #140823
2+
3+
struct Container<T> {
4+
data: T,
5+
}
6+
7+
fn ice(callback: Box<dyn Fn(Container<&u8>)>) {
8+
let fails: Box<dyn Fn(&Container<&u8>)> = callback;
9+
}

tests/crashes/140850.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//@ known-bug: #140850
2+
//@ compile-flags: -Zvalidate-mir
3+
fn A() -> impl {
4+
while A() {}
5+
loop {}
6+
}
7+
fn main() {}

tests/crashes/140860.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@ known-bug: #140860
2+
#![feature(min_generic_const_args)]
3+
#![feature(unsized_const_params)]
4+
#![feature(with_negative_coherence, negative_impls)]
5+
trait a < const b : &'static str> {} trait c {} struct d< e >(e);
6+
impl<e> c for e where e: a<""> {}
7+
impl<e> c for d<e> {}
8+
impl<e> !a<f> for e {}
9+
const f : &str = "";
10+
fn main() {}

tests/crashes/140884.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//@ known-bug: #140884
2+
//@ needs-rustc-debug-assertions
3+
4+
fn a() {
5+
extern "" {}
6+
}

tests/crashes/140891.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//@ known-bug: #140891
2+
struct A<const N: usize> {}
3+
impl<const N: usize> Iterator for A<N> {
4+
fn next() -> [(); std::mem::size_of::<Option<Self::Item>>] {}
5+
}
6+
fn main() {}

tests/crashes/140974.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//@ known-bug: #140974
2+
//@edition:2021
3+
#![feature(async_drop)]
4+
use core::future::AsyncDrop;
5+
6+
async fn fun(_: HasIncompleteAsyncDrop) {}
7+
8+
struct HasIncompleteAsyncDrop;
9+
impl Drop for HasIncompleteAsyncDrop {
10+
fn drop(&mut self) {}
11+
}
12+
impl AsyncDrop for HasIncompleteAsyncDrop {
13+
// not implemented yet..
14+
}

0 commit comments

Comments
 (0)