-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.regressionIt worked in a previous version of Zig, but stopped working.It worked in a previous version of Zig, but stopped working.
Milestone
Description
Zig Version
0.12.0-dev.2139+e025ad7b4
Steps to Reproduce and Observed Behavior
Run the following code with zig run file.zig:
pub fn main() !void {
try foo();
return error.FailTest;
}
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,
};
}This will yield the following error return trace:
error: FailTest
/run/media/techatrix/UserFiles/zls/sample.zig:7:5: 0x1025af8 in failure (sample)
return error.NonFatal;
^
/run/media/techatrix/UserFiles/zls/sample.zig:3:5: 0x10234a6 in main (sample)
return error.FailTest;
I have reduced this example from usage of std.zig.Ast.parse:
pub fn main() !void {
const std = @import("std");
var tree = try std.zig.Ast.parse(std.heap.page_allocator, "const foo = ", .zig);
defer tree.deinit(std.heap.page_allocator);
return error.FailTest;
}The equivalent of the foo function in the reduced example would be expectTopLevelDeclRecoverable.
Lines 670 to 678 in c724cc6
| fn expectTopLevelDeclRecoverable(p: *Parse) error{OutOfMemory}!Node.Index { | |
| return p.expectTopLevelDecl() catch |err| switch (err) { | |
| error.OutOfMemory => return error.OutOfMemory, | |
| error.ParseError => { | |
| p.findNextContainerMember(); | |
| return null_node; | |
| }, | |
| }; | |
| } |
Expected Behavior
The error return trace should not include the failure function because the NonFatal error is being ignored in the foo function.
error: FailTest
/run/media/techatrix/UserFiles/zls/sample.zig:11:5: 0x21e2f6 in main (sample)
return error.FailTest;
This is also what Zig 0.11.0 would produce.
I suspect that this has been caused by #18173.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.regressionIt worked in a previous version of Zig, but stopped working.It worked in a previous version of Zig, but stopped working.