about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-06-13 21:35:58 +0200
committerGitHub <noreply@github.com>2022-06-13 21:35:58 +0200
commit3f17cd7cbbdecad5c76b9876096d3cfaf0740476 (patch)
tree221decedf492df01cdab36245af3b0ef4f4e6dec /src
parent62eb97a450d4d71ff4a60dc00c44f811d09dd184 (diff)
parentc4b43d89783aaba7b63a069114d878ecf4069cc7 (diff)
downloadrust-3f17cd7cbbdecad5c76b9876096d3cfaf0740476.tar.gz
rust-3f17cd7cbbdecad5c76b9876096d3cfaf0740476.zip
Rollup merge of #98050 - JohnTitor:issue-67945, r=compiler-errors
Add some more regression tests for #67945

Closes #67945, added two tests from https://github.com/rust-lang/rust/issues/67945#issuecomment-572617285, other snippets were already added in #71952 and #77439
r? `@compiler-errors`
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/const-generics/issues/issue-67945-3.full.stderr16
-rw-r--r--src/test/ui/const-generics/issues/issue-67945-3.min.stderr21
-rw-r--r--src/test/ui/const-generics/issues/issue-67945-3.rs17
-rw-r--r--src/test/ui/const-generics/issues/issue-67945-4.full.stderr16
-rw-r--r--src/test/ui/const-generics/issues/issue-67945-4.min.stderr21
-rw-r--r--src/test/ui/const-generics/issues/issue-67945-4.rs16
6 files changed, 107 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/issues/issue-67945-3.full.stderr b/src/test/ui/const-generics/issues/issue-67945-3.full.stderr
new file mode 100644
index 00000000000..d3d9452d316
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-67945-3.full.stderr
@@ -0,0 +1,16 @@
+error: overly complex generic constant
+  --> $DIR/issue-67945-3.rs:10:13
+   |
+LL |       A: [(); {
+   |  _____________^
+LL | |         let x: Option<S> = None;
+LL | |
+LL | |         0
+LL | |     }],
+   | |_____^ blocks are not supported in generic constant
+   |
+   = help: consider moving this anonymous constant into a `const` function
+   = note: this operation may be supported in the future
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/const-generics/issues/issue-67945-3.min.stderr b/src/test/ui/const-generics/issues/issue-67945-3.min.stderr
new file mode 100644
index 00000000000..8e6b4b20409
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-67945-3.min.stderr
@@ -0,0 +1,21 @@
+error: generic parameters may not be used in const operations
+  --> $DIR/issue-67945-3.rs:11:23
+   |
+LL |         let x: Option<S> = None;
+   |                       ^ cannot perform const operation using `S`
+   |
+   = note: type parameters may not be used in const expressions
+   = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions
+
+error[E0392]: parameter `S` is never used
+  --> $DIR/issue-67945-3.rs:9:12
+   |
+LL | struct Bug<S> {
+   |            ^ unused parameter
+   |
+   = help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData`
+   = help: if you intended `S` to be a const parameter, use `const S: usize` instead
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0392`.
diff --git a/src/test/ui/const-generics/issues/issue-67945-3.rs b/src/test/ui/const-generics/issues/issue-67945-3.rs
new file mode 100644
index 00000000000..fd8a393effe
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-67945-3.rs
@@ -0,0 +1,17 @@
+// Regression test for
+// https://github.com/rust-lang/rust/issues/67945#issuecomment-572617285
+// Make sure we don't emit an E0277 error.
+
+// revisions: full min
+#![cfg_attr(full, feature(generic_const_exprs))]
+#![cfg_attr(full, allow(incomplete_features))]
+
+struct Bug<S> { //[min]~ ERROR: parameter `S` is never used
+    A: [(); { //[full]~ ERROR: overly complex generic constant
+        let x: Option<S> = None;
+        //[min]~^ ERROR: generic parameters may not be used in const operations
+        0
+    }],
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/issues/issue-67945-4.full.stderr b/src/test/ui/const-generics/issues/issue-67945-4.full.stderr
new file mode 100644
index 00000000000..9604eb35d02
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-67945-4.full.stderr
@@ -0,0 +1,16 @@
+error: overly complex generic constant
+  --> $DIR/issue-67945-4.rs:9:13
+   |
+LL |       A: [(); {
+   |  _____________^
+LL | |         let x: Option<Box<S>> = None;
+LL | |
+LL | |         0
+LL | |     }],
+   | |_____^ blocks are not supported in generic constant
+   |
+   = help: consider moving this anonymous constant into a `const` function
+   = note: this operation may be supported in the future
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/const-generics/issues/issue-67945-4.min.stderr b/src/test/ui/const-generics/issues/issue-67945-4.min.stderr
new file mode 100644
index 00000000000..f9520872ddd
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-67945-4.min.stderr
@@ -0,0 +1,21 @@
+error: generic parameters may not be used in const operations
+  --> $DIR/issue-67945-4.rs:10:27
+   |
+LL |         let x: Option<Box<S>> = None;
+   |                           ^ cannot perform const operation using `S`
+   |
+   = note: type parameters may not be used in const expressions
+   = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions
+
+error[E0392]: parameter `S` is never used
+  --> $DIR/issue-67945-4.rs:8:12
+   |
+LL | struct Bug<S> {
+   |            ^ unused parameter
+   |
+   = help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData`
+   = help: if you intended `S` to be a const parameter, use `const S: usize` instead
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0392`.
diff --git a/src/test/ui/const-generics/issues/issue-67945-4.rs b/src/test/ui/const-generics/issues/issue-67945-4.rs
new file mode 100644
index 00000000000..9a27bf09f88
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-67945-4.rs
@@ -0,0 +1,16 @@
+// Regression test for
+// https://github.com/rust-lang/rust/issues/67945#issuecomment-572617285
+
+// revisions: full min
+#![cfg_attr(full, feature(generic_const_exprs))]
+#![cfg_attr(full, allow(incomplete_features))]
+
+struct Bug<S> { //[min]~ ERROR: parameter `S` is never used
+    A: [(); { //[full]~ ERROR: overly complex generic constant
+        let x: Option<Box<S>> = None;
+        //[min]~^ ERROR: generic parameters may not be used in const operations
+        0
+    }],
+}
+
+fn main() {}