|
|
@@ -1,4 +1,4 @@
|
|
|
-# Session 2026-10-22 — corpus triage: six clusters + libc prototypes
|
|
|
+# Session 2026-10-22 — corpus triage: seven clusters + libc prototypes
|
|
|
|
|
|
Branch **`master`**. Continues `summary_session-2026-10-19.md`; the
|
|
|
only plan source was its "Remaining" list (corpus `LANG` triage).
|
|
|
@@ -7,16 +7,16 @@ only plan source was its "Remaining" list (corpus `LANG` triage).
|
|
|
|
|
|
| gate | session start | end |
|
|
|
| --- | --- | --- |
|
|
|
-| suite (`compiler/run_tests.sh`) | 249/249 | **254/254** |
|
|
|
-| fixpoint (`bootstrap/fixpoint.sh`) | OK (3,882,337 B) | **OK (3,930,173 B)** |
|
|
|
-| corpus (`tools/v3-corpus/corpus.sh`) | 467/612 | **499/612, 0 crashes** |
|
|
|
+| suite (`compiler/run_tests.sh`) | 249/249 | **255/255** |
|
|
|
+| fixpoint (`bootstrap/fixpoint.sh`) | OK (3,882,337 B) | **OK (3,935,235 B)** |
|
|
|
+| corpus (`tools/v3-corpus/corpus.sh`) | 467/612 | **503/612, 0 crashes** |
|
|
|
|
|
|
Reproduce:
|
|
|
|
|
|
```sh
|
|
|
-cd compiler && ./build.sh && ./run_tests.sh # 254/254
|
|
|
+cd compiler && ./build.sh && ./run_tests.sh # 255/255
|
|
|
cd .. && TMP="$PWD/.scratch/fixpoint" ./bootstrap/fixpoint.sh
|
|
|
-tools/v3-corpus/corpus.sh # 499 OK, 0 crash
|
|
|
+tools/v3-corpus/corpus.sh # 503 OK, 0 crash
|
|
|
```
|
|
|
|
|
|
## Triage method
|
|
|
@@ -31,7 +31,7 @@ source line. They fall into these buckets:
|
|
|
| declaration order (type/const/var used before its declaration) | ~25 | correctly rejected (`docs/gaps/`); not a target |
|
|
|
| gm2 extensions (`ASM`, `''` NUL char, `666B`, absolute `VAR [addr]`) | ~7 | not a target unless chosen |
|
|
|
| ISO features actually missing | ~20 | `PACKEDSET`, exceptions/`UNIQUE`, `__FUNCTION__`, `PROC` as a result type; sized SYSTEM types **fixed below** |
|
|
|
-| **conforming** clusters: arrays, subranges, ordinal `FOR`, empty string, libc prototypes, SYSTEM sized types | 32 | **fixed this session** |
|
|
|
+| **conforming** clusters: arrays, subranges, ordinal `FOR`, empty string, libc prototypes, SYSTEM sized types, procedure types | 36 | **fixed this session** |
|
|
|
|
|
|
## What landed
|
|
|
|
|
|
@@ -101,6 +101,24 @@ statement is still `233` (`t_bad_funstmt`). Corpus **+6**:
|
|
|
`varient` (`except5` now stops on ISO exceptions). Regression
|
|
|
`t_libc2`.
|
|
|
|
|
|
+### ISO procedure-type syntax — `M2.atg`
|
|
|
+`PROCEDURE` types accepted `;`-separated sections and the GNU type-only
|
|
|
+`(T1, T2)` shorthand, but not the ISO/PIM forms used by the corpus:
|
|
|
+
|
|
|
+- comma-separated unnamed parameter types with a keyword/`VAR` start:
|
|
|
+ `PROCEDURE(ARRAY OF CHAR, ARRAY OF CHAR)` and
|
|
|
+ `PROCEDURE (CHAR, VAR scanClass, VAR scanState)`;
|
|
|
+- `PROC` as a result type (`PROCEDURE ... : PROC`), since `PROC` is a
|
|
|
+ keyword token and the result position only took `TypeIdent`.
|
|
|
+
|
|
|
+The parameter list now parses a comma as either another name or a new
|
|
|
+unnamed type entry; if a type entry starts, the collected names are
|
|
|
+resolved as types (`CHAR`, a declared type, or the GNU shorthand). The
|
|
|
+name-group behaviour (`a, b : T`) is unchanged. `PROC` in a result
|
|
|
+position maps to the predeclared procedure-value type. Corpus **+4**:
|
|
|
+`typeonly.def`, `testrecursive.def`, `procconv`, `procconv2`.
|
|
|
+Regression `t_proctype2`.
|
|
|
+
|
|
|
## Commits
|
|
|
|
|
|
Three tagged states, each green on all gates:
|
|
|
@@ -147,13 +165,10 @@ word model, so the narrow integer/word names share `INTEGER`/
|
|
|
1. **A real `libc.def`** — the built-in prototype table covers the
|
|
|
common functions; a definition module (or `DEFINITION MODULE FOR
|
|
|
"C"`) would let users extend it. Not needed for the corpus now.
|
|
|
-2. **ISO procedure-type syntax** — comma-separated unnamed parameter
|
|
|
- types and `PROC` as a result type (`testrecursive.def`,
|
|
|
- `typeonly.def`, `procconv`, `procconv2`); parser-level.
|
|
|
-3. **ISO `SysClock`** — the stdlib stub lacks `DateTime`,
|
|
|
+2. **ISO `SysClock`** — the stdlib stub lacks `DateTime`,
|
|
|
`CanGetClock`, `GetClock`, `SetClock` (`testclock`, `testclock2`).
|
|
|
-4. **`PACKEDSET`**, ISO exceptions/`UNIQUE`, `__FUNCTION__` — each
|
|
|
+3. **`PACKEDSET`**, ISO exceptions/`UNIQUE`, `__FUNCTION__` — each
|
|
|
one or two files; larger or gm2-flavoured.
|
|
|
-5. **Runtime subrange range checks** — the remaining conformance
|
|
|
+4. **Runtime subrange range checks** — the remaining conformance
|
|
|
difference from this session's subrange work.
|
|
|
-6. `STATUS.md` "what remains" is the live list.
|
|
|
+5. `STATUS.md` "what remains" is the live list.
|