diff options
| author | bors <bors@rust-lang.org> | 2022-01-29 13:04:51 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-01-29 13:04:51 +0000 |
| commit | d08e816333281b0c0fb5a99c2c15d8084312e41a (patch) | |
| tree | 69c56dd7cd2e809ab645d7f1e6500ea0d8367c26 | |
| parent | ca43894e0e350af2245ba7d9ad8b6e31e0d4786d (diff) | |
| parent | 3f849a8b1edb11762194ef6f0f153a0e672c9112 (diff) | |
| download | rust-d08e816333281b0c0fb5a99c2c15d8084312e41a.tar.gz rust-d08e816333281b0c0fb5a99c2c15d8084312e41a.zip | |
Auto merge of #92312 - BGR360:needs-test, r=Mark-Simulacrum
Add tests for three old ICEs Closes #84044 Closes #91594 Closes #89066
| -rw-r--r-- | src/test/ui/closures/issue-84044-drop-non-mut.rs | 6 | ||||
| -rw-r--r-- | src/test/ui/closures/issue-84044-drop-non-mut.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/save-analysis/issue-89066.rs | 28 | ||||
| -rw-r--r-- | src/test/ui/save-analysis/issue-89066.stderr | 39 | ||||
| -rw-r--r-- | src/test/ui/traits/issue-91594.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/traits/issue-91594.stderr | 17 |
6 files changed, 118 insertions, 0 deletions
diff --git a/src/test/ui/closures/issue-84044-drop-non-mut.rs b/src/test/ui/closures/issue-84044-drop-non-mut.rs new file mode 100644 index 00000000000..aed7750f1b9 --- /dev/null +++ b/src/test/ui/closures/issue-84044-drop-non-mut.rs @@ -0,0 +1,6 @@ +// #84044: This used to ICE. + +fn main() { + let f = || {}; + drop(&mut f); //~ ERROR cannot borrow `f` as mutable, as it is not declared as mutable +} diff --git a/src/test/ui/closures/issue-84044-drop-non-mut.stderr b/src/test/ui/closures/issue-84044-drop-non-mut.stderr new file mode 100644 index 00000000000..c0bfad263f1 --- /dev/null +++ b/src/test/ui/closures/issue-84044-drop-non-mut.stderr @@ -0,0 +1,11 @@ +error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable + --> $DIR/issue-84044-drop-non-mut.rs:5:10 + | +LL | let f = || {}; + | - help: consider changing this to be mutable: `mut f` +LL | drop(&mut f); + | ^^^^^^ cannot borrow as mutable + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0596`. 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`. diff --git a/src/test/ui/traits/issue-91594.rs b/src/test/ui/traits/issue-91594.rs new file mode 100644 index 00000000000..930f7f0c6ad --- /dev/null +++ b/src/test/ui/traits/issue-91594.rs @@ -0,0 +1,17 @@ +// #91594: This used to ICE. + +trait Component<M> { + type Interface; +} +trait HasComponent<I> {} + +struct Foo; + +impl HasComponent<<Foo as Component<Foo>>::Interface> for Foo {} +//~^ ERROR the trait bound `Foo: HasComponent<()>` is not satisfied + +impl<M: HasComponent<()>> Component<M> for Foo { + type Interface = u8; +} + +fn main() {} diff --git a/src/test/ui/traits/issue-91594.stderr b/src/test/ui/traits/issue-91594.stderr new file mode 100644 index 00000000000..10298a0c703 --- /dev/null +++ b/src/test/ui/traits/issue-91594.stderr @@ -0,0 +1,17 @@ +error[E0277]: the trait bound `Foo: HasComponent<()>` is not satisfied + --> $DIR/issue-91594.rs:10:6 + | +LL | impl HasComponent<<Foo as Component<Foo>>::Interface> for Foo {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HasComponent<()>` is not implemented for `Foo` + | + = help: the following implementations were found: + <Foo as HasComponent<<Foo as Component<Foo>>::Interface>> +note: required because of the requirements on the impl of `Component<Foo>` for `Foo` + --> $DIR/issue-91594.rs:13:27 + | +LL | impl<M: HasComponent<()>> Component<M> for Foo { + | ^^^^^^^^^^^^ ^^^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. |
