rust/tests/ui/layout/invalid-unsized-in-always-sized-tail.rs
Lukas Markeffsky 20d2414925 get rid of an old hack
For structs that cannot be unsized, the layout algorithm sometimes moves
unsized fields to the end of the struct, which circumvented the error
for unexpected unsized fields and returned an unsized layout anyway.

This commit makes it so that the unexpected unsized error is always
returned for structs that cannot be unsized, allowing us to remove an
old hack and fixing some old ICE.
2024-09-17 00:09:21 +02:00

18 lines
494 B
Rust

// issue: rust-lang/rust#126939
//! This used to ICE, because the layout algorithm did not check for unsized types
//! in the struct tail of always-sized types (i.e. those that cannot be unsized)
//! and incorrectly returned an unsized layout.
struct MySlice<T>(T);
type MySliceBool = MySlice<[bool]>;
struct P2 {
b: MySliceBool,
//~^ ERROR: the size for values of type `[bool]` cannot be known at compilation time
}
static CHECK: () = assert!(align_of::<P2>() == 1);
fn main() {}