zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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