about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-05-07 13:53:25 -0700
committerBrian Anderson <banderson@mozilla.com>2013-05-07 13:53:25 -0700
commit6bcc3a6c5742b5436d0c7f8be4bfb79f7eacd760 (patch)
tree6c7fe5150509c4804367423e2fb7e275e3cb9c0c /src
parent7b3e036252a4787bd3cf9d684e68a34374c90d48 (diff)
downloadrust-6bcc3a6c5742b5436d0c7f8be4bfb79f7eacd760.tar.gz
rust-6bcc3a6c5742b5436d0c7f8be4bfb79f7eacd760.zip
Add some tests for local data + borrowed pointers
Diffstat (limited to 'src')
-rw-r--r--src/libcore/task/local_data.rs9
-rw-r--r--src/test/compile-fail/core-tls-store-pointer.rs21
2 files changed, 30 insertions, 0 deletions
diff --git a/src/libcore/task/local_data.rs b/src/libcore/task/local_data.rs
index dff5908c047..89a31b7b3f5 100644
--- a/src/libcore/task/local_data.rs
+++ b/src/libcore/task/local_data.rs
@@ -215,3 +215,12 @@ fn test_tls_cleanup_on_failure() {
         fail!();
     }
 }
+
+#[test]
+fn test_static_pointer() {
+    unsafe {
+        fn key(_x: @&'static int) { }
+        static VALUE: int = 0;
+        local_data_set(key, @&VALUE);
+    }
+}
\ No newline at end of file
diff --git a/src/test/compile-fail/core-tls-store-pointer.rs b/src/test/compile-fail/core-tls-store-pointer.rs
new file mode 100644
index 00000000000..42cf9c793d1
--- /dev/null
+++ b/src/test/compile-fail/core-tls-store-pointer.rs
@@ -0,0 +1,21 @@
+// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Testing that we can't store a borrowed pointer it task-local storage
+
+use core::task::local_data::*;
+
+fn key(_x: @&int) { }
+
+fn main() {
+    unsafe {
+        local_data_set(key, @&0); //~ ERROR does not fulfill `'static`
+    }
+}
\ No newline at end of file