refactor: statement parsing

This commit is contained in:
Fernando Araoz 2025-01-27 19:49:06 -05:00
parent 9374caa7ed
commit 3671c221a9

View File

@ -29,26 +29,16 @@ pub const Statement = struct {
}; };
errdefer allocator.destroy(vardef); errdefer allocator.destroy(vardef);
var parse_failed = false; if (try vardef.init(tokens, pos, allocator)) |vardef_end| {
const vardef_end = vardef.init(tokens, pos, allocator) catch |err| switch (err) { // variable definition parsed
error.Unmatched => blk: {
parse_failed = true;
break :blk 0;
},
else => {
return err;
},
};
if (vardef_end) |v| {
if (!parse_failed) {
// return the parsed variable definition // return the parsed variable definition
target.* = .{ target.* = .{
.alloc = allocator, .alloc = allocator,
.value = .{ .variableBinding = vardef }, .value = .{ .variableBinding = vardef },
}; };
return v; return vardef_end;
}
} }
// TODO: handle other errors of vardef parsing
// fail // fail
return ParseError.Unmatched; return ParseError.Unmatched;