Jelajahi Sumber

docs: calls/headings block on fused check+emit QbeGen functions

Eric Streit 4 hari lalu
induk
melakukan
14f3f84777
1 mengubah file dengan 10 tambahan dan 5 penghapusan
  1. 10 5
      docs/STATUS.md

+ 10 - 5
docs/STATUS.md

@@ -125,11 +125,16 @@ Still to do:
    constants itself from the AST (a real change, not cleanup), then
    dropping the grammar's value layer.  Designators are entangled the
    same way (`qn`/`NoteAddr` feed VAR-actual addresses).
-4. Calls (`ArgList`/`ActParam`), declarations/proc headings, imports,
-   classes: the call/decl results are runtime values, not constants,
-   so their emission (`CallBegin`/`CallEnd`/`CallArg`/`BeginFunc`/
-   `FuncParam`/`EndFunc`/`Mangled`/`DeclVar`/`DeclConst`/…) can be
-   deleted while keeping the `SymTab` checks.
+4. **Calls, declarations, proc headings, imports, classes: BLOCKED
+   too, by fused validation.**  The `QbeGen` emit functions double as
+   semantic checks and the grammar depends on their result:
+   `QbeGen.CallArg` (`IF NOT … THEN SemError(233)`), `AddrOfVal`
+   (VAR-actual address + 233), `FuncParam` (`IF NOT …` on a heading).
+   Removing the calls would remove error detection, so this needs the
+   checks reimplemented in `SymTab`/the grammar first — again a real
+   change, not cleanup.  Only the genuinely pure emitters
+   (`Jmp`/`EmitLabel`/`NewLabel`/`SetBit`/`NewHeap`/`DeclVar`/… when
+   not used as a check) can be dropped.
 5. Retire the `-lower` test flag and the now-degenerate byte-compare
    tests in `run_tests.sh`.
 6. Remove the dead scaffolding: `LowerSession`, `MaterializeGlobals`,