diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/ui/issues/issue-16151.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-16151.rs b/src/test/ui/issues/issue-16151.rs new file mode 100644 index 000000000..48a14b2af --- /dev/null +++ b/src/test/ui/issues/issue-16151.rs @@ -0,0 +1,29 @@ +// run-pass + +use std::mem; + +static mut DROP_COUNT: usize = 0; + +struct Fragment; + +impl Drop for Fragment { + fn drop(&mut self) { + unsafe { + DROP_COUNT += 1; + } + } +} + +fn main() { + { + let mut fragments = vec![Fragment, Fragment, Fragment]; + let _new_fragments: Vec<Fragment> = mem::replace(&mut fragments, vec![]) + .into_iter() + .skip_while(|_fragment| { + true + }).collect(); + } + unsafe { + assert_eq!(DROP_COUNT, 3); + } +} |