فهرست منبع

docs: note the inline-emit deletion slices and the query/state entanglement

Eric Streit 3 روز پیش
والد
کامیت
94313ef34d
1فایلهای تغییر یافته به همراه22 افزوده شده و 6 حذف شده
  1. 22 6
      docs/STATUS.md

+ 22 - 6
docs/STATUS.md

@@ -98,13 +98,29 @@ not change any emitted image.
 
 ## What remains
 
-Purely mechanical cleanup — no codegen gaps left:
-
-1. Delete the grammar's inline emit (the 533 `QbeGen.*` call sites),
-   keeping the AST-building actions.
-2. Retire the `-lower` test flag and the now-degenerate byte-compare
+Cleanup with no codegen gaps left.  **Not** purely mechanical: many
+`QbeGen.*` calls are semantic queries or parser state, not emit, and
+must stay — `TopLoop`/`PushLoop`/`PopLoop` (validates `EXIT`),
+`TopWith`/`PushWith`/`PopWith` (validates a bare field name in `WITH`),
+`IsImm`/`Fold2`/`NormInt`/`NormReal`/`StrFold`/… (constant values that
+`Lower` consumes via `NoteConstVal`), `LocFull`, `Mangled`, `ConstInt`.
+Only the true emission calls are removed, production group by group,
+with suite + fixpoint after each.
+
+Done:
+1. Builtin statements (`EXIT`, `INCL/EXCL`, `INC/DEC`, `NEW`, `DISPOSE`).
+2. Control flow (`IF`/`WHILE`/`REPEAT`/`LOOP`/`FOR`/`CASE`), `RETURN`,
+   `HALT`.
+
+Still to do:
+3. Expressions / `Fact` / `Term` (the big one: `CopyOp`, `IntStr`,
+   `Op3*`, `WidenLong`, `Cmp*`, `AddrOf*`, `Set*`, folding), and
+   designators.
+4. Calls (`ArgList`/`ActParam`), declarations/proc headings,
+   imports, classes.
+5. Retire the `-lower` test flag and the now-degenerate byte-compare
    tests in `run_tests.sh`.
-3. Remove the dead scaffolding: `LowerSession`, `MaterializeGlobals`,
+6. Remove the dead scaffolding: `LowerSession`, `MaterializeGlobals`,
    `SaveSession`/`RestoreSession` and the `SetNoEmit` machinery (once
    nothing emits inline), plus the dead `SetLower`/`lowerRequested`.