authorgravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2024-01-18 13:29:44+11:00
committergravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2024-01-18 15:10:32+11:00
logc4cff443b81b81711c8ed7367f05fe7fdffe8239
tree437f9151c6132107aefc2ed23d843bcc70fd6cc6
parent7ef3d3876a7a4dfa4c3d2692fab6b4102d6d7480

test/stack_traces.zig: add err union switch case


1 files changed, 55 insertions(+), 0 deletions(-)

test/stack_traces.zig+55
......@@ -807,4 +807,59 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
807807 ,
808808 },
809809 });
810 cases.addCase(.{
811 .name = "error union switch with call operand",
812 .source =
813 \\pub fn main() !void {
814 \\ try foo();
815 \\ return error.TheSkyIsFalling;
816 \\}
817 \\
818 \\noinline fn failure() error{ Fatal, NonFatal }!void {
819 \\ return error.NonFatal;
820 \\}
821 \\
822 \\fn foo() error{Fatal}!void {
823 \\ return failure() catch |err| switch (err) {
824 \\ error.Fatal => return error.Fatal,
825 \\ error.NonFatal => return,
826 \\ };
827 \\}
828 ,
829 .Debug = .{
830 .expect =
831 \\error: TheSkyIsFalling
832 \\source.zig:3:5: [address] in main (test)
833 \\ return error.TheSkyIsFalling;
834 \\ ^
835 \\
836 ,
837 },
838 .ReleaseSafe = .{
839 .exclude_os = &.{
840 .windows, // TODO
841 .linux, // defeated by aggressive inlining
842 },
843 .expect =
844 \\error: TheSkyIsFalling
845 \\source.zig:3:5: [address] in [function]
846 \\ return error.TheSkyIsFalling;
847 \\ ^
848 \\
849 ,
850 .error_tracing = true,
851 },
852 .ReleaseFast = .{
853 .expect =
854 \\error: TheSkyIsFalling
855 \\
856 ,
857 },
858 .ReleaseSmall = .{
859 .expect =
860 \\error: TheSkyIsFalling
861 \\
862 ,
863 },
864 });
810865}