about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-05-05 19:34:25 -0700
committerGitHub <noreply@github.com>2022-05-05 19:34:25 -0700
commitb78179e1f7e48c0a44664435fecada88425e6042 (patch)
tree5a2116890ca5462275dce48be145b621d0f4aa7b
parent292eefe753a007af30329b6dbb3f1cbc840e4bf2 (diff)
parentcb131d2b4a1a56676c5f21bcf74ab373900eca2f (diff)
downloadrust-b78179e1f7e48c0a44664435fecada88425e6042.tar.gz
rust-b78179e1f7e48c0a44664435fecada88425e6042.zip
Rollup merge of #96730 - JohnTitor:unused-lifetimes-tests, r=compiler-errors
Add a regression test for #64173 and #66152

Closes #64173
Closes #66152

Mixed the code as the root cause seems the same.
-rw-r--r--src/test/ui/lifetimes/issue-64173-unused-lifetimes.rs19
-rw-r--r--src/test/ui/lifetimes/issue-64173-unused-lifetimes.stderr35
2 files changed, 54 insertions, 0 deletions
diff --git a/src/test/ui/lifetimes/issue-64173-unused-lifetimes.rs b/src/test/ui/lifetimes/issue-64173-unused-lifetimes.rs
new file mode 100644
index 00000000000..8080dd7dc34
--- /dev/null
+++ b/src/test/ui/lifetimes/issue-64173-unused-lifetimes.rs
@@ -0,0 +1,19 @@
+use std::mem::size_of;
+
+struct Foo<'s> { //~ ERROR: parameter `'s` is never used
+    array: [(); size_of::<&Self>()],
+    //~^ ERROR: generic `Self` types are currently not permitted in anonymous constants
+}
+
+// The below is taken from https://github.com/rust-lang/rust/issues/66152#issuecomment-550275017
+// as the root cause seems the same.
+
+const fn foo<T>() -> usize {
+    0
+}
+
+struct Bar<'a> { //~ ERROR: parameter `'a` is never used
+    beta: [(); foo::<&'a ()>()], //~ ERROR: a non-static lifetime is not allowed in a `const`
+}
+
+fn main() {}
diff --git a/src/test/ui/lifetimes/issue-64173-unused-lifetimes.stderr b/src/test/ui/lifetimes/issue-64173-unused-lifetimes.stderr
new file mode 100644
index 00000000000..a487cbea537
--- /dev/null
+++ b/src/test/ui/lifetimes/issue-64173-unused-lifetimes.stderr
@@ -0,0 +1,35 @@
+error[E0658]: a non-static lifetime is not allowed in a `const`
+  --> $DIR/issue-64173-unused-lifetimes.rs:16:23
+   |
+LL |     beta: [(); foo::<&'a ()>()],
+   |                       ^^
+   |
+   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
+   = help: add `#![feature(generic_const_exprs)]` to the crate attributes to enable
+
+error: generic `Self` types are currently not permitted in anonymous constants
+  --> $DIR/issue-64173-unused-lifetimes.rs:4:28
+   |
+LL |     array: [(); size_of::<&Self>()],
+   |                            ^^^^
+
+error[E0392]: parameter `'s` is never used
+  --> $DIR/issue-64173-unused-lifetimes.rs:3:12
+   |
+LL | struct Foo<'s> {
+   |            ^^ unused parameter
+   |
+   = help: consider removing `'s`, referring to it in a field, or using a marker such as `PhantomData`
+
+error[E0392]: parameter `'a` is never used
+  --> $DIR/issue-64173-unused-lifetimes.rs:15:12
+   |
+LL | struct Bar<'a> {
+   |            ^^ unused parameter
+   |
+   = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`
+
+error: aborting due to 4 previous errors
+
+Some errors have detailed explanations: E0392, E0658.
+For more information about an error, try `rustc --explain E0392`.