-
-
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.
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.