| //! 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 | |
| } |