Quellcode durchsuchen

docs: the expression/designator/call decoupling is done

Eric Streit vor 3 Tagen
Ursprung
Commit
6d4aca2f38
1 geänderte Dateien mit 20 neuen und 26 gelöschten Zeilen
  1. 20 26
      docs/STATUS.md

+ 20 - 26
docs/STATUS.md

@@ -117,32 +117,26 @@ Done:
    below.)
 
 Still to do:
-4. **Expressions: PARTIALLY DONE (2026-10-08).**  The runtime emit
-   has been removed from `SimExpr`, `Term`, `Expr` and `Fact`'s
-   always-runtime branches; a runtime result is the non-constant
-   sentinel `"@"` (which `IsImm`/`ConstInt` reject), while constant
-   folding (`NegFold`/`Fold2`/`StrFold`) and every check stay.  This
-   works because those productions' values only feed further value ops
-   and constant checks.
-   **The rest is one coupled change:** `Design` → `Fact` → `ArgList` →
-   `ActParam` plus the `NoteAddr`/`AddrOfVal` chain.  `Fact` records
-   `NoteAddr(q, qd)`/`AddrOf(qn, qa)` and `ActParam` recovers the
-   VAR-actual address with `AddrOfVal(qe, qa)` — and the note key is the
-   actual's *emitted* value, so dropping `ArgList`'s `CallBegin` alone
-   (fewer `NewTemp`s) shifts the keys and breaks calls (verified: 75
-   suite failures).  To finish: `Design` emits nothing (literal for a
-   constant, `"@"` otherwise), `Fact` drops the notes, `ActParam`
-   replaces `AddrOfVal` with an AST-kind addressability check and drops
-   `CallArg`, then `ArgList` drops `CallBegin`/`CallEnd`; afterwards
-   `NoteAddr`/`AddrOfVal`/`AddrOf` in `QbeGen` are dead.
-5. **Calls, 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.
+4. **Expressions/designators/calls: DONE (2026-10-08).**  The runtime
+   emit is gone from `SimExpr`, `Term`, `Expr`, `Fact`, `Design`,
+   `ResultComp`, `ArgList`, `ActParam` and assignment; a runtime result
+   is the non-constant sentinel `"@"` (which `IsImm`/`ConstInt`
+   reject), while constant folding (`NegFold`/`Fold2`/`StrFold`) and
+   every check stay.
+   The coupled change that had blocked this landed together: `Fact`
+   drops the `NoteAddr` chain, `ActParam` checks VAR-actual
+   addressability by AST kind (`NkDesignator`, or `NkStrLit`) instead
+   of the `NoteAddr`/`AddrOfVal` chain and drops `CallArg`, and
+   `ArgList` drops `CallBegin`/`CallEnd`.  (`NoteAddr`/`AddrOfVal`
+   remain, now used only by `Lower` for its own emit.)
+5. **Proc headings, set/ctor literals, string pooling: remaining.**
+   `ProcHeading` still calls `BeginFunc`/`FuncParam`/`EndFuncHeader`/
+   `EndFunc`/`Mangled`/`SetFuncRes`/`AbortFunc`; note `FuncParam` is a
+   check that relies on `BeginFunc` resetting `nPar`, so these must be
+   split rather than dropped.  `SetLit`/`TypedBraceLit`
+   (`NewSetTemp`/`SetZero`/`SetRange`/`SetBit`/`Ctor*`) and the
+   `DeclStr`/`DeclUStr` string pool are value-ish; `CopyOp`/`IsImm`/
+   `IntStr`/`Fold2`/`Norm*`/`Conv*` are the value layer and stay.
 6. Retire the `-lower` test flag and the now-degenerate byte-compare
    tests in `run_tests.sh`.
 7. Remove the dead scaffolding.  Done 2026-10-08: `LowerSession`,