diff options
Diffstat (limited to 'src/test/ui/issues/issue-38437.rs')
-rw-r--r-- | src/test/ui/issues/issue-38437.rs | 46 |
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. - } -} |