Skip to content

Commit

Permalink
Fixes #41073, it is no longer an ICE
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonSapin authored and oli-obk committed Oct 11, 2019
1 parent fe13bbd commit e247a40
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/test/ui/union/issue-41073.rs
@@ -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 changes: 15 additions & 0 deletions src/test/ui/union/issue-41073.stderr
@@ -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`.

0 comments on commit e247a40

Please sign in to comment.