# Unsupported-gap reproducers One minimal source per known V3 gap (2026-10-18). Each file's header comment carries its **tag** and the gm2 corpus file(s) it stands for. These are *not* part of the test suite (they are expected to fail); they exist so each gap has a runnable, self-contained example. Verify one with: ```sh cd compiler && ./build.sh ./M2 ../docs/gaps/gap07_convert.mod # prints the diagnostic on stdout ``` ## Index | tag | file | diagnostic | corpus exemplars | | --- | --- | --- | --- | | `gap01-fwd-type-const-conv` | `gap01_fwd_type_const_conv.mod` | `undeclared identifier` | `subrange4`, `subrange7` | | `gap02-fwd-type-var` | `gap02_fwd_type_var.mod` | `undeclared identifier` | `subrange11` (procedure-local part) | | `gap03-fwd-type-heading` | `gap03_fwd_type_heading.mod` | `undeclared identifier` | `shift3`, `shift4` | | `gap04-fwd-const-bound` | `gap04_fwd_const_bound.mod` | `undeclared identifier` | `setconst3` | | `gap05-fwd-type-size` | `gap05_fwd_type_size.mod` | `undeclared identifier` | `constsize2` | | `gap06-fwd-setconst` | `gap06_fwd_setconst.mod` | `undeclared identifier` | `setoverflow` | | `gap07-convert-builtin` | `gap07_convert.mod` | `undeclared identifier` | `procconv2` | | `gap08-set-word-cast` | `gap08_val_cast_set_word.mod` | `not supported yet` | `constset`, `constset2`, `constset3`, `packed`, `bitset5`, `packed` | | `gap09-scalar-to-bytearray` | `gap09_scalar_to_bytearray.mod` | `invalid call` | `aochar`, `arrayofbyte`, `bytearray` | | `gap10-var-param-type` | `gap10_var_param_type.mod` | `invalid call` | `testparam2`, `testparam3` | | `gap11-bare-proc-stmt` | `gap11_bare_proc_stmt.mod` | `invalid call` | `tinyproc2`, `tinyproc4` | | `gap12-variant-empty-arms` | `gap12_variant_empty_arms.mod` | `invalid VarLabel` | `varient2`, `varient3`, `varient8`, `tsize`, `tsize2` | | `gap13-builtin-proc-name` | `gap13_builtin_proc_name.mod` | `ident expected` | `fileio.def`, `fileio.mod` | | `gap14-builtin-pragma` | `gap14_builtin_pragma.def` | `ident expected` | `builtin.def`, `builtin.mod` | | `gap15a-qualified-import` | `gap15a_qualified_import.mod` (+ `gap15_base.def`, `gap15_lib.def`) | `undeclared identifier` | `impf`, `impk`, `impl`, `impq` | | `gap15b-from-import` | `gap15b_from_import.mod` (+ `gap15_base.def`, `gap15_lib.def`) | `undeclared identifier` | `impi` | | `gap16-wide-set` | `gap16_wide_set.mod` | `not supported yet` | `settest1` | | `gap17-set-of-cardinal` | `gap17_set_of_cardinal.mod` | `not supported yet` | `settest3` | Observed first diagnostics (line:col) at commit time: ``` gap01_fwd_type_const_conv.mod:5:13 undeclared identifier gap02_fwd_type_var.mod:7:9 undeclared identifier gap03_fwd_type_heading.mod:5:17 undeclared identifier gap04_fwd_const_bound.mod:5:19 undeclared identifier gap05_fwd_type_size.mod:5:17 undeclared identifier gap06_fwd_setconst.mod:5:12 undeclared identifier gap07_convert.mod:8:12 undeclared identifier gap08_val_cast_set_word.mod:7:35 not supported yet gap09_scalar_to_bytearray.mod:9:13 invalid call gap10_var_param_type.mod:9:11 invalid call gap11_bare_proc_stmt.mod:6:7 invalid call gap12_variant_empty_arms.mod:8:12 invalid VarLabel gap13_builtin_proc_name.mod:5:11 ident expected gap14_builtin_pragma.def:5:11 ident expected gap15a_qualified_import.mod:8:21 undeclared identifier gap15b_from_import.mod:6:16 undeclared identifier gap16_wide_set.mod:5:29 not supported yet gap17_set_of_cardinal.mod:5:19 not supported yet ``` ## Not represented by a source - **Size-sensitive V3 miscompile** — a *latent* codegen bug that only manifests at the compiler's own scale (the historical "removing `ASTDUMP` breaks the fixpoint"); see `docs/summary_l3_selfhost_fix.md`. No small standalone source triggers it. Companion files (`gap15_base.def`, `gap15_lib.def`) are not gaps themselves; they model the `impc` → `impb` re-export chain.