Fixes #41073, it is no longer an ICE
This commit is contained in:
parent
fe13bbd064
commit
e247a40a1c
24
src/test/ui/union/issue-41073.rs
Normal file
24
src/test/ui/union/issue-41073.rs
Normal file
@ -0,0 +1,24 @@
|
||||
#![feature(untagged_unions)]
|
||||
|
||||
union Test {
|
||||
a: A, //~ ERROR unions may not contain fields that need dropping
|
||||
b: B
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct A(i32);
|
||||
impl Drop for A {
|
||||
fn drop(&mut self) { println!("A"); }
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct B(f32);
|
||||
impl Drop for B {
|
||||
fn drop(&mut self) { println!("B"); }
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut test = Test { a: A(3) };
|
||||
println!("{:?}", unsafe { test.b });
|
||||
unsafe { test.b = B(0.5); }
|
||||
}
|
15
src/test/ui/union/issue-41073.stderr
Normal file
15
src/test/ui/union/issue-41073.stderr
Normal file
@ -0,0 +1,15 @@
|
||||
error[E0740]: unions may not contain fields that need dropping
|
||||
--> $DIR/issue-41073.rs:4:5
|
||||
|
|
||||
LL | a: A,
|
||||
| ^^^^
|
||||
|
|
||||
note: `std::mem::ManuallyDrop` can be used to wrap the type
|
||||
--> $DIR/issue-41073.rs:4:5
|
||||
|
|
||||
LL | a: A,
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0740`.
|
Loading…
x
Reference in New Issue
Block a user