diff --git a/tests/ui/const-generics/mgca/struct-ctor-in-array-len.rs b/tests/ui/const-generics/mgca/struct-ctor-in-array-len.rs new file mode 100644 index 0000000000000..715caef38a9a0 --- /dev/null +++ b/tests/ui/const-generics/mgca/struct-ctor-in-array-len.rs @@ -0,0 +1,16 @@ +// Regression test for https://github.com/rust-lang/rust/issues/141738 +// +// Using a struct constructor as an array repeat count with +// `min_generic_const_args` used to ICE with "unexpected `DefKind` +// for const alias to resolve to: Ctor(Struct, Const)". +// It should now produce a proper type error. + +#![feature(min_generic_const_args)] +//~^ WARN the feature `min_generic_const_args` is incomplete + +struct S; + +fn main() { + let _b = [0; S]; + //~^ ERROR the constant `S` is not of type `usize` +} diff --git a/tests/ui/const-generics/mgca/struct-ctor-in-array-len.stderr b/tests/ui/const-generics/mgca/struct-ctor-in-array-len.stderr new file mode 100644 index 0000000000000..baf587a856bcc --- /dev/null +++ b/tests/ui/const-generics/mgca/struct-ctor-in-array-len.stderr @@ -0,0 +1,19 @@ +warning: the feature `min_generic_const_args` is incomplete and may not be safe to use and/or cause compiler crashes + --> $DIR/struct-ctor-in-array-len.rs:8:12 + | +LL | #![feature(min_generic_const_args)] + | ^^^^^^^^^^^^^^^^^^^^^^ + | + = note: see issue #132980 for more information + = note: `#[warn(incomplete_features)]` on by default + +error: the constant `S` is not of type `usize` + --> $DIR/struct-ctor-in-array-len.rs:14:14 + | +LL | let _b = [0; S]; + | ^^^^^^ expected `usize`, found `S` + | + = note: the length of array `[{integer}; S]` must be type `usize` + +error: aborting due to 1 previous error; 1 warning emitted +