You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds class-level coverage for the "inline extern fed to every
downstream consumer" surface that produced the PR #346 FnExtern
interp bug (Interp.eval_decl's TopFn arm missing the FnExtern
match arm — silent pattern-match failure since the interpreter
was written; fired the moment STDLIB-04a's tests became the first
to hand an inline `extern fn` to Interp.eval_program).
Four fixtures under test/e2e/fixtures/:
inline_extern_pure.affine — no effects
inline_extern_effectful.affine — return type carries effect row
inline_extern_polymorphic.affine — `extern fn host_identity[T]`
inline_extern_type_consumed.affine — `extern type` + consuming fn
Each fed through parse → resolve → typecheck → interp via the new
`inline_extern_pipeline_ok` helper in test/test_e2e.ml; assertion
is that all four phases return Ok. A regression that re-introduces
the silent pattern-match-failure path that broke main between #334
and #346 would fail loudly here.
Suite registered as "E2E Inline Extern Shapes (Refs #346)".
Queued as a comment on PR #346 in the previous session; this is
the follow-up. Per the CLAUDE.md "Test-fixture hygiene for latent
bug surfaces" rule landed this session, this treats "first user of
an existing-but-untested declaration shape" as a class-level
surface, not a single test case.
Not yet locally verified — no OCaml toolchain in remote execution
env. CI is the verification surface; the fixtures use only
already-parseable surface syntax (effects/extern/type-params), so
risk is low.
Refs #346, Refs CLAUDE.md §"Test-fixture hygiene"
0 commit comments