selfhost: port append + spread — N_SPREAD parser + rt_ensure builtin

This commit is contained in:
2026-05-12 16:04:17 +09:00
parent f67c07cbae
commit ce5d66e18a
7 changed files with 525 additions and 15 deletions

View File

@@ -56,11 +56,12 @@ fn seedprimitives(c: *checker) void = {
scopedefine(c.top, "never", skind.SK_TYPE, c.tc.tynever, nil);
// `nil`, `true`, `false` are keywords — handled at the lex/parser
// level, no symbol needed.
// `len`, `alloc`, `free` are pseudo-builtins; scopedefine them so
// their use sites resolve. The actual semantics live in cgen.
scopedefine(c.top, "len", skind.SK_FN, nil, nil);
scopedefine(c.top, "alloc", skind.SK_FN, nil, nil);
scopedefine(c.top, "free", skind.SK_FN, nil, nil);
// `len`, `alloc`, `free`, `append` are pseudo-builtins; scopedefine
// them so their use sites resolve. The actual semantics live in cgen.
scopedefine(c.top, "len", skind.SK_FN, nil, nil);
scopedefine(c.top, "alloc", skind.SK_FN, nil, nil);
scopedefine(c.top, "free", skind.SK_FN, nil, nil);
scopedefine(c.top, "append", skind.SK_FN, nil, nil);
};
// installdecl — install the top-level decl's name into the top scope.