zig

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

error_return_trace.zig (519B) - Raw


      1 pub fn main() !void {
      2     try foo(12);
      3 }
      4 
      5 fn foo(x: i32) !void {
      6     if (x >= 5) {
      7         try bar();
      8     } else {
      9         try bang2();
     10     }
     11 }
     12 
     13 fn bar() !void {
     14     if (baz()) {
     15         try quux();
     16     } else |err| switch (err) {
     17         error.FileNotFound => try hello(),
     18     }
     19 }
     20 
     21 fn baz() !void {
     22     try bang1();
     23 }
     24 
     25 fn quux() !void {
     26     try bang2();
     27 }
     28 
     29 fn hello() !void {
     30     try bang2();
     31 }
     32 
     33 fn bang1() !void {
     34     return error.FileNotFound;
     35 }
     36 
     37 fn bang2() !void {
     38     return error.PermissionDenied;
     39 }
     40 
     41 // exe=fail