feat: multi-instance closures, richer stdlib, and Rust-style diagnostics

Introduce fat function pointers (BuxFn {code, env}) so capturing closures
are heap-allocated per value in both bootstrap and selfhost. Expand
Array/Map/Set/String/Test/Result APIs, add proper tuple codegen and
error snippets with multi-char underlines, golden diagnostic tests, and
LSP diagnostics via buxc check.
This commit is contained in:
2026-07-15 16:00:21 +03:00
parent 94e6806dda
commit 61ac06ab5f
48 changed files with 2789 additions and 362 deletions
+9
View File
@@ -399,6 +399,15 @@ func parserParsePrimary(p: *Parser) -> *Expr {
return parserParseClosure(p);
}
// unsafe { ... } — unsafe block expression
if kind == tkUnsafe {
discard parserAdvance(p);
let e: *Expr = parserMakeExpr(ekBlock, line, col);
e.boolValue = true; // marks this block as unsafe
e.refBlock = parserParseBlock(p);
return e;
}
parserEmitDiag(p, line, col, "expected expression");
return parserMakeExpr(ekLiteral, line, col);
}