|
|
@@ -0,0 +1,69 @@
|
|
|
+# 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.
|