about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorAriel Ben-Yehuda <ariel.byd@gmail.com>2017-05-11 01:02:52 +0300
committerAriel Ben-Yehuda <ariel.byd@gmail.com>2017-05-28 10:43:24 +0300
commit9da2aaccfe7dd3452dd066bbc3829af6bd76ace4 (patch)
treef911577590ac319c17e22dba38b06d4ad31207d3 /src/test
parent5d2512ec5b03a1155054df881e40e35fc87d6351 (diff)
downloadrust-9da2aaccfe7dd3452dd066bbc3829af6bd76ace4.tar.gz
rust-9da2aaccfe7dd3452dd066bbc3829af6bd76ace4.zip
translate array drop glue using MIR
This fixes leakage on panic with arrays & slices. I am using a C-style
for-loop instead of a pointer-based loop because that would be ugly-er
to implement.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/run-pass/dynamic-drop.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/test/run-pass/dynamic-drop.rs b/src/test/run-pass/dynamic-drop.rs
index a2cca206409..26e5fe987ee 100644
--- a/src/test/run-pass/dynamic-drop.rs
+++ b/src/test/run-pass/dynamic-drop.rs
@@ -125,6 +125,14 @@ fn union1(a: &Allocator) {
     }
 }
 
+fn array_simple(a: &Allocator) {
+    let _x = [a.alloc(), a.alloc(), a.alloc(), a.alloc()];
+}
+
+fn vec_simple(a: &Allocator) {
+    let _x = vec![a.alloc(), a.alloc(), a.alloc(), a.alloc()];
+}
+
 fn run_test<F>(mut f: F)
     where F: FnMut(&Allocator)
 {
@@ -171,5 +179,8 @@ fn main() {
     run_test(|a| assignment1(a, false));
     run_test(|a| assignment1(a, true));
 
+    run_test(|a| array_simple(a));
+    run_test(|a| vec_simple(a));
+
     run_test_nopanic(|a| union1(a));
 }