Add regression test for struct ctor used as array repeat count under mGCA
Using a struct constructor (DefKind::Ctor(Struct, Const)) as an array repeat count with `#![feature(min_generic_const_args)]` used to trigger an ICE in const alias normalization. Add a regression test to ensure the compiler produces a proper type error instead of panicking.
This commit is contained in:
parent
035b01b794
commit
8d96e26684
2 changed files with 35 additions and 0 deletions
16
tests/ui/const-generics/mgca/struct-ctor-in-array-len.rs
Normal file
16
tests/ui/const-generics/mgca/struct-ctor-in-array-len.rs
Normal file
|
|
@ -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`
|
||||
}
|
||||
19
tests/ui/const-generics/mgca/struct-ctor-in-array-len.stderr
Normal file
19
tests/ui/const-generics/mgca/struct-ctor-in-array-len.stderr
Normal file
|
|
@ -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 <https://github.com/rust-lang/rust/issues/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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue