64cce5fc7d
Updates `interpret`, `codegen_ssa`, and `codegen_cranelift` to consume the new cast instead of the intrinsic. Includes `CastTransmute` for custom MIR building, to be able to test the extra UB.
53 lines
2.0 KiB
Plaintext
53 lines
2.0 KiB
Plaintext
warning: the type `!` does not permit zero-initialization
|
|
--> $DIR/validate_uninhabited_zsts.rs:4:14
|
|
|
|
|
LL | unsafe { std::mem::transmute(()) }
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
|
|
|
|
|
= note: the `!` type has no valid value
|
|
= note: `#[warn(invalid_value)]` on by default
|
|
|
|
error[E0080]: evaluation of constant value failed
|
|
--> $DIR/validate_uninhabited_zsts.rs:4:14
|
|
|
|
|
LL | unsafe { std::mem::transmute(()) }
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a value of the never type `!`
|
|
|
|
|
note: inside `foo`
|
|
--> $DIR/validate_uninhabited_zsts.rs:4:14
|
|
|
|
|
LL | unsafe { std::mem::transmute(()) }
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
|
note: inside `FOO`
|
|
--> $DIR/validate_uninhabited_zsts.rs:19:33
|
|
|
|
|
LL | const FOO: [empty::Empty; 3] = [foo(); 3];
|
|
| ^^^^^
|
|
|
|
error[E0080]: evaluation of constant value failed
|
|
--> $DIR/validate_uninhabited_zsts.rs:21:42
|
|
|
|
|
LL | const BAR: [empty::Empty; 3] = [unsafe { std::mem::transmute(()) }; 3];
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered a value of uninhabited type empty::Void
|
|
|
|
warning: the type `empty::Empty` does not permit zero-initialization
|
|
--> $DIR/validate_uninhabited_zsts.rs:21:42
|
|
|
|
|
LL | const BAR: [empty::Empty; 3] = [unsafe { std::mem::transmute(()) }; 3];
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
|
|
|
|
|
note: in this struct field
|
|
--> $DIR/validate_uninhabited_zsts.rs:16:22
|
|
|
|
|
LL | pub struct Empty(Void);
|
|
| ^^^^
|
|
note: enums with no inhabited variants have no valid value
|
|
--> $DIR/validate_uninhabited_zsts.rs:13:5
|
|
|
|
|
LL | enum Void {}
|
|
| ^^^^^^^^^
|
|
|
|
error: aborting due to 2 previous errors; 2 warnings emitted
|
|
|
|
For more information about this error, try `rustc --explain E0080`.
|