--- /dev/null
+#![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); }
+}
--- /dev/null
+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`.