summaryrefslogtreecommitdiffstats
path: root/src/test/ui/issues/issue-38437.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/issues/issue-38437.rs')
-rw-r--r--src/test/ui/issues/issue-38437.rs46
1 files changed, 0 insertions, 46 deletions
diff --git a/src/test/ui/issues/issue-38437.rs b/src/test/ui/issues/issue-38437.rs
deleted file mode 100644
index e14121690..000000000
--- a/src/test/ui/issues/issue-38437.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Check that drop elaboration clears the "master" discriminant
-// drop flag even if it protects no fields.
-
-struct Good(usize);
-impl Drop for Good {
- #[inline(never)]
- fn drop(&mut self) {
- println!("dropping Good({})", self.0);
- }
-}
-
-struct Void;
-impl Drop for Void {
- #[inline(never)]
- fn drop(&mut self) {
- panic!("Suddenly, a Void appears.");
- }
-}
-
-enum E {
- Never(Void),
- Fine(Good)
-}
-
-fn main() {
- let mut go = true;
-
- loop {
- let next;
- match go {
- true => next = E::Fine(Good(123)),
- false => return,
- }
-
- match next {
- E::Never(_) => return,
- E::Fine(_good) => go = false,
- }
-
- // `next` is dropped and StorageDead'd here. We must reset the
- // discriminant's drop flag to avoid random variants being
- // dropped.
- }
-}