about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-10-02 06:05:45 +0000
committerMichael Goulet <michael@errs.io>2022-10-02 06:05:58 +0000
commite2c5247701da4ec3bc476e61d8dba7cdb7865a37 (patch)
tree7000d1d7f2b8dbb028bb9ff37705b822c31e5d15 /src
parentedadc7ccdda644ef8149869d2f24018a1dac202a (diff)
downloadrust-e2c5247701da4ec3bc476e61d8dba7cdb7865a37.tar.gz
rust-e2c5247701da4ec3bc476e61d8dba7cdb7865a37.zip
Add a known-bug test for #102498
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/consts/constifconst-call-in-const-position.rs21
-rw-r--r--src/test/ui/consts/constifconst-call-in-const-position.stderr18
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/ui/consts/constifconst-call-in-const-position.rs b/src/test/ui/consts/constifconst-call-in-const-position.rs
new file mode 100644
index 00000000000..bf67e5a3f76
--- /dev/null
+++ b/src/test/ui/consts/constifconst-call-in-const-position.rs
@@ -0,0 +1,21 @@
+// known-bug: #102498
+
+#![feature(const_trait_impl, generic_const_exprs)]
+
+pub trait Tr {
+    fn a() -> usize;
+}
+
+impl Tr for () {
+    fn a() -> usize {
+        1
+    }
+}
+
+const fn foo<T: ~const Tr>() -> [u8; T::a()] {
+    [0; T::a()]
+}
+
+fn main() {
+    foo::<()>();
+}
diff --git a/src/test/ui/consts/constifconst-call-in-const-position.stderr b/src/test/ui/consts/constifconst-call-in-const-position.stderr
new file mode 100644
index 00000000000..e3f67b44678
--- /dev/null
+++ b/src/test/ui/consts/constifconst-call-in-const-position.stderr
@@ -0,0 +1,18 @@
+warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/constifconst-call-in-const-position.rs:3:30
+   |
+LL | #![feature(const_trait_impl, generic_const_exprs)]
+   |                              ^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
+   = note: `#[warn(incomplete_features)]` on by default
+
+error[E0080]: evaluation of `foo::<()>::{constant#0}` failed
+  --> $DIR/constifconst-call-in-const-position.rs:15:38
+   |
+LL | const fn foo<T: ~const Tr>() -> [u8; T::a()] {
+   |                                      ^^^^^^ calling non-const function `<() as Tr>::a`
+
+error: aborting due to previous error; 1 warning emitted
+
+For more information about this error, try `rustc --explain E0080`.