diff --git a/src/test/ui/const-generics/min_const_generics/const-argument-if-length.full.stderr b/src/test/ui/const-generics/min_const_generics/const-argument-if-length.full.stderr new file mode 100644 index 00000000000..9b1c1be1aa0 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/const-argument-if-length.full.stderr @@ -0,0 +1,42 @@ +error[E0277]: the size for values of type `T` cannot be known at compilation time + --> $DIR/const-argument-if-length.rs:8:28 + | +LL | pub const fn is_zst() -> usize { + | - this type parameter needs to be `Sized` +LL | if std::mem::size_of::() == 0 { + | ^ doesn't have a size known at compile-time + | + ::: $SRC_DIR/core/src/mem/mod.rs:LL:COL + | +LL | pub const fn size_of() -> usize { + | - required by this bound in `std::mem::size_of` + +error[E0080]: evaluation of constant value failed + --> $DIR/const-argument-if-length.rs:19:15 + | +LL | pad: [u8; is_zst::()], + | ^^^^^^^^^^^^^ referenced constant has errors + +error[E0277]: the size for values of type `T` cannot be known at compilation time + --> $DIR/const-argument-if-length.rs:17:12 + | +LL | pub struct AtLeastByte { + | - this type parameter needs to be `Sized` +LL | value: T, + | ^ doesn't have a size known at compile-time + | + = note: only the last field of a struct may have a dynamically sized type + = help: change the field's type to have a statically known size +help: borrowed types always have a statically known size + | +LL | value: &T, + | ^ +help: the `Box` type always has a statically known size and allocates its contents in the heap + | +LL | value: Box, + | ^^^^ ^ + +error: aborting due to 3 previous errors + +Some errors have detailed explanations: E0080, E0277. +For more information about an error, try `rustc --explain E0080`. diff --git a/src/test/ui/const-generics/min_const_generics/const-argument-if-length.min.stderr b/src/test/ui/const-generics/min_const_generics/const-argument-if-length.min.stderr new file mode 100644 index 00000000000..c666dce479f --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/const-argument-if-length.min.stderr @@ -0,0 +1,30 @@ +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/const-argument-if-length.rs:19:24 + | +LL | pad: [u8; is_zst::()], + | ^ non-trivial anonymous constants must not depend on the parameter `T` + | + = note: type parameters are currently not permitted in anonymous constants + +error[E0277]: the size for values of type `T` cannot be known at compilation time + --> $DIR/const-argument-if-length.rs:17:12 + | +LL | pub struct AtLeastByte { + | - this type parameter needs to be `Sized` +LL | value: T, + | ^ doesn't have a size known at compile-time + | + = note: only the last field of a struct may have a dynamically sized type + = help: change the field's type to have a statically known size +help: borrowed types always have a statically known size + | +LL | value: &T, + | ^ +help: the `Box` type always has a statically known size and allocates its contents in the heap + | +LL | value: Box, + | ^^^^ ^ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/const-generics/min_const_generics/const-argument-if-length.rs b/src/test/ui/const-generics/min_const_generics/const-argument-if-length.rs index 03c78a2fe68..481ff97d68d 100644 --- a/src/test/ui/const-generics/min_const_generics/const-argument-if-length.rs +++ b/src/test/ui/const-generics/min_const_generics/const-argument-if-length.rs @@ -1,7 +1,12 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] pub const fn is_zst() -> usize { if std::mem::size_of::() == 0 { + //[full]~^ ERROR the size for values of type `T` cannot be known at compilation time 1 } else { 0 @@ -12,7 +17,8 @@ pub struct AtLeastByte { value: T, //~^ ERROR the size for values of type `T` cannot be known at compilation time pad: [u8; is_zst::()], - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[full]~^^ ERROR evaluation of constant value failed } fn main() {} diff --git a/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.full.stderr b/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.full.stderr new file mode 100644 index 00000000000..43b42d82d0c --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.full.stderr @@ -0,0 +1,10 @@ +error: constant expression depends on a generic parameter + --> $DIR/generic-function-call-in-array-length.rs:9:29 + | +LL | fn bar() -> [u32; foo(N)] { + | ^^^^^^^^^^^^^ + | + = note: this may fail depending on what value the parameter takes + +error: aborting due to previous error + diff --git a/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.min.stderr b/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.min.stderr new file mode 100644 index 00000000000..e7e968e4c2a --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.min.stderr @@ -0,0 +1,18 @@ +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/generic-function-call-in-array-length.rs:9:39 + | +LL | fn bar() -> [u32; foo(N)] { + | ^ 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: generic parameters must not be used inside of non-trivial constant values + --> $DIR/generic-function-call-in-array-length.rs:12:13 + | +LL | [0; foo(N)] + | ^ 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 2 previous errors + diff --git a/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.rs b/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.rs index f5387d659b3..c8bbae29343 100644 --- a/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.rs +++ b/src/test/ui/const-generics/min_const_generics/generic-function-call-in-array-length.rs @@ -1,11 +1,16 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] const fn foo(n: usize) -> usize { n * 2 } fn bar() -> [u32; foo(N)] { - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[full]~^^ ERROR constant expression depends on a generic parameter [0; foo(N)] - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values } fn main() {} diff --git a/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.full.stderr b/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.full.stderr new file mode 100644 index 00000000000..d311e1c0bae --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.full.stderr @@ -0,0 +1,10 @@ +error: constant expression depends on a generic parameter + --> $DIR/generic-sum-in-array-length.rs:7:45 + | +LL | fn foo(bar: [usize; A + B]) {} + | ^^^^^^^^^^^^^^ + | + = note: this may fail depending on what value the parameter takes + +error: aborting due to previous error + diff --git a/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.min.stderr b/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.min.stderr new file mode 100644 index 00000000000..6f157fbbbbb --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.min.stderr @@ -0,0 +1,18 @@ +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/generic-sum-in-array-length.rs:7:53 + | +LL | fn foo(bar: [usize; A + B]) {} + | ^ non-trivial anonymous constants must not depend on the parameter `A` + | + = help: it is currently only allowed to use either `A` or `{ A }` as generic constants + +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/generic-sum-in-array-length.rs:7:57 + | +LL | fn foo(bar: [usize; A + B]) {} + | ^ non-trivial anonymous constants must not depend on the parameter `B` + | + = help: it is currently only allowed to use either `B` or `{ B }` as generic constants + +error: aborting due to 2 previous errors + diff --git a/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.rs b/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.rs index ad0748297f5..810095b384b 100644 --- a/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.rs +++ b/src/test/ui/const-generics/min_const_generics/generic-sum-in-array-length.rs @@ -1,7 +1,12 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] fn foo(bar: [usize; A + B]) {} -//~^ ERROR generic parameters must not be used inside of non-trivial constant values -//~| ERROR generic parameters must not be used inside of non-trivial constant values +//[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values +//[min]~| ERROR generic parameters must not be used inside of non-trivial constant values +//[full]~^^^ ERROR constant expression depends on a generic parameter fn main() {} diff --git a/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.full.stderr b/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.full.stderr new file mode 100644 index 00000000000..c09d16d0ab0 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.full.stderr @@ -0,0 +1,10 @@ +error: constant expression depends on a generic parameter + --> $DIR/intrinsics-type_name-as-const-argument.rs:15:8 + | +LL | T: Trait<{std::intrinsics::type_name::()}> + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: this may fail depending on what value the parameter takes + +error: aborting due to previous error + diff --git a/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.min.stderr b/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.min.stderr new file mode 100644 index 00000000000..307db088bf8 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.min.stderr @@ -0,0 +1,19 @@ +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/intrinsics-type_name-as-const-argument.rs:15:44 + | +LL | T: Trait<{std::intrinsics::type_name::()}> + | ^ non-trivial anonymous constants must not depend on the parameter `T` + | + = note: type parameters are currently not permitted in anonymous constants + +error: `&'static str` is forbidden as the type of a const generic parameter + --> $DIR/intrinsics-type_name-as-const-argument.rs:10:22 + | +LL | trait Trait {} + | ^^^^^^^^^^^^ + | + = note: the only supported types are integers, `bool` and `char` + = note: more complex types are supported with `#[feature(const_generics)]` + +error: aborting due to 2 previous errors + diff --git a/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.rs b/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.rs index 5b595852093..37b6cf4bab9 100644 --- a/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.rs +++ b/src/test/ui/const-generics/min_const_generics/intrinsics-type_name-as-const-argument.rs @@ -1,13 +1,20 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] + #![feature(core_intrinsics)] +#![feature(const_type_name)] trait Trait {} -//~^ ERROR `&'static str` is forbidden as the type of a const generic parameter +//[min]~^ ERROR `&'static str` is forbidden as the type of a const generic parameter struct Bug where T: Trait<{std::intrinsics::type_name::()}> - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[full]~^^ ERROR constant expression depends on a generic parameter { t: T } diff --git a/src/test/ui/const-generics/min_const_generics/issue-67375.full.stderr b/src/test/ui/const-generics/min_const_generics/issue-67375.full.stderr new file mode 100644 index 00000000000..e15d65f197e --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67375.full.stderr @@ -0,0 +1,21 @@ +warning: cannot use constants which depend on generic parameters in types + --> $DIR/issue-67375.rs:9:12 + | +LL | inner: [(); { [|_: &T| {}; 0].len() }], + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: `#[warn(const_evaluatable_unchecked)]` on by default + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #76200 + +error[E0392]: parameter `T` is never used + --> $DIR/issue-67375.rs:7:12 + | +LL | struct Bug { + | ^ unused parameter + | + = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` + +error: aborting due to previous error; 1 warning emitted + +For more information about this error, try `rustc --explain E0392`. diff --git a/src/test/ui/const-generics/min_const_generics/issue-67375.min.stderr b/src/test/ui/const-generics/min_const_generics/issue-67375.min.stderr new file mode 100644 index 00000000000..b13d9fdab0d --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67375.min.stderr @@ -0,0 +1,19 @@ +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/issue-67375.rs:9:25 + | +LL | inner: [(); { [|_: &T| {}; 0].len() }], + | ^ non-trivial anonymous constants must not depend on the parameter `T` + | + = note: type parameters are currently not permitted in anonymous constants + +error[E0392]: parameter `T` is never used + --> $DIR/issue-67375.rs:7:12 + | +LL | struct Bug { + | ^ unused parameter + | + = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` + +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/min_const_generics/issue-67375.rs b/src/test/ui/const-generics/min_const_generics/issue-67375.rs index 308c48f8d32..994ec92cfb5 100644 --- a/src/test/ui/const-generics/min_const_generics/issue-67375.rs +++ b/src/test/ui/const-generics/min_const_generics/issue-67375.rs @@ -1,9 +1,15 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] struct Bug { //~^ ERROR parameter `T` is never used inner: [(); { [|_: &T| {}; 0].len() }], - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[full]~^^ WARN cannot use constants which depend on generic parameters in types + //[full]~^^^ WARN this was previously accepted by the compiler } fn main() {} diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-1.full.stderr b/src/test/ui/const-generics/min_const_generics/issue-67945-1.full.stderr new file mode 100644 index 00000000000..e79c4f5374e --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-1.full.stderr @@ -0,0 +1,26 @@ +error[E0308]: mismatched types + --> $DIR/issue-67945-1.rs:14:20 + | +LL | struct Bug { + | - this type parameter +... +LL | let x: S = MaybeUninit::uninit(); + | - ^^^^^^^^^^^^^^^^^^^^^ expected type parameter `S`, found union `MaybeUninit` + | | + | expected due to this + | + = note: expected type parameter `S` + found union `MaybeUninit<_>` + +error[E0392]: parameter `S` is never used + --> $DIR/issue-67945-1.rs:11:12 + | +LL | struct Bug { + | ^ unused parameter + | + = help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData` + +error: aborting due to 2 previous errors + +Some errors have detailed explanations: E0308, E0392. +For more information about an error, try `rustc --explain E0308`. diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-1.min.stderr b/src/test/ui/const-generics/min_const_generics/issue-67945-1.min.stderr new file mode 100644 index 00000000000..949b5da5920 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-1.min.stderr @@ -0,0 +1,27 @@ +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/issue-67945-1.rs:14:16 + | +LL | let x: S = MaybeUninit::uninit(); + | ^ non-trivial anonymous constants must not depend on the parameter `S` + | + = note: type parameters are currently not permitted in anonymous constants + +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/issue-67945-1.rs:17:45 + | +LL | let b = &*(&x as *const _ as *const S); + | ^ non-trivial anonymous constants must not depend on the parameter `S` + | + = note: type parameters are currently not permitted in anonymous constants + +error[E0392]: parameter `S` is never used + --> $DIR/issue-67945-1.rs:11:12 + | +LL | struct Bug { + | ^ unused parameter + | + = help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData` + +error: aborting due to 3 previous errors + +For more information about this error, try `rustc --explain E0392`. diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-1.rs b/src/test/ui/const-generics/min_const_generics/issue-67945-1.rs index f335f294de8..d1a83e978d1 100644 --- a/src/test/ui/const-generics/min_const_generics/issue-67945-1.rs +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-1.rs @@ -1,4 +1,8 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] use std::marker::PhantomData; @@ -8,9 +12,10 @@ struct Bug { //~^ ERROR parameter `S` is never used A: [(); { let x: S = MaybeUninit::uninit(); - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[full]~^^ ERROR mismatched types let b = &*(&x as *const _ as *const S); - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values 0 }], } diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-2.full.stderr b/src/test/ui/const-generics/min_const_generics/issue-67945-2.full.stderr new file mode 100644 index 00000000000..2f54b802df8 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-2.full.stderr @@ -0,0 +1,26 @@ +error[E0308]: mismatched types + --> $DIR/issue-67945-2.rs:12:20 + | +LL | struct Bug { + | - this type parameter +... +LL | let x: S = MaybeUninit::uninit(); + | - ^^^^^^^^^^^^^^^^^^^^^ expected type parameter `S`, found union `MaybeUninit` + | | + | expected due to this + | + = note: expected type parameter `S` + found union `MaybeUninit<_>` + +error[E0392]: parameter `S` is never used + --> $DIR/issue-67945-2.rs:9:12 + | +LL | struct Bug { + | ^ unused parameter + | + = help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData` + +error: aborting due to 2 previous errors + +Some errors have detailed explanations: E0308, E0392. +For more information about an error, try `rustc --explain E0308`. diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-2.min.stderr b/src/test/ui/const-generics/min_const_generics/issue-67945-2.min.stderr new file mode 100644 index 00000000000..ed445b3e8f7 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-2.min.stderr @@ -0,0 +1,27 @@ +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/issue-67945-2.rs:12:16 + | +LL | let x: S = MaybeUninit::uninit(); + | ^ non-trivial anonymous constants must not depend on the parameter `S` + | + = note: type parameters are currently not permitted in anonymous constants + +error: generic parameters must not be used inside of non-trivial constant values + --> $DIR/issue-67945-2.rs:15:45 + | +LL | let b = &*(&x as *const _ as *const S); + | ^ non-trivial anonymous constants must not depend on the parameter `S` + | + = note: type parameters are currently not permitted in anonymous constants + +error[E0392]: parameter `S` is never used + --> $DIR/issue-67945-2.rs:9:12 + | +LL | struct Bug { + | ^ unused parameter + | + = help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData` + +error: aborting due to 3 previous errors + +For more information about this error, try `rustc --explain E0392`. diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-2.rs b/src/test/ui/const-generics/min_const_generics/issue-67945-2.rs index 9faa1e0694d..7f789297df0 100644 --- a/src/test/ui/const-generics/min_const_generics/issue-67945-2.rs +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-2.rs @@ -1,4 +1,8 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] use std::mem::MaybeUninit; @@ -6,9 +10,10 @@ struct Bug { //~^ ERROR parameter `S` is never used A: [(); { let x: S = MaybeUninit::uninit(); - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[full]~^^ ERROR mismatched types let b = &*(&x as *const _ as *const S); - //~^ ERROR generic parameters must not be used inside of non-trivial constant values + //[min]~^ ERROR generic parameters must not be used inside of non-trivial constant values 0 }], } diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-3.full.stderr b/src/test/ui/const-generics/min_const_generics/issue-67945-3.full.stderr new file mode 100644 index 00000000000..c33b88588c0 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-3.full.stderr @@ -0,0 +1,16 @@ +error: constant expression depends on a generic parameter + --> $DIR/issue-67945-3.rs:8:8 + | +LL | A: [(); { + | ________^ +LL | | +LL | | let x: Option> = None; +LL | | +LL | | 0 +LL | | }], + | |______^ + | + = note: this may fail depending on what value the parameter takes + +error: aborting due to previous error + diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-3.min.stderr b/src/test/ui/const-generics/min_const_generics/issue-67945-3.min.stderr new file mode 100644 index 00000000000..9c6e101ece8 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-3.min.stderr @@ -0,0 +1,8 @@ +error: generic `Self` types are currently not permitted in anonymous constants + --> $DIR/issue-67945-3.rs:10:27 + | +LL | let x: Option> = None; + | ^^^^ + +error: aborting due to previous error + diff --git a/src/test/ui/const-generics/min_const_generics/issue-67945-3.rs b/src/test/ui/const-generics/min_const_generics/issue-67945-3.rs index cde7200458e..bca079101e2 100644 --- a/src/test/ui/const-generics/min_const_generics/issue-67945-3.rs +++ b/src/test/ui/const-generics/min_const_generics/issue-67945-3.rs @@ -1,9 +1,14 @@ -#![feature(min_const_generics)] +// revisions: full min + +#![cfg_attr(full, allow(incomplete_features))] +#![cfg_attr(full, feature(const_generics))] +#![cfg_attr(min, feature(min_const_generics))] struct Bug { A: [(); { + //[full]~^ ERROR constant expression depends on a generic parameter let x: Option> = None; - //~^ ERROR generic `Self` types are currently not permitted in anonymous constants + //[min]~^ ERROR generic `Self` types are currently not permitted in anonymous constants 0 }], B: S