045c49e398b29a19b4cd53ac6a38dd4e3133cc05
Final closer for the A.6.2 sequence. Mirror of harec's `assert(expr->result)` at ref/harec/src/check.c:3810: every value- producing nkind dispatched by resolvewalk (L475-488 + N_DOT at L391) reaches a stamping arm in exprtype that sets e.type_ before returning. asserttyped is the post-checker invariant gate; it walks checkfile's decls in pass 3 (same curmod context exprtype saw in pass 2) and writes a one-line stderr diagnostic for any dispatched node whose type_ remained nil. Three residual gates encode bails that aren't true gaps until #19 (Drew's δ: dedicated AST kinds for alloc/size/etc.) retires the seeded-SK_FN-with-nil-decl + SK_USE-as-value shapes: 1. N_IDENT resolving to SK_USE (module ref like `os` in `os.write`) 2. N_IDENT whose sym.decl == nil (pseudo-builtin callee — len, append, free, alloc, size, align, offset seeded at L86-98) 3. N_IDENT in LHS-of-N_DOT syntactic position (member-access lookup target, not value-producing) — tracked via `indot` param ZERO fires across all 5 selfhost combined.ww corpora (wcc, w6c, w6a, w6l, wwdump). asserttyped IS the regression catch — future commits that drop a type_ stamp will fire it during the 990_selfhost probes; no standalone table-driven test is bundled. Accreted folds: - 5-lite-a (#33): dispatcher-invariant docstring at exprtype L1535. - 5-lite-b (#34): WHY comments at 9 helper bail sites (unifyarith/binoptype/unoptype/indexresult) classifying each as unreachable-for-valid-input, propagation-from-callee, or invalid-input (cstage errors at the matching cite). Cites ref/harec/src/types.c type_promote on the function-doc updates. - A.6.2.1c (#24): three propagation pointers re-cite the inherent-IDENT bail at exprtype N_IDENT arm L1596-1599. - unoptype TK_STAR dead `if (u == nil) { return nil; }` removed — resolvealias(unwrapbang(non-nil)) is non-nil by parser invariant (parsetype L148 always sets N_TBANG.lhs; resolvealias L514-569 every exit returns non-nil for non-nil input). lib/ww/ast.ww: nkname becomes export so asserttyped's diagnostic can format the offending node's kind without duplicating the table. Closes #4 (A.6.2 umbrella) and #15 (A.6.2.1e).
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%