about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Reeves <benwolverine2019@gmail.com>2021-12-27 00:24:19 -0600
committerMark Rousskov <mark.simulacrum@gmail.com>2022-01-28 18:42:24 -0500
commit3f849a8b1edb11762194ef6f0f153a0e672c9112 (patch)
tree430af4ec7941fec59bcf3f076e562ddf82323ade
parent2819d9051c733e3777b884e9f5f653029e49cce0 (diff)
downloadrust-3f849a8b1edb11762194ef6f0f153a0e672c9112.tar.gz
rust-3f849a8b1edb11762194ef6f0f153a0e672c9112.zip
Add test for old ICE in #89066
-rw-r--r--src/test/ui/save-analysis/issue-89066.rs28
-rw-r--r--src/test/ui/save-analysis/issue-89066.stderr39
2 files changed, 67 insertions, 0 deletions
diff --git a/src/test/ui/save-analysis/issue-89066.rs b/src/test/ui/save-analysis/issue-89066.rs
new file mode 100644
index 00000000000..2873f5237d4
--- /dev/null
+++ b/src/test/ui/save-analysis/issue-89066.rs
@@ -0,0 +1,28 @@
+// compile-flags: -Zsave-analysis
+
+// Check that this does not ICE.
+// Stolen from src/test/ui/const-generics/generic_arg_infer/infer-arg-test.rs
+
+#![feature(generic_arg_infer)]
+
+struct All<'a, T, const N: usize> {
+  v: &'a T,
+}
+
+struct BadInfer<_>;
+//~^ ERROR expected identifier
+//~| ERROR parameter `_` is never used
+
+fn all_fn<'a, T, const N: usize>() {}
+
+fn bad_infer_fn<_>() {}
+//~^ ERROR expected identifier
+
+
+fn main() {
+  let a: All<_, _, _>;
+  //~^ ERROR this struct takes 2 generic arguments but 3 generic arguments were supplied
+  all_fn();
+  let v: [u8; _];
+  let v: [u8; 10] = [0; _];
+}
diff --git a/src/test/ui/save-analysis/issue-89066.stderr b/src/test/ui/save-analysis/issue-89066.stderr
new file mode 100644
index 00000000000..a3ff1c02b2a
--- /dev/null
+++ b/src/test/ui/save-analysis/issue-89066.stderr
@@ -0,0 +1,39 @@
+error: expected identifier, found reserved identifier `_`
+  --> $DIR/issue-89066.rs:12:17
+   |
+LL | struct BadInfer<_>;
+   |                 ^ expected identifier, found reserved identifier
+
+error: expected identifier, found reserved identifier `_`
+  --> $DIR/issue-89066.rs:18:17
+   |
+LL | fn bad_infer_fn<_>() {}
+   |                 ^ expected identifier, found reserved identifier
+
+error[E0392]: parameter `_` is never used
+  --> $DIR/issue-89066.rs:12:17
+   |
+LL | struct BadInfer<_>;
+   |                 ^ unused parameter
+   |
+   = help: consider removing `_`, referring to it in a field, or using a marker such as `PhantomData`
+   = help: if you intended `_` to be a const parameter, use `const _: usize` instead
+
+error[E0107]: this struct takes 2 generic arguments but 3 generic arguments were supplied
+  --> $DIR/issue-89066.rs:23:10
+   |
+LL |   let a: All<_, _, _>;
+   |          ^^^       - help: remove this generic argument
+   |          |
+   |          expected 2 generic arguments
+   |
+note: struct defined here, with 2 generic parameters: `T`, `N`
+  --> $DIR/issue-89066.rs:8:8
+   |
+LL | struct All<'a, T, const N: usize> {
+   |        ^^^     -        -
+
+error: aborting due to 4 previous errors
+
+Some errors have detailed explanations: E0107, E0392.
+For more information about an error, try `rustc --explain E0107`.