--- /dev/null
+error: constant expression depends on a generic parameter
+ --> $DIR/feature-gate-const_evaluatable_checked.rs:9:30
+ |
+LL | fn test<const N: usize>() -> Arr<N> where Arr<N>: Default {
+ | ^^^^^^
+ |
+ = note: this may fail depending on what value the parameter takes
+
+error: aborting due to previous error
+
--- /dev/null
+error: generic parameters must not be used inside of non trivial constant values
+ --> $DIR/feature-gate-const_evaluatable_checked.rs:6:33
+ |
+LL | type Arr<const N: usize> = [u8; N - 1];
+ | ^ non-trivial anonymous constants must not depend on the parameter `N`
+ |
+ = help: it is currently only allowed to use either `N` or `{ N }` as generic constants
+
+error: aborting due to previous error
+
-#![feature(const_generics)]
-#![allow(incomplete_features)]
+// revisions: full min
+#![cfg_attr(full, feature(const_generics))]
+#![cfg_attr(full, allow(incomplete_features))]
+#![cfg_attr(min, feature(min_const_generics))]
type Arr<const N: usize> = [u8; N - 1];
+//[min]~^ ERROR generic parameters must not be used inside of non trivial constant values
fn test<const N: usize>() -> Arr<N> where Arr<N>: Default {
- //~^ ERROR constant expression depends
+ //[full]~^ ERROR constant expression depends
Default::default()
}
+++ /dev/null
-error: constant expression depends on a generic parameter
- --> $DIR/feature-gate-const_evaluatable_checked.rs:6:30
- |
-LL | fn test<const N: usize>() -> Arr<N> where Arr<N>: Default {
- | ^^^^^^
- |
- = note: this may fail depending on what value the parameter takes
-
-error: aborting due to previous error
-
--- /dev/null
+error: generic parameters must not be used inside of non trivial constant values
+ --> $DIR/simple.rs:8:33
+ |
+LL | type Arr<const N: usize> = [u8; N - 1];
+ | ^ non-trivial anonymous constants must not depend on the parameter `N`
+ |
+ = help: it is currently only allowed to use either `N` or `{ N }` as generic constants
+
+error: aborting due to previous error
+
-// run-pass
-#![feature(const_generics, const_evaluatable_checked)]
+// [full] run-pass
+// revisions: full min
+#![cfg_attr(full, feature(const_generics))]
+#![cfg_attr(min, feature(min_const_generics))]
+#![feature(const_evaluatable_checked)]
#![allow(incomplete_features)]
type Arr<const N: usize> = [u8; N - 1];
+//[min]~^ ERROR generic parameters must not be used inside of non trivial constant values
fn test<const N: usize>() -> Arr<N> where Arr<N>: Default {
Default::default()
--- /dev/null
+error[E0080]: evaluation of constant value failed
+ --> $DIR/simple_fail.rs:7:33
+ |
+LL | type Arr<const N: usize> = [u8; N - 1];
+ | ^^^^^ attempt to compute `0_usize - 1_usize` which would overflow
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0080`.
--- /dev/null
+error: generic parameters must not be used inside of non trivial constant values
+ --> $DIR/simple_fail.rs:7:33
+ |
+LL | type Arr<const N: usize> = [u8; N - 1];
+ | ^ non-trivial anonymous constants must not depend on the parameter `N`
+ |
+ = help: it is currently only allowed to use either `N` or `{ N }` as generic constants
+
+error: aborting due to previous error
+
-#![feature(const_generics, const_evaluatable_checked)]
+// revisions: full min
+#![cfg_attr(full, feature(const_generics))]
+#![cfg_attr(min, feature(min_const_generics))]
+#![feature(const_evaluatable_checked)]
#![allow(incomplete_features)]
-type Arr<const N: usize> = [u8; N - 1]; //~ ERROR evaluation of constant
+type Arr<const N: usize> = [u8; N - 1]; //[full]~ ERROR evaluation of constant
+//[min]~^ ERROR generic parameters must not be used inside of non trivial constant values
fn test<const N: usize>() -> Arr<N> where Arr<N>: Sized {
todo!()
+++ /dev/null
-error[E0080]: evaluation of constant value failed
- --> $DIR/simple_fail.rs:4:33
- |
-LL | type Arr<const N: usize> = [u8; N - 1];
- | ^^^^^ attempt to compute `0_usize - 1_usize` which would overflow
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0080`.