summaryrefslogtreecommitdiffstats
path: root/src/test/ui/issues/issue-34053.rs
blob: fa23ae8f95bee94fc6e37f4b2842e6b5a0e93ba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// run-pass
use std::sync::atomic::{AtomicUsize, Ordering};

static DROP_COUNTER: AtomicUsize = AtomicUsize::new(0);

struct A(i32);

impl Drop for A {
    fn drop(&mut self) {
        // update global drop count
        DROP_COUNTER.fetch_add(1, Ordering::SeqCst);
    }
}

static FOO: A = A(123);
const BAR: A = A(456);

impl A {
    const BAZ: A = A(789);
}

fn main() {
    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 0);
    assert_eq!(&FOO.0, &123);
    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 0);
    assert_eq!(BAR.0, 456);
    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 1);
    assert_eq!(A::BAZ.0, 789);
    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 2);
}