fix(parser): add stray } workaround in parserParseFuncDecl, enable selfhost build

This workaround consumes a stray } that parserParseBlock sometimes leaves
behind, which was causing the module handler to exit early. With this fix,
the selfhost compiler (buxc2) can now compile the entire src/ project.

- buxc2 project build: 491 user + 310 stdlib = 801 decls, no sema errors
- make selfhost-loop: builds and runs both passes
- C compilation succeeds, resulting binary works
This commit is contained in:
2026-06-07 17:33:17 +03:00
parent 8347599d23
commit 9758b17b1a
+5
View File
@@ -1006,6 +1006,11 @@ func parserParseFuncDecl(p: *Parser, isPublic: bool, isExtern: bool, isAsync: bo
// Body // Body
if !isExtern && parserCheck(p, tkLBrace) { if !isExtern && parserCheck(p, tkLBrace) {
d.refBody = parserParseBlock(p); d.refBody = parserParseBlock(p);
// HACK: if parserParseBlock left a stray } at current position,
// consume it. Without this, the module handler exits early.
if parserCheck(p, tkRBrace) {
discard parserAdvance(p);
}
} else { } else {
d.refBody = null as *Block; d.refBody = null as *Block;
} }