diff options
| author | Scott Redig <git@scottredig.com> | 2024-10-07 01:16:20 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-11-22 18:39:17 -0500 |
| commit | b2c62bcbf64a3ffa2af6a8e441f1c12e10c598ec (patch) | |
| tree | ccf845de8f00f44d3dbdda603978967a7283f911 /lib/std/debug.zig | |
| parent | 73dcd1914071984c5a2e7c195212404824dbfb9e (diff) | |
| download | zig-b2c62bcbf64a3ffa2af6a8e441f1c12e10c598ec.tar.gz zig-b2c62bcbf64a3ffa2af6a8e441f1c12e10c598ec.zip | |
add assertLocked to std.debug.SafetyLock
Diffstat (limited to 'lib/std/debug.zig')
| -rw-r--r-- | lib/std/debug.zig | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/std/debug.zig b/lib/std/debug.zig index 982e71bc35..0756e456ff 100644 --- a/lib/std/debug.zig +++ b/lib/std/debug.zig @@ -1531,9 +1531,9 @@ pub fn ConfigurableTrace(comptime size: usize, comptime stack_frame_count: usize } pub const SafetyLock = struct { - state: State = .unlocked, + state: State = if (runtime_safety) .unlocked else .unknown, - pub const State = if (runtime_safety) enum { unlocked, locked } else enum { unlocked }; + pub const State = if (runtime_safety) enum { unlocked, locked } else enum { unknown }; pub fn lock(l: *SafetyLock) void { if (!runtime_safety) return; @@ -1551,8 +1551,22 @@ pub const SafetyLock = struct { if (!runtime_safety) return; assert(l.state == .unlocked); } + + pub fn assertLocked(l: SafetyLock) void { + if (!runtime_safety) return; + assert(l.state == .locked); + } }; +test SafetyLock { + var safety_lock: SafetyLock = .{}; + safety_lock.assertUnlocked(); + safety_lock.lock(); + safety_lock.assertLocked(); + safety_lock.unlock(); + safety_lock.assertUnlocked(); +} + /// Detect whether the program is being executed in the Valgrind virtual machine. /// /// When Valgrind integrations are disabled, this returns comptime-known false. |
