diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/codegen/external-no-mangle-statics.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/cross-crate/auxiliary/static_init_aux.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/cross-crate/static-init.rs | 15 |
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(); +} |
