test_setRuntimeSafety_builtin.zig (864B) - Raw
1 test "@setRuntimeSafety" { 2 // The builtin applies to the scope that it is called in. So here, integer overflow 3 // will not be caught in ReleaseFast and ReleaseSmall modes: 4 // var x: u8 = 255; 5 // x += 1; // Unchecked Illegal Behavior in ReleaseFast/ReleaseSmall modes. 6 { 7 // However this block has safety enabled, so safety checks happen here, 8 // even in ReleaseFast and ReleaseSmall modes. 9 @setRuntimeSafety(true); 10 var x: u8 = 255; 11 x += 1; 12 13 { 14 // The value can be overridden at any scope. So here integer overflow 15 // would not be caught in any build mode. 16 @setRuntimeSafety(false); 17 // var x: u8 = 255; 18 // x += 1; // Unchecked Illegal Behavior in all build modes. 19 } 20 } 21 } 22 23 // test_safety=integer overflow 24 // optimize=ReleaseFast