about summary refs log tree commit diff
path: root/src/test/ui/const-generics
diff options
context:
space:
mode:
authorkadmin <julianknodt@gmail.com>2020-08-04 22:14:27 +0000
committerkadmin <julianknodt@gmail.com>2020-08-04 22:58:44 +0000
commitf3380547138df05d4ac23e4a905756cfbe76fc79 (patch)
treee403cd23007ef0d8c654a3a12afe32b3f21e5580 /src/test/ui/const-generics
parentd08eb98698cbce56e599324fb83d55eef2cac408 (diff)
downloadrust-f3380547138df05d4ac23e4a905756cfbe76fc79.tar.gz
rust-f3380547138df05d4ac23e4a905756cfbe76fc79.zip
Add regression test
As well as matching error outputs
Diffstat (limited to 'src/test/ui/const-generics')
-rw-r--r--src/test/ui/const-generics/issues/issue-72787.rs32
-rw-r--r--src/test/ui/const-generics/issues/issue-72787.stderr42
2 files changed, 74 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/issues/issue-72787.rs b/src/test/ui/const-generics/issues/issue-72787.rs
new file mode 100644
index 00000000000..a368c226ec3
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-72787.rs
@@ -0,0 +1,32 @@
+#![feature(const_generics)]
+#![allow(incomplete_features)]
+
+pub struct IsLessOrEqual<const LHS: u32, const RHS: u32>;
+pub struct Condition<const CONDITION: bool>;
+pub trait True {}
+
+impl<const LHS: u32, const RHS: u32> True for IsLessOrEqual<LHS, RHS> where
+    Condition<{ LHS <= RHS }>: True
+//~^ Error constant expression depends on a generic parameter
+{
+}
+impl True for Condition<true> {}
+
+struct S<const I: u32, const J: u32>;
+impl<const I: u32, const J: u32> S<I, J>
+where
+    IsLessOrEqual<I, 8>: True,
+    IsLessOrEqual<J, 8>: True,
+    IsLessOrEqual<{ 8 - I }, { 8 - J }>: True,
+//~^ Error constant expression depends on a generic parameter
+//~| Error constant expression depends on a generic parameter
+//~| Error constant expression depends on a generic parameter
+//~| Error constant expression depends on a generic parameter
+    // Condition<{ 8 - I <= 8 - J }>: True,
+{
+    fn print() {
+        println!("I {} J {}", I, J);
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/issues/issue-72787.stderr b/src/test/ui/const-generics/issues/issue-72787.stderr
new file mode 100644
index 00000000000..ed892e46bbb
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-72787.stderr
@@ -0,0 +1,42 @@
+error: constant expression depends on a generic parameter
+  --> $DIR/issue-72787.rs:9:32
+   |
+LL |     Condition<{ LHS <= RHS }>: True
+   |                                ^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: constant expression depends on a generic parameter
+  --> $DIR/issue-72787.rs:20:42
+   |
+LL |     IsLessOrEqual<{ 8 - I }, { 8 - J }>: True,
+   |                                          ^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: constant expression depends on a generic parameter
+  --> $DIR/issue-72787.rs:20:42
+   |
+LL |     IsLessOrEqual<{ 8 - I }, { 8 - J }>: True,
+   |                                          ^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: constant expression depends on a generic parameter
+  --> $DIR/issue-72787.rs:20:42
+   |
+LL |     IsLessOrEqual<{ 8 - I }, { 8 - J }>: True,
+   |                                          ^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: constant expression depends on a generic parameter
+  --> $DIR/issue-72787.rs:20:42
+   |
+LL |     IsLessOrEqual<{ 8 - I }, { 8 - J }>: True,
+   |                                          ^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: aborting due to 5 previous errors
+