From 275eed7eb1d45e8173b932e2abfdae2201d2cf62 Mon Sep 17 00:00:00 2001 From: Alexis Bourget Date: Thu, 10 Sep 2020 15:35:29 +0200 Subject: [PATCH] Move vec-slice-drop test --- library/core/tests/slice.rs | 29 +++++++++++++++++ src/test/ui/array-slice-vec/vec-slice-drop.rs | 31 ------------------- 2 files changed, 29 insertions(+), 31 deletions(-) delete mode 100644 src/test/ui/array-slice-vec/vec-slice-drop.rs diff --git a/library/core/tests/slice.rs b/library/core/tests/slice.rs index 9556d43f9d78b..d66d17c1c859a 100644 --- a/library/core/tests/slice.rs +++ b/library/core/tests/slice.rs @@ -1980,3 +1980,32 @@ fn test_is_sorted() { assert!(!["c", "bb", "aaa"].is_sorted()); assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len())); } + +#[test] +fn test_slice_run_destructors() { + use core::cell::Cell; + + // Make sure that destructors get run on slice literals + struct Foo<'a> { + x: &'a Cell, + } + + impl<'a> Drop for Foo<'a> { + fn drop(&mut self) { + self.x.set(self.x.get() + 1); + } + } + + fn foo(x: &Cell) -> Foo<'_> { + Foo { x } + } + + let x = &Cell::new(0); + + { + let l = &[foo(x)]; + assert_eq!(l[0].x.get(), 0); + } + + assert_eq!(x.get(), 1); +} diff --git a/src/test/ui/array-slice-vec/vec-slice-drop.rs b/src/test/ui/array-slice-vec/vec-slice-drop.rs deleted file mode 100644 index 3a9ea86af34bb..0000000000000 --- a/src/test/ui/array-slice-vec/vec-slice-drop.rs +++ /dev/null @@ -1,31 +0,0 @@ -// run-pass - -#![allow(non_camel_case_types)] - -use std::cell::Cell; - -// Make sure that destructors get run on slice literals -struct foo<'a> { - x: &'a Cell, -} - -impl<'a> Drop for foo<'a> { - fn drop(&mut self) { - self.x.set(self.x.get() + 1); - } -} - -fn foo(x: &Cell) -> foo { - foo { - x: x - } -} - -pub fn main() { - let x = &Cell::new(0); - { - let l = &[foo(x)]; - assert_eq!(l[0].x.get(), 0); - } - assert_eq!(x.get(), 1); -}