Fixes #41073, it is no longer an ICE

This commit is contained in:
Simon Sapin 2019-07-03 13:02:47 +02:00 committed by Oliver Scherer
parent fe13bbd064
commit e247a40a1c
2 changed files with 39 additions and 0 deletions

View 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); }
}

View 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`.