about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMidas Lambrichts <midaslamb@gmail.com>2021-04-01 20:54:57 +0200
committerMidas Lambrichts <midaslamb@gmail.com>2021-04-01 20:54:57 +0200
commit2d813b26092ac67933de06009e2eede04b056923 (patch)
tree060f73f82c9c3e935eae619330f083d5ce8acf49
parent5676bd51aeaa6b05735dc888a2e41770a4d7b162 (diff)
downloadrust-2d813b26092ac67933de06009e2eede04b056923.tar.gz
rust-2d813b26092ac67933de06009e2eede04b056923.zip
Add a test that triggers the out-of-bounds ICE.
Add a test that has the right input to trigger an out-of-bounds
error when in MIR the local_decls and the normalized_input_tys don't
match in amount.
-rw-r--r--src/test/ui/mir/issue-83499-input-output-iteration-ice.rs10
-rw-r--r--src/test/ui/mir/issue-83499-input-output-iteration-ice.stderr21
2 files changed, 31 insertions, 0 deletions
diff --git a/src/test/ui/mir/issue-83499-input-output-iteration-ice.rs b/src/test/ui/mir/issue-83499-input-output-iteration-ice.rs
new file mode 100644
index 00000000000..4d404d015ec
--- /dev/null
+++ b/src/test/ui/mir/issue-83499-input-output-iteration-ice.rs
@@ -0,0 +1,10 @@
+// Test that when in MIR the amount of local_decls and amount of normalized_input_tys don't match
+// that an out-of-bounds access does not occur.
+#![feature(c_variadic)]
+
+fn main() {}
+
+fn foo(_: Bar, ...) -> impl {}
+//~^ ERROR only foreign or `unsafe extern "C" functions may be C-variadic
+//~| ERROR cannot find type `Bar` in this scope
+//~| ERROR at least one trait must be specified
diff --git a/src/test/ui/mir/issue-83499-input-output-iteration-ice.stderr b/src/test/ui/mir/issue-83499-input-output-iteration-ice.stderr
new file mode 100644
index 00000000000..eb172684899
--- /dev/null
+++ b/src/test/ui/mir/issue-83499-input-output-iteration-ice.stderr
@@ -0,0 +1,21 @@
+error: only foreign or `unsafe extern "C" functions may be C-variadic
+  --> $DIR/issue-83499-input-output-iteration-ice.rs:7:16
+   |
+LL | fn foo(_: Bar, ...) -> impl {}
+   |                ^^^
+
+error: at least one trait must be specified
+  --> $DIR/issue-83499-input-output-iteration-ice.rs:7:24
+   |
+LL | fn foo(_: Bar, ...) -> impl {}
+   |                        ^^^^
+
+error[E0412]: cannot find type `Bar` in this scope
+  --> $DIR/issue-83499-input-output-iteration-ice.rs:7:11
+   |
+LL | fn foo(_: Bar, ...) -> impl {}
+   |           ^^^ not found in this scope
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0412`.