tests: add more crashes
This commit is contained in:
parent
13423befc4
commit
0f8513a51c
8
tests/crashes/125655.rs
Normal file
8
tests/crashes/125655.rs
Normal file
@ -0,0 +1,8 @@
|
||||
//@ known-bug: rust-lang/rust#125655
|
||||
|
||||
fn main() {
|
||||
static foo: dyn Fn() -> u32 = || -> u32 {
|
||||
...
|
||||
0
|
||||
};
|
||||
}
|
15
tests/crashes/125680.rs
Normal file
15
tests/crashes/125680.rs
Normal file
@ -0,0 +1,15 @@
|
||||
//@ known-bug: rust-lang/rust#125680
|
||||
//@ edition:2021
|
||||
|
||||
#![feature(generic_const_exprs)]
|
||||
|
||||
use core::fmt::Debug;
|
||||
|
||||
struct Inline<T>
|
||||
where
|
||||
[(); std::mem::offset_of!((T,), 0)]:,
|
||||
{}
|
||||
|
||||
fn main() {
|
||||
let dst = Inline::<dyn Debug>::new(0); // BANG!
|
||||
}
|
26
tests/crashes/125758.rs
Normal file
26
tests/crashes/125758.rs
Normal file
@ -0,0 +1,26 @@
|
||||
//@ known-bug: rust-lang/rust#125758
|
||||
#![feature(impl_trait_in_assoc_type)]
|
||||
|
||||
trait Trait: Sized {
|
||||
type Assoc2;
|
||||
}
|
||||
|
||||
impl Trait for Bar {
|
||||
type Assoc2 = impl std::fmt::Debug;
|
||||
}
|
||||
|
||||
struct Foo {
|
||||
field: <Bar as Trait>::Assoc2,
|
||||
}
|
||||
|
||||
enum Bar {
|
||||
C = 42,
|
||||
D = 99,
|
||||
}
|
||||
|
||||
static BAR: u8 = 42;
|
||||
|
||||
static FOO2: (&Foo, &<Bar as Trait>::Assoc2) =
|
||||
unsafe { (std::mem::transmute(&BAR), std::mem::transmute(&BAR)) };
|
||||
|
||||
fn main() {}
|
15
tests/crashes/125768.rs
Normal file
15
tests/crashes/125768.rs
Normal file
@ -0,0 +1,15 @@
|
||||
//@ known-bug: rust-lang/rust#125768
|
||||
|
||||
#![feature(generic_const_exprs)]
|
||||
|
||||
struct Outer<const A: i64, const B: usize>();
|
||||
impl<const A: usize, const B: usize> Outer<A, B>
|
||||
where
|
||||
[(); A + (B * 2)]:,
|
||||
{
|
||||
fn o() -> Union {}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
Outer::<1, 1>::o();
|
||||
}
|
14
tests/crashes/125769.rs
Normal file
14
tests/crashes/125769.rs
Normal file
@ -0,0 +1,14 @@
|
||||
//@ known-bug: rust-lang/rust#125769
|
||||
|
||||
#![feature(generic_const_exprs)]
|
||||
|
||||
trait Trait {}
|
||||
|
||||
struct HasCastInTraitImpl<const N: usize, const M: u128>;
|
||||
impl<const O: f64> Trait for HasCastInTraitImpl<O, { O as u128 }> {}
|
||||
|
||||
pub fn use_trait_impl() {
|
||||
fn assert_impl<T: Trait>() {}
|
||||
|
||||
assert_impl::<HasCastInTraitImpl<13, 13>>();
|
||||
}
|
17
tests/crashes/125772.rs
Normal file
17
tests/crashes/125772.rs
Normal file
@ -0,0 +1,17 @@
|
||||
//@ known-bug: rust-lang/rust#125772
|
||||
//@ only-x86_64
|
||||
#![feature(generic_const_exprs)]
|
||||
|
||||
struct Outer<const A: i64, const B: i64>();
|
||||
impl<const A: usize, const B: usize> Outer<A, B>
|
||||
where
|
||||
[(); A + (B * 2)]:,
|
||||
{
|
||||
fn i() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
Outer::<1, 1>::o();
|
||||
}
|
22
tests/crashes/125799.rs
Normal file
22
tests/crashes/125799.rs
Normal file
@ -0,0 +1,22 @@
|
||||
//@ known-bug: rust-lang/rust#125799
|
||||
//@ only-x86_64
|
||||
|
||||
trait Trait<T> {
|
||||
type Assoc;
|
||||
}
|
||||
|
||||
impl<T> Trait<T> for Vec<T> {
|
||||
type Assoc = ();
|
||||
}
|
||||
|
||||
impl Trait<u8> for Vec<u8> {}
|
||||
|
||||
const BAR: <Vec<u8> as Trait<u8>>::Assoc = 3;
|
||||
|
||||
pub fn main() {
|
||||
let x: isize = 3;
|
||||
let _ = match x {
|
||||
BAR => 2,
|
||||
_ => 3,
|
||||
};
|
||||
}
|
20
tests/crashes/125801.rs
Normal file
20
tests/crashes/125801.rs
Normal file
@ -0,0 +1,20 @@
|
||||
//@ known-bug: rust-lang/rust#125801
|
||||
|
||||
#![feature(generic_const_exprs)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
trait Foo {
|
||||
type Output;
|
||||
}
|
||||
|
||||
impl Foo for [u8; 3] {
|
||||
type Output = [u8; 3];
|
||||
}
|
||||
|
||||
static A: <[u8; N] as Foo>::Output = [1, 2, 3];
|
||||
|
||||
fn main() {
|
||||
|| {
|
||||
let _ = A[1];
|
||||
};
|
||||
}
|
10
tests/crashes/125810.rs
Normal file
10
tests/crashes/125810.rs
Normal file
@ -0,0 +1,10 @@
|
||||
//@ known-bug: rust-lang/rust#125810
|
||||
#![feature(arbitrary_self_types, dispatch_from_dyn)]
|
||||
|
||||
use std::ops::{Deref, DispatchFromDyn};
|
||||
|
||||
trait Trait<T: Deref<Target = Self> + DispatchFromDyn<T>> {
|
||||
fn MONO_BUF(self: T) -> dyn Trait<T>;
|
||||
}
|
||||
|
||||
fn main() {}
|
34
tests/crashes/125811.rs
Normal file
34
tests/crashes/125811.rs
Normal file
@ -0,0 +1,34 @@
|
||||
//@ known-bug: rust-lang/rust#125811
|
||||
mod assert {
|
||||
use std::mem::{Assume, BikeshedIntrinsicFrom};
|
||||
|
||||
pub fn is_transmutable<Src, Dst>()
|
||||
where
|
||||
Dst: BikeshedIntrinsicFrom<Src>,
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
struct Zst;
|
||||
|
||||
enum V0 {
|
||||
B(!),
|
||||
}
|
||||
|
||||
enum V2 {
|
||||
V = 2,
|
||||
}
|
||||
|
||||
enum Lopsided {
|
||||
Smol(Zst),
|
||||
Lorg(V0),
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[repr(C)]
|
||||
struct Dst(Lopsided, V2);
|
||||
|
||||
fn should_pad_variants() {
|
||||
assert::is_transmutable::<Src, Dst>();
|
||||
}
|
14
tests/crashes/125841.rs
Normal file
14
tests/crashes/125841.rs
Normal file
@ -0,0 +1,14 @@
|
||||
//@ known-bug: rust-lang/rust#125841
|
||||
#![feature(non_lifetime_binders)]
|
||||
fn take(id: impl for<T> Fn(T) -> T) {
|
||||
id(0);
|
||||
id("");
|
||||
}
|
||||
|
||||
fn take2() -> impl for<T> Fn(T) -> T {
|
||||
|x| x
|
||||
}
|
||||
|
||||
fn main() {
|
||||
take(|x| take2)
|
||||
}
|
4
tests/crashes/125843.rs
Normal file
4
tests/crashes/125843.rs
Normal file
@ -0,0 +1,4 @@
|
||||
//@ known-bug: rust-lang/rust#125843
|
||||
#![feature(non_lifetime_binders)]
|
||||
trait v0<> {}
|
||||
fn kind :(v3main impl for<v4> v0<'_, v2 = impl v0<v4> + '_>) {}
|
22
tests/crashes/125874.rs
Normal file
22
tests/crashes/125874.rs
Normal file
@ -0,0 +1,22 @@
|
||||
//@ known-bug: rust-lang/rust#125874
|
||||
pub trait A {}
|
||||
|
||||
pub trait Mirror {
|
||||
type Assoc: ?Sized;
|
||||
}
|
||||
impl<T: ?Sized> Mirror for dyn A {
|
||||
type Assoc = T;
|
||||
}
|
||||
|
||||
struct Bar {
|
||||
foo: <dyn A + 'static as Mirror>::Assoc,
|
||||
}
|
||||
|
||||
pub fn main() {
|
||||
let strct = Bar { foo: 3 };
|
||||
|
||||
match strct {
|
||||
Bar { foo: 1, .. } => {}
|
||||
_ => (),
|
||||
};
|
||||
}
|
18
tests/crashes/125879.rs
Normal file
18
tests/crashes/125879.rs
Normal file
@ -0,0 +1,18 @@
|
||||
//@ known-bug: rust-lang/rust#125879
|
||||
#![feature(inherent_associated_types)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
pub type PubAlias0 = PubTy::PrivAssocTy;
|
||||
|
||||
pub struct PubTy;
|
||||
impl PubTy {
|
||||
type PrivAssocTy = ();
|
||||
}
|
||||
|
||||
pub struct S(pub PubAlias0);
|
||||
|
||||
pub unsafe fn foo(a: S) -> S {
|
||||
a
|
||||
}
|
||||
|
||||
fn main() {}
|
8
tests/crashes/125881.rs
Normal file
8
tests/crashes/125881.rs
Normal file
@ -0,0 +1,8 @@
|
||||
//@ known-bug: rust-lang/rust#125881
|
||||
#![crate_type = "lib"]
|
||||
#![feature(transmutability)]
|
||||
#![feature(unboxed_closures,effects)]
|
||||
|
||||
const fn test() -> impl std::mem::BikeshedIntrinsicFrom() {
|
||||
|| {}
|
||||
}
|
17
tests/crashes/125888.rs
Normal file
17
tests/crashes/125888.rs
Normal file
@ -0,0 +1,17 @@
|
||||
//@ known-bug: rust-lang/rust#125888
|
||||
enum NestedEnum {
|
||||
First,
|
||||
Second,
|
||||
}
|
||||
|
||||
enum Enum {
|
||||
Variant(*const &'a ()),
|
||||
}
|
||||
|
||||
fn foo(x: Enum) {
|
||||
match x {
|
||||
Enum::Variant(NestedEnum::Second) => {}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
20
tests/crashes/125914.rs
Normal file
20
tests/crashes/125914.rs
Normal file
@ -0,0 +1,20 @@
|
||||
//@ known-bug: rust-lang/rust#125914
|
||||
enum AstKind<'ast> {
|
||||
ExprInt,
|
||||
}
|
||||
|
||||
enum Foo {
|
||||
Bar(isize),
|
||||
Baz,
|
||||
}
|
||||
|
||||
enum Other {
|
||||
Other1(Foo),
|
||||
Other2(AstKind),
|
||||
}
|
||||
|
||||
fn main() {
|
||||
match Other::Other1(Foo::Baz) {
|
||||
::Other::Other2(::Foo::Bar(..)) => {}
|
||||
}
|
||||
}
|
20
tests/crashes/125957.rs
Normal file
20
tests/crashes/125957.rs
Normal file
@ -0,0 +1,20 @@
|
||||
//@ known-bug: rust-lang/rust#125957
|
||||
#![feature(generic_const_exprs)]
|
||||
#![allow(incomplete_features)]
|
||||
#![feature(associated_const_equality)]
|
||||
|
||||
pub struct Equal<const T: usize, const R: usize>();
|
||||
|
||||
pub enum ParseMode {
|
||||
Raw,
|
||||
}
|
||||
pub trait Parse {
|
||||
const PARSE_MODE: ParseMode;
|
||||
}
|
||||
pub trait RenderRaw: Parse<PARSE_MODE = { ParseMode::Raw }> {}
|
||||
|
||||
trait GenericVec<T> {
|
||||
fn unwrap() -> dyn RenderRaw;
|
||||
}
|
||||
|
||||
fn main() {}
|
19
tests/crashes/125992.rs
Normal file
19
tests/crashes/125992.rs
Normal file
@ -0,0 +1,19 @@
|
||||
//@ known-bug: rust-lang/rust#125992
|
||||
//@ compile-flags: -Zpolonius=next
|
||||
|
||||
#![feature(inherent_associated_types)]
|
||||
|
||||
type Function = for<'a> fn(&'a i32) -> S<'a>::P;
|
||||
|
||||
struct S<'a>(&'a ());
|
||||
|
||||
impl<'a> S {
|
||||
type P = &'a i32;
|
||||
}
|
||||
|
||||
fn ret_ref_local<'e>() -> &'e i32 {
|
||||
let f: Function = |x| x;
|
||||
|
||||
let local = 0;
|
||||
f(&local)
|
||||
}
|
Loading…
Reference in New Issue
Block a user