]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/atomic_ordering_uint.rs
Auto merge of #84620 - Dylan-DPC:rollup-wkv97im, r=Dylan-DPC
[rust.git] / src / tools / clippy / tests / ui / atomic_ordering_uint.rs
1 #![warn(clippy::invalid_atomic_ordering)]
2
3 use std::sync::atomic::{AtomicU16, AtomicU32, AtomicU64, AtomicU8, AtomicUsize, Ordering};
4
5 fn main() {
6     // `AtomicU8` test cases
7     let x = AtomicU8::new(0);
8
9     // Allowed load ordering modes
10     let _ = x.load(Ordering::Acquire);
11     let _ = x.load(Ordering::SeqCst);
12     let _ = x.load(Ordering::Relaxed);
13
14     // Disallowed load ordering modes
15     let _ = x.load(Ordering::Release);
16     let _ = x.load(Ordering::AcqRel);
17
18     // Allowed store ordering modes
19     x.store(1, Ordering::Release);
20     x.store(1, Ordering::SeqCst);
21     x.store(1, Ordering::Relaxed);
22
23     // Disallowed store ordering modes
24     x.store(1, Ordering::Acquire);
25     x.store(1, Ordering::AcqRel);
26
27     // `AtomicU16` test cases
28     let x = AtomicU16::new(0);
29
30     let _ = x.load(Ordering::Acquire);
31     let _ = x.load(Ordering::SeqCst);
32     let _ = x.load(Ordering::Relaxed);
33     let _ = x.load(Ordering::Release);
34     let _ = x.load(Ordering::AcqRel);
35
36     x.store(1, Ordering::Release);
37     x.store(1, Ordering::SeqCst);
38     x.store(1, Ordering::Relaxed);
39     x.store(1, Ordering::Acquire);
40     x.store(1, Ordering::AcqRel);
41
42     // `AtomicU32` test cases
43     let x = AtomicU32::new(0);
44
45     let _ = x.load(Ordering::Acquire);
46     let _ = x.load(Ordering::SeqCst);
47     let _ = x.load(Ordering::Relaxed);
48     let _ = x.load(Ordering::Release);
49     let _ = x.load(Ordering::AcqRel);
50
51     x.store(1, Ordering::Release);
52     x.store(1, Ordering::SeqCst);
53     x.store(1, Ordering::Relaxed);
54     x.store(1, Ordering::Acquire);
55     x.store(1, Ordering::AcqRel);
56
57     // `AtomicU64` test cases
58     let x = AtomicU64::new(0);
59
60     let _ = x.load(Ordering::Acquire);
61     let _ = x.load(Ordering::SeqCst);
62     let _ = x.load(Ordering::Relaxed);
63     let _ = x.load(Ordering::Release);
64     let _ = x.load(Ordering::AcqRel);
65
66     x.store(1, Ordering::Release);
67     x.store(1, Ordering::SeqCst);
68     x.store(1, Ordering::Relaxed);
69     x.store(1, Ordering::Acquire);
70     x.store(1, Ordering::AcqRel);
71
72     // `AtomicUsize` test cases
73     let x = AtomicUsize::new(0);
74
75     let _ = x.load(Ordering::Acquire);
76     let _ = x.load(Ordering::SeqCst);
77     let _ = x.load(Ordering::Relaxed);
78     let _ = x.load(Ordering::Release);
79     let _ = x.load(Ordering::AcqRel);
80
81     x.store(1, Ordering::Release);
82     x.store(1, Ordering::SeqCst);
83     x.store(1, Ordering::Relaxed);
84     x.store(1, Ordering::Acquire);
85     x.store(1, Ordering::AcqRel);
86 }