Преглед изворни кода

docs: record step 3 and the Lower type/emit blocker

Eric Streit пре 2 дана
родитељ
комит
6edf09b612
1 измењених фајлова са 19 додато и 0 уклоњено
  1. 19 0
      docs/plan-resolve-check.md

+ 19 - 0
docs/plan-resolve-check.md

@@ -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.
+