2019-07-18 21:24:58 +00:00
|
|
|
// run-pass
|
|
|
|
// no-prefer-dynamic
|
|
|
|
// aux-build:custom.rs
|
|
|
|
// aux-build:helper.rs
|
|
|
|
|
|
|
|
extern crate custom;
|
|
|
|
extern crate helper;
|
|
|
|
|
|
|
|
use custom::A;
|
|
|
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
|
|
|
|
|
|
|
mod submodule {
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
#[global_allocator]
|
|
|
|
pub static GLOBAL: A = A(AtomicUsize::new(0));
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
2019-07-18 23:51:07 +00:00
|
|
|
let n = submodule::GLOBAL.0.load(Ordering::SeqCst);
|
2019-07-18 21:24:58 +00:00
|
|
|
let s = Box::new(0);
|
|
|
|
helper::work_with(&s);
|
2019-07-18 23:51:07 +00:00
|
|
|
assert_eq!(submodule::GLOBAL.0.load(Ordering::SeqCst), n + 1);
|
2019-07-18 21:24:58 +00:00
|
|
|
drop(s);
|
2019-07-18 23:51:07 +00:00
|
|
|
assert_eq!(submodule::GLOBAL.0.load(Ordering::SeqCst), n + 2);
|
2019-07-18 21:24:58 +00:00
|
|
|
}
|