diff options
Diffstat (limited to 'src/test/ui/issues/issue-30380.rs')
-rw-r--r-- | src/test/ui/issues/issue-30380.rs | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/src/test/ui/issues/issue-30380.rs b/src/test/ui/issues/issue-30380.rs deleted file mode 100644 index 48b329c5d..000000000 --- a/src/test/ui/issues/issue-30380.rs +++ /dev/null @@ -1,36 +0,0 @@ -// check that panics in destructors during assignment do not leave -// destroyed values lying around for other destructors to observe. - -// run-fail -// error-pattern:panicking destructors ftw! -// ignore-emscripten no processes - -struct Observer<'a>(&'a mut FilledOnDrop); - -struct FilledOnDrop(u32); -impl Drop for FilledOnDrop { - fn drop(&mut self) { - if self.0 == 0 { - // this is only set during the destructor - safe - // code should not be able to observe this. - self.0 = 0x1c1c1c1c; - panic!("panicking destructors ftw!"); - } - } -} - -impl<'a> Drop for Observer<'a> { - fn drop(&mut self) { - assert_eq!(self.0 .0, 1); - } -} - -fn foo(b: &mut Observer) { - *b.0 = FilledOnDrop(1); -} - -fn main() { - let mut bomb = FilledOnDrop(0); - let mut observer = Observer(&mut bomb); - foo(&mut observer); -} |