diff options
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(); + } +} |
