Branch generics-inc1 (off ast-stage-c). Working tree clean.
Current state: suite 189/189, FIXPOINT OK (3,490,054 bytes).
ast-stage-c — the L7 refactor + language work (tags below), HEAD
0f611c0 docs: GOTO/labels landed.generics-inc1 — ast-stage-c + Increment 1 of generics, HEAD
55d2e7c docs: generics inc1 status + inc2 plan.Tags on ast-stage-c (chronological):
v3-lower7-flip, v3-lower7-decoupled, v3-lower7-complete,
v3-fix-arrrecfield, v3-arrrecfield-complete, v3-status-2026-10-08,
v3-composite-results, v3-chain-calls, v3-goto.
L7 refactor — done. Lower is the only emitter; the inline emit was
deleted from statements, control flow, declarations,
expressions/designators, calls and ProcHeading. Found and fixed a
latent VAR-actual note-ring bug (RestoreSession now clears the
ring). Swept dead code (0 unreferenced procs). Retired -lower and
the degenerate byte-compare tests (suite 204 → 181).
Language / correctness work (all on ast-stage-c):
t_arrrecfld,
t_arrrecbig).F()^.x := e, t_stmtsfx).t_retrec, t_retmeth.F().M(),
t_chain).GOTO/labels — required splitting Design into
Design + DesignTail to resolve the LL(1) label/designator clash;
t_goto, t_gotobad.Docs refreshed: STATUS.md, analysis_gaps.md, features.md,
analysis_generics.md.
Syntax chosen: ISO 10514-2 generic modules + refinement
(../Generics/m2generic-syntaxe-analysis.md).
Increment 1 — done (e1d0472). Grammar recognition of the four
module categories:
GENERIC DEFINITION/IMPLEMENTATION MODULE M (E : TYPE); … and
DEFINITION/IMPLEMENTATION MODULE X = M(actuals); …. Formals are
unresolved alias types (SymTab.EnterTypeParam); refinements are
recorded. A refinement still yields an empty module.
Increment 2 — the next step. Instantiate by re-parsing the generic source with a substitution scope, driven by a driver session pre-pass:
X, dedup, and lower it before the importer;BeginDef into the ; branch so the
refinement does not pre-register X; add
SymTab.EnterTypeParamBound; add a grammar instantiation context
(instActive/instName/instActual) + accessors
(IsGenericUnit, IsRefinementUnit, GetRefinement,
SetInstantiation); add the driver re-parse logic.Details and the full plan are in docs/analysis_generics.md (top note).
docs/STATUS.md / analysis_gaps.md)SaveSession/RestoreSession/SetNoEmit) —
blocked on the grammar's last suppressed writers; low payoff.docs/wip/chanconsts.*,
streamfile.*).M2 exits 0 on errors / aborts on a missing input
file; weak error recovery; fixed table limits.ASTDUMP from
M2.atg breaks the fixpoint).GENERIC CLASS).cd compiler && ./build.sh && ./run_tests.sh # 189/189
cd .. && bootstrap/fixpoint.sh # FIXPOINT OK
git log --oneline -5