From f1fe7abdfddc55a43ea469a2f6aa500e2f530fcd Mon Sep 17 00:00:00 2001 From: Jan Strakowski Date: Fri, 28 Aug 2026 22:12:31 +0200 Subject: [PATCH] Fix two comments naming builtins that were removed or have since landed `serialize`/`serialize_file` left the language in #8, but two comments still describe them as live keyword-prefix builtins: `push_wrapped`'s list of the shapes it builds, and the evaluator's header. The evaluator header had drifted further than that. Its list of what this pass deliberately leaves unimplemented also still named `async`, `sha256` and `File`, all three of which run today - `sha256` since #8 gave it a real implementation, and `async`/`File` well before that. What is actually scoped out is `cached`, `import`, `#context`, and the static-vs-runtime distinction for `check`/`static_check`. `Bytes` comes off the list too: the value type exists and flows through the evaluator, and the gap that remains - no literal syntax for it - is already recorded where it belongs, at the top of value.odin. A comment that lists the unfinished work is worth keeping accurate precisely because it is where someone looks to find unfinished work; one that names three finished things and two deleted ones sends them the wrong way. Comments only, no behaviour change. Suite green at 160 tests. Co-Authored-By: Claude Opus 5 --- src/eval.odin | 6 +++--- src/parser.odin | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/eval.odin b/src/eval.odin index 29c26c8..c431be0 100644 --- a/src/eval.odin +++ b/src/eval.odin @@ -6,9 +6,9 @@ import "core:strings" // Tree-walking evaluator for the pure-expression core of SPEC.md. Deliberately // scoped out for this pass (each needs real design/OS decisions this project -// hasn't made yet): `async`, `cached`, `import`, `serialize`/`serialize_file`/ -// `sha256`, `#context`, `Bytes`/`File`, and the static-vs-runtime distinction -// for `check`/`static_check` (both just run as runtime checks here). +// hasn't made yet): `cached`, `import`, `#context`, and the static-vs-runtime +// distinction for `check`/`static_check` (both just run as runtime checks +// here). // // The two mechanisms that make omission work: // - A bare Hole makes its *enclosing hard-boundary slot* (ยง7) become a diff --git a/src/parser.odin b/src/parser.odin index c6ed046..3ebc091 100644 --- a/src/parser.odin +++ b/src/parser.odin @@ -201,7 +201,7 @@ push_binary :: proc(p: ^Parser, left: Node_Idx, op: Node_Idx, right: Node_Idx) - } // Wraps one child under `kind`, spanning from `kw_span`'s start to the child's end - -// the shape shared by func/asfunc/asfuncstatic/import/serialize/serialize_file/sha256/cached/async. +// the shape shared by func/asfunc/asfuncstatic/import/sha256/cached/async. @(private = "file") push_wrapped :: proc(p: ^Parser, kind: Node_Kind, kw_span: Span, child: Node_Idx) -> Node_Idx { start, count := push_children(p.ast, []Node_Idx{child})