diff options
| author | bors <bors@rust-lang.org> | 2013-08-01 19:46:47 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-08-01 19:46:47 -0700 |
| commit | ecefeb03ccecdcb306e5cc3c76b04670073a82fa (patch) | |
| tree | 6dd6e32d0ec003e48fba525bf2750c0640c320ab /src/test | |
| parent | 5890fcf87295d5b7a8f4ffa8d9918f755f72baf8 (diff) | |
| parent | ea5f829307c3a4ba62f6d83e3c3cf0b6affc34f0 (diff) | |
| download | rust-ecefeb03ccecdcb306e5cc3c76b04670073a82fa.tar.gz rust-ecefeb03ccecdcb306e5cc3c76b04670073a82fa.zip | |
auto merge of #8185 : alexcrichton/rust/issue-8179, r=pcwalton
* All globals marked as `pub` won't have the `internal` linkage type set * All global references across crates are forced to use the address of the global in the other crate via an external reference. r? @graydon Closes #8179
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/auxiliary/xcrate_static_addresses.rs | 23 | ||||
| -rw-r--r-- | src/test/run-pass/xcrate-static-addresses.rs | 27 |
2 files changed, 50 insertions, 0 deletions
diff --git a/src/test/auxiliary/xcrate_static_addresses.rs b/src/test/auxiliary/xcrate_static_addresses.rs new file mode 100644 index 00000000000..3a05462d856 --- /dev/null +++ b/src/test/auxiliary/xcrate_static_addresses.rs @@ -0,0 +1,23 @@ +// Copyright 2013 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. + +pub static global: int = 3; + +pub fn verify_same(a: &'static int) { + let a = a as *int as uint; + let b = &global as *int as uint; + assert_eq!(a, b); +} + +condition!{ pub test: int -> (); } + +pub fn raise() { + test::cond.raise(3); +} diff --git a/src/test/run-pass/xcrate-static-addresses.rs b/src/test/run-pass/xcrate-static-addresses.rs new file mode 100644 index 00000000000..059a6f75ac8 --- /dev/null +++ b/src/test/run-pass/xcrate-static-addresses.rs @@ -0,0 +1,27 @@ +// Copyright 2013 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. + +// xfail-fast +// aux-build:xcrate_static_addresses.rs + +extern mod xcrate_static_addresses; + +use other = xcrate_static_addresses; + +pub fn main() { + other::verify_same(&other::global); + + // Previously this fail'd because there were two addresses that were being + // used when declaring constants. + do other::test::cond.trap(|_| { + }).inside { + other::raise(); + } +} |
