|
@@ -206,4 +206,23 @@ Measured while scaffolding (branch `resolve-check`):
|
|
|
off the whole `Check` pass); on forward-free code it stays
|
|
off the whole `Check` pass); on forward-free code it stays
|
|
|
byte-identical, so the suite gate is unaffected.
|
|
byte-identical, so the suite gate is unaffected.
|
|
|
|
|
|
|
|
|
|
+- **2026-10-15 (`7ca434b`)** — revised step 2 proper (the expression
|
|
|
|
|
+ walk) turned out to be blocked: `Lower.LowerExprFull` interleaves
|
|
|
|
|
+ type *construction* with emission (it calls `SymTab.NewSet` /
|
|
|
|
|
+ `NewStr` / `NewUStr` while emitting), so there is no clean
|
|
|
|
|
+ "type-only" path to share with a checker, and the AST carries no
|
|
|
|
|
+ per-expression type to walk. Took a more direct deletion instead:
|
|
|
|
|
+ the forward operand is now **`InvalidType`**, so the generic "skip
|
|
|
|
|
+ checks on an unknown type" rule (which every check already has)
|
|
|
|
|
+ replaces the purpose-built `IsFwdVar` leniency. Deleted
|
|
|
|
|
+ `SymTab.IsFwdVar`, `FwdVarType`, the `fwdVarT` table and the five
|
|
|
|
|
+ guards; `FwdVarRef` no longer allocates a placeholder alias.
|
|
|
|
|
+ Suite 190/190; fixpoint OK (3,466,859 bytes).
|
|
|
|
|
+- **Remaining for step 4**: `SymTab.FwdVarRef`/`FwdVarName`/
|
|
|
|
|
+ `FwdVarResolve` and `Check.NoteForward`/`FlushForward` still exist,
|
|
|
|
|
+ but they now only *resolve a name* (no patching). To delete them,
|
|
|
|
|
+ `Design` must stop deferring at all — which needs the expression and
|
|
|
|
|
+ statement checks moved out of the actions, i.e. the walk, still
|
|
|
|
|
+ blocked on `Lower`'s type/emit split.
|
|
|
|
|
+
|
|
|
|
|
|