more ice tests

This commit is contained in:
Matthias Krüger 2024-06-16 20:38:08 +02:00
parent 55cac26a9e
commit ff096f83f7
13 changed files with 222 additions and 0 deletions

11
tests/crashes/126062.rs Normal file
View file

@ -0,0 +1,11 @@
//@ known-bug: rust-lang/rust#126062
struct Fail<T>(Fail);
impl<T> Fail<i32> {
const C: () = panic!();
}
fn f<T>() {
if false {
let _val = &Fail::<T>::C;
}
}

23
tests/crashes/126148.rs Normal file
View file

@ -0,0 +1,23 @@
//@ known-bug: rust-lang/rust#126148
#![feature(effects)]
use std::ops::{FromResidual, Try};
struct TryMe;
struct Error;
impl const FromResidual<Error> for TryMe {}
impl const Try for TryMe {
type Output = ();
type Residual = Error;
}
const fn t() -> TryMe {
TryMe?;
TryMe
}
const _: () = {
t();
};

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

@ -0,0 +1,10 @@
//@ known-bug: rust-lang/rust#126182
#![feature(generic_const_exprs)]
#![allow(incomplete_features)]
struct Cond<const B: bool>;
struct Thing<T = Cond<0>>(T);
impl Thing {}

30
tests/crashes/126267.rs Normal file
View file

@ -0,0 +1,30 @@
//@ known-bug: rust-lang/rust#126267
#![feature(transmutability)]
#![crate_type = "lib"]
pub enum ApiError {}
pub struct TokioError {
b: bool,
}
pub enum Error {
Api { source: ApiError },
Ethereum,
Tokio { source: TokioError },
}
mod assert {
use std::mem::BikeshedIntrinsicFrom;
pub fn is_transmutable<Src, Dst>()
where
Dst: BikeshedIntrinsicFrom<Src>, // safety is NOT assumed
{
}
}
fn test() {
struct Src;
type Dst = Error;
assert::is_transmutable::<Src, Dst>();
}

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

@ -0,0 +1,12 @@
//@ known-bug: rust-lang/rust#126269
#![feature(coerce_unsized)]
pub enum Foo<T> {
Bar([T; usize::MAX]),
}
use std::ops::CoerceUnsized;
impl<T, U> CoerceUnsized<U> for T {}
fn main() {}

28
tests/crashes/126272.rs Normal file
View file

@ -0,0 +1,28 @@
//@ known-bug: rust-lang/rust#126272
#![feature(adt_const_params)]
#![allow(incomplete_features)]
use std::marker::ConstParamTy;
#[derive(Debug, PartialEq, Eq, ConstParamTy)]
struct Foo {
value: i32,
nested: &'static Bar<std::fmt::Debug>,
}
#[derive(Debug, PartialEq, Eq, ConstParamTy)]
struct Bar<T>(T);
struct Test<const F: Foo>;
fn main() {
let x: Test<
{
Foo {
value: 3,
nested: &Bar(4),
}
},
> = Test;
}

9
tests/crashes/126359.rs Normal file
View file

@ -0,0 +1,9 @@
//@ known-bug: rust-lang/rust#126359
struct OppOrder<const N: u8 = 3, T = u32> {
arr: [T; N],
}
fn main() {
let _ = OppOrder::<3, u32> { arr: [0, 0, 0] };
}

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

@ -0,0 +1,14 @@
//@ known-bug: rust-lang/rust#126376
mod a {
pub mod b {
pub mod c {
pub trait D {}
}
}
}
use a::*;
use e as b;
use b::c::D as e;
fn e() {}

29
tests/crashes/126377.rs Normal file
View file

@ -0,0 +1,29 @@
//@ known-bug: rust-lang/rust#126377
#![feature(effects)]
#![feature(generic_const_exprs)]
mod assert {
use std::mem::{Assume, BikeshedIntrinsicFrom};
pub fn is_transmutable<
Src,
Dst,
const ASSUME_ALIGNMENT: bool,
const ASSUME_LIFETIMES: bool,
const ASSUME_SAFETY: bool,
const ASSUME_VALIDITY: bool,
>()
where
Dst: BikeshedIntrinsicFrom<
Src,
{ }
>,
{}
}
const fn from_options() -> Assume {
#[repr(C)] struct Src;
#[repr(C)] struct Dst;
assert::is_transmutable::<Src, Dst, {0u8}, false, false, false>();
}

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

@ -0,0 +1,10 @@
//@ known-bug: rust-lang/rust#126385
pub struct MyStruct<'field> {
field: &'_ [u32],
}
impl MyStruct<'_> {
pub fn _<'a>(field: &'a[u32]) -> Self<new> {
Self{field}
}
}

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

@ -0,0 +1,15 @@
//@ known-bug: rust-lang/rust#126389
mod a {
pub mod b {
pub mod c {}
}
}
use a::*;
use b::c;
use c as b;
fn c() {}

20
tests/crashes/126416.rs Normal file
View file

@ -0,0 +1,20 @@
//@ known-bug: rust-lang/rust#126416
trait Output<'a, T: 'a> {
type Type;
}
struct Wrapper;
impl Wrapper {
fn do_something_wrapper<O, F>(&mut self, _: F)
where
F: for<'a> FnOnce(<F as Output<i32>>::Type),
{
}
}
fn main() {
let mut wrapper = Wrapper;
wrapper.do_something_wrapper(|value| ());
}

11
tests/crashes/126521.rs Normal file
View file

@ -0,0 +1,11 @@
//@ known-bug: rust-lang/rust#126521
macro_rules! foo {
($val:ident) => {
true;
};
}
fn main() {
#[expect(semicolon_in_expressions_from_macros)]
let _ = foo!(x);
}