about summary refs log tree commit diff
path: root/tests/ui/sync/atomic-types-not-copyable.rs
blob: d96414676ee662c0879857344881f781c881878b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//! Check that atomic types from `std::sync::atomic` are not `Copy`
//! and cannot be moved out of a shared reference.
//!
//! Regression test for <https://github.com/rust-lang/rust/issues/8380>.

use std::ptr;
use std::sync::atomic::*;

fn main() {
    let x = AtomicBool::new(false);
    let x = *&x; //~ ERROR: cannot move out of a shared reference
    let x = AtomicIsize::new(0);
    let x = *&x; //~ ERROR: cannot move out of a shared reference
    let x = AtomicUsize::new(0);
    let x = *&x; //~ ERROR: cannot move out of a shared reference
    let x: AtomicPtr<usize> = AtomicPtr::new(ptr::null_mut());
    let x = *&x; //~ ERROR: cannot move out of a shared reference
}