commit c4cff443b81b81711c8ed7367f05fe7fdffe8239 (tree)
parent 7ef3d3876a7a4dfa4c3d2692fab6b4102d6d7480
Author: dweiller <4678790+dweiller@users.noreply.github.com>
Date: Thu, 18 Jan 2024 13:29:44 +1100
test/stack_traces.zig: add err union switch case
Diffstat:
1 file changed, 55 insertions(+), 0 deletions(-)
diff --git a/test/stack_traces.zig b/test/stack_traces.zig
@@ -807,4 +807,59 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
,
},
});
+ cases.addCase(.{
+ .name = "error union switch with call operand",
+ .source =
+ \\pub fn main() !void {
+ \\ try foo();
+ \\ return error.TheSkyIsFalling;
+ \\}
+ \\
+ \\noinline fn failure() error{ Fatal, NonFatal }!void {
+ \\ return error.NonFatal;
+ \\}
+ \\
+ \\fn foo() error{Fatal}!void {
+ \\ return failure() catch |err| switch (err) {
+ \\ error.Fatal => return error.Fatal,
+ \\ error.NonFatal => return,
+ \\ };
+ \\}
+ ,
+ .Debug = .{
+ .expect =
+ \\error: TheSkyIsFalling
+ \\source.zig:3:5: [address] in main (test)
+ \\ return error.TheSkyIsFalling;
+ \\ ^
+ \\
+ ,
+ },
+ .ReleaseSafe = .{
+ .exclude_os = &.{
+ .windows, // TODO
+ .linux, // defeated by aggressive inlining
+ },
+ .expect =
+ \\error: TheSkyIsFalling
+ \\source.zig:3:5: [address] in [function]
+ \\ return error.TheSkyIsFalling;
+ \\ ^
+ \\
+ ,
+ .error_tracing = true,
+ },
+ .ReleaseFast = .{
+ .expect =
+ \\error: TheSkyIsFalling
+ \\
+ ,
+ },
+ .ReleaseSmall = .{
+ .expect =
+ \\error: TheSkyIsFalling
+ \\
+ ,
+ },
+ });
}