Skip to content

Commit a5957dc

Browse files
committed
stage2: Do not pop error trace if result is an error
This allows for errors to be "re-thrown" by yielding any error as the result of a catch block. For example: ```zig fn errorable() !void { return error.FallingOutOfPlane; } fn foo(have_parachute: bool) !void { return errorable() catch |err| b: { if (have_parachute) { // error trace will include the call to errorable() break :b error.NoParachute; } else { return; } }; } pub fn main() !void { // Anything that returns a non-error does not pollute the error trace. try foo(true); // This error trace will still include errorable(), whose error was "re-thrown" by foo() try foo(false); } ``` This is piece (2/3) of #1923 (comment)
1 parent 747ed9f commit a5957dc

File tree

2 files changed

+200
-88
lines changed

2 files changed

+200
-88
lines changed

0 commit comments

Comments
 (0)