diff options
author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-09-28 13:07:54 +0200 |
---|---|---|
committer | Matthias Krüger <matthias.krueger@famsik.de> | 2024-09-29 11:58:09 +0200 |
commit | 6d3aee2ab6bda36313831cae27336eab6122c440 (patch) | |
tree | ac373c3f245988763ec52c04aa68edaa82e11ea3 | |
parent | 851f698682aa2e4c226e1a2c1af30adbcb63aae2 (diff) |
crashes: more tests
-rw-r--r-- | tests/crashes/130521.rs | 13 | ||||
-rw-r--r-- | tests/crashes/130524.rs | 22 | ||||
-rw-r--r-- | tests/crashes/130627.rs | 20 | ||||
-rw-r--r-- | tests/crashes/130687.rs | 4 | ||||
-rw-r--r-- | tests/crashes/130779.rs | 11 | ||||
-rw-r--r-- | tests/crashes/130921.rs | 10 | ||||
-rw-r--r-- | tests/crashes/130970.rs | 9 |
7 files changed, 89 insertions, 0 deletions
diff --git a/tests/crashes/130521.rs b/tests/crashes/130521.rs new file mode 100644 index 00000000000..2d30b658024 --- /dev/null +++ b/tests/crashes/130521.rs @@ -0,0 +1,13 @@ +//@ known-bug: #130521 + +#![feature(object_safe_for_dispatch)] +struct Vtable(dyn Cap); + +trait Cap<'a> {} + +union Transmute { + t: u64, + u: &'static Vtable, +} + +const G: &Copy = unsafe { Transmute { t: 1 }.u }; diff --git a/tests/crashes/130524.rs b/tests/crashes/130524.rs new file mode 100644 index 00000000000..14d2269de59 --- /dev/null +++ b/tests/crashes/130524.rs @@ -0,0 +1,22 @@ +//@ known-bug: #130524 + +trait Transform { + type Output<'a>; +} + +trait Propagate<Input> {} + +fn new_node<T: Transform>(_c: Vec<Box<dyn for<'a> Propagate<<T as Transform>::Output<'a>>>>) -> T { + todo!() +} + +impl<Input, T> Propagate<Input> for T {} +struct Noop; + +impl Transform for Noop { + type Output<'a> = (); +} + +fn main() { + let _node: Noop = new_node(vec![Box::new(Noop)]); +} diff --git a/tests/crashes/130627.rs b/tests/crashes/130627.rs new file mode 100644 index 00000000000..59d3606592b --- /dev/null +++ b/tests/crashes/130627.rs @@ -0,0 +1,20 @@ +//@ known-bug: #130627 + +#![feature(trait_alias)] + +trait Test {} + +#[diagnostic::on_unimplemented( + message="message", + label="label", + note="note" +)] +trait Alias = Test; + +// Use trait alias as bound on type parameter. +fn foo<T: Alias>(v: &T) { +} + +pub fn main() { + foo(&1); +} diff --git a/tests/crashes/130687.rs b/tests/crashes/130687.rs new file mode 100644 index 00000000000..361be0905df --- /dev/null +++ b/tests/crashes/130687.rs @@ -0,0 +1,4 @@ +//@ known-bug: #130687 +//@ only-x86_64 +pub struct Data([u8; usize::MAX >> 16]); +const _: &'static Data = &Data([0; usize::MAX >> 16]); diff --git a/tests/crashes/130779.rs b/tests/crashes/130779.rs new file mode 100644 index 00000000000..f0fd81fff44 --- /dev/null +++ b/tests/crashes/130779.rs @@ -0,0 +1,11 @@ +//@ known-bug: #130779 +#![feature(never_patterns)] + +enum E { A } + +fn main() { + match E::A { + ! | + if true => {} + } +} diff --git a/tests/crashes/130921.rs b/tests/crashes/130921.rs new file mode 100644 index 00000000000..b7cb1303937 --- /dev/null +++ b/tests/crashes/130921.rs @@ -0,0 +1,10 @@ +//@ known-bug: #130921 +//@ compile-flags: -Zvalidate-mir -Copt-level=0 --crate-type lib + +pub fn hello() -> [impl Sized; 2] { + if false { + let x = hello(); + let _: &[i32] = &x; + } + todo!() +} diff --git a/tests/crashes/130970.rs b/tests/crashes/130970.rs new file mode 100644 index 00000000000..e1f59c155a5 --- /dev/null +++ b/tests/crashes/130970.rs @@ -0,0 +1,9 @@ +//@ known-bug: #130970 +//@ compile-flags: -Zmir-opt-level=5 -Zvalidate-mir + +fn main() { + extern "C" { + static symbol: [usize]; + } + println!("{}", symbol[0]); +} |