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
    constants itself from the AST (a real change, not cleanup), then
    dropping the grammar's value layer.  Designators are entangled the
    dropping the grammar's value layer.  Designators are entangled the
    same way (`qn`/`NoteAddr` feed VAR-actual addresses).
    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
 5. Retire the `-lower` test flag and the now-degenerate byte-compare
    tests in `run_tests.sh`.
    tests in `run_tests.sh`.
 6. Remove the dead scaffolding: `LowerSession`, `MaterializeGlobals`,
 6. Remove the dead scaffolding: `LowerSession`, `MaterializeGlobals`,