summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-09-28 13:07:54 +0200
committerMatthias Krüger <matthias.krueger@famsik.de>2024-09-29 11:58:09 +0200
commit6d3aee2ab6bda36313831cae27336eab6122c440 (patch)
treeac373c3f245988763ec52c04aa68edaa82e11ea3
parent851f698682aa2e4c226e1a2c1af30adbcb63aae2 (diff)
crashes: more tests
-rw-r--r--tests/crashes/130521.rs13
-rw-r--r--tests/crashes/130524.rs22
-rw-r--r--tests/crashes/130627.rs20
-rw-r--r--tests/crashes/130687.rs4
-rw-r--r--tests/crashes/130779.rs11
-rw-r--r--tests/crashes/130921.rs10
-rw-r--r--tests/crashes/130970.rs9
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]);
+}