writeonce/compiler/src
shoney.arickathil ea77fc9d5c feat: map iteration (for k, v in m) + multi element writes
log-watcher parse errors 7 -> 3 (only `as` left); corpus 71/0, woc 565/0.

- wob.h/builtin.c/loader.c: WO_B_MULTI_SET — `m[i] = v` for a multi, dropping
  the element it replaces (the mirror of map_set, which the format doc's sugar
  rule already had; the "no element write" gap is closed)
- ast/parser: `for k, v in m` — the second name binds the value for that key
- types.ml/owner.ml: the two cursors take the map's key and value types; both
  are borrows of what the map owns, so neither is dropped per iteration
- emit.ml: map form lowers to len + key_at/val_at over slot indexes (insertion
  order, cont.h's parallel arrays), same loop skeleton as the multi form

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 16:46:53 +02:00
..
ast.ml feat: map iteration (for k, v in m) + multi element writes 2026-08-14 16:46:53 +02:00
diag.ml feat: milestone 1 complete — .wob emitter, conformance corpus, single binary; GC redesign specced 2026-08-11 19:31:26 +02:00
disasm.ml feat(compiler): iteration 5 Tasks 1-4 — modules, language surface, switch, typedef records + enum variants 2026-08-12 14:40:07 +02:00
dump.ml feat: map iteration (for k, v in m) + multi element writes 2026-08-14 16:46:53 +02:00
dune feat: milestone 1 complete — .wob emitter, conformance corpus, single binary; GC redesign specced 2026-08-11 19:31:26 +02:00
emit.ml feat: map iteration (for k, v in m) + multi element writes 2026-08-14 16:46:53 +02:00
lexer.ml feat: nil literal + systems-stdlib text/container builtins 2026-08-14 16:43:38 +02:00
owner.ml feat: map iteration (for k, v in m) + multi element writes 2026-08-14 16:46:53 +02:00
parser.ml feat: map iteration (for k, v in m) + multi element writes 2026-08-14 16:46:53 +02:00
token.ml feat: nil literal + systems-stdlib text/container builtins 2026-08-14 16:43:38 +02:00
types.ml feat: map iteration (for k, v in m) + multi element writes 2026-08-14 16:46:53 +02:00