zig

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

test_inferred_error_sets.zig (606B) - Raw


      1 // With an inferred error set
      2 pub fn add_inferred(comptime T: type, a: T, b: T) !T {
      3     const ov = @addWithOverflow(a, b);
      4     if (ov[1] != 0) return error.Overflow;
      5     return ov[0];
      6 }
      7 
      8 // With an explicit error set
      9 pub fn add_explicit(comptime T: type, a: T, b: T) Error!T {
     10     const ov = @addWithOverflow(a, b);
     11     if (ov[1] != 0) return error.Overflow;
     12     return ov[0];
     13 }
     14 
     15 const Error = error{
     16     Overflow,
     17 };
     18 
     19 const std = @import("std");
     20 
     21 test "inferred error set" {
     22     if (add_inferred(u8, 255, 1)) |_| unreachable else |err| switch (err) {
     23         error.Overflow => {}, // ok
     24     }
     25 }
     26 
     27 // test