checker: a function named like a built-in a call always takes is refused at its declaration - function words(st, k) compiled and every call became words(n) with a pointer for n (invalid IR, far from the cause); the table is selfhost/check/check_builtins.ludic, emit_call's built-ins no find_fn guard lets a declared function take, and ludic-dev syntax --check holds it to emit_call both ways; every other built-in (buffer, floats, double, ...) yields to a declared function in the checker as it already did in codegen. string_temps' keep and cross_heap_test's keep renamed (hand, keep_cell); rejected/builtin_call_name and functions/builtin_yield with their cases (added, not run); reseeded, bootstrap-cfree fixpoint holds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
26b986de5b
commit
d4df925b8f
13 changed files with 14830 additions and 13043 deletions
9
changes/builtin-names.md
Normal file
9
changes/builtin-names.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
bump: patch
|
||||
type: fix
|
||||
**A function named like a built-in a call always takes is refused.** `function words(st, k)` compiled,
|
||||
and every call to it became the built-in `words(n)` - n zeroed ints, with a pointer for n - and LLVM
|
||||
refused the IR far from the cause. A top-level function whose name a call always takes as the
|
||||
compiler's own (`words`, `keep`, `print`, `save`, `load`, `key`, ...; the table is
|
||||
`selfhost/check/check_builtins.ludic`, held to `emit_call` by `ludic-dev syntax --check`) is now an
|
||||
error at its declaration, as `run` already was. Every other built-in (`buffer`, `floats`, `double`,
|
||||
...) yields to a function the program declares, in the checker as it already did in codegen.
|
||||
Loading…
Add table
Add a link
Reference in a new issue