]> git.lizzy.rs Git - rust.git/commitdiff
Add test for #3053. Fixes #3053.
authorNiko Matsakis <niko@alum.mit.edu>
Tue, 12 Nov 2013 19:44:15 +0000 (14:44 -0500)
committerAlex Crichton <alex@alexcrichton.com>
Mon, 2 Dec 2013 18:33:17 +0000 (10:33 -0800)
src/test/run-pass/borrowck-preserve-box-in-moved-value.rs [new file with mode: 0644]

diff --git a/src/test/run-pass/borrowck-preserve-box-in-moved-value.rs b/src/test/run-pass/borrowck-preserve-box-in-moved-value.rs
new file mode 100644 (file)
index 0000000..e8c3b24
--- /dev/null
@@ -0,0 +1,26 @@
+// exec-env:RUST_POISON_ON_FREE=1
+
+// Test that we root `x` even though it is found in immutable memory,
+// because it is moved.
+
+#[feature(managed_boxes)];
+
+fn free<T>(x: @T) {}
+
+struct Foo {
+    f: @Bar
+}
+
+struct Bar {
+    g: int
+}
+
+fn lend(x: @Foo) -> int {
+    let y = &x.f.g;
+    free(x); // specifically here, if x is not rooted, it will be freed
+    *y
+}
+
+pub fn main() {
+    assert_eq!(lend(@Foo {f: @Bar {g: 22}}), 22);
+}