Skip to content

Commit 5e058f3

Browse files
Add memory fence tests for invalid_atomic_ordering
1 parent e2e40f2 commit 5e058f3

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

tests/ui/atomic_ordering_fence.rs

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#![warn(clippy::invalid_atomic_ordering)]
2+
3+
use std::sync::atomic::{compiler_fence, fence, Ordering};
4+
5+
fn main() {
6+
// Allowed fence ordering modes
7+
fence(Ordering::Acquire);
8+
fence(Ordering::Release);
9+
fence(Ordering::AcqRel);
10+
fence(Ordering::SeqCst);
11+
12+
// Disallowed fence ordering modes
13+
fence(Ordering::Relaxed);
14+
15+
compiler_fence(Ordering::Acquire);
16+
compiler_fence(Ordering::Release);
17+
compiler_fence(Ordering::AcqRel);
18+
compiler_fence(Ordering::SeqCst);
19+
compiler_fence(Ordering::Relaxed);
20+
}

tests/ui/atomic_ordering_fence.stderr

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
error: memory fences cannot have `Relaxed` ordering
2+
--> $DIR/atomic_ordering_fence.rs:13:11
3+
|
4+
LL | fence(Ordering::Relaxed);
5+
| ^^^^^^^^^^^^^^^^^
6+
|
7+
= note: `-D clippy::invalid-atomic-ordering` implied by `-D warnings`
8+
= help: consider using ordering modes `Acquire`, `Release`, `AcqRel` or `SeqCst`
9+
10+
error: memory fences cannot have `Relaxed` ordering
11+
--> $DIR/atomic_ordering_fence.rs:19:20
12+
|
13+
LL | compiler_fence(Ordering::Relaxed);
14+
| ^^^^^^^^^^^^^^^^^
15+
|
16+
= help: consider using ordering modes `Acquire`, `Release`, `AcqRel` or `SeqCst`
17+
18+
error: aborting due to 2 previous errors
19+

0 commit comments

Comments
 (0)