about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorYuki Okushi <jtitor@2k36.org>2022-06-13 19:51:51 +0900
committerYuki Okushi <jtitor@2k36.org>2022-06-13 19:51:51 +0900
commitc4b43d89783aaba7b63a069114d878ecf4069cc7 (patch)
tree36b0b144e93b985266e7309f98da8822ece5ea71 /src
parent083721a1a7365d3afe1521cd2661b2201aac0450 (diff)
downloadrust-c4b43d89783aaba7b63a069114d878ecf4069cc7.tar.gz
rust-c4b43d89783aaba7b63a069114d878ecf4069cc7.zip
Add some more regression tests for #67945
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() {}