about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/codegen/external-no-mangle-statics.rs4
-rw-r--r--src/test/ui/cross-crate/auxiliary/static_init_aux.rs10
-rw-r--r--src/test/ui/cross-crate/static-init.rs15
3 files changed, 25 insertions, 4 deletions
diff --git a/src/test/codegen/external-no-mangle-statics.rs b/src/test/codegen/external-no-mangle-statics.rs
index ee61814678c..feb4af6286e 100644
--- a/src/test/codegen/external-no-mangle-statics.rs
+++ b/src/test/codegen/external-no-mangle-statics.rs
@@ -58,7 +58,6 @@ const HIDDEN: () = {
     pub static mut L: u8 = 0;
 };
 
-// The surrounding item should not accidentally become external
 fn x() {
     // CHECK: @M = local_unnamed_addr constant
     #[no_mangle]
@@ -76,6 +75,3 @@ fn x() {
     #[no_mangle]
     pub static mut P: u8 = 0;
 }
-// CHECK-LABEL: ; external_no_mangle_statics::x
-// CHECK-NEXT: ; Function Attrs:
-// CHECK-NEXT: define internal
diff --git a/src/test/ui/cross-crate/auxiliary/static_init_aux.rs b/src/test/ui/cross-crate/auxiliary/static_init_aux.rs
new file mode 100644
index 00000000000..3b664f43654
--- /dev/null
+++ b/src/test/ui/cross-crate/auxiliary/static_init_aux.rs
@@ -0,0 +1,10 @@
+pub static V: &u32 = &X;
+pub static F: fn() = f;
+
+static X: u32 = 42;
+
+pub fn v() -> *const u32 {
+    V
+}
+
+fn f() {}
diff --git a/src/test/ui/cross-crate/static-init.rs b/src/test/ui/cross-crate/static-init.rs
new file mode 100644
index 00000000000..2e893c5d9bf
--- /dev/null
+++ b/src/test/ui/cross-crate/static-init.rs
@@ -0,0 +1,15 @@
+// run-pass
+// aux-build:static_init_aux.rs
+extern crate static_init_aux as aux;
+
+static V: &u32 = aux::V;
+static F: fn() = aux::F;
+
+fn v() -> *const u32 {
+    V
+}
+
+fn main() {
+    assert_eq!(aux::v(), crate::v());
+    F();
+}