Thread an immutable env through the type-inference walk
types.clj drove inference through ~14 module-level atoms; the infer walk was non-reentrant and depended on hidden set-*! install order. Thread one immutable env (mk-env) through infer instead: it snapshots the installed config (rtenv/vtypes/record-shapes/protocol-methods/map-shapes?) and carries the per-run flags and accumulator/guard cells (diags/calls/checking-set/diag-memo). A fresh env per run makes the pass re-entrant — isolated-diag-count's probe now runs under a sub-env with its own diags cell instead of save/restoring a shared atom. Only state whose lifecycle spans separate API calls stays module-level: a config-box the set-*! API writes, the escapes/user-sig sweep registries, and a bridge holding the last checking run's diags for take-diags!. record-type-from- entry/field-type-from-tag now take the shapes map directly rather than reading a global. jolt-ogib.10. Behavior pinned by the new infer gate (23 cases) plus selfhost + buildsmoke. Re-minted seed.
This commit is contained in:
parent
9c5e46e91b
commit
4fdc9f165e
2 changed files with 412 additions and 437 deletions
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue