on master help sign in
Extend partial type inference and Hoon imports
51ce4d9iko
README.md+4−2
@@ -42,7 +42,7 @@ tools/hoon '(golden /a/b/jibb (crip "++ main view"))'
42tools/hoon --raw --cord src=tests/golden/foo/source.jibb 'tree:(golden /a/b/jibb src)'
42tools/hoon --raw --cord src=tests/golden/foo/source.jibb 'tree:(golden /a/b/jibb src)'
43```
43```
44
44
45−`tools/testdata/selftest` tests both tools against a stub library, and `tools/doc-blocks` against Markdown it writes. `tools/importer-test` compares the partial Hoon importer's fixture projections against their golden file.
45+`tools/testdata/selftest` tests both tools against a stub library, and `tools/doc-blocks` against Markdown it writes. `tools/importer-test` compares the partial Hoon importer's fixture projections against their golden file. `tools/type-import-test` checks the importer/checker bridge under eval; the ship suite runs the same fixture.
46
46
47### The doc's examples
47### The doc's examples
48
48
@@ -82,10 +82,12 @@ tools/ship test --stub --golden tools/testdata/ship-golden
82tools/ship test --lib some/other/jibb.hoon
82tools/ship test --lib some/other/jibb.hoon
83```
83```
84
84
85−A sync with nothing to commit takes about 2 s. A commit adds 3 to 10 s, and 300 cases (900 files) sync in about 10 s. `-test` takes 1 to 3 s with the stub library. `--stub` swaps in `tools/testdata/ship-stub.hoon`, and `tools/testdata/ship-selftest` checks the generator and the runner against it with the cases in `tools/testdata/ship-golden`.
85+A sync with nothing to commit takes about 2 s. A commit adds 3 to 10 s, and 300 cases (900 files) sync in about 10 s. `-test` takes 1 to 3 s with the stub library. `--stub` swaps in `tools/testdata/ship-stub.hoon`, and `tools/testdata/ship-selftest` checks the generator and the runner against it with the cases in `tools/testdata/ship-golden`. Runs with `--stub`, `--lib`, or a custom `--golden` include only the generated golden test program: the repository's other test programs run with the default library and corpus. A subsequent default `tools/ship test` restores them.
86
86
87`tools/ship check-commit` proves that `|commit` stores `.jibb` files. It syncs `my-app`, reads every `/ui` file back with `%cx`, byte for byte, and converts `%jibb` to `%mime` and `%txt` and back. It commits half-written files, then deletes them. It merges a file that two desks changed on different lines, and checks that changes to the same line conflict. It can be rerun, and it leaves the two scratch desks it merges with (`%jibb-check-ours` and `%jibb-check-theirs`) holding only what `|new-desk` gives, unmounted.
87`tools/ship check-commit` proves that `|commit` stores `.jibb` files. It syncs `my-app`, reads every `/ui` file back with `%cx`, byte for byte, and converts `%jibb` to `%mime` and `%txt` and back. It commits half-written files, then deletes them. It merges a file that two desks changed on different lines, and checks that changes to the same line conflict. It can be rerun, and it leaves the two scratch desks it merges with (`%jibb-check-ours` and `%jibb-check-theirs`) holding only what `|new-desk` gives, unmounted.
88
88
89+`tools/clay-fixtures` syncs `my-app` and checks through Clay that its example `/sur` files and marks build. It compares the result with the golden file under `tests/clay-fixtures/`.
90+
89For anything else:
91For anything else:
90
92
91```
93```
docs/README.md+1−1
@@ -1,6 +1,6 @@
1# Docs
1# Docs
2
2
3−Jibb's spec is a design doc by @iko, [Jibb — an Elm-architecture UI language for Urbit](https://claude.ai/artifact/DMBr48qzi5z8hcwn2ccPBv), and its repository copy in `spec/`. The repository copy records decisions made on 2026-10-30, including dropping `$?` and the milestone 2 type and prelude decisions; the Claude document still needs to be synchronized. This folder also holds where the build stands, what is still open, and how to work on the code.
3+Jibb's spec is a design doc by @iko, [Jibb — an Elm-architecture UI language for Urbit](https://claude.ai/artifact/DMBr48qzi5z8hcwn2ccPBv), and its repository copy in `spec/`. The repository copy records decisions made on 2026-10-30, including dropping `$?`, adding `%$` as a term literal and pattern, making `@` an unrestricted atom, treating `?` as two atoms for union disjointness, and the milestone 2 type and prelude decisions; the Claude document still needs to be synchronized. This folder also holds where the build stands, what is still open, and how to work on the code.
4
4
5| File | What it holds |
5| File | What it holds |
6| --- | --- |
6| --- | --- |
docs/compiler.md+3−2
@@ -32,6 +32,7 @@ From the header of the file:
32| `+parse-tokens` | `[file=path toks=(list token)]` | `(each module error)` |
32| `+parse-tokens` | `[file=path toks=(list token)]` | `(each module error)` |
33| `+golden` | `[file=path src=@t]` | `[tokens=@t tree=@t]`: both stages printed, or the rendered error |
33| `+golden` | `[file=path src=@t]` | `[tokens=@t tree=@t]`: both stages printed, or the rendered error |
34| `+golden-types` | `[file=path src=@t]` | A partial inference report; explicitly says the module has not been checked |
34| `+golden-types` | `[file=path src=@t]` | A partial inference report; explicitly says the module has not been checked |
35+| `+golden-types-imports` | `[file=path src=@t externals=iexternals]` | The same partial report, with selected caller-supplied Hoon mold results |
35| `+show-tokens` | `(list token)` | `@t` |
36| `+show-tokens` | `(list token)` | `@t` |
36| `+show-module` | `module` | `@t` |
37| `+show-module` | `module` | `@t` |
37| `+show-error` | `[src=@t error]` | `@t` |
38| `+show-error` | `[src=@t error]` | `@t` |
@@ -55,9 +56,9 @@ The core is split into chapters, `+| %name`, in this order:
55| `%span-check` | `+check-spans`, which `+golden` runs on every tree, and `+check-spans-test` |
56| `%span-check` | `+check-spans`, which `+golden` runs on every tree, and `+check-spans-test` |
56| `%type-inference` | The initial inference fragment and its unification helpers; not yet a module type checker |
57| `%type-inference` | The initial inference fragment and its unification helpers; not yet a module type checker |
57
58
58−The inference fragment supports fixed auras, generic variables and gates, unfaced cells, a two-binder cell pattern, and a complete two-arm loobean branch. It instantiates generalized top-level definitions when they are used. It does not yet check a module, its imports, faces, general patterns, deferred constraints, dependency cycles or errors with both conflicting excerpts. Unsupported forms are reported as such, and the partial output says the module has not been checked.
59+The inference fragment supports fixed auras, generic variables and gates, unfaced cells, a two-binder cell pattern, a complete two-arm loobean branch, closed local mold aliases and acyclic forward value references. It instantiates generalized top-level definitions when they are used. It does not yet check a module, its imports, faces, general patterns, deferred constraints, recursive or generic molds, dependency cycles or errors with both conflicting excerpts. The current dependency pass can take quadratic time on long forward chains; the milestone's speed target remains unverified. A separate conservative pass reports unions whose cases are provably disjoint or overlapping and leaves other cases unresolved; it does not claim the mold is checked. Unsupported forms are reported as such, and the partial output says the module has not been checked.
59
60
60−The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles several collections and named recursion, but source-aware aliases and disjointness, marks and integration with the checker remain unfinished. Its fixtures include a real Tlon type; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output.
61+The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles named recursion, several collections, jar and jug in ordinary record fields, and direct `$^` unions whose source branches can be proved disjoint. Nested `$^`, nested collection arguments, ordered maps, general source-level disjointness, marks and complete integration with the checker remain unfinished. `+golden-types-imports` can consume fixed-aura atoms and unfaced cells from caller-supplied reader results for declared `/-` imports; other forms remain unsupported. Its disjointness proof is conservative and can reject a valid union it cannot prove disjoint. Collection recognition requires the originating `/sur` core, built directly against zuse, and rejects locally shadowed names and subjects with unresolved Ford imports. Its fixtures include three real Tlon files; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output. `tools/type-import-test` and the corresponding ship test compose the importer with the inference fragment and compare a separate golden report.
61
62
62And the design notes:
63And the design notes:
63
64
docs/development.md+5−1
@@ -60,6 +60,8 @@ git clone https://github.com/urbit/tools /root/src/tools
60| --- | --- |
60| --- | --- |
61| `tools/golden` | Runs the golden cases under `urbit eval`: every case, or those matching `--case`; `--update` rewrites the expected outputs; `--show` prints them |
61| `tools/golden` | Runs the golden cases under `urbit eval`: every case, or those matching `--case`; `--update` rewrites the expected outputs; `--show` prints them |
62| `tools/importer-test` | Compares the partial Hoon importer's diagnostic trees and errors with `tests/importer/tree.txt` under `urbit eval` |
62| `tools/importer-test` | Compares the partial Hoon importer's diagnostic trees and errors with `tests/importer/tree.txt` under `urbit eval` |
63+| `tools/type-import-test` | Composes the Hoon importer with the partial checker and compares `tests/type-import/expected.txt` under eval |
64+| `tools/clay-fixtures` | Syncs `my-app` and checks that its example `/sur` files and marks build through Clay on the fake ship |
63| `tools/hoon` | Evaluates Hoon with the library in scope, as `tools/hoon '(golden /a/b/jibb (crip "++ main view"))'`; `--cord name=file` binds a file's text, `-f` reads the expression from a file |
65| `tools/hoon` | Evaluates Hoon with the library in scope, as `tools/hoon '(golden /a/b/jibb (crip "++ main view"))'`; `--cord name=file` binds a file's text, `-f` reads the expression from a file |
64| `tools/doc-blocks` | Checks the doc's `jibb` blocks against the `doc-*` golden cases: `tools/doc-blocks docs/spec` |
66| `tools/doc-blocks` | Checks the doc's `jibb` blocks against the `doc-*` golden cases: `tools/doc-blocks docs/spec` |
65| `tools/ship` | Runs the fake ship: `start`, `stop`, `status`, `log`, `sync <desk>`, `test`, `gen-tests`, `check-commit`, `scry`, `hoon`, `run`, `poke`, `commit`, `mount`, `unmount` |
67| `tools/ship` | Runs the fake ship: `start`, `stop`, `status`, `log`, `sync <desk>`, `test`, `gen-tests`, `check-commit`, `scry`, `hoon`, `run`, `poke`, `commit`, `mount`, `unmount` |
@@ -73,6 +75,7 @@ git clone https://github.com/urbit/tools /root/src/tools
73```
75```
74tools/golden # all cases pass
76tools/golden # all cases pass
75tools/importer-test # Hoon importer fixture projections match
77tools/importer-test # Hoon importer fixture projections match
78+tools/type-import-test # importer/checker bridge golden report matches
76tools/hoon check-spans-test # prints <<>>
79tools/hoon check-spans-test # prints <<>>
77tools/testdata/selftest # 19 checks, 0 failed
80tools/testdata/selftest # 19 checks, 0 failed
78tools/doc-blocks docs/spec # every jibb block has its case
81tools/doc-blocks docs/spec # every jibb block has its case
@@ -80,9 +83,10 @@ tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
80tools/ship test # the cases pass as -test arms on the ship
83tools/ship test # the cases pass as -test arms on the ship
81tools/testdata/ship-selftest # when tools/ship changed
84tools/testdata/ship-selftest # when tools/ship changed
82tools/ship check-commit # when the mark or the desks changed
85tools/ship check-commit # when the mark or the desks changed
86+tools/clay-fixtures # when the my-app Hoon fixtures changed
83```
87```
84
88
85−`tools/ship test` regenerates `tests/lib/jibb.hoon` and syncs the `jibb-dev` desk before it runs, so commit the regenerated file. It also runs the independent `tests/lib/jibb-import.hoon` test against the same importer fixtures and expected diagnostic projection as `tools/importer-test`. The projection is an internal tree, not the Jibb type printer.
89+`tools/ship test` regenerates `tests/lib/jibb.hoon` and syncs the `jibb-dev` desk before it runs, so commit the regenerated file. A run with `--stub`, `--lib`, or a custom `--golden` isolates its generated golden tests from the repository's other test programs; run the default command afterward to restore and test those programs. It also runs the independent `tests/lib/jibb-import.hoon` test against the same importer fixtures and expected diagnostic projection as `tools/importer-test`. The projection is an internal tree, not the Jibb type printer. `tests/lib/jibb-bridge.hoon` also runs the importer/checker bridge fixture on the ship; `tools/type-import-test` runs the same report under eval.
86
90
87## Golden cases
91## Golden cases
88
92
docs/open-questions.md+6−2
@@ -18,11 +18,11 @@ On 2026-10-30, @iko adopted gate-free `eq` arguments and map and set keys, treat
18
18
19## Questions milestone 2 raises
19## Questions milestone 2 raises
20
20
21−Found while writing [prompts/milestone-2.md](prompts/milestone-2.md) and checking it against the doc's examples. The numbering is retained so existing references stay valid. The prelude inventory in question 3 remains to be specified; the other questions are settled.
21+Found while writing [prompts/milestone-2.md](prompts/milestone-2.md) and checking it against the doc's examples. The numbering is retained so existing references stay valid. The prelude inventory in question 3 and the `like` representation in question 18 remain open; the other questions are settled.
22
22
231. **Settled: how the prelude identifies jetted functions.** On 2026-10-30, @iko said the prelude functions have working Jibb implementations, and the compiler recognizes their shapes and uses the Hoon versions so jets can fire.
231. **Settled: how the prelude identifies jetted functions.** On 2026-10-30, @iko said the prelude functions have working Jibb implementations, and the compiler recognizes their shapes and uses the Hoon versions so jets can fire.
242. **Settled: how the prelude keeps helpers private.** On 2026-10-30, @iko chose a separate internal prelude module imported by the prelude, without exposing the imported helpers.
242. **Settled: how the prelude keeps helpers private.** On 2026-10-30, @iko chose a separate internal prelude module imported by the prelude, without exposing the imported helpers.
25−3. **The prelude's inventory.** On 2026-10-30, @iko chose to include all names from the listed Hoon library sections, excluding groups the spec explicitly leaves out. For parsing sections 4j and 4l, only the explicitly listed `slav` and `slaw` are included; other parser helpers are left out. Jibb's `not` negates a loobean, and Hoon's bitwise `not` is exposed as `not.bit`. @iko also agreed to specifying the complete exported inventory in the doc, building its types and gates needed by the examples in milestone 2, and doing native implementations in milestone 3. Prelude unions such as spaces, roles and tones need names that other modules cannot shadow. The actual inventory and signatures still need to be specified.
25+3. **The prelude's inventory.** On 2026-10-30, @iko chose to include all names from the listed Hoon library sections, excluding groups the spec explicitly leaves out. All of 3g is included; its Hoon `tone` is exposed as `tone.hoon`, distinct from the styling type. On 2026-10-30, @iko also approved `%$` as a term literal and pattern, so Jibb can write the `%$` case of Hoon `coin`. For parsing sections 4j and 4l, only the explicitly listed `slav` and `slaw` are included; other parser helpers are left out. Jibb's `not` negates a loobean, and Hoon's bitwise `not` is exposed as `not.bit`. @iko also agreed to specifying the complete exported inventory in the doc, building its types and gates needed by the examples in milestone 2, and doing native implementations in milestone 3. Prelude unions such as spaces, roles and tones need names that other modules cannot shadow. The actual inventory and signatures still need to be specified.
264. **Settled: a capital in a local `++`.** On 2026-10-30, @iko said it shares the enclosing `++`'s variable of that name; a different type uses a different capital. The Grammar and Decisions record this alongside the earlier aura rules.
264. **Settled: a capital in a local `++`.** On 2026-10-30, @iko said it shares the enclosing `++`'s variable of that name; a different type uses a different capital. The Grammar and Decisions record this alongside the earlier aura rules.
275. **Settled: cells of no items or one.** On 2026-10-30, @iko said a single-item cell is the value and `[]` is an error. The theme's `dark=[tones=[…]]`, a record of one field, must still check.
275. **Settled: cells of no items or one.** On 2026-10-30, @iko said a single-item cell is the value and `[]` is an error. The theme's `dark=[tones=[…]]`, a record of one field, must still check.
286. **Settled: a change with no items.** On 2026-10-30, @iko said `m()` is an error. The parser still accepts it; the checker needs to reject it and add a golden case.
286. **Settled: a change with no items.** On 2026-10-30, @iko said `m()` is an error. The parser still accepts it; the checker needs to reject it and add a golden case.
@@ -34,6 +34,10 @@ Found while writing [prompts/milestone-2.md](prompts/milestone-2.md) and checkin
3412. **Settled: how to print a union without a name.** On 2026-10-30, @iko said to print its cases separated by spaces, as `%approve %deny`. This is print-only, not Jibb syntax.
3412. **Settled: how to print a union without a name.** On 2026-10-30, @iko said to print its cases separated by spaces, as `%approve %deny`. This is print-only, not Jibb syntax.
3513. **Settled: how to print a gate-free constraint.** On 2026-10-30, @iko agreed to print the type followed by `where A contains no gates`, as `$-([A A] ?) where A contains no gates`.
3513. **Settled: how to print a gate-free constraint.** On 2026-10-30, @iko agreed to print the type followed by `where A contains no gates`, as `$-([A A] ?) where A contains no gates`.
3614. **Settled: how the prelude implements foundational operations.** On 2026-10-30, @iko chose private low-level primitives in the internal prelude module, with the public foundational gates implemented in Jibb on top of them.
3614. **Settled: how the prelude implements foundational operations.** On 2026-10-30, @iko chose private low-level primitives in the internal prelude module, with the public foundational gates implemented in Jibb on top of them.
37+15. **Settled: unrestricted atoms and shared auras.** On 2026-10-30, @iko said `@` means any atom, independently at each occurrence, so Hoon `dime` and `pint` keep their bare-`@` fields. A specific atom such as `@ud` fits where `@` is expected; an `@` value needs a check to fit `@ud`. Shared atom types use one capital, with the atom constraint inferred from its body, as for `add` taking `[A A]` and returning `A`.
38+16. **Settled: loobeans in union disjointness.** On 2026-10-30, @iko said `?` counts as its two atoms, `%.y` and `%.n`: it is disjoint from any cell and overlaps the constants 0 and 1.
39+17. **Settled: empty cases in union disjointness.** On 2026-10-30, @iko said `!!` is disjoint from every case. A cell containing an empty position at any depth is itself empty and is also disjoint from every case.
40+18. **The two uses of Hoon `like`.** Hoon `+like` is a wet mold builder, but the gate it returns is callable and applies its supplied gate to the product. In a verified Hoon 135 example, applying `(like f)` to `[[1 2] [7 8 ~]]` produces an edge whose product is `8` when `f` is identity and `42` when `f` returns `42`; the resulting nail is the original input. Jibb molds are types, not callable values. Should the prelude expose `(like A)` as a generic mold and also expose a value gate under `like`? If so, should the value preserve Hoon's input shape and behavior, or instead map the product of an already constructed edge? @iko is reviewing these alternatives; the exact public signature is not yet decided.
37
41
38## Grammar questions never put to the doc's author
42## Grammar questions never put to the doc's author
39
43
docs/prelude-inventory.md+40−3
@@ -1,10 +1,10 @@
1# Prelude inventory: source audit
1# Prelude inventory: source audit
2
2
3−This is a working inventory, not a completed prelude interface. It lists top-level arms in the Hoon sections selected for inclusion, before checking each signature, unsupported mold, parser exclusion, collision, grouping or Jibb implementation. The first-level arms in selected Hoon doors are listed separately; each still needs classification and a Jibb signature. `3g` is included for audit because the spec names `coin` and `dime` from it; the rest needs classification.
3+This is a working inventory, not a completed prelude interface. It lists top-level arms in the Hoon sections selected for inclusion, before checking each signature, unsupported mold, parser exclusion, collision, grouping or Jibb implementation. The first-level arms in selected Hoon doors are listed separately; each still needs classification and a Jibb signature. @iko chose to include all of 3g, with its `tone` exposed as `tone.hoon`, distinct from Jibb's styling type.
4
4
5The source is the fake ship's `%base` `/sys/hoon.hoon` (Hoon version 135), read through Clay with `tools/ship scry /cx/=base=/sys/hoon/hoon --raw`. SHA-256: `ef538ced0877230f02ff86f9fb7a0abc6833bb1cf0e8675742b4d6ce478fcc92`. It differs in bytes from [upstream Hoon at the inspected commit](https://github.com/urbit/urbit/blob/5a187fededc4582a34fcd6055c67bb63e0917b94/pkg/arvo/sys/hoon.hoon); verify against the actual target ship when updating this inventory.
5The source is the fake ship's `%base` `/sys/hoon.hoon` (Hoon version 135), read through Clay with `tools/ship scry /cx/=base=/sys/hoon/hoon --raw`. SHA-256: `ef538ced0877230f02ff86f9fb7a0abc6833bb1cf0e8675742b4d6ce478fcc92`. It differs in bytes from [upstream Hoon at the inspected commit](https://github.com/urbit/urbit/blob/5a187fededc4582a34fcd6055c67bb63e0917b94/pkg/arvo/sys/hoon.hoon); verify against the actual target ship when updating this inventory.
6
6
7−Hoon `+$` arms are marked **mold** below; `++` arms can be gates, doors or mold generators, and need individual inspection. Jibb's loobean `not` and Hoon's bitwise `not.bit` are distinct. Parser helpers are excluded from the intended prelude except the specifically listed `slav` and `slaw`; the raw candidates below still need to be classified.
7+Hoon `+$` arms are marked **mold** below; `++` arms can be gates, doors or mold generators, and need individual inspection. Jibb's loobean `not` and Hoon's bitwise `not.bit` are distinct. Parser helpers outside 3g are excluded from the intended prelude except the specifically listed `slav` and `slaw`; the raw candidates below still need to be classified.
8
8
9## 1a
9## 1a
10
10
@@ -84,7 +84,44 @@ Hoon `+$` arms are marked **mold** below; `++` arms can be gates, doors or mold
84
84
85## 3g
85## 3g
86
86
87−`coin` (mold), `dime` (mold), `edge` (mold), `hair` (mold), `like`, `nail` (mold), `pint` (mold), `rule` (mold), `spot` (mold), `tone` (mold), `toon` (mold), `wonk`.
87+Hoon 135's `3g` section has exactly 12 exports: ten `+$` molds (`coin`, `dime`, `edge`, `hair`, `nail`, `pint`, `rule`, `spot`, `tone`, `toon`) and two wet `++` gates (`like`, `wonk`). @iko included the whole section, so the parser-related names below stay in the inventory. Hoon's compiler-result `tone` is exposed as `tone.hoon`; the styling type keeps `tone`.
88+
89+| Hoon name | Source shape and Jibb audit |
90+| --- | --- |
91+| `coin` | A union of `[%$ p=dime]`, `[%blob p=*]`, and `[%many p=(list coin)]`. Its `$~` default is dropped: Jibb molds have no default. @iko approved `%$` as a Jibb term literal and pattern on 2026-10-30; the parser implements it and ship verification is pending. Its `%$` case uses the `dime` mold below. |
92+| `dime` | `[p=@ta q=@]` in Hoon. The `q` field accepts any atom, as does Jibb `@` after @iko's decision in question 15. |
93+| `edge` | `[p=hair q=(unit [p=* q=nail])]`: a parsing position and either no result or a result and remaining input. |
94+| `hair` | `[p=@ud q=@ud]`: a parsing position. |
95+| `like` | A wet mold builder parameterized by a gate `a=$-(* *)`; its generated gate takes a noun, builds an `edge`-shaped result, and applies `a` to the product on success. Its Hoon wet specialization can retain a product type. Its exact Jibb interface and implementation still need to be worked out; do not substitute an unverified fixed signature. |
96+| `nail` | `[p=hair q=tape]`: parsing input. |
97+| `pint` | `[p=[p=@ q=@] q=[p=@ q=@]]` in Hoon. The four positions accept atoms independently; Jibb `@` now has the same meaning. |
98+| `rule` | A gate mold `$-(nail edge)`; Hoon constructs its sample and product from the `nail` and `edge` molds. |
99+| `spot` | `[p=path q=pint]`: a file path and range. |
100+| `tone` | Three cases: `[%0 product=*]`, `[%1 block=*]`, and `[%2 trace=(list [@ta *])]`. Expose this Hoon mold as `tone.hoon`, distinct from Jibb's styling `tone`. How the prelude presents that qualified mold must agree with its eventual group implementation. |
101+| `toon` | Three cases: `[%0 p=*]`, `[%1 p=*]`, and `[%2 p=(list tank)]`. |
102+| `wonk` | A wet gate that extracts `p` from the successful `q` of an `edge` and crashes on an absent result. `$-(edge *)` describes its type-erased input and result, but an exact account of the Hoon gate's wet specialization remains open. |
103+
104+The following shapes can be written as Jibb declarations once their referenced prelude molds are present:
105+
106+```text
107++$ dime [p=@ta q=@]
108++$ hair [p=@ud q=@ud]
109++$ nail [p=hair q=tape]
110++$ edge [p=hair q=(unit [p=* q=nail])]
111++$ pint [p=[p=@ q=@] q=[p=@ q=@]]
112++$ rule $-(nail edge)
113++$ spot [p=path q=pint]
114++$ coin
115+ [%$ p=dime]
116+ [%blob p=*]
117+ [%many p=(list coin)]
118++$ toon
119+ [%0 p=*]
120+ [%1 p=*]
121+ [%2 p=(list tank)]
122+```
123+
124+The compiler-result `tone.hoon` has the three cases listed above; the qualified name is a prelude group member, not a `+$` identifier containing a dot. Question 15 in [open-questions.md](open-questions.md) records @iko's decision that `@` is an unrestricted atom, resolving the `dime` and `pint` mismatch. The interfaces of the wet gates still need resolution before the inventory's 3g signatures can be considered complete.
88
125
89## 4a
126## 4a
90
127
docs/prompts/milestone-2.md+5−5
@@ -59,10 +59,10 @@ And from the plan's Risks:
59The rules are scattered across the tabs. This is a map of them, not a replacement: read each in place, and where this summary and the doc differ, the doc is right.
59The rules are scattered across the tabs. This is a map of them, not a replacement: read each in place, and where this summary and the doc differ, the doc is right.
60
60
61**Types and inference** (Grammar: Molds, Modules, Runes, Expressions; Decisions: Inference, Type variables, Sample names, Inline gates)
61**Types and inference** (Grammar: Molds, Modules, Runes, Expressions; Decisions: Inference, Type variables, Sample names, Inline gates)
62−- Hindley–Milner with aura variables: "every expression has a principal type, and there is no subtyping".
62+- Hindley–Milner with aura variables: "every expression has a principal type, and there is no general subtyping". A specific atom fits `@`, and a specific noun fits `*`, each only in that direction.
63−- "`@` is an atom whose aura isn't known yet, fixed by what it meets": `add` takes `[@ @]` and returns `@`, all one aura. "Different auras never unify." "A bare `@` in a `+$` is one aura variable per module, `@ud` if unfixed." Elsewhere, "as in a gate's sample or a cast, each bare `@` is its own aura variable, generalized per `++` if nothing fixes it; atoms that must share an aura take one capital".
63+- `@` means any atom, independently at each occurrence. A specific atom such as `@ud` fits where `@` is expected; an `@` value needs a check to fit `@ud`. Different specific auras never unify. `add` takes `[A A]` and returns `A`, with an atom constraint inferred for the shared type variable.
64- Faces are part of record types: `[a=@ b=@]` and `[x=@ y=@]` don't unify. An unnamed position can unify with a faced one and take its face, so `[0 0]` fits `[x=@ud y=@ud]`. A single-item cell `[a]` is `a`; an empty `[]` is an error.
64- Faces are part of record types: `[a=@ b=@]` and `[x=@ y=@]` don't unify. An unnamed position can unify with a faced one and take its face, so `[0 0]` fits `[x=@ud y=@ud]`. A single-item cell `[a]` is `a`; an empty `[]` is an error.
65−- Type variables are capitals, "generalized per `++`". A capital in a local `++` shares the enclosing `++`'s variable of that name; a different type takes a different capital. "A type variable that meets an atom becomes an aura variable", so `++ clamp |= [lo=A hi=A n=A]`, calling `gth` and `max`, works on any one aura; "It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error." Names "may refer to each other in any order", so infer `++` definitions in dependency order, a group of mutually recursive ones together.
65+- Type variables are capitals, "generalized per `++`". A capital in a local `++` shares the enclosing `++`'s variable of that name; a different type takes a different capital. "A type variable used where an atom is required gains an atom constraint", so `++ clamp |= [lo=A hi=A n=A]`, calling `gth` and `max`, works on any one aura; "It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error." Names "may refer to each other in any order", so infer `++` definitions in dependency order, a group of mutually recursive ones together.
66- The checker infers a gate-free constraint for `eq` arguments and map and set keys and retains it when a type variable is generalized. The requirement applies recursively to nested values; union-case matching treats gates as opaque. Print a constrained type as `$-([A A] ?) where A contains no gates`.
66- The checker infers a gate-free constraint for `eq` arguments and map and set keys and retains it when a type variable is generalized. The requirement applies recursively to nested values; union-case matching treats gates as opaque. Print a constrained type as `$-([A A] ?) where A contains no gates`.
67- Gates may call themselves and their siblings; a non-gate value that depends on itself, even through a gate, is an error. Molds may be recursive, and "recursive molds go by name and module".
67- Gates may call themselves and their siblings; a non-gate value that depends on itself, even through a gate, is an error. Molds may be recursive, and "recursive molds go by name and module".
68- A sample's mold may be left out: every bare name in a sample binds, at any depth, as in `|=(p title.p)` "when the call fixes the type", `|= [a=@ b]` and `|=(m ~)`.
68- A sample's mold may be left out: every bare name in a sample binds, at any depth, as in `|=(p title.p)` "when the call fixes the type", `|= [a=@ b]` and `|=(m ~)`.
@@ -81,7 +81,7 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
81
81
82**Unions** (Grammar: Molds, Runes; Decisions: Unions)
82**Unions** (Grammar: Molds, Runes; Decisions: Unions)
83- Every union written in Jibb is a named `+$` with its cases below. One case is just that mold; a mold that isn't a union counts as a union of one case for tags and `|=%tag`. Imported types can contain unnamed unions.
83- Every union written in Jibb is a named `+$` with its cases below. One case is just that mold; a mold that isn't a union counts as a union of one case for tags and `|=%tag`. Imported types can contain unnamed unions.
84−- Cases "must differ as nouns: at some position of their right-nested cells, one is an atom and the other a cell, or both are different constants. `*`, type variables and molds that can be either, such as `(list A)` or `?`, overlap both. A union whose cases don't all differ is rejected."
84+- Cases "must differ as nouns: inhabited cases must differ at some position of their right-nested cells, where one is an atom and the other a cell, or both are different constants. `*`, type variables and molds that can be either, such as `(list A)`, can overlap atoms and cells. `?` counts as the two atoms `%.y` and `%.n`: it is disjoint from cells and overlaps the constants 0 and 1. The empty mold `!!` is disjoint from every case; a cell with an empty position at any depth is itself empty and is also disjoint from every case. A union whose cases don't all differ is rejected."
85
85
86**Patterns and `?-`** (Grammar: Patterns; Decisions: Branching, Binding patterns)
86**Patterns and `?-`** (Grammar: Patterns; Decisions: Branching, Binding patterns)
87- Exhaustive: "Every case needs an arm or a catch-all, `*` or a bare name." Leaving one out is an error naming it.
87- Exhaustive: "Every case needs an arm or a catch-all, `*` or a bare name." Leaving one out is an error naming it.
@@ -114,7 +114,7 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
114**The prelude** (overview: Prelude, Layout and styling, Links and URLs, Effects)
114**The prelude** (overview: Prelude, Layout and styling, Links and URLs, Effects)
115- Hoon's standard library regrouped, "written in Jibb and vendored as `/lib/jibb/prelude`", plus `eq`, `not`, `page`, `program`, `store`, `pure`, `island`, the layout elements and molds, `attr`, `theme`, and `cmd` and `sub` as the overview's Effects block writes them.
115- Hoon's standard library regrouped, "written in Jibb and vendored as `/lib/jibb/prelude`", plus `eq`, `not`, `page`, `program`, `store`, `pure`, `island`, the layout elements and molds, `attr`, `theme`, and `cmd` and `sub` as the overview's Effects block writes them.
116- Signatures change where the Prelude table says: maps and sets are plain gates over Hoon's trees, as `(get.by m k)`; folds take a start, as `(roll xs init f)`, `rep.by` and `rep.in`; ordered maps go through lull's `on`, as `(get.on lte m k)`.
116- Signatures change where the Prelude table says: maps and sets are plain gates over Hoon's trees, as `(get.by m k)`; folds take a start, as `(roll xs init f)`, `rep.by` and `rep.in`; ordered maps go through lull's `on`, as `(get.on lte m k)`.
117−- Left out: signed and float gates, parser helpers other than the explicitly listed `slav` and `slaw`, and the table's "The rest" (1b, 2p, 3d, 3f, 4c, 4n, 4o, 5a–5f); "`jam`, `cue` and `fein` run inside the runtime".
117+- Left out: signed and float gates, parser helpers outside 3g other than the explicitly listed `slav` and `slaw`, and the table's "The rest" (1b, 2p, 3d, 3f, 4c, 4n, 4o, 5a–5f); "`jam`, `cue` and `fein` run inside the runtime".
118- Write the prelude in Jibb, enough to give every name its type. Foundational gates use private low-level primitives from the internal prelude module. Jetted functions have working Jibb implementations; the compiler recognizes their shapes and uses the Hoon versions so jets can fire. They may take gates as arguments; the Nock backend comes in milestone 3.
118- Write the prelude in Jibb, enough to give every name its type. Foundational gates use private low-level primitives from the internal prelude module. Jetted functions have working Jibb implementations; the compiler recognizes their shapes and uses the Hoon versions so jets can fire. They may take gates as arguments; the Nock backend comes in milestone 3.
119- Element signatures are in the Layout and styling table. Paths and unchecked cords have separate declarations, with `link-unsafe`, `image-unsafe` and `go-unsafe` for the unchecked forms. Both navigation declarations produce `[%go url=@t]`; `go` converts its application path to a cord including the app's base path. "The same attribute twice in a literal list is an error."
119- Element signatures are in the Layout and styling table. Paths and unchecked cords have separate declarations, with `link-unsafe`, `image-unsafe` and `go-unsafe` for the unchecked forms. Both navigation declarations produce `[%go url=@t]`; `go` converts its application path to a cord including the app's base path. "The same attribute twice in a literal list is an error."
120
120
docs/spec/decisions.md+6−6
@@ -9,7 +9,7 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
9| Decision | Choice | Status |
9| Decision | Choice | Status |
10| --- | --- | --- |
10| --- | --- | --- |
11| Syntax | Hoon's runes as keywords, and its literals; wide forms only for `\|=` and `$-`; changes take one or more record items, as `m(draft="x")`, so `m()` is an error; `.` reads fields, imports and prelude groups; no name may shadow another | Decided 2026-10-30 |
11| Syntax | Hoon's runes as keywords, and its literals; wide forms only for `\|=` and `$-`; changes take one or more record items, as `m(draft="x")`, so `m()` is an error; `.` reads fields, imports and prelude groups; no name may shadow another | Decided 2026-10-30 |
12−| Literals | Exactly Hoon's: `1000` is an error, `~2026.2.31` is `~2026.3.3`, and years BC and sub-second groups are dates; `print-date`'s minute form is not a literal | Decided 2026-10-30 |
12+| Literals | Exactly Hoon's, including `%$` as a term literal and pattern: `1000` is an error, `~2026.2.31` is `~2026.3.3`, and years BC and sub-second groups are dates; `print-date`'s minute form is not a literal | Decided 2026-10-30 |
13| Cells | A single-item cell `[a]` is `a`; an empty `[]` is an error, in expressions and molds | Decided 2026-10-30 |
13| Cells | A single-item cell `[a]` is `a`; an empty `[]` is an error, in expressions and molds | Decided 2026-10-30 |
14| Numeric terms | `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors | Decided 2026-10-30 |
14| Numeric terms | `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors | Decided 2026-10-30 |
15| Strings | Hoon's escapes: `\\`, `\"`, `\{`, and `\` with two lowercase hex digits; a string and each `{…}` close on the line they open; `::` in a string is text | Decided 2026-10-30 |
15| Strings | Hoon's escapes: `\\`, `\"`, `\{`, and `\` with two lowercase hex digits; a string and each `{…}` close on the line they open; `::` in a string is text | Decided 2026-10-30 |
@@ -24,13 +24,13 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
24| Several open brackets | The deeper lines go to the last bracket, or the last rune's body, left open on a line, and the brackets before it close with it: `(column ~ ~[` needs no `)` | Decided 2026-10-30 |
24| Several open brackets | The deeper lines go to the last bracket, or the last rune's body, left open on a line, and the brackets before it close with it: `(column ~ ~[` needs no `)` | Decided 2026-10-30 |
25| Jibb code blocks | Labelled `jibb` in this doc; each is a golden test | Decided 2026-10-30 |
25| Jibb code blocks | Labelled `jibb` in this doc; each is a golden test | Decided 2026-10-30 |
26| Definitions | `++` for values, `+$` for molds; no `=/` | Decided |
26| Definitions | `++` for values, `+$` for molds; no `=/` | Decided |
27−| Unions | No `$?`: a `+$` with its cases on the lines below is a union, so every union written in Jibb has a name; one case is just that mold; a mold that isn't a union counts as a union of one case for tags and `\|=%tag`; a generic's `\|$` comes right after the `+$`'s name; tags anywhere; cases differ as nouns; a tag literal or `~` waits for its union, and an unresolved one is an error | Decided 2026-10-30 |
27+| Unions | No `$?`: a `+$` with its cases on the lines below is a union, so every union written in Jibb has a name; one case is just that mold; a mold that isn't a union counts as a union of one case for tags and `\|=%tag`; a generic's `\|$` comes right after the `+$`'s name; tags anywhere; cases differ as nouns, with `?` treated as the two atoms `%.y` and `%.n`, disjoint from cells and overlapping constants 0 and 1, and `!!` or any cell with an empty position disjoint from every case; a tag literal or `~` waits for its union, and an unresolved one is an error | Decided 2026-10-30 |
28| Printed unnamed unions | Print the cases separated by spaces, as `%approve %deny`; this is print-only, not Jibb syntax | Decided 2026-10-30 |
28| Printed unnamed unions | Print the cases separated by spaces, as `%approve %deny`; this is print-only, not Jibb syntax | Decided 2026-10-30 |
29| Printed gate-free constraints | Print the type followed by `where A contains no gates`, as `$-([A A] ?) where A contains no gates` | Decided 2026-10-30 |
29| Printed gate-free constraints | Print the type followed by `where A contains no gates`, as `$-([A A] ?) where A contains no gates` | Decided 2026-10-30 |
30| Branching | `?-` only, loobeans included; exhaustive, with explicit catch-alls; covered arms are errors; failures say `!!` | Decided 2026-10-29 |
30| Branching | `?-` only, loobeans included; exhaustive, with explicit catch-alls; covered arms are errors; failures say `!!` | Decided 2026-10-29 |
31| Equality and negation | The gates `eq` and `not`, with Hoon's bitwise `not` exposed as `not.bit`; `eq`'s arguments and map and set keys contain no gates, even nested; the checker infers and generalizes that constraint; union matching never inspects a gate to distinguish cases | Decided 2026-10-30 |
31| Equality and negation | The gates `eq` and `not`, with Hoon's bitwise `not` exposed as `not.bit`; `eq`'s arguments and map and set keys contain no gates, even nested; the checker infers and generalizes that constraint; union matching never inspects a gate to distinguish cases | Decided 2026-10-30 |
32| Special rules | No built-ins; type-directed rules are welcome, each listed in the Grammar tab | Decided 2026-10-29 |
32| Special rules | No built-ins; type-directed rules are welcome, each listed in the Grammar tab | Decided 2026-10-29 |
33−| Inference | Hindley–Milner with aura variables; a bare `@` in a `+$` is one per module, `@ud` if unfixed, and elsewhere each is its own, generalized per `++`; a number takes `@ud` only where its `++` isn't generic over its aura; different auras never unify; faces are part of record types, and an unnamed position can take a face but two different faces don't unify; principal types | Decided 2026-10-30 |
33+| Inference | Hindley–Milner with aura variables; `@` is any atom, a specific atom fits `@` but the reverse needs a check, and repeated atom-constrained capitals give the same type; a number takes `@ud` only where its `++` isn't generic over its aura; different specific auras never unify; faces are part of record types, and an unnamed position can take a face but two different faces don't unify; principal types | Decided 2026-10-30 |
34| Effects | The library unions `cmd` and `sub`; pokes and requests are opaque, from derived gates and `pure`; islands read agents only by watching; replies get full state, and diffs take a fold; timers carry the time; `%who` gives the owner's `@p`; nacks reach replies as text | Decided 2026-10-29 |
34| Effects | The library unions `cmd` and `sub`; pokes and requests are opaque, from derived gates and `pure`; islands read agents only by watching; replies get full state, and diffs take a fold; timers carry the time; `%who` gives the owner's `@p`; nacks reach replies as text | Decided 2026-10-29 |
35| Agent APIs | `/ui/api/<agent>.jibb` with `+$ poke` and `+$ paths`, over the agent's mark types; a case is a name, a path and a type, with `(facts full diff …)` for diffs, told apart by mark; an optional scry path, for pages; an island watching such a request has a type error; typed segments by aura | Decided 2026-10-30 |
35| Agent APIs | `/ui/api/<agent>.jibb` with `+$ poke` and `+$ paths`, over the agent's mark types; a case is a name, a path and a type, with `(facts full diff …)` for diffs, told apart by mark; an optional scry path, for pages; an island watching such a request has a type error; typed segments by aura | Decided 2026-10-30 |
36| Mark names | Any name: `/%` names types after marks, and constructors poke with their type's mark; no alias marks | Decided 2026-10-26 |
36| Mark names | Any name: `/%` names types after marks, and constructors poke with their type's mark; no alias marks | Decided 2026-10-26 |
@@ -42,7 +42,7 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
42| Inline gates | Hoon's wide form; the mold may be inferred; a bare sample name binds; `\|=%got` is a case's constructor, typed by the gate expected; a bare tag is always a value | Decided 2026-10-29 |
42| Inline gates | Hoon's wide form; the mold may be inferred; a bare sample name binds; `\|=%got` is a case's constructor, typed by the gate expected; a bare tag is always a value | Decided 2026-10-29 |
43| Empty mold | `!!`, with no values; the expression has any type; pages are `(element !!)`, which keeps islands out of islands | Decided 2026-10-29 |
43| Empty mold | `!!`, with no values; the expression has any type; pages are `(element !!)`, which keeps islands out of islands | Decided 2026-10-29 |
44| Noun mold | `*` is the noun type, not a type variable; use a capital for a generic type; a value of a more specific noun type can be used where `*` is expected | Decided 2026-10-30 |
44| Noun mold | `*` is the noun type, not a type variable; use a capital for a generic type; a value of a more specific noun type can be used where `*` is expected | Decided 2026-10-30 |
45−| Type variables | Capitals, generalized per `++`; a capital in a local `++` shares the enclosing `++`'s variable of that name, and a different type takes a different capital; one that meets an atom becomes an aura variable, and nothing more specific | Decided 2026-10-30 |
45+| Type variables | Capitals, generalized per `++`; a capital in a local `++` shares the enclosing `++`'s variable of that name, and a different type takes a different capital; one used where an atom is required gains an inferred atom constraint, and cannot be fixed to a more specific type in its body | Decided 2026-10-30 |
46| Loobean mold | `?`, switched with `?-` | Decided 2026-10-26 |
46| Loobean mold | `?`, switched with `?-` | Decided 2026-10-26 |
47| Defaults | None | Decided |
47| Defaults | None | Decided |
48| Modules | Records, not cores | Decided |
48| Modules | Records, not cores | Decided |
@@ -50,7 +50,7 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
50| Type identity | Recursive molds by name and module | Decided 2026-10-29 |
50| Type identity | Recursive molds by name and module | Decided 2026-10-29 |
51| Binding patterns | In `?-` arms; the last position binds the rest | Decided 2026-10-29 |
51| Binding patterns | In `?-` arms; the last position binds the rest | Decided 2026-10-29 |
52| Text | Strings are written only as `"…"` and are always cords; tapes come from `trip`; `{…}` prints by aura, a bare `@` as `@ud`, and an atom whose aura its `++` is generic over is an error; `print-date` prints Urbit-style to the minute in the theme's zone, from jibb-dev's zone table; numbers keep Hoon's form | Decided 2026-10-30 |
52| Text | Strings are written only as `"…"` and are always cords; tapes come from `trip`; `{…}` prints by aura, a bare `@` as `@ud`, and an atom whose aura its `++` is generic over is an error; `print-date` prints Urbit-style to the minute in the theme's zone, from jibb-dev's zone table; numbers keep Hoon's form | Decided 2026-10-30 |
53−| Auras | Soft, through aura variables | Decided 2026-10-29 |
53+| Auras | Specific auras stay distinct; `@` is any atom, and shared atom-constrained type variables preserve the same aura | Decided 2026-10-30 |
54| Crashes | As in Hoon; an island keeps its model and shows the standard notice; a failing page, or one rendering a control outside an island, gets Jibb's error page; no render limit, so an endless render stalls the ship | Decided 2026-10-29 |
54| Crashes | As in Hoon; an island keeps its model and shows the standard notice; a failing page, or one rendering a control outside an island, gets Jibb's error page; no render limit, so an endless render stalls the ship | Decided 2026-10-29 |
55| Refinement types | None | Decided |
55| Refinement types | None | Decided |
56| Imports | `/-`, `/%` (a mark's type, with no face) and `/=`; no `/+`; cycles are errors | Decided 2026-10-29 |
56| Imports | `/-`, `/%` (a mark's type, with no face) and `/=`; no `/+`; cycles are errors | Decided 2026-10-29 |
@@ -76,7 +76,7 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
76| Dark mode | Hand-written dark tones under `dark`, used when the reader prefers dark | Decided 2026-10-27 |
76| Dark mode | Hand-written dark tones under `dark`, used when the reader prefers dark | Decided 2026-10-27 |
77| Links | All text escaped; in-app links are application paths, as `%/blog/(slug)`, with no query or fragment, checked at compile time against routes and static files; paths and unchecked `https`, `mailto` and `tel` URLs and root-relative cords such as `"/apps/groups"` have separate declarations; `link-unsafe`, `image-unsafe` and `go-unsafe` are the unchecked forms; both navigation declarations produce `[%go url=@t]`, with `go` converting the path to a cord including the app's base path; other cords render as text; a CSP on every page | Decided 2026-10-30 |
77| Links | All text escaped; in-app links are application paths, as `%/blog/(slug)`, with no query or fragment, checked at compile time against routes and static files; paths and unchecked `https`, `mailto` and `tel` URLs and root-relative cords such as `"/apps/groups"` have separate declarations; `link-unsafe`, `image-unsafe` and `go-unsafe` are the unchecked forms; both navigation declarations produce `[%go url=@t]`, with `go` converting the path to a cord including the app's base path; other cords render as text; a CSP on every page | Decided 2026-10-30 |
78| Data layer | Hoon's nouns: units, treaps, loobeans | Decided |
78| Data layer | Hoon's nouns: units, treaps, loobeans | Decided |
79−| Prelude | Hoon's standard library regrouped: all names from the listed sections except explicitly excluded groups, including arithmetic over aura variables, units, lists, maps, sets, queues, ordered maps, function helpers, text, atom printing, a zoned date printer, time and data molds; folds take a start; jetted functions have working Jibb implementations, whose shapes the compiler recognizes to use the Hoon versions, and may take gates; private helpers and low-level primitives live in a separate internal module imported without exposing them, with public foundational gates implemented in Jibb on those primitives; no signed, float or parser gates except `slav` and `slaw`, and signed or float auras are errors | Decided 2026-10-30 |
79+| Prelude | Hoon's standard library regrouped: all names from the listed sections except explicitly excluded groups, including all of 3g, with Hoon's `tone` exposed as `tone.hoon`; arithmetic over aura variables, units, lists, maps, sets, queues, ordered maps, function helpers, text, atom printing, a zoned date printer, time and data molds; folds take a start; jetted functions have working Jibb implementations, whose shapes the compiler recognizes to use the Hoon versions, and may take gates; private helpers and low-level primitives live in a separate internal module imported without exposing them, with public foundational gates implemented in Jibb on those primitives; no signed or float gates, or parser gates outside 3g except `slav` and `slaw`; signed or float auras are errors | Decided 2026-10-30 |
80| Wire format | Noun channels; Jibb's own noun codec in the browser | Decided 2026-10-29 |
80| Wire format | Noun channels; Jibb's own noun codec in the browser | Decided 2026-10-29 |
81| Hosting | One thin host agent on `%jibb` binds, caches and serves every Jibb desk; each desk vendors jibb-dev, names its base path in docket's `site+`, and builds and renders with its own copy through fixed entry points; install `%jibb` first; app agents stay plain Hoon; pokes only from the ship | Decided 2026-10-29 |
81| Hosting | One thin host agent on `%jibb` binds, caches and serves every Jibb desk; each desk vendors jibb-dev, names its base path in docket's `site+`, and builds and renders with its own copy through fixed entry points; install `%jibb` first; app agents stay plain Hoon; pokes only from the ship | Decided 2026-10-29 |
82| Private pages | Served by the host per request and never cached; non-owners go to the login page | Decided 2026-10-29 |
82| Private pages | Served by the host per request and never cached; non-owners go to the login page | Decided 2026-10-29 |
docs/spec/grammar.md+7−7
@@ -26,7 +26,7 @@ The syntax the compiler accepts.
26| Duration | `~s30`, `~h1.m30` | `@dr` |
26| Duration | `~s30`, `~h1.m30` | `@dr` |
27| Knot | `~.my-post` | `@ta` |
27| Knot | `~.my-post` | `@ta` |
28| String | `"milk"`, `"Since {day}"` | `@t`, a cord; `{…}` prints by aura; tapes come from `trip`; there is no `'…'` form |
28| String | `"milk"`, `"Since {day}"` | `@t`, a cord; `{…}` prints by aura; tapes come from `trip`; there is no `'…'` form |
29−| Term | `%add`, `%1.000` | A union's case, or that constant atom where an atom is expected; a numeric term is `%` and a decimal as Hoon writes it, so `%1.000`, never `%1000` |
29+| Term | `%add`, `%1.000`, `%$` | A union's case, or that constant atom where an atom is expected; a numeric term is `%` and a decimal as Hoon writes it, so `%1.000`, never `%1000` |
30| Loobean | `%.y`, `%.n` | `?` |
30| Loobean | `%.y`, `%.n` | `?` |
31| Null | `~` | A constant: the `~` case of any union with one, such as `(unit A)`, `(list A)`, `(map K V)` or `(set A)` |
31| Null | `~` | A constant: the `~` case of any union with one, such as `(unit A)`, `(list A)`, `(map K V)` or `(set A)` |
32| Unit | `` `x `` | `(unit A)` |
32| Unit | `` `x `` | `(unit A)` |
@@ -118,14 +118,14 @@ Every other name is free.
118
118
119## Molds
119## Molds
120
120
121−A mold is only a type: never called on a noun, and with no default. Types are inferred, Hindley–Milner with aura variables: every expression has a principal type, and there is no subtyping.
121+A mold is only a type: never called on a noun, and with no default. Types are inferred, Hindley–Milner with aura variables: every expression has a principal type, and there is no general subtyping. Two one-way widenings are allowed: a value of a specific atom type fits `@`, and a value of a specific noun type fits `*`; neither rule permits the reverse.
122
122
123−- **Atoms**: `@` and auras such as `@ud`, `@t`, `@p`, `@da`; `?` is a loobean. `@` is an atom whose aura isn't known yet, fixed by what it meets: `add` takes `[@ @]` and returns `@`, all one aura, so `(add n 1)` with `n=@ud` is a `@ud`. Different auras never unify. A bare `@` in a `+$` is one aura variable per module, `@ud` if unfixed. Elsewhere, as in a gate's sample or a cast, each bare `@` is its own aura variable, generalized per `++` if nothing fixes it; atoms that must share an aura take one capital, as `[lo=A hi=A]`.
123+- **Atoms**: `@` is any atom, regardless of aura; auras such as `@ud`, `@t`, `@p` and `@da` are specific atom types. An `@ud` value fits where `@` is expected, but an `@` value needs a check to fit `@ud`. Different specific auras never unify. Each bare `@` independently accepts any atom: it is not an aura variable. Atoms that must share a type take one capital, as `[lo=A hi=A]`, with the atom constraint inferred from the body. `add` takes `[A A]` and returns `A`, with `A` constrained to atoms, so `(add n 1)` with `n=@ud` is a `@ud`. `?` is a loobean.
124- **Constants**: `%add`, `~` and the loobeans have one value each.
124- **Constants**: `%add`, `~` and the loobeans have one value each.
125- **Records and tuples**: `[text=@t done=?]`, `[@t ?]`. An empty `[]` is an error. Faces are part of the type, so `[a=@ b=@]` and `[x=@ y=@]` don't unify. An unnamed position can unify with a faced position and take its face, so `[0 0]` fits `[x=@ud y=@ud]`; two different faces don't unify. A record too long for one line can leave its `[` open, with one field per deeper line, as an expression's bracket does.
125- **Records and tuples**: `[text=@t done=?]`, `[@t ?]`. An empty `[]` is an error. Faces are part of the type, so `[a=@ b=@]` and `[x=@ y=@]` don't unify. An unnamed position can unify with a faced position and take its face, so `[0 0]` fits `[x=@ud y=@ud]`; two different faces don't unify. A record too long for one line can leave its `[` open, with one field per deeper line, as an expression's bracket does.
126−- **Unions**: a `+$` with several cases below it. Every union written in Jibb has a name, so one used in a field, a sample, a cast, a gate's mold or an argument gets its own `+$`; only imports bring in unions without one. Tags take their union from context, as Tag resolution describes. Cases must differ as nouns: at some position of their right-nested cells, one is an atom and the other a cell, or both are different constants. `*`, type variables and molds that can be either, such as `(list A)` or `?`, overlap both. A union whose cases don't all differ is rejected.
126+- **Unions**: a `+$` with several cases below it. Every union written in Jibb has a name, so one used in a field, a sample, a cast, a gate's mold or an argument gets its own `+$`; only imports bring in unions without one. Tags take their union from context, as Tag resolution describes. Cases must differ as nouns: inhabited cases must differ at some position of their right-nested cells, where one is an atom and the other a cell, or both are different constants. `*`, type variables and molds that can be either, such as `(list A)`, can overlap atoms and cells. `?` counts as the two atoms `%.y` and `%.n`: it is disjoint from cells and overlaps the constants 0 and 1. The empty mold `!!` is disjoint from every case; a cell with an empty position at any depth is itself empty and is also disjoint from every case. A union whose cases don't all differ is rejected.
127- **Containers**: `(list A)`, `(unit A)`, `(set A)`, `(map K V)`, `(mop K V)`, `(qeu A)`, `(jar K V)`, `(jug K V)`.
127- **Containers**: `(list A)`, `(unit A)`, `(set A)`, `(map K V)`, `(mop K V)`, `(qeu A)`, `(jar K V)`, `(jug K V)`.
128−- **Gates**: `$-(A B)`. Type variables are capitals, generalized per `++`. A capital in a local `++` shares the enclosing `++`'s variable of the same name; use another capital for a different type. A type variable that meets an atom becomes an aura variable, so `++ clamp |= [lo=A hi=A n=A]`, whose body calls `gth` and `max`, works on any one aura. It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error.
128+- **Gates**: `$-(A B)`. Type variables are capitals, generalized per `++`. A capital in a local `++` shares the enclosing `++`'s variable of the same name; use another capital for a different type. A type variable used where an atom is required gains an atom constraint, so `++ clamp |= [lo=A hi=A n=A]`, whose body calls `gth` and `max`, works on any one aura. It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error.
129- **Paths**: `/todos` is constant, `/` empty, and `/todo/[id=@ud]` typed by aura. `%/blog/(slug)` is an `qath`, checked against routes and static files.
129- **Paths**: `/todos` is constant, `/` empty, and `/todo/[id=@ud]` typed by aura. `%/blog/(slug)` is an `qath`, checked against routes and static files.
130- **Generic molds**: `+$ result |$ [V E]` with cases below; `|$` goes only right after a `+$`'s name.
130- **Generic molds**: `+$ result |$ [V E]` with cases below; `|$` goes only right after a `+$`'s name.
131- **Noun**: `*`, not a type variable; use a capital for a generic type. A value already known to have a more specific noun type, such as `@ud`, can be used where `*` is expected. **Empty**: `!!`.
131- **Noun**: `*`, not a type variable; use a capital for a generic type. A value already known to have a more specific noun type, such as `@ud`, can be used where `*` is expected. **Empty**: `!!`.
@@ -165,7 +165,7 @@ Number and cell literals resolve like tags: each waits for its context and takes
165| Number `5` | Any aura | `@ud` |
165| Number `5` | Any aura | `@ud` |
166| Cell `[x xs]` | A tuple, a record, a cons | A tuple |
166| Cell `[x xs]` | A tuple, a record, a cons | A tuple |
167
167
168−- In `{…}`, an atom prints by its aura: `@ud` as `1.000`, `@da` as a UTC date with sub-seconds, `@p` as a ship, and a bare `@` as `@ud`. `@t`, `@ta`, `@tas` and tapes splice as text; any other cell is an error asking for a printer. Printers are picked when compiling, so an atom whose aura its `++` is generic over, as `n` in `|= n=A` or in a `|= n=@` that nothing fixes, is an error asking for an aura, here and in a `(…)` segment of an application path. For readers, `print-date` prints in the theme's zone, Urbit-style, to the minute, as `~2026.10.29..14.30`; numbers keep Hoon's form.
168+- In `{…}`, an atom prints by its aura: `@ud` as `1.000`, `@da` as a UTC date with sub-seconds, `@p` as a ship, and a bare `@` as `@ud`. `@t`, `@ta`, `@tas` and tapes splice as text; any other cell is an error asking for a printer. Printers are picked when compiling, so an atom whose aura its `++` is generic over, as `n` in `|= n=A` when `A` is constrained to atoms, is an error asking for an aura, here and in a `(…)` segment of an application path. For readers, `print-date` prints in the theme's zone, Urbit-style, to the minute, as `~2026.10.29..14.30`; numbers keep Hoon's form.
169- String literals are always cords, so an element needs `text`, as `(text "{n} items")`.
169- String literals are always cords, so an element needs `text`, as `(text "{n} items")`.
170- Where a list is expected, `[x xs]` is `x` in front of `xs`.
170- Where a list is expected, `[x xs]` is `x` in front of `xs`.
171- A typed segment prints and parses by aura, whether `[id=@ud]` in an agent's paths, a `_` route parameter typed by `load`'s sample, or a `(…)` segment of an application path; `@ta` and `@tas` are raw text.
171- A typed segment prints and parses by aura, whether `[id=@ud]` in an agent's paths, a `_` route parameter typed by `load`'s sample, or a `(…)` segment of an application path; `@ta` and `@tas` are raw text.
@@ -278,7 +278,7 @@ literal = number | string | ship | date | duration | knotlit
278 | term | loobean | "~" ;
278 | term | loobean | "~" ;
279number = decimal | "0x" hex | "0v" base32 ;
279number = decimal | "0x" hex | "0v" base32 ;
280pathlit = "/" knot { "/" knot } ;
280pathlit = "/" knot { "/" knot } ;
281−term = "%" name | "%" decimal | "%&" | "%|" ;
281+term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;
282loobean = "%.y" | "%.n" ;
282loobean = "%.y" | "%.n" ;
283aura = "@" { lower } [ upper ] ;
283aura = "@" { lower } [ upper ] ;
284typevar = upper ;
284typevar = upper ;
docs/spec/overview.md+2−2
@@ -82,7 +82,7 @@ Hoon's standard library regrouped, written in Jibb and vendored as `/lib/jibb/pr
82
82
83| Group | Hoon | Jibb |
83| Group | Hoon | Jibb |
84| --- | --- | --- |
84| --- | --- | --- |
85−| Arithmetic | [1a](https://docs.urbit.org/hoon/stdlib/1a), [2g](https://docs.urbit.org/hoon/stdlib/2g) | Natives over aura variables: `add`, `sub`, `div`, `mod`, `gth`, `max`, `pow` |
85+| Arithmetic | [1a](https://docs.urbit.org/hoon/stdlib/1a), [2g](https://docs.urbit.org/hoon/stdlib/2g) | Jibb gates over shared atom-constrained type variables, using private low-level primitives: `add`, `sub`, `div`, `mod`, `gth`, `max`, `pow` |
86| Units | [2a](https://docs.urbit.org/hoon/stdlib/2a) | `fall`, `need`, `bind`, `biff` |
86| Units | [2a](https://docs.urbit.org/hoon/stdlib/2a) | `fall`, `need`, `bind`, `biff` |
87| Lists | [2b](https://docs.urbit.org/hoon/stdlib/2b) | `turn`, `weld`, `snag`, `lent`, `sort`, `skim`; `(roll xs init f)` takes a start |
87| Lists | [2b](https://docs.urbit.org/hoon/stdlib/2b) | `turn`, `weld`, `snag`, `lent`, `sort`, `skim`; `(roll xs init f)` takes a start |
88| Maps, sets, queues | [2h](https://docs.urbit.org/hoon/stdlib/2h)–[2m](https://docs.urbit.org/hoon/stdlib/2m), [2o](https://docs.urbit.org/hoon/stdlib/2o) | Plain gates over Hoon's trees, such as `(get.by m k)`; `rep.by` and `rep.in` take a start; ordered maps through lull's `on`, as `(get.on lte m k)` |
88| Maps, sets, queues | [2h](https://docs.urbit.org/hoon/stdlib/2h)–[2m](https://docs.urbit.org/hoon/stdlib/2m), [2o](https://docs.urbit.org/hoon/stdlib/2o) | Plain gates over Hoon's trees, such as `(get.by m k)`; `rep.by` and `rep.in` take a start; ordered maps through lull's `on`, as `(get.on lte m k)` |
@@ -90,7 +90,7 @@ Hoon's standard library regrouped, written in Jibb and vendored as `/lib/jibb/pr
90| Text | [4b](https://docs.urbit.org/hoon/stdlib/4b) | `crip`, `trip`, `cass`, `cuss`, `trim`, `tufa`, `tuba` |
90| Text | [4b](https://docs.urbit.org/hoon/stdlib/4b) | `crip`, `trip`, `cass`, `cuss`, `trim`, `tufa`, `tuba` |
91| Atom printing | [4a](https://docs.urbit.org/hoon/stdlib/4a), [4j](https://docs.urbit.org/hoon/stdlib/4j)–[4m](https://docs.urbit.org/hoon/stdlib/4m) | `scot`, `scow`, `slav`, `slaw`. `print-date` prints Urbit-style in the theme's zone, to the minute, as `~2026.10.29..14.30`, from a zone table jibb-dev keeps current. Numbers print as Hoon does, as `1.000` |
91| Atom printing | [4a](https://docs.urbit.org/hoon/stdlib/4a), [4j](https://docs.urbit.org/hoon/stdlib/4j)–[4m](https://docs.urbit.org/hoon/stdlib/4m) | `scot`, `scow`, `slav`, `slaw`. `print-date` prints Urbit-style in the theme's zone, to the minute, as `~2026.10.29..14.30`, from a zone table jibb-dev keeps current. Numbers print as Hoon does, as `1.000` |
92| Time | [3c](https://docs.urbit.org/hoon/stdlib/3c) | `yore`, `year` |
92| Time | [3c](https://docs.urbit.org/hoon/stdlib/3c) | `yore`, `year` |
93−| Data molds | [1c](https://docs.urbit.org/hoon/stdlib/1c), [2q](https://docs.urbit.org/hoon/stdlib/2q), `coin` and `dime` from [3g](https://docs.urbit.org/hoon/stdlib/3g) | `unit`, `list`, `pair`, `tape`, `path` and the rest |
93+| Data molds | [1c](https://docs.urbit.org/hoon/stdlib/1c), [2q](https://docs.urbit.org/hoon/stdlib/2q), [3g](https://docs.urbit.org/hoon/stdlib/3g) | `unit`, `list`, `pair`, `tape`, `path`, `coin`, `dime` and the rest; Hoon's 3g `tone` is `tone.hoon`, distinct from the styling type |
94| Bits | [2c](https://docs.urbit.org/hoon/stdlib/2c), [2d](https://docs.urbit.org/hoon/stdlib/2d) | Jibb's `not` negates a loobean; Hoon's bitwise `not` is exposed as `not.bit` |
94| Bits | [2c](https://docs.urbit.org/hoon/stdlib/2c), [2d](https://docs.urbit.org/hoon/stdlib/2d) | Jibb's `not` negates a loobean; Hoon's bitwise `not` is exposed as `not.bit` |
95| Hashing and ordering | [2e](https://docs.urbit.org/hoon/stdlib/2e), [2f](https://docs.urbit.org/hoon/stdlib/2f) | Natives behind maps and sets; `aor` exposed |
95| Hashing and ordering | [2e](https://docs.urbit.org/hoon/stdlib/2e), [2f](https://docs.urbit.org/hoon/stdlib/2f) | Natives behind maps and sets; `aor` exposed |
96| Signed and floats | [3a](https://docs.urbit.org/hoon/stdlib/3a), [3b](https://docs.urbit.org/hoon/stdlib/3b) | Left out; `@s…` and `@r…` auras are errors, imported ones included |
96| Signed and floats | [3a](https://docs.urbit.org/hoon/stdlib/3a), [3b](https://docs.urbit.org/hoon/stdlib/3b) | Left out; `@s…` and `@r…` auras are errors, imported ones included |
docs/status.md+10−6
@@ -19,7 +19,7 @@ On 2026-10-30, @iko decided that Jibb drops `$?`, so a `+$` takes a union's case
19
19
20## Milestone 2: in progress
20## Milestone 2: in progress
21
21
22−The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; the reader is not yet connected to the checker and does not cover every supported Hoon type. The prelude currently has only a few functions, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
22+The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; a partial bridge passes selected Hoon atoms and unfaced cells into inference, while the reader and bridge do not cover every supported Hoon type. It reads named recursion, several collections, jar and jug in record fields, and direct `$^` unions whose cases can be proved disjoint. Nested `$^`, nested collection arguments, ordered maps, marks and general union disjointness remain unfinished. Collection recognition checks the originating core and fails closed on local shadows or unresolved Ford subjects; its golden fixtures include three real Tlon files. The prelude currently has only a few functions, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
23
23
24## Milestone 1: parser and mark
24## Milestone 1: parser and mark
25
25
@@ -37,8 +37,8 @@ What the plan asks for, and where it is:
37
37
38Besides the plan's list:
38Besides the plan's list:
39
39
40−- 382 golden cases: 167 that parse and 215 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
40+- 393 golden cases: 177 that parse and 216 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
41−- The 382-case corpus passed under `urbit eval` in 26.0 s. On the fake ship, those cases and the importer and unification checks passed: 384 tests in all, with 44.2 s for sync and 15.5 s for the tests.
41+- The 393-case corpus passed under `urbit eval` in 20.0 s. The fake ship passed all 396 tests, including the importer, importer/checker bridge and unification checks, with 18.9 s for sync and 8.9 s for tests. The importer golden compares 35 projections; `tools/clay-fixtures` also built all seven example Hoon fixtures through Clay.
42- `tools/testdata/selftest` (19 checks) and `tools/testdata/ship-selftest` test the tools themselves.
42- `tools/testdata/selftest` (19 checks) and `tools/testdata/ship-selftest` test the tools themselves.
43- Two independent audits before 7c739b7, one of which compared the library with a reference parser written in Python from the doc over about 19,000 generated programs. Before ab797a9, a second Python parser, written from the decisions, agreed with the library on 8,000 generated programs and 900 hand-written probes.
43- Two independent audits before 7c739b7, one of which compared the library with a reference parser written in Python from the doc over about 19,000 generated programs. Before ab797a9, a second Python parser, written from the decisions, agreed with the library on 8,000 generated programs and 900 hand-written probes.
44- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
44- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
@@ -53,23 +53,27 @@ Besides the plan's list:
53| 7c739b7 | 2026-10-30 | Fixes from two independent audits; milestone 1 done |
53| 7c739b7 | 2026-10-30 | Fixes from two independent audits; milestone 1 done |
54| 5a4aa73 | 2026-10-30 | `tools/doc-blocks`, after the doc labelled its Jibb blocks |
54| 5a4aa73 | 2026-10-30 | `tools/doc-blocks`, after the doc labelled its Jibb blocks |
55| ab797a9 | 2026-10-30 | The 12 grammar decisions of 2026-10-30: four changed the parser, eight confirmed it |
55| ab797a9 | 2026-10-30 | The 12 grammar decisions of 2026-10-30: four changed the parser, eight confirmed it |
56−| This change | 2026-10-30 | Drop `$?`; `+$` takes union cases below its name |
56+| aad6ddb | 2026-10-30 | Drop `$?`; `+$` takes union cases below its name |
57+| 1dd92a6 | 2026-10-30 | Begin type inference and Hoon imports |
58+| This change | 2026-10-30 | Extend partial inference and importer, record type and prelude decisions |
57
59
58## Checking it
60## Checking it
59
61
60On a machine set up as [development.md](development.md) says:
62On a machine set up as [development.md](development.md) says:
61
63
62```
64```
63−tools/golden # 382 cases under urbit eval
65+tools/golden # 393 cases under urbit eval
64tools/importer-test # the Hoon importer fixture projection
66tools/importer-test # the Hoon importer fixture projection
67+tools/type-import-test # the importer/checker bridge fixture
65tools/hoon check-spans-test # prints <<>> when the span checker works
68tools/hoon check-spans-test # prints <<>> when the span checker works
66tools/testdata/selftest # the tools themselves
69tools/testdata/selftest # the tools themselves
67tools/doc-blocks docs/spec # the doc's examples are golden cases
70tools/doc-blocks docs/spec # the doc's examples are golden cases
68tools/ship start
71tools/ship start
69tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
72tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
70−tools/ship test # the same 382 cases as -test arms on the ship
73+tools/ship test # the same 393 cases as -test arms on the ship
71tools/testdata/ship-selftest
74tools/testdata/ship-selftest
72tools/ship check-commit # |commit stores .jibb files
75tools/ship check-commit # |commit stores .jibb files
76+tools/clay-fixtures # example /sur files and marks build through Clay
73```
77```
74
78
75## What milestone 1 leaves to later milestones
79## What milestone 1 leaves to later milestones
jibb-dev/lib/jibb-import.hoon+305−28
@@ -1,15 +1,24 @@
1:: /lib/jibb-import.hoon: a partial reader of Hoon's type graph
1:: /lib/jibb-import.hoon: a partial reader of Hoon's type graph
2::
2::
3:: +read-mold accepts one selected Hoon type and its module/name, rather
3:: +read-mold accepts one selected Hoon type and its module/name, rather
4+:: than loading a whole /sur. +read-mold-in also takes the originating
5+:: /sur core and verifies the selected arm; this provenance is required
6+:: to identify collections without mistaking a local shadow for one.
4−:: than loading a whole /sur. The caller selects only types actually used.
7+:: The caller selects only types actually used.
5:: Hoon's %hold nodes retain the generator's Hoon and its bound arguments.
8:: Hoon's %hold nodes retain the generator's Hoon and its bound arguments.
6:: Comparing that Hoon to the standard generators identifies collections
9:: Comparing that Hoon to the standard generators identifies collections
7:: before they expand into trees. Recursive holds are tracked by identity;
10:: before they expand into trees. Recursive holds are tracked by identity;
8:: a repeated named hold becomes a module-qualified reference.
11:: a repeated named hold becomes a module-qualified reference.
9::
12::
10−:: This is not yet connected to Jibb's checker: source-level $^ overlap,
13+:: A direct $^ is read from its original branches and accepted only when
14+:: their imported shapes prove disjoint. Nested $^ and some valid but
15+:: unprovably disjoint cases remain unsupported. Source-level overlap in
16+:: other unions, nested collection arguments, ordered maps, Ford import
11−:: imported aliases, marks, ordered maps, and full error locations still
17+:: provenance, marks and full error locations still need work.
18+::
19+:: The checker has a small bridge for successful unfaced atom and cell
20+:: results; it rejects other importer shapes. Failures return %|; no
12−:: need work. Failures return %|; no partial tree is returned as success.
21+:: partial tree is returned as success.
13::
22::
14|%
23|%
15+$ imported
24+$ imported
@@ -51,7 +60,24 @@
51++ read-mold
60++ read-mold
52 |= [module=term name=term typ=type]
61 |= [module=term name=term typ=type]
53 ^- (each imported @t)
62 ^- (each imported @t)
63+ (read-with module name typ ~)
64+::
65+:: +read-mold-in: accept the /sur core as provenance. The core must be
66+:: built directly against zuse and its selected arm must be this type;
67+:: imported Ford subjects need a future provenance-aware host.
68+++ read-mold-in
69+ |= [module=term name=term typ=type cor=type]
70+ ^- (each imported @t)
71+ ?. ?=([%core *] cor) [%| 'Hoon module provenance is unavailable']
72+ ?. =(q.q.cor -:!>(..zuse)) [%| 'Hoon module provenance is unavailable']
73+ ?. =(typ (~(play ut cor) (ream (cat 3 '*' name))))
74+ [%| 'Hoon module provenance does not match the selected mold']
75+ (read-with module name typ [~ cor])
76+::
77+++ read-with
78+ |= [module=term name=term typ=type context=(unit type)]
79+ ^- (each imported @t)
54− =/ out (walk module typ catalog ~)
80+ =/ out (walk module typ catalog ~ context)
55 =/ err (first-bad out)
81 =/ err (first-bad out)
56 ?~ err [%& out]
82 ?~ err [%& out]
57 [%| u.err]
83 [%| u.err]
@@ -66,11 +92,9 @@
66 ~
92 ~
67::
93::
68:: The named wrapper records an alias before Hoon reduces it to a map.
94:: The named wrapper records an alias before Hoon reduces it to a map.
69−++ hold-alias
95+++ source-alias
70− |= h=hoon
96+ |= body=hoon
71 ^- (unit term)
97 ^- (unit term)
72− ?. ?=([%tsls [%note * *] *] h) ~
73− =/ body=hoon q.p.h
74 ?. ?=([%cncl *] body) ~
98 ?. ?=([%cncl *] body) ~
75 ?. ?=([%tsgr *] p.body) ~
99 ?. ?=([%tsgr *] p.body) ~
76 ?. ?=([%cncl *] q.p.body) ~
100 ?. ?=([%cncl *] q.p.body) ~
@@ -80,9 +104,62 @@
80 ?: =(w ~[%jug]) [~ %jug]
104 ?: =(w ~[%jug]) [~ %jug]
81 ~
105 ~
82::
106::
83−:: Nested aliases can be erased before their hold is exposed. Until the
107+++ hold-alias
84−:: source tree is walked in parallel, reject that input instead of
108+ |= h=hoon
85−:: mistaking a jar or jug for its underlying map, or a mop for a tree.
109+ ^- (unit term)
110+ ?. ?=([%tsls [%note * *] *] h) ~
111+ (source-alias q.p.h)
112+::
113+:: Reconcile source aliases with the expanded type in corresponding
114+:: cells and fields. Return an error unless every alias is accounted for.
115+++ recover-alias
116+ |= [src=hoon out=imported]
117+ ^- (each imported @t)
118+ ?. (has-hidden-alias src) [%& out]
119+ ?^ -.src
120+ ?. ?=([%cell *] out) [%| 'a nested collection alias needs source-aware import']
121+ =/ hed $(src -.src, out head.out)
122+ ?- hed
123+ [%| *] hed
124+ [%& *]
125+ =/ tal $(src +.src, out tail.out)
126+ ?- tal
127+ [%| *] tal
128+ [%& *] [%& [%cell p.hed p.tal]]
129+ ==
130+ ==
131+ ?+ src [%| 'a nested collection alias needs source-aware import']
132+ [%note *] $(src q.src)
133+ [%ktts *]
134+ ?. ?=([%face *] out) [%| 'a nested collection alias needs source-aware import']
135+ ?. =(p.src name.out) [%| 'a nested collection alias needs source-aware import']
136+ =/ child $(src q.src, out body.out)
137+ ?- child
138+ [%| *] child
139+ [%& *] [%& [%face name.out p.child]]
140+ ==
141+ [%cncl *]
142+ =/ alias (source-alias src)
143+ ?~ alias [%| 'a nested collection alias needs source-aware import']
144+ ?: (gth (alias-count src) 1)
145+ [%| 'nested collection arguments need source-aware import']
146+ ?. ?=([%apply %map [* [%apply * [* ~]] ~]] out)
147+ [%| 'a nested collection alias needs source-aware import']
148+ =/ inner i.args.i.t.args.out
149+ ?: &(?=(%jar u.alias) ?=(%list name.i.t.args.out))
150+ [%& [%apply %jar ~[i.args.out inner]]]
151+ ?: &(?=(%jug u.alias) ?=(%set name.i.t.args.out))
152+ [%& [%apply %jug ~[i.args.out inner]]]
153+ [%| 'a nested collection alias needs source-aware import']
154+ ==
155+::
156+++ alias-count
157+ |= h=*
158+ ^- @ud
159+ ?: |(=(h [%wing ~[%jar]]) =(h [%wing ~[%jug]]) =(h [%wing ~[%mop]])) 1
160+ ?@ h 0
161+ (add $(h -.h) $(h +.h))
162+::
86++ has-hidden-alias
163++ has-hidden-alias
87 |= h=*
164 |= h=*
88 ^- ?
165 ^- ?
@@ -101,6 +178,110 @@
101 ?: =(h [%dtwt [%$ 12]]) &
178 ?: =(h [%dtwt [%$ 12]]) &
102 |($(h -.h) $(h +.h))
179 |($(h -.h) $(h +.h))
103::
180::
181+++ cell-branches
182+ |= h=type
183+ ^- (unit [left=type right=type])
184+ ?. ?=([%hold *] h) ~
185+ =/ original=hoon q.h
186+ ?. ?=([%tsls [%note * *] *] original) ~
187+ =/ body=hoon q.p.original
188+ ?. ?=([%wtcl *] body) ~
189+ ?. =(p.body [%dtwt [%$ 12]]) ~
190+ =/ one=hoon original(q.p q.body)
191+ =/ two=hoon original(q.p r.body)
192+ :: Branches can rely on narrowing in the original conditional. When a
193+ :: branch cannot be evaluated on its own, report it as unsupported.
194+ =/ attempt=(each [type type] tang)
195+ (mule |.([(~(play ut p.h) one) (~(play ut p.h) two)]))
196+ ?- attempt
197+ [%& *] [~ p.attempt]
198+ [%| *] ~
199+ ==
200+::
201+++ disjoint
202+ |= [a=imported b=imported]
203+ ^- ?
204+ ?: ?=([%face *] a) $(a body.a)
205+ ?: ?=([%face *] b) $(b body.b)
206+ ?: ?=([%fork *] a)
207+ (levy cases.a |=(item=imported (disjoint item b)))
208+ ?: ?=([%fork *] b)
209+ (levy cases.b |=(item=imported (disjoint a item)))
210+ ?: |(?=([%void *] a) ?=([%void *] b)) &
211+ ?: ?=([%atom *] a)
212+ ?: ?=([%cell *] b) &
213+ ?. ?=([%atom *] b) |
214+ ?~ value.a |
215+ ?~ value.b |
216+ !=(u.value.a u.value.b)
217+ ?: ?=([%cell *] a)
218+ ?: ?=([%atom *] b) &
219+ ?. ?=([%cell *] b) |
220+ |($(a head.a, b head.b) $(a tail.a, b tail.b))
221+ |
222+::
223+:: Source names may resolve to a local Hoon arm rather than zuse. A
224+:: missing verified subject or any local arm with that name is unsafe.
225+:: A chapter's +tome has different wrappers under eval and Clay. Walk
226+:: its noun map without relying on either version's field names.
227+++ arm-map-has
228+ |= [m=* target=term]
229+ ^- ?
230+ ?@ m |
231+ ?@ -.m |
232+ =/ kv=* -.m
233+ ?^ -.kv |
234+ ?: =(-.kv target) &
235+ =/ children=* +.m
236+ ?@ children |
237+ |($(m -.children) $(m +.children))
238+::
239+++ arm-map-valid
240+ |= m=*
241+ ^- ?
242+ ?@ m =(m ~)
243+ ?@ -.m |
244+ =/ kv=* -.m
245+ ?^ -.kv |
246+ =/ children=* +.m
247+ ?@ children |
248+ &($(m -.children) $(m +.children))
249+::
250+:: ~ means this is neither supported chapter representation. The
251+:: caller treats that as unsafe, not as a validated miss.
252+++ chapter-has
253+ |= [chapter=* target=term]
254+ ^- (unit ?)
255+ ?: (arm-map-valid chapter) [~ (arm-map-has chapter target)]
256+ ?@ chapter ~
257+ ?. (arm-map-valid +.chapter) ~
258+ [~ (arm-map-has +.chapter target)]
259+::
260+++ chapter-unsafe
261+ |= [chapter=* target=term]
262+ ^- ?
263+ =/ has (chapter-has chapter target)
264+ ?~ has &
265+ u.has
266+::
267+++ alias-safe
268+ |= [context=(unit type) target=term]
269+ ^- ?
270+ ?~ context |
271+ =/ cor=type u.context
272+ ?. ?=([%core *] cor) |
273+ ?. =(q.q.cor -:!>(..zuse)) |
274+ =/ chapters=(map term tome) q.r.q.cor
275+ ?: (lien ~(tap by chapters) |=(entry=[term tome] (chapter-unsafe +.entry target))) |
276+ &
277+::
278+++ source-uses
279+ |= [src=* target=term]
280+ ^- ?
281+ ?: =(src [%wing [target ~]]) &
282+ ?@ src |
283+ |($(src -.src) $(src +.src))
284+::
104++ match-signature
285++ match-signature
105 |= [h=hoon sig=signatures]
286 |= [h=hoon sig=signatures]
106 ^- (unit term)
287 ^- (unit term)
@@ -116,7 +297,7 @@
116 $(seen t.seen)
297 $(seen t.seen)
117::
298::
118++ walk
299++ walk
119− |= [module=term typ=type sig=signatures seen=visiting]
300+ |= [module=term typ=type sig=signatures seen=visiting context=(unit type)]
120 ^- imported
301 ^- imported
121 ?- typ
302 ?- typ
122 %noun [%noun ~]
303 %noun [%noun ~]
@@ -140,6 +321,8 @@
140 ?^ named
321 ?^ named
141 =/ name u.named
322 =/ name u.named
142 ?: =(%vase name) [%bad 'vases cannot be imported']
323 ?: =(%vase name) [%bad 'vases cannot be imported']
324+ ?. (alias-safe context name)
325+ [%bad 'Hoon collection provenance is unavailable or shadowed']
143 =/ first=type
326 =/ first=type
144 (~(play ut p.typ) (ream ?:(|(=(%map name) =(%jar name) =(%jug name)) '*key' '*item')))
327 (~(play ut p.typ) (ream ?:(|(=(%map name) =(%jar name) =(%jug name)) '*key' '*item')))
145 =/ first-import $(typ first)
328 =/ first-import $(typ first)
@@ -153,13 +336,35 @@
153 [%ref module u.u.prior]
336 [%ref module u.u.prior]
154 =/ nm (hold-name q.typ)
337 =/ nm (hold-name q.typ)
155 ?: =(nm [~ %vase]) [%bad 'vases cannot be imported']
338 ?: =(nm [~ %vase]) [%bad 'vases cannot be imported']
339+ ?: &((source-uses q.typ %jar) !(alias-safe context %jar))
340+ [%bad 'Hoon collection provenance is unavailable or shadowed']
341+ ?: &((source-uses q.typ %jug) !(alias-safe context %jug))
342+ [%bad 'Hoon collection provenance is unavailable or shadowed']
343+ =/ branches (cell-branches typ)
344+ ?^ branches
345+ =/ first $(typ left.u.branches, seen [[typ nm] seen])
346+ =/ second $(typ right.u.branches, seen [[typ nm] seen])
347+ =/ err (first-bads ~[first second])
348+ ?^ err [%bad u.err]
349+ ?: (disjoint first second)
350+ [%fork (sort ~[first second] |=(pair=[imported imported] (dor -.pair +.pair)))]
351+ [%bad 'a Hoon $^ union has overlapping cases']
156 ?: (has-cell-union q.typ)
352 ?: (has-cell-union q.typ)
157 [%bad 'a Hoon $^ union needs a source-level disjointness check']
353 [%bad 'a Hoon $^ union needs a source-level disjointness check']
158 =/ alias (hold-alias q.typ)
354 =/ alias (hold-alias q.typ)
159− ?: &(?=(~ alias) (has-hidden-alias q.typ))
355+ =/ hidden (has-hidden-alias q.typ)
160− [%bad 'a nested jar, jug or mop needs source-aware import']
161 =/ body $(typ ~(repo ut typ), seen [[typ nm] seen])
356 =/ body $(typ ~(repo ut typ), seen [[typ nm] seen])
162− ?~ alias body
357+ ?~ alias
358+ ?. hidden body
359+ ?. ?=([%tsls [%note * *] *] q.typ)
360+ [%bad 'a nested collection alias needs source-aware import']
361+ =/ corrected (recover-alias q.p.q.typ body)
362+ ?- corrected
363+ [%& *] p.corrected
364+ [%| *] [%bad p.corrected]
365+ ==
366+ ?: (gth (alias-count q.typ) 1)
367+ [%bad 'nested collection arguments need source-aware import']
163 ?. ?=([%apply %map [* [%apply * [* ~]] ~]] body)
368 ?. ?=([%apply %map [* [%apply * [* ~]] ~]] body)
164 [%bad 'a Hoon collection alias could not be recovered']
369 [%bad 'a Hoon collection alias could not be recovered']
165 =/ inner i.args.i.t.args.body
370 =/ inner i.args.i.t.args.body
@@ -196,17 +401,35 @@
196 ?~ err $(xs t.xs)
401 ?~ err $(xs t.xs)
197 err
402 err
198:: +fixture-test: shared golden expectations for eval and the ship.
403:: +fixture-test: shared golden expectations for eval and the ship.
404+:: A synthetic hold whose first $^ branch cannot be evaluated. It tests
405+:: that a failed branch probe is reported rather than crashing the host.
406+++ bad-branch-fixture
407+ ^- type
408+ [%hold -:!>(..zuse) [%tsls [%note [%made %bad ~] [%wtcl [%dtwt [%$ 12]] [%wing ~[%jibb-no-such-branch-name]] [%rock %n 0]]] [%$ 1]]]
409+::
199++ fixture-test
410++ fixture-test
200− |= [small=@t epic=@t]
411+ |= [small=@t epic=@t presence=@t docs=@t shadow=@t]
201 ^- (list @t)
412 ^- (list @t)
202 =/ sc=type -:(ride -:!>(..zuse) small)
413 =/ sc=type -:(ride -:!>(..zuse) small)
203 =/ ec=type -:(ride -:!>(..zuse) epic)
414 =/ ec=type -:(ride -:!>(..zuse) epic)
415+ =/ pc=type -:(ride -:!>(..zuse) presence)
416+ =/ dc=type -:(ride -:!>(..zuse) docs)
417+ =/ hc=type -:(ride -:!>(..zuse) shadow)
204 =/ sample
418 =/ sample
205 |= name=term
419 |= name=term
206− (read-mold %small name (~(play ut sc) (ream (cat 3 '*' name))))
420+ (read-mold-in %small name (~(play ut sc) (ream (cat 3 '*' name))) sc)
207 =/ tlon
421 =/ tlon
208 |= name=term
422 |= name=term
209− (read-mold %epic name (~(play ut ec) (ream (cat 3 '*' name))))
423+ (read-mold-in %epic name (~(play ut ec) (ream (cat 3 '*' name))) ec)
424+ =/ present
425+ |= name=term
426+ (read-mold-in %presence name (~(play ut pc) (ream (cat 3 '*' name))) pc)
427+ =/ shad
428+ |= name=term
429+ (read-mold-in %shadow name (~(play ut hc) (ream (cat 3 '*' name))) hc)
430+ =/ docs-type
431+ |= name=term
432+ (read-mold-in %docs name (~(play ut dc) (ream (cat 3 '*' name))) dc)
210 =/ errors=(list @t) ~
433 =/ errors=(list @t) ~
211 =/ expect-action=imported
434 =/ expect-action=imported
212 [%fork ~[[%cell [%atom %tas [~ %add]] [%face %text [%atom %t ~]]] [%cell [%atom %tas [~ %remove]] [%face %id [%atom %ud ~]]]]]
435 [%fork ~[[%cell [%atom %tas [~ %add]] [%face %text [%atom %t ~]]] [%cell [%atom %tas [~ %remove]] [%face %id [%atom %ud ~]]]]]
@@ -234,8 +457,15 @@
234 ['jar name and arguments' errors]
457 ['jar name and arguments' errors]
235 =/ errors ?: =((sample %jug-test) [%& expect-jug]) errors
458 =/ errors ?: =((sample %jug-test) [%& expect-jug]) errors
236 ['jug name and arguments' errors]
459 ['jug name and arguments' errors]
460+ =/ expect-nested-jar=imported [%face %field [%apply %jar ~[[%atom %ud ~] [%atom %t ~]]]]
461+ =/ errors ?: =((sample %nested-jar) [%& expect-nested-jar]) errors
462+ ['nested jar is preserved' errors]
463+ =/ expect-paired=imported
464+ [%cell [%face %values [%apply %jar ~[[%atom %ud ~] [%atom %t ~]]]] [%face %cache [%apply %jug ~[[%atom %ud ~] [%atom %t ~]]]]]
465+ =/ errors ?: =((sample %paired-aliases) [%& expect-paired]) errors
466+ ['multiple collection aliases are preserved' errors]
237− =/ errors ?: =((sample %nested-jar) [%| 'a nested jar, jug or mop needs source-aware import']) errors
467+ =/ errors ?: =((sample %nested-alias) [%| 'nested collection arguments need source-aware import']) errors
238− ['nested jar is explicitly unsupported' errors]
468+ ['nested collection arguments remain unsupported' errors]
239 =/ errors ?: =((sample %signed) [%| 'signed and float auras cannot be imported']) errors
469 =/ errors ?: =((sample %signed) [%| 'signed and float auras cannot be imported']) errors
240 ['signed aura rejected' errors]
470 ['signed aura rejected' errors]
241 =/ errors ?: =((sample %float) [%| 'signed and float auras cannot be imported']) errors
471 =/ errors ?: =((sample %float) [%| 'signed and float auras cannot be imported']) errors
@@ -244,10 +474,24 @@
244 ['gate rejected' errors]
474 ['gate rejected' errors]
245 =/ errors ?: =((read-mold %std %vase (~(play ut -:!>(..zuse)) (ream '*vase'))) [%| 'vases cannot be imported']) errors
475 =/ errors ?: =((read-mold %std %vase (~(play ut -:!>(..zuse)) (ream '*vase'))) [%| 'vases cannot be imported']) errors
246 ['vase rejected' errors]
476 ['vase rejected' errors]
477+ =/ expect-valid=imported
478+ [%fork ~[[%cell [%face %x [%atom %ud ~]] [%face %y [%atom %ud ~]]] [%atom %ud ~]]]
247− =/ errors ?: =((sample %valid-cell) [%| 'a Hoon $^ union needs a source-level disjointness check']) errors
479+ =/ errors ?: =((sample %valid-cell) [%& expect-valid]) errors
248− ['cell union pending disjointness check' errors]
480+ ['disjoint cell union' errors]
249− =/ errors ?: =((sample %invalid-cell) [%| 'a Hoon $^ union needs a source-level disjointness check']) errors
481+ =/ errors ?: =((sample %invalid-cell) [%| 'a Hoon $^ union has overlapping cases']) errors
250− ['overlapping cell union is not accepted' errors]
482+ ['overlapping cell union is rejected' errors]
483+ =/ errors ?: =((shad %aa) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
484+ ['local jar shadow is rejected' errors]
485+ =/ errors ?: =((shad %bb) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
486+ ['local jug shadow in a field is rejected' errors]
487+ =/ errors ?: =((read-mold %small %jar-test (~(play ut sc) (ream '*jar-test'))) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
488+ ['missing provenance is rejected' errors]
489+ =/ expect-timing=imported
490+ [%cell [%face %since [%atom %da ~]] [%face %timeout [%apply %unit ~[[%atom %dr ~]]]]]
491+ =/ errors ?: =((present %timing) [%& expect-timing]) errors
492+ ['Tlon presence timing' errors]
493+ =/ errors ?: =((read-mold %external %bad bad-branch-fixture) [%| 'a Hoon $^ union needs a source-level disjointness check']) errors
494+ ['failed branch expansion is reported' errors]
251 =/ expect-saga=imported
495 =/ expect-saga=imported
252 [%fork ~[[%cell [%atom %tas [~ %chi]] [%atom %n [~ 0]]] [%cell [%atom %tas [~ %lev]] [%atom %n [~ 0]]] [%cell [%atom %tas [~ %dex]] [%face %ver [%atom %ud ~]]]]]
496 [%fork ~[[%cell [%atom %tas [~ %chi]] [%atom %n [~ 0]]] [%cell [%atom %tas [~ %lev]] [%atom %n [~ 0]]] [%cell [%atom %tas [~ %dex]] [%face %ver [%atom %ud ~]]]]]
253 =/ errors ?: =((tlon %saga) [%& expect-saga]) errors
497 =/ errors ?: =((tlon %saga) [%& expect-saga]) errors
@@ -292,16 +536,30 @@
292 ==
536 ==
293::
537::
294++ fixture-output
538++ fixture-output
295− |= [small=@t epic=@t]
539+ |= [small=@t epic=@t presence=@t docs=@t shadow=@t]
296 ^- wain
540 ^- wain
297 =/ sc=type -:(ride -:!>(..zuse) small)
541 =/ sc=type -:(ride -:!>(..zuse) small)
298 =/ ec=type -:(ride -:!>(..zuse) epic)
542 =/ ec=type -:(ride -:!>(..zuse) epic)
543+ =/ pc=type -:(ride -:!>(..zuse) presence)
544+ =/ dc=type -:(ride -:!>(..zuse) docs)
545+ =/ hc=type -:(ride -:!>(..zuse) shadow)
299 =/ sample
546 =/ sample
300 |= name=term
547 |= name=term
301− (read-mold %small name (~(play ut sc) (ream (cat 3 '*' name))))
548+ (read-mold-in %small name (~(play ut sc) (ream (cat 3 '*' name))) sc)
302 =/ tlon
549 =/ tlon
303 |= name=term
550 |= name=term
304− (read-mold %epic name (~(play ut ec) (ream (cat 3 '*' name))))
551+ (read-mold-in %epic name (~(play ut ec) (ream (cat 3 '*' name))) ec)
552+ =/ present
553+ |= name=term
554+ (read-mold-in %presence name (~(play ut pc) (ream (cat 3 '*' name))) pc)
555+ =/ shad
556+ |= name=term
557+ (read-mold-in %shadow name (~(play ut hc) (ream (cat 3 '*' name))) hc)
558+ =/ docs-type
559+ |= name=term
560+ (read-mold-in %docs name (~(play ut dc) (ream (cat 3 '*' name))) dc)
561+ =/ chapter-tree=(map term hoon)
562+ (~(put by *(map term hoon)) %jar [%zpzp ~])
305 =/ vase (read-mold %std %vase (~(play ut -:!>(..zuse)) (ream '*vase')))
563 =/ vase (read-mold %std %vase (~(play ut -:!>(..zuse)) (ream '*vase')))
306 :~ (crip "action: {(show-result (sample %action))}")
564 :~ (crip "action: {(show-result (sample %action))}")
307 (crip "optional: {(show-result (sample %optional))}")
565 (crip "optional: {(show-result (sample %optional))}")
@@ -311,12 +569,31 @@
311 (crip "jar: {(show-result (sample %jar-test))}")
569 (crip "jar: {(show-result (sample %jar-test))}")
312 (crip "jug: {(show-result (sample %jug-test))}")
570 (crip "jug: {(show-result (sample %jug-test))}")
313 (crip "nested-jar: {(show-result (sample %nested-jar))}")
571 (crip "nested-jar: {(show-result (sample %nested-jar))}")
572+ (crip "paired-aliases: {(show-result (sample %paired-aliases))}")
573+ (crip "nested-alias: {(show-result (sample %nested-alias))}")
314 (crip "signed: {(show-result (sample %signed))}")
574 (crip "signed: {(show-result (sample %signed))}")
315 (crip "float: {(show-result (sample %float))}")
575 (crip "float: {(show-result (sample %float))}")
316 (crip "gate: {(show-result (sample %gate-test))}")
576 (crip "gate: {(show-result (sample %gate-test))}")
317 (crip "vase: {(show-result vase)}")
577 (crip "vase: {(show-result vase)}")
578+ (crip "failed-branch: {(show-result (read-mold %external %bad bad-branch-fixture))}")
318 (crip "valid-cell: {(show-result (sample %valid-cell))}")
579 (crip "valid-cell: {(show-result (sample %valid-cell))}")
319 (crip "invalid-cell: {(show-result (sample %invalid-cell))}")
580 (crip "invalid-cell: {(show-result (sample %invalid-cell))}")
581+ (crip "chapter-malformed: {?:((chapter-unsafe [%x %y %z] %jar) "unsafe" "wrong")}")
582+ (crip "chapter-wrapped-malformed: {?:((chapter-unsafe [~ [%x %y %z]] %jar) "unsafe" "wrong")}")
583+ (crip "chapter-direct-hit: {?:(=((chapter-has chapter-tree %jar) [~ &]) "yes" "no")}")
584+ (crip "chapter-wrapped-hit: {?:(=((chapter-has [~ chapter-tree] %jar) [~ &]) "yes" "no")}")
585+ (crip "chapter-direct-miss: {?:(=((chapter-has chapter-tree %jug) [~ &]) "yes" "no")}")
586+ (crip "chapter-wrapped-miss: {?:(=((chapter-has [~ chapter-tree] %jug) [~ &]) "yes" "no")}")
587+ (crip "shadow-jar: {(show-result (shad %aa))}")
588+ (crip "shadow-jug: {(show-result (shad %bb))}")
589+ (crip "no-provenance: {(show-result (read-mold %small %jar-test (~(play ut sc) (ream '*jar-test'))))}")
590+ (crip "wrong-provenance: {(show-result (read-mold-in %small %action (~(play ut sc) (ream '*items')) sc))}")
591+ (crip "unverified-subject: {(show-result (read-mold-in %std %jar (~(play ut -:!>(..zuse)) (ream '*(jar @ud @t)')) -:!>(..zuse)))}")
592+ (crip "presence-topic: {(show-result (present %topic))}")
593+ (crip "presence-timing: {(show-result (present %timing))}")
594+ (crip "presence-places: {(show-result (present %places))}")
595+ (crip "docs-ent: {(show-result (docs-type %ent))}")
596+ (crip "docs-nud: {(show-result (docs-type %nud))}")
320 (crip "tlon-saga: {(show-result (tlon %saga))}")
597 (crip "tlon-saga: {(show-result (tlon %saga))}")
321 (crip "tlon-epic: {(show-result (tlon %epic))}")
598 (crip "tlon-epic: {(show-result (tlon %epic))}")
322 ==
599 ==
jibb-dev/lib/jibb.hoon+324−15
@@ -169,6 +169,7 @@
169:: else is an error at 3rd, "the loobeans are `%.y` and
169:: else is an error at 3rd, "the loobeans are `%.y` and
170:: `%.n`"
170:: `%.n`"
171:: %& %| term literals, [%f 0] and [%f 1]
171:: %& %| term literals, [%f 0] and [%f 1]
172+:: %$ the empty term, [%tas 0]
172:: %a... term literal: % and a name [a-z][a-z0-9-]*, [%tas name];
173:: %a... term literal: % and a name [a-z][a-z0-9-]*, [%tas name];
173:: a capital or _ right after it is an error there,
174:: a capital or _ right after it is an error there,
174:: "names are lowercase letters, digits and -"
175:: "names are lowercase letters, digits and -"
@@ -890,7 +891,7 @@
890:: %date ~2026.10.23 %da
891:: %date ~2026.10.23 %da
891:: %duration ~h1.m30 %dr
892:: %duration ~h1.m30 %dr
892:: %knot ~.my-post %ta
893:: %knot ~.my-post %ta
893−:: %term %add %1.000 %& %| %tas 'add', %ud 1.000, %f 0, %f 1
894+:: %term %add %1.000 %& %| %$ %tas 'add', %ud 1.000, %f 0, %f 1, %tas 0
894:: %loobean %.y %.n %f 0, %f 1
895:: %loobean %.y %.n %f 0, %f 1
895:: %null ~ %n 0
896:: %null ~ %n 0
896::
897::
@@ -1422,6 +1423,7 @@
1422 (err (add 2 col) "the loobeans are `%.y` and `%.n`")
1423 (err (add 2 col) "the loobeans are `%.y` and `%.n`")
1423 ?: =('&' b) (emit 2 [%lit %term %f 0 '%&'])
1424 ?: =('&' b) (emit 2 [%lit %term %f 0 '%&'])
1424 ?: =('|' b) (emit 2 [%lit %term %f 1 '%|'])
1425 ?: =('|' b) (emit 2 [%lit %term %f 1 '%|'])
1426+ ?: =('$' b) (emit 2 [%lit %term %tas 0 '%$'])
1425 ?: |(=(':' b) =('-' b) =('+' b) =('^' b) =('~' b))
1427 ?: |(=(':' b) =('-' b) =('+' b) =('^' b) =('~' b))
1426 %+ err +(col)
1428 %+ err +(col)
1427 "`%{[b ~]}` is left out: indentation covers it; a call is (f a b)"
1429 "`%{[b ~]}` is left out: indentation covers it; a call is (f a b)"
@@ -3056,6 +3058,8 @@
3056 (no-gap rest "a space after {(show-found g)}")
3058 (no-gap rest "a space after {(show-found g)}")
3057 ?: =(%'/%' lex.g)
3059 ?: =(%'/%' lex.g)
3058 ?: ?=([[* * [%lit %term %tas *]] *] rest)
3060 ?: ?=([[* * [%lit %term %tas *]] *] rest)
3061+ ?: =(0 val.p.lex.i.rest)
3062+ (bad-in rest "a mark's term, as `%todo-action`" cen-mask)
3059 [%& [%mark [beg.at.g end.at.i.rest] val.p.lex.i.rest] t.rest]
3063 [%& [%mark [beg.at.g end.at.i.rest] val.p.lex.i.rest] t.rest]
3060 =/ want=tape "a mark's term, as `%todo-action`"
3064 =/ want=tape "a mark's term, as `%todo-action`"
3061 ?. ?=([[* * [%name *]] *] rest) (bad-in rest want cen-mask)
3065 ?. ?=([[* * [%name *]] *] rest) (bad-in rest want cen-mask)
@@ -4586,9 +4590,10 @@
4586:: Each top-level inferred definition generalizes its free variables, and
4590:: Each top-level inferred definition generalizes its free variables, and
4587:: a use instantiates them afresh. Binders inside a gate stay monomorphic;
4591:: a use instantiates them afresh. Binders inside a gate stay monomorphic;
4588:: capital variables in molds share one allocation within the definition.
4592:: capital variables in molds share one allocation within the definition.
4589−:: Decimal literals and bare @ have atom-only variables; until their
4593+:: Decimal literals have atom-only variables; until their constraints
4590−:: constraints can be printed and generalized, an unresolved one is
4594+:: can be printed and generalized, an unresolved one is unsupported.
4595+:: Bare @ is unsupported until its unrestricted-atom rule is implemented.
4591−:: reported as unsupported. Only unfaced cells are represented here.
4596+:: Only unfaced cells are represented here.
4592::
4597::
4593+$ itype
4598+$ itype
4594 $~ [%var 0]
4599 $~ [%var 0]
@@ -4704,7 +4709,11 @@
4704+$ ischeme [typ=itype vars=(list @ud)]
4709+$ ischeme [typ=itype vars=(list @ud)]
4705+$ ienv (list [name=term scheme=ischeme])
4710+$ ienv (list [name=term scheme=ischeme])
4706+$ icaps (list [name=@t id=@ud])
4711+$ icaps (list [name=@t id=@ud])
4712++$ imolds (list [name=term body=shape])
4713+:: A caller supplies the exact noun returned by +read-mold:jibb-import.
4714+:: This core has no Ford dependencies; unrecognized payloads fail closed.
4715++$ iexternals (list [module=term name=term result=*])
4707−+$ istate [next=@ud sub=isub caps=icaps]
4716++$ istate [next=@ud sub=isub caps=icaps molds=imolds globals=(list term) externals=iexternals surs=(list term) active=(list term) in-mold=?]
4708+$ iresult (each [typ=itype state=istate] tape)
4717+$ iresult (each [typ=itype state=istate] tape)
4709+$ isample-result (each [typ=itype env=ienv state=istate] tape)
4718+$ isample-result (each [typ=itype env=ienv state=istate] tape)
4710::
4719::
@@ -4793,17 +4802,104 @@
4793 ?: =(n name.i.caps) `id.i.caps
4802 ?: =(n name.i.caps) `id.i.caps
4794 $(caps t.caps)
4803 $(caps t.caps)
4795::
4804::
4805+::
4806+:: Only an unambiguous local name can be expanded. Import faces and
4807+:: recursive mold identity need the full module interface.
4808+::
4809+++ find-simple-mold
4810+ |= [n=term molds=imolds]
4811+ ^- (unit shape)
4812+ =/ matches=imolds (skim molds |=(m=[name=term body=shape] =(n name.m)))
4813+ ?~ matches ~
4814+ ?^ t.matches ~
4815+ `body.i.matches
4816+::
4817+++ collect-simple-molds
4818+ |= ds=(list def)
4819+ ^- imolds
4820+ ?~ ds ~
4821+ ?: ?=(%mold -.i.ds)
4822+ [[name.i.ds shape.i.ds] $(ds t.ds)]
4823+ $(ds t.ds)
4824+::
4825+::
4826+:: The importer owns its algebra. Only successful %atom and %cell nouns
4827+:: in the supported subset are decoded here. In particular a singleton,
4828+:: face, union, collection or recursive reference must not be widened.
4829+::
4830+++ import-to-itype
4831+ |= node=*
4832+ ^- (unit itype)
4833+ ?@ node ~
4834+ ?+ -.node ~
4835+ %atom
4836+ ?. ?=([%atom @ ~] node) ~
4837+ =/ aura=@ta (@ta +<.node)
4838+ ?. ?=(?(%ud %ux %uv %t %ta %tas %p %da %dr) aura) ~
4839+ `[%atom aura]
4840+ %cell
4841+ ?. ?=([%cell * *] node) ~
4842+ =/ left=(unit itype) $(node +<.node)
4843+ ?~ left ~
4844+ =/ right=(unit itype) $(node +>.node)
4845+ ?~ right ~
4846+ `[%cell u.left u.right]
4847+ ==
4848+::
4849+++ find-imported-mold
4850+ |= [module=term name=term externals=iexternals surs=(list term)]
4851+ ^- (unit itype)
4852+ ?. (lien surs |=(n=term =(n module))) ~
4853+ =/ found=iexternals
4854+ (skim externals |=(e=[module=term name=term result=*] &(=(module module.e) =(name name.e))))
4855+ ?~ found ~
4856+ ?^ t.found ~
4857+ =/ result=* result.i.found
4858+ ?@ result ~
4859+ ?. ?=(%& -.result) ~
4860+ (import-to-itype +.result)
4861+::
4862+++ collect-sur-imports
4863+ |= imports=(list import)
4864+ ^- (list term)
4865+ ?~ imports ~
4866+ ?: ?=(%sur -.i.imports)
4867+ [name.i.imports $(imports t.imports)]
4868+ $(imports t.imports)
4869+::
4796++ infer-simple-shape
4870++ infer-simple-shape
4797 |= [sh=shape state=istate]
4871 |= [sh=shape state=istate]
4798 ^- (unit [typ=itype state=istate])
4872 ^- (unit [typ=itype state=istate])
4799 ?- -.sh
4873 ?- -.sh
4800 %aura
4874 %aura
4801− ?: =(0 aura.sh)
4875+ ?: =(0 aura.sh) ~
4802− `[[%avar next.state] state(next +(next.state))]
4803 `[[%atom aura.sh] state]
4876 `[[%atom aura.sh] state]
4804 %flag `[[%flag ~] state]
4877 %flag `[[%flag ~] state]
4805 %cell (infer-simple-fields fields.sh state)
4878 %cell (infer-simple-fields fields.sh state)
4879+ %fn
4880+ =/ arg=(unit [typ=itype state=istate]) $(sh sample.sh)
4881+ ?~ arg ~
4882+ =/ out=(unit [typ=itype state=istate]) $(sh product.sh, state state.u.arg)
4883+ ?~ out ~
4884+ `[[%fn typ.u.arg typ.u.out] state.u.out]
4885+ %ref
4886+ ?~ names.sh ~
4887+ =/ n=term i.names.sh
4888+ ?^ t.names.sh
4889+ ?^ t.t.names.sh ~
4890+ =/ found=(unit itype)
4891+ (find-imported-mold i.t.names.sh n externals.state surs.state)
4892+ ?~ found ~
4893+ `[u.found state]
4894+ ?: (lien active.state |=(x=term =(x n))) ~
4895+ =/ found=(unit shape) (find-simple-mold n molds.state)
4896+ ?~ found ~
4897+ =/ out=(unit [typ=itype state=istate])
4898+ $(sh u.found, state state(active [n active.state], in-mold &))
4899+ ?~ out ~
4900+ `[typ.u.out state.u.out(active active.state, in-mold in-mold.state)]
4806 %tvar
4901 %tvar
4902+ ?: in-mold.state ~
4807 =/ n=(unit @ud) (icap-lookup name.sh caps.state)
4903 =/ n=(unit @ud) (icap-lookup name.sh caps.state)
4808 ?^ n `[[%var u.n] state]
4904 ?^ n `[[%var u.n] state]
4809 `[[%var next.state] state(next +(next.state), caps [[name.sh next.state] caps.state])]
4905 `[[%var next.state] state(next +(next.state), caps [[name.sh next.state] caps.state])]
@@ -4827,12 +4923,12 @@
4827 ^- isample-result
4923 ^- isample-result
4828 ?- -.s
4924 ?- -.s
4829 %bind
4925 %bind
4830− ?. ?=(~ (ienv-lookup name.s env))
4926+ ?: |(?=(^ (ienv-lookup name.s env)) (lien globals.state |=(x=term =(x name.s))))
4831 [%| "sample shadows a name"]
4927 [%| "sample shadows a name"]
4832 =/ t=itype [%var next.state]
4928 =/ t=itype [%var next.state]
4833 [%& t [[name.s [t ~]] env] state(next +(next.state))]
4929 [%& t [[name.s [t ~]] env] state(next +(next.state))]
4834 %face
4930 %face
4835− ?. ?=(~ (ienv-lookup name.s env))
4931+ ?: |(?=(^ (ienv-lookup name.s env)) (lien globals.state |=(x=term =(x name.s))))
4836 [%| "sample shadows a name"]
4932 [%| "sample shadows a name"]
4837 =/ t=(unit [typ=itype state=istate]) (infer-simple-shape shape.s state)
4933 =/ t=(unit [typ=itype state=istate]) (infer-simple-shape shape.s state)
4838 ?~ t [%| "sample mold is not supported by partial inference"]
4934 ?~ t [%| "sample mold is not supported by partial inference"]
@@ -4969,7 +5065,7 @@
4969 ?. ?=(%bind -.i.t.pats) [%| "branch pattern is not supported by partial inference"]
5065 ?. ?=(%bind -.i.t.pats) [%| "branch pattern is not supported by partial inference"]
4970 =/ one=term name.i.pats
5066 =/ one=term name.i.pats
4971 =/ two=term name.i.t.pats
5067 =/ two=term name.i.t.pats
4972− ?: |(=(one two) ?=(^ (ienv-lookup one env)) ?=(^ (ienv-lookup two env)))
5068+ ?: |(=(one two) ?=(^ (ienv-lookup one env)) ?=(^ (ienv-lookup two env)) (lien globals.state |=(x=term |(=(x one) =(x two)))))
4973 [%| "pattern shadows a name"]
5069 [%| "pattern shadows a name"]
4974 =/ subject=iresult (infer-fragment subject.e env state)
5070 =/ subject=iresult (infer-fragment subject.e env state)
4975 ?: ?=(%| -.subject) subject
5071 ?: ?=(%| -.subject) subject
@@ -5022,24 +5118,237 @@
5022 ?. ?=(%var -.resolved) &
5118 ?. ?=(%var -.resolved) &
5023 $(caps t.caps)
5119 $(caps t.caps)
5024::
5120::
5121+:: Build the supported part of the value environment in dependency order.
5122+:: Each pass adds successful definitions. Forward references become
5123+:: available on a later pass; recursive groups and unsupported syntax do
5124+:: not enter the environment. Generalized definitions are closed, so a
5125+:: use instantiates its variables afresh.
5126+::
5127+++ global-value-names
5128+ |= ds=(list def)
5129+ ^- (list term)
5130+ ?~ ds ~
5131+ ?: ?=(%value -.i.ds)
5132+ [name.i.ds $(ds t.ds)]
5133+ $(ds t.ds)
5134+::
5135+++ unique-value-name
5136+ |= [n=term names=(list term)]
5137+ ^- ?
5138+ =/ hits=(list term) (skim names |=(x=term =(x n)))
5139+ ?~ hits |
5140+ ?~ t.hits &
5141+ |
5142+::
5143+++ add-supported-defs
5144+ |= [ds=(list def) env=ienv molds=imolds globals=(list term) externals=iexternals surs=(list term)]
5145+ ^- ienv
5146+ ?~ ds env
5147+ =/ d=def i.ds
5148+ ?: ?=(%mold -.d) $(ds t.ds)
5149+ ?. (unique-value-name name.d globals) $(ds t.ds)
5150+ ?^ (ienv-lookup name.d env) $(ds t.ds)
5151+ =/ result=iresult (infer-fragment val.d env [0 ~ ~ molds globals externals surs ~ |])
5152+ ?: ?=(%| -.result) $(ds t.ds)
5153+ ?: (constrained-capitals caps.state.p.result sub.state.p.result) $(ds t.ds)
5154+ =/ typ=itype (itype-normalize typ.p.result sub.state.p.result)
5155+ ?: (itype-has-avar typ) $(ds t.ds)
5156+ =/ vars=(list @ud) (unique-type-vars (itype-vars typ))
5157+ ?: (gth (lent vars) 26) $(ds t.ds)
5158+ $(ds t.ds, env [[name.d [typ vars]] env])
5159+::
5160+++ resolve-supported-defs
5161+ |= [ds=(list def) molds=imolds globals=(list term) externals=iexternals surs=(list term)]
5162+ ^- ienv
5163+ =/ env=ienv ~
5164+ |-
5165+ =/ next=ienv (add-supported-defs ds env molds globals externals surs)
5166+ ?: =(next env) env
5167+ $(env next)
5168+::
5169++| %union-analysis
5170+::
5171+:: A conservative projection of written molds onto noun shapes. The
5172+:: result %unknown never establishes either overlap or disjointness.
5173+:: Gates, applications, imports and recursive references stay unknown;
5174+:: another position in a cell may nevertheless prove two cases apart.
5175+::
5176++$ upat
5177+ $~ [%unknown ~]
5178+ $% [%unknown ~]
5179+ [%all ~]
5180+ [%empty ~]
5181+ [%atom val=(unit @)]
5182+ [%flag ~]
5183+ [%cell hed=upat tal=upat]
5184+ [%or alts=(list upat)]
5185+ ==
5186++$ urelation ?(%disjoint %overlap %unknown)
5187++$ upair [first=span second=span relation=urelation]
5188+::
5189+++ project-union-mold
5190+ |= [sh=shape molds=imolds seen=(list term)]
5191+ ^- upat
5192+ ?- -.sh
5193+ %aura [%atom ~]
5194+ %noun [%all ~]
5195+ %tvar [%all ~]
5196+ %void [%empty ~]
5197+ :: ? is its two atoms, 0 and 1 (Decisions 2026-10-30).
5198+ %flag [%flag ~]
5199+ %const [%atom `val.lit.sh]
5200+ %cell (project-union-fields fields.sh molds seen)
5201+ %union [%or (turn cases.sh |=(x=shape (project-union-mold x molds seen)))]
5202+ %ref
5203+ ?~ names.sh [%unknown ~]
5204+ ?^ t.names.sh [%unknown ~]
5205+ =/ n=term i.names.sh
5206+ ?: (lien seen |=(x=term =(x n))) [%unknown ~]
5207+ =/ found=(unit shape) (find-simple-mold n molds)
5208+ ?~ found [%unknown ~]
5209+ $(sh u.found, seen [n seen])
5210+ * [%unknown ~]
5211+ ==
5212+::
5213+++ project-union-fields
5214+ |= [fields=(list field) molds=imolds seen=(list term)]
5215+ ^- upat
5216+ ?~ fields [%unknown ~]
5217+ =/ head=upat
5218+ ?- -.i.fields
5219+ %bare (project-union-mold shape.i.fields molds seen)
5220+ %face (project-union-mold shape.i.fields molds seen)
5221+ %pun (project-union-mold [%ref at.i.fields ~[name.i.fields]] molds seen)
5222+ ==
5223+ ?~ t.fields head
5224+ [%cell head $(fields t.fields)]
5225+::
5226+++ union-inhabited
5227+ |= p=upat
5228+ ^- urelation
5229+ ?- -.p
5230+ %unknown %unknown
5231+ %empty %disjoint
5232+ %all %overlap
5233+ %atom %overlap
5234+ %flag %overlap
5235+ %cell
5236+ =/ a=urelation $(p hed.p)
5237+ =/ b=urelation $(p tal.p)
5238+ ?: |(=(%disjoint a) =(%disjoint b)) %disjoint
5239+ ?: |(=(%unknown a) =(%unknown b)) %unknown
5240+ %overlap
5241+ %or
5242+ =/ alts=(list upat) alts.p
5243+ =/ result=urelation %disjoint
5244+ |-
5245+ ?~ alts result
5246+ =/ r=urelation (union-inhabited i.alts)
5247+ ?: =(%overlap r) %overlap
5248+ $(alts t.alts, result ?:(=(%unknown r) %unknown result))
5249+ ==
5250+::
5251+++ union-relate-alts
5252+ |= [alts=(list upat) b=upat]
5253+ ^- urelation
5254+ =/ result=urelation %disjoint
5255+ |-
5256+ ?~ alts result
5257+ =/ r=urelation (union-relate i.alts b)
5258+ ?: =(%overlap r) %overlap
5259+ $(alts t.alts, result ?:(=(%unknown r) %unknown result))
5260+::
5261+++ union-relate
5262+ |= [a=upat b=upat]
5263+ ^- urelation
5264+ ?: |(?=(%empty -.a) ?=(%empty -.b)) %disjoint
5265+ ?: ?=(%or -.a) (union-relate-alts alts.a b)
5266+ ?: ?=(%or -.b) (union-relate-alts alts.b a)
5267+ ?: ?=(%all -.a) (union-inhabited b)
5268+ ?: ?=(%all -.b) (union-inhabited a)
5269+ ?: |(?=(%unknown -.a) ?=(%unknown -.b)) %unknown
5270+ ?: |(&(?=(%cell -.a) |(?=(%atom -.b) ?=(%flag -.b))) &(?=(%cell -.b) |(?=(%atom -.a) ?=(%flag -.a))))
5271+ %disjoint
5272+ ?: &(?=(%flag -.a) ?=(%flag -.b)) %overlap
5273+ ?: &(?=(%flag -.a) ?=(%atom -.b))
5274+ ?~ val.b %overlap
5275+ ?:(|(=(0 u.val.b) =(1 u.val.b)) %overlap %disjoint)
5276+ ?: &(?=(%atom -.a) ?=(%flag -.b))
5277+ ?~ val.a %overlap
5278+ ?:(|(=(0 u.val.a) =(1 u.val.a)) %overlap %disjoint)
5279+ ?: &(?=(%atom -.a) ?=(%atom -.b))
5280+ ?~ val.a %overlap
5281+ ?~ val.b %overlap
5282+ ?:(=(u.val.a u.val.b) %overlap %disjoint)
5283+ ?: &(?=(%cell -.a) ?=(%cell -.b))
5284+ =/ x=urelation $(a hed.a, b hed.b)
5285+ =/ y=urelation $(a tal.a, b tal.b)
5286+ ?: |(=(%disjoint x) =(%disjoint y)) %disjoint
5287+ ?: |(=(%unknown x) =(%unknown y)) %unknown
5288+ %overlap
5289+ %unknown
5290+::
5291+++ union-pairs
5292+ |= [cases=(list shape) molds=imolds]
5293+ ^- (list upair)
5294+ ?~ cases ~
5295+ =/ first=shape i.cases
5296+ =/ a=upat (project-union-mold first molds ~)
5297+ =/ pairs=(list upair)
5298+ %+ turn t.cases
5299+ |= second=shape
5300+ ^- upair
5301+ [at.first at.second (union-relate a (project-union-mold second molds ~))]
5302+ (weld pairs $(cases t.cases))
5303+::
5304+++ show-partial-mold
5305+ |= [d=def molds=imolds]
5306+ ^- @t
5307+ ?> ?=(%mold -.d)
5308+ =/ sh=shape shape.d
5309+ =? sh ?=(%generic -.sh) body.sh
5310+ ?. ?=(%union -.sh) (crip "+$ {(trip name.d)}: not checked")
5311+ =/ pairs=(list upair) (union-pairs cases.sh molds)
5312+ =/ overlapping=(list upair) (skim pairs |=(p=upair =(%overlap relation.p)))
5313+ ?^ overlapping
5314+ =/ p=upair i.overlapping
5315+ (crip "+$ {(trip name.d)}: overlapping cases at {(show-loc beg.first.p)} and {(show-loc beg.second.p)}; mold not checked")
5316+ ?: (lien pairs |=(p=upair =(%unknown relation.p)))
5317+ (crip "+$ {(trip name.d)}: case disjointness unresolved; mold not checked")
5318+ (crip "+$ {(trip name.d)}: cases proven disjoint; mold not checked")
5319+::
5025:: +golden-types: a partial report; it does not claim the module checks
5320:: +golden-types: a partial report; it does not claim the module checks
5026::
5321::
5027++ golden-types
5322++ golden-types
5028 |= [file=path src=@t]
5323 |= [file=path src=@t]
5029 ^- @t
5324 ^- @t
5325+ (golden-types-imports file src ~)
5326+::
5327+:: +golden-types-imports: partial inference with caller-supplied /sur types
5328+::
5329+:: Each entry is [module mold result], where result is exactly the
5330+:: noun returned by +read-mold:jibb-import. Only imports declared with
5331+:: /- are visible. Unrecognized or failed results are unsupported.
5332+::
5333+++ golden-types-imports
5334+ |= [file=path src=@t externals=iexternals]
5335+ ^- @t
5030 =/ parsed (parse file src)
5336 =/ parsed (parse file src)
5031 ?: ?=(%| -.parsed) (show-error src p.parsed)
5337 ?: ?=(%| -.parsed) (show-error src p.parsed)
5032 =/ ds=(list def) defs.p.parsed
5338 =/ ds=(list def) defs.p.parsed
5033− =/ env=ienv ~
5339+ =/ molds=imolds (collect-simple-molds ds)
5340+ =/ globals=(list term) (global-value-names ds)
5341+ =/ surs=(list term) (collect-sur-imports imports.p.parsed)
5342+ =/ env=ienv (resolve-supported-defs ds molds globals externals surs)
5034 =/ lines=(list @t) ~
5343 =/ lines=(list @t) ~
5035 |-
5344 |-
5036 ?~ ds (of-wain:format ['partial inference; module not checked' (flop lines)])
5345 ?~ ds (of-wain:format ['partial inference; module not checked' (flop lines)])
5037 =/ d=def i.ds
5346 =/ d=def i.ds
5038 ?: ?=(%mold -.d)
5347 ?: ?=(%mold -.d)
5039− $(ds t.ds, lines [(crip "+$ {(trip name.d)}: not checked") lines])
5348+ $(ds t.ds, lines [(show-partial-mold d molds) lines])
5040− ?: ?=(^ (ienv-lookup name.d env))
5349+ ?. (unique-value-name name.d globals)
5041 $(ds t.ds, lines [(crip "++ {(trip name.d)}: name already in scope") lines])
5350 $(ds t.ds, lines [(crip "++ {(trip name.d)}: name already in scope") lines])
5042− =/ result=iresult (infer-fragment val.d env [0 ~ ~])
5351+ =/ result=iresult (infer-fragment val.d env [0 ~ ~ molds globals externals surs ~ |])
5043 ?: ?=(%| -.result)
5352 ?: ?=(%| -.result)
5044 $(ds t.ds, lines [(crip "++ {(trip name.d)}: {p.result}") lines])
5353 $(ds t.ds, lines [(crip "++ {(trip name.d)}: {p.result}") lines])
5045 ?: (constrained-capitals caps.state.p.result sub.state.p.result)
5354 ?: (constrained-capitals caps.state.p.result sub.state.p.result)
@@ -5052,5 +5361,5 @@
5052 $(ds t.ds, lines [(crip "++ {(trip name.d)}: too many variables for partial printer") lines])
5361 $(ds t.ds, lines [(crip "++ {(trip name.d)}: too many variables for partial printer") lines])
5053 =/ printable=itype (canonical-itype typ vars)
5362 =/ printable=itype (canonical-itype typ vars)
5054 =/ line=@t (crip "++ {(trip name.d)}: {(show-itype printable ~)}")
5363 =/ line=@t (crip "++ {(trip name.d)}: {(show-itype printable ~)}")
5055− $(ds t.ds, env [[name.d [typ vars]] env], lines [line lines])
5364+ $(ds t.ds, lines [line lines])
5056--
5365--
jibb-dev/lib/jibb/prelude.jibb+34
@@ -13,3 +13,37 @@
13 ?- b
13 ?- b
14 %.y %.n
14 %.y %.n
15 %.n %.y
15 %.n %.y
16+
17++$ list |$ [A]
18+ ~
19+ [i=A t=(list A)]
20+
21++$ unit |$ [A]
22+ ~
23+ [~ u=A]
24+
25+++ fall |= args=[(unit A) A]
26+ ?- args
27+ [maybe fallback]
28+ ?- maybe
29+ ~ fallback
30+ [~ value] value
31+
32+++ need |= maybe=(unit A)
33+ ?- maybe
34+ ~ !!
35+ [~ value] value
36+
37+++ weld |= args=[(list A) (list A)]
38+ ?- args
39+ [xs ys]
40+ ?- xs
41+ ~ ys
42+ [item rest] [item (weld rest ys)]
43+
44+++ turn |= args=[(list A) $-(A B)]
45+ ?- args
46+ [xs f]
47+ ?- xs
48+ ~ ~
49+ [item rest] [(f item) (turn rest f)]
tests/clay-fixtures/build.txtnew file+11
@@ -0,0 +1,11 @@
1+=/ m (strand ,vase)
2+;< =bowl:spider bind:m get-bowl
3+=/ now=@da now.bowl
4+=/ a=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/sur/todo/hoon)
5+=/ b=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/sur/blog/hoon)
6+=/ c=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/mar/todo-action/hoon)
7+=/ d=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/mar/todos/hoon)
8+=/ e=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/mar/todo-update/hoon)
9+=/ f=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/mar/todo-item/hoon)
10+=/ g=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/mar/posts/hoon)
11+(pure:m !>([?=([%core *] -.a) ?=([%core *] -.b) ?=([%core *] -.c) ?=([%core *] -.d) ?=([%core *] -.e) ?=([%core *] -.f) ?=([%core *] -.g)]))
tests/clay-fixtures/expected.txtnew file+1
@@ -0,0 +1 @@
1+[%.y %.y %.y %.y %.y %.y %.y]
tests/golden/inline-import-dollar-mark-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: `/%` names a type after its mark, and names are lowercase letters, digits and hyphens starting with a letter.
2+tests: the `%$` term is a value and cannot be used as a mark name.
3+expect: error at 1:6; a mark must be a term made from a name
tests/golden/inline-import-dollar-mark-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1+/% %$
tests/golden/inline-import-dollar-mark-bad/tokens.txtnew file+3
@@ -0,0 +1,3 @@
1+1:1 glyph /%
2+1:5 lit %$
3+1:7 NEWLINE
tests/golden/inline-import-dollar-mark-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-import-dollar-mark-bad/source.jibb:1:6: expected a mark's term, as `%todo-action`, found `%$`
2+/% %$
3+ ^
tests/golden/inline-mold-add/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Molds: "`add` takes `[@ @]` and returns `@`, all one aura, so `(add n 1)` with `n=@ud` is a `@ud`."
1+source: Grammar tab, Molds: "`add` takes `[A A]` and returns `A`, with `A` constrained to atoms, so `(add n 1)` with `n=@ud` is a `@ud`."
2tests: a cell of bare atoms, and the call in a gate with the sample n=@ud
2tests: a cell of bare atoms, and the call in a gate with the sample n=@ud
3expect: parses
3expect: parses
tests/golden/inline-term-numeric/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`, which molds and patterns take
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`, which molds and patterns take
2tests: numeric terms as a union's constant molds and as patterns
2tests: numeric terms as a union's constant molds and as patterns
3expect: parses: code is the union of the constants %200, %404 and %1.000, and label's arms match each
3expect: parses: code is the union of the constants %200, %404 and %1.000, and label's arms match each
tests/golden/lex-term-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Literals table, the Term row: `%add`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Grammar tab, Literals table, the Term row: `%add`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a term whose name has a capital letter
2tests: a term whose name has a capital letter
3expect: error at 1:7 — a term is `%` and a name, which starts with a lowercase letter
3expect: error at 1:7 — a term is `%` and a name, which starts with a lowercase letter
tests/golden/lex-term-bad-10/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term written as a binary number, which Hoon reads and Jibb's numbers leave out
2tests: a numeric term written as a binary number, which Hoon reads and Jibb's numbers leave out
3expect: error at 1:8 — a numeric term's number is a decimal (Decisions), not a number of another aura; %0 alone is a term, so the b is the first character that can't go on
3expect: error at 1:8 — a numeric term's number is a decimal (Decisions), not a number of another aura; %0 alone is a term, so the b is the first character that can't go on
tests/golden/lex-term-bad-11/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`; the EBNF: mold's `term`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`; the EBNF: mold's `term`
2tests: a numeric term cut short where a mold ends its line
2tests: a numeric term cut short where a mold ends its line
3expect: error at 1:10, just past the run, as `++ x %1.0` — %1 is a mold, and `+$ x %1.0` could still go on to `+$ x %1.000`, so nothing fails before the end of the line; the error stays where the lexer found it, not at the %, which the mold already took
3expect: error at 1:10, just past the run, as `++ x %1.0` — %1 is a mold, and `+$ x %1.0` could still go on to `+$ x %1.000`, so nothing fails before the end of the line; the error stays where the lexer found it, not at the %, which the mold already took
tests/golden/lex-term-bad-12/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`; Decisions, 2026-10-30: "Open molds: A mold's `[` and `(` may be left open at line end, one field or mold per deeper line; a `(` keeps the mold's name on its first line"
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`; Decisions, 2026-10-30: "Open molds: A mold's `[` and `(` may be left open at line end, one field or mold per deeper line; a `(` keeps the mold's name on its first line"
2tests: a numeric term cut short as the one field of an open mold bracket's line
2tests: a numeric term cut short as the one field of an open mold bracket's line
3expect: error at 2:9, just past the run — the field a=%1 could still go on to a=%1.000, so nothing fails before the end of line 2
3expect: error at 2:9, just past the run — the field a=%1 could still go on to a=%1.000, so nothing fails before the end of line 2
tests/golden/lex-term-bad-13/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`; the EBNF: `definition = "+$" name [ generic ] ( mold | cases )`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`; the EBNF: `definition = "+$" name [ generic ] ( mold | cases )`
2tests: a hexadecimal numeric term as the mold on the line below its +$
2tests: a hexadecimal numeric term as the mold on the line below its +$
3expect: error at 2:5, the x — %0 alone is a term, and a mold, and nothing goes on from its 0, so the x is the first character that can't be valid, as in `++ x %0x1f` (lex-term-bad-8)
3expect: error at 2:5, the x — %0 alone is a term, and a mold, and nothing goes on from its 0, so the x is the first character that can't be valid, as in `++ x %0x1f` (lex-term-bad-8)
tests/golden/lex-term-bad-14/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term of 0 and a letter that Hoon reads as no aura at all
2tests: a numeric term of 0 and a letter that Hoon reads as no aura at all
3expect: error at 1:8, the x: %0 alone is a term, and nothing continues it with a letter, as for %0x1f (lex-term-bad-8), so the x is the first character where the text stops being a valid module (library 2.0, 2.6), though the number 0xg fails one character later, at the g
3expect: error at 1:8, the x: %0 alone is a term, and nothing continues it with a letter, as for %0x1f (lex-term-bad-8), so the x is the first character where the text stops being a valid module (library 2.0, 2.6), though the number 0xg fails one character later, at the g
tests/golden/lex-term-bad-15/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term of 0 and the letter of a hexadecimal number, with nothing after the letter
2tests: a numeric term of 0 and the letter of a hexadecimal number, with nothing after the letter
3expect: error at 1:8, the x: %0 alone is a term, and nothing continues it with a letter, as for %0x1f (lex-term-bad-8) and %0xg (lex-term-bad-14), so the x is the first character where the text stops being a valid module (library 2.0, 2.6), though the number 0x fails only at the end of its line
3expect: error at 1:8, the x: %0 alone is a term, and nothing continues it with a letter, as for %0x1f (lex-term-bad-8) and %0xg (lex-term-bad-14), so the x is the first character where the text stops being a valid module (library 2.0, 2.6), though the number 0x fails only at the end of its line
tests/golden/lex-term-bad-2/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Literals table, the Term row: `%add`, `%1.000`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`; Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"
1+source: Grammar tab, Literals table, the Term row: `%add`, `%1.000`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`; Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"
2tests: a numeric term followed by a letter
2tests: a numeric term followed by a letter
3expect: error at 1:8 — a numeric term is `%` and a decimal (Decisions), read as a number literal is, and 9a fails at its a, as `++ x 9a` fails at 1:7, one column earlier for want of the %
3expect: error at 1:8 — a numeric term is `%` and a decimal (Decisions), read as a number literal is, and 9a fails at its a, as `++ x 9a` fails at 1:7, one column earlier for want of the %
tests/golden/lex-term-bad-3/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Literals table, the Term row: `%add`, `%1.000`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`; Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"
1+source: Grammar tab, Literals table, the Term row: `%add`, `%1.000`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`; Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"
2tests: numeric terms with and without a dot group, %1.000 and %1000
2tests: numeric terms with and without a dot group, %1.000 and %1000
3expect: error at 2:10 — %1.000 is a term, `%` and a decimal as Hoon writes it, so line 1 parses; %1000 is not (Decisions): its digits don't group in threes, so it fails at its fourth digit, where `++ y 1000` fails, one column later for the %
3expect: error at 2:10 — %1.000 is a term, `%` and a decimal as Hoon writes it, so line 1 parses; %1000 is not (Decisions): its digits don't group in threes, so it fails at its fourth digit, where `++ y 1000` fails, one column later for the %
tests/golden/lex-term-bad-4/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term with leading zeros
2tests: a numeric term with leading zeros
3expect: error at 1:8 — a decimal has no leading zero (Decisions): %0 alone is a term, so its second 0 is the first character that can't go on, as `++ x 007` fails at 1:7
3expect: error at 1:8 — a decimal has no leading zero (Decisions): %0 alone is a term, so its second 0 is the first character that can't go on, as `++ x 007` fails at 1:7
tests/golden/lex-term-bad-5/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term of a 0 and another digit
2tests: a numeric term of a 0 and another digit
3expect: error at 1:8 — a decimal that starts with 0 is that 0 alone (Decisions), so after %0 the 1 is where the text stops being valid, as `++ x 01` fails at 1:7
3expect: error at 1:8 — a decimal that starts with 0 is that 0 alone (Decisions), so after %0 the 1 is where the text stops being valid, as `++ x 01` fails at 1:7
tests/golden/lex-term-bad-6/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term whose dot group is short
2tests: a numeric term whose dot group is short
3expect: error at 1:10 — a dot in a decimal is followed by three digits (Decisions), and the line ends after one, so the text stops being valid at the end of the line, as `++ x 1.0` fails at 1:9
3expect: error at 1:10 — a dot in a decimal is followed by three digits (Decisions), and the line ends after one, so the text stops being valid at the end of the line, as `++ x 1.0` fails at 1:9
tests/golden/lex-term-bad-7/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term ending in a dot
2tests: a numeric term ending in a dot
3expect: error at 1:13 — a dot in a decimal is followed by three digits (Decisions), and the line ends after the dot, so the text stops being valid at the end of the line, as `++ x 1.000.` fails at 1:12
3expect: error at 1:13 — a dot in a decimal is followed by three digits (Decisions), and the line ends after the dot, so the text stops being valid at the end of the line, as `++ x 1.000.` fails at 1:12
tests/golden/lex-term-bad-8/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term written as a hexadecimal number
2tests: a numeric term written as a hexadecimal number
3expect: error at 1:8 — a numeric term's number is a decimal (Decisions), not a number of another aura; %0 alone is a term, so the x is the first character that can't go on
3expect: error at 1:8 — a numeric term's number is a decimal (Decisions), not a number of another aura; %0 alone is a term, so the x is the first character that can't go on
tests/golden/lex-term-bad-9/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`
1+source: Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2tests: a numeric term written as a base-32 number
2tests: a numeric term written as a base-32 number
3expect: error at 1:8 — a numeric term's number is a decimal (Decisions), not a number of another aura; %0 alone is a term, so the v is the first character that can't go on
3expect: error at 1:8 — a numeric term's number is a decimal (Decisions), not a number of another aura; %0 alone is a term, so the v is the first character that can't go on
tests/golden/lex-term-dollar/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar, Literals table, Term row: `%add`, `%1.000`, `%$`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`
2+tests: `%$` as a literal, a union case tag, a pattern, and a constructor
3+expect: parses; the term `%$` keeps its source spelling
tests/golden/lex-term-dollar/source.jibbnew file+9
@@ -0,0 +1,9 @@
1++$ cash
2+ [%$ amount=@ud]
3+ %other
4+++ empty-tag %$
5+++ identify |= c=cash
6+ ?- c
7+ [%$ amount] amount
8+ %other 0
9+++ make |=%$
tests/golden/lex-term-dollar/tokens.txtnew file+43
@@ -0,0 +1,43 @@
1+1:1 glyph +$
2+1:4 name cash
3+2:3 INDENT
4+2:3 glyph [
5+2:4 tight lit %$
6+2:7 name amount
7+2:13 tight glyph =
8+2:14 tight aura @ud
9+2:17 tight glyph ]
10+3:3 NEWLINE
11+3:3 lit %other
12+4:1 DEDENT
13+4:1 NEWLINE
14+4:1 glyph ++
15+4:4 name empty-tag
16+4:14 lit %$
17+5:1 NEWLINE
18+5:1 glyph ++
19+5:4 name identify
20+5:13 glyph |=
21+5:16 name c
22+5:17 tight glyph =
23+5:18 tight name cash
24+6:3 INDENT
25+6:3 glyph ?-
26+6:6 name c
27+7:5 INDENT
28+7:5 glyph [
29+7:6 tight lit %$
30+7:9 name amount
31+7:15 tight glyph ]
32+7:17 name amount
33+8:5 NEWLINE
34+8:5 lit %other
35+8:12 lit 0
36+9:1 DEDENT
37+9:1 DEDENT
38+9:1 NEWLINE
39+9:1 glyph ++
40+9:4 name make
41+9:9 glyph |=
42+9:11 tight lit %$
43+9:13 NEWLINE
tests/golden/lex-term-dollar/tree.txtnew file+19
@@ -0,0 +1,19 @@
1+(module
2+ (mold 1:1 cash
3+ (union 2:3
4+ (cell 2:3
5+ (const 2:4 %$)
6+ (face 2:7 amount (aura 2:14 @ud)))
7+ (const 3:3 %other)))
8+ (value 4:1 empty-tag (lit 4:14 %$))
9+ (value 5:1 identify
10+ (gate 5:13
11+ (face 5:16 c (ref 5:18 cash))
12+ (body 6:3
13+ (branch 6:3
14+ (wing 6:6 c)
15+ (arm 7:5
16+ (cell 7:5 (lit 7:6 %$) (bind 7:9 amount))
17+ (wing 7:17 amount))
18+ (arm 8:5 (lit 8:5 %other) (lit 8:12 0))))))
19+ (value 9:1 make (ctor 9:9 %$)))
tests/golden/lex-term-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Literals table, the Term row: `%add`, `%1.000`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" ;`; Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"
1+source: Grammar tab, Literals table, the Term row: `%add`, `%1.000`; the EBNF: `term = "%" name | "%" decimal | "%&" | "%|" | "%$" ;`; Decisions, 2026-10-30: "Numeric terms: `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors"
2tests: terms of a name, of a decimal in one group and in groups of three joined by dots, and %& and %|
2tests: terms of a name, of a decimal in one group and in groups of three joined by dots, and %& and %|
3expect: parses; a numeric term prints as written, as (lit 7:6 %1.000)
3expect: parses; a numeric term prints as written, as (lit 7:6 %1.000)
tests/golden/prelude-list-unit/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Overview, Prelude: "Hoon's standard library regrouped, written in Jibb"; its data molds include `unit` and `list`, its unit helpers include `fall` and `need`, and its list helpers include `weld` and `turn`.
2+tests: The current prelude's generic recursive list and unit molds and its Jibb-written helpers; the partial inference report does not yet resolve these molds or check recursive gates.
3+expect: parses
4+expect-types: a partial inference report, not a checked module
tests/golden/prelude-list-unit/source.jibbnew file+49
@@ -0,0 +1,49 @@
1+:: Initial prelude functions. The rest of the inventory is still to come.
2+++ same |= x=A x
3+
4+++ head |= p=[A B]
5+ ?- p
6+ [a b] a
7+
8+++ tail |= p=[A B]
9+ ?- p
10+ [a b] b
11+
12+++ not |= b=?
13+ ?- b
14+ %.y %.n
15+ %.n %.y
16+
17++$ list |$ [A]
18+ ~
19+ [i=A t=(list A)]
20+
21++$ unit |$ [A]
22+ ~
23+ [~ u=A]
24+
25+++ fall |= args=[(unit A) A]
26+ ?- args
27+ [maybe fallback]
28+ ?- maybe
29+ ~ fallback
30+ [~ value] value
31+
32+++ need |= maybe=(unit A)
33+ ?- maybe
34+ ~ !!
35+ [~ value] value
36+
37+++ weld |= args=[(list A) (list A)]
38+ ?- args
39+ [xs ys]
40+ ?- xs
41+ ~ ys
42+ [item rest] [item (weld rest ys)]
43+
44+++ turn |= args=[(list A) $-(A B)]
45+ ?- args
46+ [xs f]
47+ ?- xs
48+ ~ ~
49+ [item rest] [(f item) (turn rest f)]
tests/golden/prelude-list-unit/tokens.txtnew file+265
@@ -0,0 +1,265 @@
1+2:1 glyph ++
2+2:4 name same
3+2:9 glyph |=
4+2:12 name x
5+2:13 tight glyph =
6+2:14 tight tvar A
7+2:16 name x
8+4:1 NEWLINE
9+4:1 glyph ++
10+4:4 name head
11+4:9 glyph |=
12+4:12 name p
13+4:13 tight glyph =
14+4:14 tight glyph [
15+4:15 tight tvar A
16+4:17 tvar B
17+4:18 tight glyph ]
18+5:3 INDENT
19+5:3 glyph ?-
20+5:6 name p
21+6:5 INDENT
22+6:5 glyph [
23+6:6 tight name a
24+6:8 name b
25+6:9 tight glyph ]
26+6:11 name a
27+8:1 DEDENT
28+8:1 DEDENT
29+8:1 NEWLINE
30+8:1 glyph ++
31+8:4 name tail
32+8:9 glyph |=
33+8:12 name p
34+8:13 tight glyph =
35+8:14 tight glyph [
36+8:15 tight tvar A
37+8:17 tvar B
38+8:18 tight glyph ]
39+9:3 INDENT
40+9:3 glyph ?-
41+9:6 name p
42+10:5 INDENT
43+10:5 glyph [
44+10:6 tight name a
45+10:8 name b
46+10:9 tight glyph ]
47+10:11 name b
48+12:1 DEDENT
49+12:1 DEDENT
50+12:1 NEWLINE
51+12:1 glyph ++
52+12:4 name not
53+12:8 glyph |=
54+12:11 name b
55+12:12 tight glyph =
56+12:13 tight glyph ?
57+13:3 INDENT
58+13:3 glyph ?-
59+13:6 name b
60+14:5 INDENT
61+14:5 lit %.y
62+14:9 lit %.n
63+15:5 NEWLINE
64+15:5 lit %.n
65+15:9 lit %.y
66+17:1 DEDENT
67+17:1 DEDENT
68+17:1 NEWLINE
69+17:1 glyph +$
70+17:4 name list
71+17:9 glyph |$
72+17:12 glyph [
73+17:13 tight tvar A
74+17:14 tight glyph ]
75+18:3 INDENT
76+18:3 lit ~
77+19:3 NEWLINE
78+19:3 glyph [
79+19:4 tight name i
80+19:5 tight glyph =
81+19:6 tight tvar A
82+19:8 name t
83+19:9 tight glyph =
84+19:10 tight glyph (
85+19:11 tight name list
86+19:16 tvar A
87+19:17 tight glyph )
88+19:18 tight glyph ]
89+21:1 DEDENT
90+21:1 NEWLINE
91+21:1 glyph +$
92+21:4 name unit
93+21:9 glyph |$
94+21:12 glyph [
95+21:13 tight tvar A
96+21:14 tight glyph ]
97+22:3 INDENT
98+22:3 lit ~
99+23:3 NEWLINE
100+23:3 glyph [
101+23:4 tight lit ~
102+23:6 name u
103+23:7 tight glyph =
104+23:8 tight tvar A
105+23:9 tight glyph ]
106+25:1 DEDENT
107+25:1 NEWLINE
108+25:1 glyph ++
109+25:4 name fall
110+25:9 glyph |=
111+25:12 name args
112+25:16 tight glyph =
113+25:17 tight glyph [
114+25:18 tight glyph (
115+25:19 tight name unit
116+25:24 tvar A
117+25:25 tight glyph )
118+25:27 tvar A
119+25:28 tight glyph ]
120+26:3 INDENT
121+26:3 glyph ?-
122+26:6 name args
123+27:5 INDENT
124+27:5 glyph [
125+27:6 tight name maybe
126+27:12 name fallback
127+27:20 tight glyph ]
128+28:7 INDENT
129+28:7 glyph ?-
130+28:10 name maybe
131+29:9 INDENT
132+29:9 lit ~
133+29:11 name fallback
134+30:9 NEWLINE
135+30:9 glyph [
136+30:10 tight lit ~
137+30:12 name value
138+30:17 tight glyph ]
139+30:19 name value
140+32:1 DEDENT
141+32:1 DEDENT
142+32:1 DEDENT
143+32:1 DEDENT
144+32:1 NEWLINE
145+32:1 glyph ++
146+32:4 name need
147+32:9 glyph |=
148+32:12 name maybe
149+32:17 tight glyph =
150+32:18 tight glyph (
151+32:19 tight name unit
152+32:24 tvar A
153+32:25 tight glyph )
154+33:3 INDENT
155+33:3 glyph ?-
156+33:6 name maybe
157+34:5 INDENT
158+34:5 lit ~
159+34:7 glyph !!
160+35:5 NEWLINE
161+35:5 glyph [
162+35:6 tight lit ~
163+35:8 name value
164+35:13 tight glyph ]
165+35:15 name value
166+37:1 DEDENT
167+37:1 DEDENT
168+37:1 NEWLINE
169+37:1 glyph ++
170+37:4 name weld
171+37:9 glyph |=
172+37:12 name args
173+37:16 tight glyph =
174+37:17 tight glyph [
175+37:18 tight glyph (
176+37:19 tight name list
177+37:24 tvar A
178+37:25 tight glyph )
179+37:27 glyph (
180+37:28 tight name list
181+37:33 tvar A
182+37:34 tight glyph )
183+37:35 tight glyph ]
184+38:3 INDENT
185+38:3 glyph ?-
186+38:6 name args
187+39:5 INDENT
188+39:5 glyph [
189+39:6 tight name xs
190+39:9 name ys
191+39:11 tight glyph ]
192+40:7 INDENT
193+40:7 glyph ?-
194+40:10 name xs
195+41:9 INDENT
196+41:9 lit ~
197+41:11 name ys
198+42:9 NEWLINE
199+42:9 glyph [
200+42:10 tight name item
201+42:15 name rest
202+42:19 tight glyph ]
203+42:21 glyph [
204+42:22 tight name item
205+42:27 glyph (
206+42:28 tight name weld
207+42:33 name rest
208+42:38 name ys
209+42:40 tight glyph )
210+42:41 tight glyph ]
211+44:1 DEDENT
212+44:1 DEDENT
213+44:1 DEDENT
214+44:1 DEDENT
215+44:1 NEWLINE
216+44:1 glyph ++
217+44:4 name turn
218+44:9 glyph |=
219+44:12 name args
220+44:16 tight glyph =
221+44:17 tight glyph [
222+44:18 tight glyph (
223+44:19 tight name list
224+44:24 tvar A
225+44:25 tight glyph )
226+44:27 glyph $-(
227+44:30 tight tvar A
228+44:32 tvar B
229+44:33 tight glyph )
230+44:34 tight glyph ]
231+45:3 INDENT
232+45:3 glyph ?-
233+45:6 name args
234+46:5 INDENT
235+46:5 glyph [
236+46:6 tight name xs
237+46:9 name f
238+46:10 tight glyph ]
239+47:7 INDENT
240+47:7 glyph ?-
241+47:10 name xs
242+48:9 INDENT
243+48:9 lit ~
244+48:11 lit ~
245+49:9 NEWLINE
246+49:9 glyph [
247+49:10 tight name item
248+49:15 name rest
249+49:19 tight glyph ]
250+49:21 glyph [
251+49:22 tight glyph (
252+49:23 tight name f
253+49:25 name item
254+49:29 tight glyph )
255+49:31 glyph (
256+49:32 tight name turn
257+49:37 name rest
258+49:42 name f
259+49:43 tight glyph )
260+49:44 tight glyph ]
261+49:45 DEDENT
262+49:45 DEDENT
263+49:45 DEDENT
264+49:45 DEDENT
265+49:45 NEWLINE
tests/golden/prelude-list-unit/tree.txtnew file+120
@@ -0,0 +1,120 @@
1+(module
2+ (value 2:1 same
3+ (gate 2:9
4+ (face 2:12 x (tvar 2:14 A))
5+ (wing 2:16 x)))
6+ (value 4:1 head
7+ (gate 4:9
8+ (face 4:12 p
9+ (cell 4:14 (tvar 4:15 A) (tvar 4:17 B)))
10+ (body 5:3
11+ (branch 5:3
12+ (wing 5:6 p)
13+ (arm 6:5
14+ (cell 6:5 (bind 6:6 a) (bind 6:8 b))
15+ (wing 6:11 a))))))
16+ (value 8:1 tail
17+ (gate 8:9
18+ (face 8:12 p
19+ (cell 8:14 (tvar 8:15 A) (tvar 8:17 B)))
20+ (body 9:3
21+ (branch 9:3
22+ (wing 9:6 p)
23+ (arm 10:5
24+ (cell 10:5 (bind 10:6 a) (bind 10:8 b))
25+ (wing 10:11 b))))))
26+ (value 12:1 not
27+ (gate 12:8
28+ (face 12:11 b (flag 12:13))
29+ (body 13:3
30+ (branch 13:3
31+ (wing 13:6 b)
32+ (arm 14:5 (lit 14:5 %.y) (lit 14:9 %.n))
33+ (arm 15:5 (lit 15:5 %.n) (lit 15:9 %.y))))))
34+ (mold 17:1 list
35+ (generic 17:9 A
36+ (union 18:3
37+ (const 18:3 ~)
38+ (cell 19:3
39+ (face 19:4 i (tvar 19:6 A))
40+ (face 19:8 t
41+ (apply 19:10 list (tvar 19:16 A)))))))
42+ (mold 21:1 unit
43+ (generic 21:9 A
44+ (union 22:3
45+ (const 22:3 ~)
46+ (cell 23:3
47+ (const 23:4 ~)
48+ (face 23:6 u (tvar 23:8 A))))))
49+ (value 25:1 fall
50+ (gate 25:9
51+ (face 25:12 args
52+ (cell 25:17
53+ (apply 25:18 unit (tvar 25:24 A))
54+ (tvar 25:27 A)))
55+ (body 26:3
56+ (branch 26:3
57+ (wing 26:6 args)
58+ (arm 27:5
59+ (cell 27:5 (bind 27:6 maybe) (bind 27:12 fallback))
60+ (body 28:7
61+ (branch 28:7
62+ (wing 28:10 maybe)
63+ (arm 29:9 (lit 29:9 ~) (wing 29:11 fallback))
64+ (arm 30:9
65+ (cell 30:9 (lit 30:10 ~) (bind 30:12 value))
66+ (wing 30:19 value)))))))))
67+ (value 32:1 need
68+ (gate 32:9
69+ (face 32:12 maybe
70+ (apply 32:18 unit (tvar 32:24 A)))
71+ (body 33:3
72+ (branch 33:3
73+ (wing 33:6 maybe)
74+ (arm 34:5 (lit 34:5 ~) (crash 34:7))
75+ (arm 35:5
76+ (cell 35:5 (lit 35:6 ~) (bind 35:8 value))
77+ (wing 35:15 value))))))
78+ (value 37:1 weld
79+ (gate 37:9
80+ (face 37:12 args
81+ (cell 37:17
82+ (apply 37:18 list (tvar 37:24 A))
83+ (apply 37:27 list (tvar 37:33 A))))
84+ (body 38:3
85+ (branch 38:3
86+ (wing 38:6 args)
87+ (arm 39:5
88+ (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89+ (body 40:7
90+ (branch 40:7
91+ (wing 40:10 xs)
92+ (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93+ (arm 42:9
94+ (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95+ (tuple 42:21
96+ (wing 42:22 item)
97+ (group 42:27
98+ (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99+ (value 44:1 turn
100+ (gate 44:9
101+ (face 44:12 args
102+ (cell 44:17
103+ (apply 44:18 list (tvar 44:24 A))
104+ (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105+ (body 45:3
106+ (branch 45:3
107+ (wing 45:6 args)
108+ (arm 46:5
109+ (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110+ (body 47:7
111+ (branch 47:7
112+ (wing 47:10 xs)
113+ (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114+ (arm 49:9
115+ (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116+ (tuple 49:21
117+ (group 49:22
118+ (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119+ (group 49:31
120+ (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f)))))))))))))
tests/golden/prelude-list-unit/types.txtnew file+11
@@ -0,0 +1,11 @@
1+partial inference; module not checked
2+++ same: $-(A A)
3+++ head: $-([A B] A)
4+++ tail: $-([A B] B)
5+++ not: $-(? ?)
6++$ list: cases proven disjoint; mold not checked
7++$ unit: cases proven disjoint; mold not checked
8+++ fall: sample mold is not supported by partial inference
9+++ need: sample mold is not supported by partial inference
10+++ weld: sample mold is not supported by partial inference
11+++ turn: sample mold is not supported by partial inference
tests/golden/types-partial-apply/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: partial inference infers an applied gate through unification; the report does not claim the module checks.
2tests: partial inference infers an applied gate through unification; the report does not claim the module checks.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-aura-generalization/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: partial inference: a cast fixes the aura of a number passed through a polymorphic identity.
2tests: partial inference: a cast fixes the aura of a number passed through a polymorphic identity.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-aura/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: partial inference: an open numeric aura, an aura fixed by a cast, and an incompatible cast.
2tests: partial inference: an open numeric aura, an aura fixed by a cast, and an incompatible cast.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-bare-atom/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: `@` is an unrestricted bare atom; each occurrence is independent.
2+tests: partial inference does not specialize a bare atom to the aura supplied by a call.
3+expect: parses; type analysis reports both samples as unsupported
tests/golden/types-partial-bare-atom/source.jibbnew file+2
@@ -0,0 +1,2 @@
1+++ f (|=(x=@ x) 0x1f)
2+++ g |= x=@ x
tests/golden/types-partial-bare-atom/tokens.txtnew file+20
@@ -0,0 +1,20 @@
1+1:1 glyph ++
2+1:4 name f
3+1:6 glyph (
4+1:7 tight glyph |=(
5+1:10 tight name x
6+1:11 tight glyph =
7+1:12 tight aura @
8+1:14 name x
9+1:15 tight glyph )
10+1:17 lit 0x1f
11+1:21 tight glyph )
12+2:1 NEWLINE
13+2:1 glyph ++
14+2:4 name g
15+2:6 glyph |=
16+2:9 name x
17+2:10 tight glyph =
18+2:11 tight aura @
19+2:13 name x
20+2:14 NEWLINE
tests/golden/types-partial-bare-atom/tree.txtnew file+12
@@ -0,0 +1,12 @@
1+(module
2+ (value 1:1 f
3+ (group 1:6
4+ (call 1:7
5+ (gate-wide 1:7
6+ (face 1:10 x (aura 1:12 @))
7+ (wing 1:14 x))
8+ (lit 1:17 0x1f))))
9+ (value 2:1 g
10+ (gate 2:6
11+ (face 2:9 x (aura 2:11 @))
12+ (wing 2:13 x))))
tests/golden/types-partial-bare-atom/types.txtnew file+3
@@ -0,0 +1,3 @@
1+partial inference; module not checked
2+++ f: sample mold is not supported by partial inference
3+++ g: sample mold is not supported by partial inference
tests/golden/types-partial-dependency-chain/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar tab, Modules: "Names may refer to each other in any order, and no name may shadow one already in scope, imports and the prelude included."
2+tests: a multi-hop forward dependency resolves before each use.
3+expect: parses
4+expect-types: a partial inference report, not a checked module
tests/golden/types-partial-dependency-chain/source.jibbnew file+3
@@ -0,0 +1,3 @@
1+++ third second
2+++ second first
3+++ first "hi"
tests/golden/types-partial-dependency-chain/tokens.txtnew file+12
@@ -0,0 +1,12 @@
1+1:1 glyph ++
2+1:4 name third
3+1:10 name second
4+2:1 NEWLINE
5+2:1 glyph ++
6+2:4 name second
7+2:11 name first
8+3:1 NEWLINE
9+3:1 glyph ++
10+3:4 name first
11+3:10 str "hi"
12+3:14 NEWLINE
tests/golden/types-partial-dependency-chain/tree.txtnew file+4
@@ -0,0 +1,4 @@
1+(module
2+ (value 1:1 third (wing 1:10 second))
3+ (value 2:1 second (wing 2:11 first))
4+ (value 3:1 first (str 3:10 "hi")))
tests/golden/types-partial-dependency-chain/types.txtnew file+4
@@ -0,0 +1,4 @@
1+partial inference; module not checked
2+++ third: @t
3+++ second: @t
4+++ first: @t
tests/golden/types-partial-explicit-capital/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: an explicit capital used in a cast to a concrete aura is reported as unsupported until rigid variables are implemented.
2tests: an explicit capital used in a cast to a concrete aura is reported as unsupported until rigid variables are implemented.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-forward/about.txt+2−2
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2−tests: partial inference: a forward reference remains unsupported.
2+tests: partial inference: a forward reference resolves in dependency order.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-forward/types.txt+1−1
@@ -1,3 +1,3 @@
1partial inference; module not checked
1partial inference; module not checked
2−++ first: name is not available to partial inference
2+++ first: @t
3++ second: @t
3++ second: @t
tests/golden/types-partial-generalization/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: partial inference: a generalized identity gate at cord and ship types.
2tests: partial inference: a generalized identity gate at cord and ship types.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-identity/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: partial inference infers the identity gate; the report does not claim the module checks.
2tests: partial inference infers the identity gate; the report does not claim the module checks.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-mold-bare-aura/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2+tests: a bare-aura mold is explicitly unsupported by partial inference.
3+expect: parses
4+expect-types: a partial inference report, not a checked module
tests/golden/types-partial-mold-bare-aura/source.jibbnew file+2
@@ -0,0 +1,2 @@
1++$ vague @
2+++ datum ^- vague 1
tests/golden/types-partial-mold-bare-aura/tokens.txtnew file+10
@@ -0,0 +1,10 @@
1+1:1 glyph +$
2+1:4 name vague
3+1:10 aura @
4+2:1 NEWLINE
5+2:1 glyph ++
6+2:4 name datum
7+2:10 glyph ^-
8+2:13 name vague
9+2:19 lit 1
10+2:20 NEWLINE
tests/golden/types-partial-mold-bare-aura/tree.txtnew file+4
@@ -0,0 +1,4 @@
1+(module
2+ (mold 1:1 vague (aura 1:10 @))
3+ (value 2:1 datum
4+ (cast 2:10 (ref 2:13 vague) (lit 2:19 1))))
tests/golden/types-partial-mold-bare-aura/types.txtnew file+3
@@ -0,0 +1,3 @@
1+partial inference; module not checked
2++$ vague: not checked
3+++ datum: cast mold is not supported by partial inference
tests/golden/types-partial-mold-composite/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2+tests: unfaced tuple and gate molds resolve through their names.
3+expect: parses
4+expect-types: a partial inference report, not a checked module
tests/golden/types-partial-mold-composite/source.jibbnew file+4
@@ -0,0 +1,4 @@
1++$ text-pair [@t @t]
2++$ text-fn $-(@t @t)
3+++ a-pair ^- text-pair ["a" "b"]
4+++ a-gate |= f=text-fn f
tests/golden/types-partial-mold-composite/tokens.txtnew file+31
@@ -0,0 +1,31 @@
1+1:1 glyph +$
2+1:4 name text-pair
3+1:14 glyph [
4+1:15 tight aura @t
5+1:18 aura @t
6+1:20 tight glyph ]
7+2:1 NEWLINE
8+2:1 glyph +$
9+2:4 name text-fn
10+2:12 glyph $-(
11+2:15 tight aura @t
12+2:18 aura @t
13+2:20 tight glyph )
14+3:1 NEWLINE
15+3:1 glyph ++
16+3:4 name a-pair
17+3:11 glyph ^-
18+3:14 name text-pair
19+3:24 glyph [
20+3:25 tight str "a"
21+3:29 str "b"
22+3:32 tight glyph ]
23+4:1 NEWLINE
24+4:1 glyph ++
25+4:4 name a-gate
26+4:11 glyph |=
27+4:14 name f
28+4:15 tight glyph =
29+4:16 tight name text-fn
30+4:24 name f
31+4:25 NEWLINE
tests/golden/types-partial-mold-composite/tree.txtnew file+13
@@ -0,0 +1,13 @@
1+(module
2+ (mold 1:1 text-pair
3+ (cell 1:14 (aura 1:15 @t) (aura 1:18 @t)))
4+ (mold 2:1 text-fn
5+ (fn 2:12 (aura 2:15 @t) (aura 2:18 @t)))
6+ (value 3:1 a-pair
7+ (cast 3:11
8+ (ref 3:14 text-pair)
9+ (tuple 3:24 (str 3:25 "a") (str 3:29 "b"))))
10+ (value 4:1 a-gate
11+ (gate 4:11
12+ (face 4:14 f (ref 4:16 text-fn))
13+ (wing 4:24 f))))
tests/golden/types-partial-mold-composite/types.txtnew file+5
@@ -0,0 +1,5 @@
1+partial inference; module not checked
2++$ text-pair: not checked
3++$ text-fn: not checked
4+++ a-pair: [@t @t]
5+++ a-gate: $-($-(@t @t) $-(@t @t))
tests/golden/types-partial-mold-forward/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2+tests: a use of a named mold before its definition resolves to @t.
3+expect: parses
4+expect-types: a partial inference report, not a checked module
tests/golden/types-partial-mold-forward/source.jibbnew file+2
@@ -0,0 +1,2 @@
1+++ text-value ^- written "hi"
2++$ written @t
tests/golden/types-partial-mold-forward/tokens.txtnew file+10
@@ -0,0 +1,10 @@
1+1:1 glyph ++
2+1:4 name text-value
3+1:15 glyph ^-
4+1:18 name written
5+1:26 str "hi"
6+2:1 NEWLINE
7+2:1 glyph +$
8+2:4 name written
9+2:12 aura @t
10+2:14 NEWLINE
tests/golden/types-partial-mold-forward/tree.txtnew file+4
@@ -0,0 +1,4 @@
1+(module
2+ (value 1:1 text-value
3+ (cast 1:15 (ref 1:18 written) (str 1:26 "hi")))
4+ (mold 2:1 written (aura 2:12 @t)))
tests/golden/types-partial-mold-forward/types.txtnew file+3
@@ -0,0 +1,3 @@
1+partial inference; module not checked
2+++ text-value: @t
3++$ written: not checked
tests/golden/types-partial-mold-recursive/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2+tests: the null and cell cases are disjoint, while checking the recursive mold remains unsupported by partial inference.
3+expect: parses
4+expect-types: a partial inference report, not a checked module
tests/golden/types-partial-mold-recursive/source.jibbnew file+4
@@ -0,0 +1,4 @@
1++$ chain
2+ ~
3+ [@t chain]
4+++ empty-chain ^- chain ~
tests/golden/types-partial-mold-recursive/tokens.txtnew file+17
@@ -0,0 +1,17 @@
1+1:1 glyph +$
2+1:4 name chain
3+2:3 INDENT
4+2:3 lit ~
5+3:3 NEWLINE
6+3:3 glyph [
7+3:4 tight aura @t
8+3:7 name chain
9+3:12 tight glyph ]
10+4:1 DEDENT
11+4:1 NEWLINE
12+4:1 glyph ++
13+4:4 name empty-chain
14+4:16 glyph ^-
15+4:19 name chain
16+4:25 lit ~
17+4:26 NEWLINE
tests/golden/types-partial-mold-recursive/tree.txtnew file+7
@@ -0,0 +1,7 @@
1+(module
2+ (mold 1:1 chain
3+ (union 2:3
4+ (const 2:3 ~)
5+ (cell 3:3 (aura 3:4 @t) (ref 3:7 chain))))
6+ (value 4:1 empty-chain
7+ (cast 4:16 (ref 4:19 chain) (lit 4:25 ~))))
tests/golden/types-partial-mold-recursive/types.txtnew file+3
@@ -0,0 +1,3 @@
1+partial inference; module not checked
2++$ chain: cases proven disjoint; mold not checked
3+++ empty-chain: cast mold is not supported by partial inference
tests/golden/types-partial-occurs/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: partial inference: the occurs check rejects an infinite type.
2tests: partial inference: the occurs check rejects an infinite type.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-projection/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: a polymorphic first projection applied to a ship and a cord.
2tests: a polymorphic first projection applied to a ship and a cord.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-shadow-global/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar tab, Modules: "Names may refer to each other in any order, and no name may shadow one already in scope, imports and the prelude included."
2+tests: a gate sample cannot shadow a global value.
3+expect: parses
4+expect-types: a partial inference report, not a checked module
tests/golden/types-partial-shadow-global/source.jibbnew file+2
@@ -0,0 +1,2 @@
1+++ global "hi"
2+++ f |= global global
tests/golden/types-partial-shadow-global/tokens.txtnew file+10
@@ -0,0 +1,10 @@
1+1:1 glyph ++
2+1:4 name global
3+1:11 str "hi"
4+2:1 NEWLINE
5+2:1 glyph ++
6+2:4 name f
7+2:6 glyph |=
8+2:9 name global
9+2:16 name global
10+2:22 NEWLINE
tests/golden/types-partial-shadow-global/tree.txtnew file+4
@@ -0,0 +1,4 @@
1+(module
2+ (value 1:1 global (str 1:11 "hi"))
3+ (value 2:1 f
4+ (gate 2:6 (bind 2:9 global) (wing 2:16 global))))
tests/golden/types-partial-shadow-global/types.txtnew file+3
@@ -0,0 +1,3 @@
1+partial inference; module not checked
2+++ global: @t
3+++ f: sample shadows a name
tests/golden/types-partial-shared-tvar/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: both positions of [A A] share a type: a matching ship pair checks, while a ship and a cord conflict.
2tests: both positions of [A A] share a type: a matching ship pair checks, while a ship and a cord conflict.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/golden/types-partial-union-cases/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: cases differ as nouns; `?` contains the two loobean atoms, and union matching does not inspect gates.
2+tests: partial case comparison distinguishes different constants and atom/cell positions, reports definite overlap, and leaves an unresolved mold unknown.
3+expect: parses; disjoint, overlapping and unresolved cases are reported while each mold remains unchecked
tests/golden/types-partial-union-cases/source.jibbnew file+32
@@ -0,0 +1,32 @@
1++$ tagged
2+ [%a @t]
3+ [%b @ud]
4++$ overlapping
5+ [%a @t]
6+ [%a @ud]
7++$ unresolved
8+ mystery
9+ %a
10++$ flag-tag
11+ ?
12+ %hello
13++$ flag-cell
14+ ?
15+ [@t @ud]
16++$ flag-value
17+ ?
18+ %.y
19++$ wildcard
20+ *
21+ %a
22++$ nested
23+ [%a [%b @t]]
24+ [%a [%c @t]]
25++$ case-a [%a @t]
26++$ through-name
27+ case-a
28+ [%b @t]
29++$ loop loop
30++$ through-loop
31+ loop
32+ %a
tests/golden/types-partial-union-cases/tokens.txtnew file+121
@@ -0,0 +1,121 @@
1+1:1 glyph +$
2+1:4 name tagged
3+2:3 INDENT
4+2:3 glyph [
5+2:4 tight lit %a
6+2:7 aura @t
7+2:9 tight glyph ]
8+3:3 NEWLINE
9+3:3 glyph [
10+3:4 tight lit %b
11+3:7 aura @ud
12+3:10 tight glyph ]
13+4:1 DEDENT
14+4:1 NEWLINE
15+4:1 glyph +$
16+4:4 name overlapping
17+5:3 INDENT
18+5:3 glyph [
19+5:4 tight lit %a
20+5:7 aura @t
21+5:9 tight glyph ]
22+6:3 NEWLINE
23+6:3 glyph [
24+6:4 tight lit %a
25+6:7 aura @ud
26+6:10 tight glyph ]
27+7:1 DEDENT
28+7:1 NEWLINE
29+7:1 glyph +$
30+7:4 name unresolved
31+8:3 INDENT
32+8:3 name mystery
33+9:3 NEWLINE
34+9:3 lit %a
35+10:1 DEDENT
36+10:1 NEWLINE
37+10:1 glyph +$
38+10:4 name flag-tag
39+11:3 INDENT
40+11:3 glyph ?
41+12:3 NEWLINE
42+12:3 lit %hello
43+13:1 DEDENT
44+13:1 NEWLINE
45+13:1 glyph +$
46+13:4 name flag-cell
47+14:3 INDENT
48+14:3 glyph ?
49+15:3 NEWLINE
50+15:3 glyph [
51+15:4 tight aura @t
52+15:7 aura @ud
53+15:10 tight glyph ]
54+16:1 DEDENT
55+16:1 NEWLINE
56+16:1 glyph +$
57+16:4 name flag-value
58+17:3 INDENT
59+17:3 glyph ?
60+18:3 NEWLINE
61+18:3 lit %.y
62+19:1 DEDENT
63+19:1 NEWLINE
64+19:1 glyph +$
65+19:4 name wildcard
66+20:3 INDENT
67+20:3 glyph *
68+21:3 NEWLINE
69+21:3 lit %a
70+22:1 DEDENT
71+22:1 NEWLINE
72+22:1 glyph +$
73+22:4 name nested
74+23:3 INDENT
75+23:3 glyph [
76+23:4 tight lit %a
77+23:7 glyph [
78+23:8 tight lit %b
79+23:11 aura @t
80+23:13 tight glyph ]
81+23:14 tight glyph ]
82+24:3 NEWLINE
83+24:3 glyph [
84+24:4 tight lit %a
85+24:7 glyph [
86+24:8 tight lit %c
87+24:11 aura @t
88+24:13 tight glyph ]
89+24:14 tight glyph ]
90+25:1 DEDENT
91+25:1 NEWLINE
92+25:1 glyph +$
93+25:4 name case-a
94+25:11 glyph [
95+25:12 tight lit %a
96+25:15 aura @t
97+25:17 tight glyph ]
98+26:1 NEWLINE
99+26:1 glyph +$
100+26:4 name through-name
101+27:3 INDENT
102+27:3 name case-a
103+28:3 NEWLINE
104+28:3 glyph [
105+28:4 tight lit %b
106+28:7 aura @t
107+28:9 tight glyph ]
108+29:1 DEDENT
109+29:1 NEWLINE
110+29:1 glyph +$
111+29:4 name loop
112+29:9 name loop
113+30:1 NEWLINE
114+30:1 glyph +$
115+30:4 name through-loop
116+31:3 INDENT
117+31:3 name loop
118+32:3 NEWLINE
119+32:3 lit %a
120+32:5 DEDENT
121+32:5 NEWLINE
tests/golden/types-partial-union-cases/tree.txtnew file+38
@@ -0,0 +1,38 @@
1+(module
2+ (mold 1:1 tagged
3+ (union 2:3
4+ (cell 2:3 (const 2:4 %a) (aura 2:7 @t))
5+ (cell 3:3 (const 3:4 %b) (aura 3:7 @ud))))
6+ (mold 4:1 overlapping
7+ (union 5:3
8+ (cell 5:3 (const 5:4 %a) (aura 5:7 @t))
9+ (cell 6:3 (const 6:4 %a) (aura 6:7 @ud))))
10+ (mold 7:1 unresolved
11+ (union 8:3 (ref 8:3 mystery) (const 9:3 %a)))
12+ (mold 10:1 flag-tag
13+ (union 11:3 (flag 11:3) (const 12:3 %hello)))
14+ (mold 13:1 flag-cell
15+ (union 14:3
16+ (flag 14:3)
17+ (cell 15:3 (aura 15:4 @t) (aura 15:7 @ud))))
18+ (mold 16:1 flag-value
19+ (union 17:3 (flag 17:3) (const 18:3 %.y)))
20+ (mold 19:1 wildcard
21+ (union 20:3 (noun 20:3) (const 21:3 %a)))
22+ (mold 22:1 nested
23+ (union 23:3
24+ (cell 23:3
25+ (const 23:4 %a)
26+ (cell 23:7 (const 23:8 %b) (aura 23:11 @t)))
27+ (cell 24:3
28+ (const 24:4 %a)
29+ (cell 24:7 (const 24:8 %c) (aura 24:11 @t)))))
30+ (mold 25:1 case-a
31+ (cell 25:11 (const 25:12 %a) (aura 25:15 @t)))
32+ (mold 26:1 through-name
33+ (union 27:3
34+ (ref 27:3 case-a)
35+ (cell 28:3 (const 28:4 %b) (aura 28:7 @t))))
36+ (mold 29:1 loop (ref 29:9 loop))
37+ (mold 30:1 through-loop
38+ (union 31:3 (ref 31:3 loop) (const 32:3 %a))))
tests/golden/types-partial-union-cases/types.txtnew file+13
@@ -0,0 +1,13 @@
1+partial inference; module not checked
2++$ tagged: cases proven disjoint; mold not checked
3++$ overlapping: overlapping cases at 5:3 and 6:3; mold not checked
4++$ unresolved: case disjointness unresolved; mold not checked
5++$ flag-tag: cases proven disjoint; mold not checked
6++$ flag-cell: cases proven disjoint; mold not checked
7++$ flag-value: overlapping cases at 17:3 and 18:3; mold not checked
8++$ wildcard: overlapping cases at 20:3 and 21:3; mold not checked
9++$ nested: cases proven disjoint; mold not checked
10++$ case-a: not checked
11++$ through-name: cases proven disjoint; mold not checked
12++$ loop: not checked
13++$ through-loop: case disjointness unresolved; mold not checked
tests/golden/types-partial-unresolved-tag/about.txt+1−1
@@ -1,4 +1,4 @@
1−source: Grammar tab, Molds: "every expression has a principal type, and there is no subtyping".
1+source: Grammar tab, Molds: "every expression has a principal type, and there is no general subtyping".
2tests: partial inference reports a tag whose contextual inference is not implemented; the report does not claim the module checks.
2tests: partial inference reports a tag whose contextual inference is not implemented; the report does not claim the module checks.
3expect: parses
3expect: parses
4expect-types: a partial inference report, not a checked module
4expect-types: a partial inference report, not a checked module
tests/importer/about.txt+7−4
@@ -1,8 +1,11 @@
1`small.txt` exercises union and atom-or-cell cases, fields, collections,
1`small.txt` exercises union and atom-or-cell cases, fields, collections,
2−recursion, and unsupported forms. `tlon-epic.txt` is the unmodified
2+recursion, and unsupported forms. `shadow.txt` checks local generator
3+shadowing and missing provenance. The synthetic hold in +bad-branch-fixture
4+checks that a failed Hoon branch expansion returns an error. `tlon-epic.txt`, `tlon-presence.txt` and `tlon-docs.txt` are the
5+unmodified `desk/sur/epic.hoon`, `desk/sur/presence.hoon` and
3−`desk/sur/epic.hoon` from tloncorp/tlon-apps at commit
6+`desk/sur/docs.hoon` from tloncorp/tlon-apps at commit
438f9328f4580000a37a7fdc3ab820fcd65069487; its MIT license is in
738f9328f4580000a37a7fdc3ab820fcd65069487; its MIT license is in
5`tlon-license.txt`. The files use .txt so -test does not build them as
8`tlon-license.txt`. The files use .txt so -test does not build them as
6−Hoon tests. The separately stored tree.txt is a diagnostic projection of the internal
9+Hoon tests. The separately stored `tree.txt` is a diagnostic projection of the
7−type graph, not the Jibb type printer. It runs under eval and on the fake
10+internal type graph, not the Jibb type printer. It runs under eval and on the fake
8ship; +fixture-test also checks the underlying structured values.
11ship; +fixture-test also checks the underlying structured values.
tests/importer/shadow.txtnew file+8
@@ -0,0 +1,8 @@
1+|%
2++| %hiding
3+++ jar |$([key value] (map key (list value)))
4+++ jug |$([key value] (map key (set value)))
5++| %defs
6++$ aa (jar @ud @t)
7++$ bb [field=(jug @ud @t)]
8+--
tests/importer/small.txt+3−1
@@ -8,9 +8,11 @@
8+$ jar-test (jar @ud @t)
8+$ jar-test (jar @ud @t)
9+$ jug-test (jug @ud @t)
9+$ jug-test (jug @ud @t)
10+$ nested-jar [field=(jar @ud @t)]
10+$ nested-jar [field=(jar @ud @t)]
11++$ paired-aliases [values=(jar @ud @t) cache=(jug @ud @t)]
12++$ nested-alias (jar @ud (jug @ud @t))
11+$ signed @sd
13+$ signed @sd
12+$ float @rd
14+$ float @rd
13+$ gate-test $-(@ud @ud)
15+$ gate-test $-(@ud @ud)
14−+$ valid-cell $^(@ud [x=@ud])
16++$ valid-cell $^(@ud [x=@ud y=@ud])
15+$ invalid-cell $^(@ud @ud)
17+$ invalid-cell $^(@ud @ud)
16--
18--
tests/importer/tlon-docs.txtnew file+17
@@ -0,0 +1,17 @@
1+|%
2+:: toc types
3+::
4++$ toc (list ent)
5++$ ent [?(%fil %dir) pa=path nam=@t]
6++$ raw [lvl=@ud =nud nam=@t]
7++$ nud $@(dir=@ta [fil=@ta mar=@ta])
8+:: clue types
9+::
10++$ scroll [toc=(unit manx) content=manx]
11++$ kind ?(%usr %dev)
12++$ doc [=file title=@t]
13++$ file [name=@ta =mark ~]
14++$ usr (list doc)
15++$ dev (list [agent=@tas docs=(list doc)])
16++$ clue [=usr =dev]
17+--
tests/importer/tlon-presence.txtnew file+35
@@ -0,0 +1,35 @@
1+:: presence: short-lived personal activity types
2+::
3+|%
4++$ places (map context topics)
5++$ topics (map topic people)
6++$ people (map ship [timing display])
7+::
8++$ context path :: nest path or other
9++$ topic ?(%typing %computing %other) ::TODO @ ?
10++$ key [=context =ship =topic]
11++$ timing [since=@da timeout=(unit @dr)]
12++$ display [icon=(unit @t) text=(unit @t) blob=(unit @t)]
13+::
14++$ action-1 :: from client to local agent
15+ $% [%set disclose=(set ship) =key timeout=(unit @dr) =display]
16+ [%clear =key]
17+ [%nuke =context]
18+ ==
19+::
20++$ command-1 :: from anyone to context host
21+ $% [%set disclose=(set ship) =key =timing =display]
22+ [%clear =key] :: clear early
23+ ==
24+::
25++$ update-1 :: context host to subscribers
26+ $% [%set =key =timing =display]
27+ [%clear =key]
28+ ==
29+::
30++$ response-1 :: local agent to client
31+ $% [%init =places]
32+ [%here =key =timing =display]
33+ [%gone =key]
34+ ==
35+--
tests/importer/tree.txt+22−3
@@ -5,12 +5,31 @@ containers: [(set @ud) [(qeu @ud) [(list @t) (unit @ud)]]]
5chain: (union [value=@ud next=chain.small] @n:0)
5chain: (union [value=@ud next=chain.small] @n:0)
6jar: (jar @ud @t)
6jar: (jar @ud @t)
7jug: (jug @ud @t)
7jug: (jug @ud @t)
8+nested-jar: field=(jar @ud @t)
9+paired-aliases: [values=(jar @ud @t) cache=(jug @ud @t)]
8−nested-jar: error: a nested jar, jug or mop needs source-aware import
10+nested-alias: error: nested collection arguments need source-aware import
9signed: error: signed and float auras cannot be imported
11signed: error: signed and float auras cannot be imported
10float: error: signed and float auras cannot be imported
12float: error: signed and float auras cannot be imported
11gate: error: cores and gates cannot be imported
13gate: error: cores and gates cannot be imported
12vase: error: vases cannot be imported
14vase: error: vases cannot be imported
13−valid-cell: error: a Hoon $^ union needs a source-level disjointness check
15+failed-branch: error: a Hoon $^ union needs a source-level disjointness check
16+valid-cell: (union [x=@ud y=@ud] @ud)
14−invalid-cell: error: a Hoon $^ union needs a source-level disjointness check
17+invalid-cell: error: a Hoon $^ union has overlapping cases
18+chapter-malformed: unsafe
19+chapter-wrapped-malformed: unsafe
20+chapter-direct-hit: yes
21+chapter-wrapped-hit: yes
22+chapter-direct-miss: no
23+chapter-wrapped-miss: no
24+shadow-jar: error: Hoon collection provenance is unavailable or shadowed
25+shadow-jug: error: Hoon collection provenance is unavailable or shadowed
26+no-provenance: error: Hoon collection provenance is unavailable or shadowed
27+wrong-provenance: error: Hoon module provenance does not match the selected mold
28+unverified-subject: error: Hoon module provenance is unavailable
29+presence-topic: (union other typing computing)
30+presence-timing: [since=@da timeout=(unit @dr)]
31+presence-places: (map (list @ta) (map (union other typing computing) (map @p [[since=@da timeout=(unit @dr)] [icon=(unit @t) [text=(unit @t) blob=(unit @t)]]])))
32+docs-ent: [(union fil dir) [pa=(list @ta) nam=@t]]
33+docs-nud: (union dir=@ta [fil=@ta mar=@ta])
15tlon-saga: (union [chi @n:0] [lev @n:0] [dex ver=@ud])
34tlon-saga: (union [chi @n:0] [lev @n:0] [dex ver=@ud])
16tlon-epic: @ud
35tlon-epic: @ud
tests/lib/jibb-bridge.hoonnew file+39
@@ -0,0 +1,39 @@
1+:: Exercise the same Hoon importer/checker boundary under eval and Clay.
2+/+ jibb, jibb-import
3+/* sur %txt /tests/type-import/sur/txt
4+/* source %txt /tests/type-import/source/txt
5+/* expected %txt /tests/type-import/expected/txt
6+|%
7+++ text
8+ |= lines=wain
9+ ^- @t
10+ (rap 3 (turn lines |=(line=@t (cat 3 line '\0a'))))
11+++ test-import-bridge
12+ ^- tang
13+ ?~ sur ~[leaf+"import bridge /sur fixture is missing"]
14+ ?~ source ~[leaf+"import bridge source is missing"]
15+ ?~ expected ~[leaf+"import bridge expected output is missing"]
16+ =/ got (bridge-output (text sur) (text source))
17+ ?. =((to-wain:format (cat 3 got '\0a')) expected)
18+ ~[leaf+"import bridge output differs from tests/type-import/expected.txt"]
19+ ~
20+++ bridge-output
21+ |= [sur-text=@t src=@t]
22+ ^- @t
23+ =/ cor=type -:(ride -:!>(..zuse) sur-text)
24+ =/ read
25+ |= name=term
26+ (read-mold-in:jibb-import %fixture name (~(play ut cor) (ream (cat 3 '*' name))) cor)
27+ =/ external=(list [module=term name=term result=*])
28+ :~ [%fixture %title (read %title)]
29+ [%fixture %pair (read %pair)]
30+ [%fixture %faced (read %faced)]
31+ [%fixture %constant (read %constant)]
32+ [%fixture %choice (read %choice)]
33+ [%fixture %failed [%| 'unsupported Hoon type']]
34+ [%fixture %duplicate [%& [%atom %t ~]]]
35+ [%fixture %duplicate [%& [%atom %ud ~]]]
36+ [%missing %title [%& [%atom %t ~]]]
37+ ==
38+ (golden-types-imports:jibb /test/jibb src external)
39+--
tests/lib/jibb-import.hoon+7−1
@@ -3,6 +3,9 @@
3/+ jibb-import
3/+ jibb-import
4/* small %txt /tests/importer/small/txt
4/* small %txt /tests/importer/small/txt
5/* epic %txt /tests/importer/tlon-epic/txt
5/* epic %txt /tests/importer/tlon-epic/txt
6+/* presence %txt /tests/importer/tlon-presence/txt
7+/* docs %txt /tests/importer/tlon-docs/txt
8+/* shadow %txt /tests/importer/shadow/txt
6/* expected %txt /tests/importer/tree/txt
9/* expected %txt /tests/importer/tree/txt
7|%
10|%
8++ lines-to-cord
11++ lines-to-cord
@@ -14,8 +17,11 @@
14 ^- tang
17 ^- tang
15 ?~ small ~[leaf+"small importer fixture is missing"]
18 ?~ small ~[leaf+"small importer fixture is missing"]
16 ?~ epic ~[leaf+"Tlon importer fixture is missing"]
19 ?~ epic ~[leaf+"Tlon importer fixture is missing"]
20+ ?~ presence ~[leaf+"Tlon presence fixture is missing"]
21+ ?~ docs ~[leaf+"Tlon docs fixture is missing"]
22+ ?~ shadow ~[leaf+"shadow fixture is missing"]
17 ?~ expected ~[leaf+"importer golden output is missing"]
23 ?~ expected ~[leaf+"importer golden output is missing"]
18− =/ actual (fixture-output:jibb-import (lines-to-cord small) (lines-to-cord epic))
24+ =/ actual (fixture-output:jibb-import (lines-to-cord small) (lines-to-cord epic) (lines-to-cord presence) (lines-to-cord docs) (lines-to-cord shadow))
19 ?. =(actual expected)
25 ?. =(actual expected)
20 ~[leaf+"importer projection differs from tests/importer/tree.txt"]
26 ~[leaf+"importer projection differs from tests/importer/tree.txt"]
21 ~
27 ~
tests/lib/jibb.hoon+1388−1324
@@ -182,1002 +182,1044 @@
182/* src-54 %jibb /tests/golden/inline-hoon-union-wide-sample-bad/source/jibb
182/* src-54 %jibb /tests/golden/inline-hoon-union-wide-sample-bad/source/jibb
183/* tok-54 %txt /tests/golden/inline-hoon-union-wide-sample-bad/tokens/txt
183/* tok-54 %txt /tests/golden/inline-hoon-union-wide-sample-bad/tokens/txt
184/* tre-54 %txt /tests/golden/inline-hoon-union-wide-sample-bad/tree/txt
184/* tre-54 %txt /tests/golden/inline-hoon-union-wide-sample-bad/tree/txt
185−/* src-55 %jibb /tests/golden/inline-import-mark-face-bad/source/jibb
185+/* src-55 %jibb /tests/golden/inline-import-dollar-mark-bad/source/jibb
186−/* tok-55 %txt /tests/golden/inline-import-mark-face-bad/tokens/txt
186+/* tok-55 %txt /tests/golden/inline-import-dollar-mark-bad/tokens/txt
187−/* tre-55 %txt /tests/golden/inline-import-mark-face-bad/tree/txt
187+/* tre-55 %txt /tests/golden/inline-import-dollar-mark-bad/tree/txt
188−/* src-56 %jibb /tests/golden/inline-import-root-bad/source/jibb
188+/* src-56 %jibb /tests/golden/inline-import-mark-face-bad/source/jibb
189−/* tok-56 %txt /tests/golden/inline-import-root-bad/tokens/txt
189+/* tok-56 %txt /tests/golden/inline-import-mark-face-bad/tokens/txt
190−/* tre-56 %txt /tests/golden/inline-import-root-bad/tree/txt
190+/* tre-56 %txt /tests/golden/inline-import-mark-face-bad/tree/txt
191−/* src-57 %jibb /tests/golden/inline-imports-after-definition/source/jibb
191+/* src-57 %jibb /tests/golden/inline-import-root-bad/source/jibb
192−/* tok-57 %txt /tests/golden/inline-imports-after-definition/tokens/txt
192+/* tok-57 %txt /tests/golden/inline-import-root-bad/tokens/txt
193−/* tre-57 %txt /tests/golden/inline-imports-after-definition/tree/txt
193+/* tre-57 %txt /tests/golden/inline-import-root-bad/tree/txt
194−/* src-58 %jibb /tests/golden/inline-island/source/jibb
194+/* src-58 %jibb /tests/golden/inline-imports-after-definition/source/jibb
195−/* tok-58 %txt /tests/golden/inline-island/tokens/txt
195+/* tok-58 %txt /tests/golden/inline-imports-after-definition/tokens/txt
196−/* tre-58 %txt /tests/golden/inline-island/tree/txt
196+/* tre-58 %txt /tests/golden/inline-imports-after-definition/tree/txt
197−/* src-59 %jibb /tests/golden/inline-kinds/source/jibb
197+/* src-59 %jibb /tests/golden/inline-island/source/jibb
198−/* tok-59 %txt /tests/golden/inline-kinds/tokens/txt
198+/* tok-59 %txt /tests/golden/inline-island/tokens/txt
199−/* tre-59 %txt /tests/golden/inline-kinds/tree/txt
199+/* tre-59 %txt /tests/golden/inline-island/tree/txt
200−/* src-60 %jibb /tests/golden/inline-knot/source/jibb
200+/* src-60 %jibb /tests/golden/inline-kinds/source/jibb
201−/* tok-60 %txt /tests/golden/inline-knot/tokens/txt
201+/* tok-60 %txt /tests/golden/inline-kinds/tokens/txt
202−/* tre-60 %txt /tests/golden/inline-knot/tree/txt
202+/* tre-60 %txt /tests/golden/inline-kinds/tree/txt
203−/* src-61 %jibb /tests/golden/inline-leftout-barcab/source/jibb
203+/* src-61 %jibb /tests/golden/inline-knot/source/jibb
204−/* tok-61 %txt /tests/golden/inline-leftout-barcab/tokens/txt
204+/* tok-61 %txt /tests/golden/inline-knot/tokens/txt
205−/* tre-61 %txt /tests/golden/inline-leftout-barcab/tree/txt
205+/* tre-61 %txt /tests/golden/inline-knot/tree/txt
206−/* src-62 %jibb /tests/golden/inline-leftout-barcen/source/jibb
206+/* src-62 %jibb /tests/golden/inline-leftout-barcab/source/jibb
207−/* tok-62 %txt /tests/golden/inline-leftout-barcen/tokens/txt
207+/* tok-62 %txt /tests/golden/inline-leftout-barcab/tokens/txt
208−/* tre-62 %txt /tests/golden/inline-leftout-barcen/tree/txt
208+/* tre-62 %txt /tests/golden/inline-leftout-barcab/tree/txt
209−/* src-63 %jibb /tests/golden/inline-leftout-barcen-2/source/jibb
209+/* src-63 %jibb /tests/golden/inline-leftout-barcen/source/jibb
210−/* tok-63 %txt /tests/golden/inline-leftout-barcen-2/tokens/txt
210+/* tok-63 %txt /tests/golden/inline-leftout-barcen/tokens/txt
211−/* tre-63 %txt /tests/golden/inline-leftout-barcen-2/tree/txt
211+/* tre-63 %txt /tests/golden/inline-leftout-barcen/tree/txt
212−/* src-64 %jibb /tests/golden/inline-leftout-barcen-3/source/jibb
212+/* src-64 %jibb /tests/golden/inline-leftout-barcen-2/source/jibb
213−/* tok-64 %txt /tests/golden/inline-leftout-barcen-3/tokens/txt
213+/* tok-64 %txt /tests/golden/inline-leftout-barcen-2/tokens/txt
214−/* tre-64 %txt /tests/golden/inline-leftout-barcen-3/tree/txt
214+/* tre-64 %txt /tests/golden/inline-leftout-barcen-2/tree/txt
215−/* src-65 %jibb /tests/golden/inline-leftout-barhep/source/jibb
215+/* src-65 %jibb /tests/golden/inline-leftout-barcen-3/source/jibb
216−/* tok-65 %txt /tests/golden/inline-leftout-barhep/tokens/txt
216+/* tok-65 %txt /tests/golden/inline-leftout-barcen-3/tokens/txt
217−/* tre-65 %txt /tests/golden/inline-leftout-barhep/tree/txt
217+/* tre-65 %txt /tests/golden/inline-leftout-barcen-3/tree/txt
218−/* src-66 %jibb /tests/golden/inline-leftout-bartar/source/jibb
218+/* src-66 %jibb /tests/golden/inline-leftout-barhep/source/jibb
219−/* tok-66 %txt /tests/golden/inline-leftout-bartar/tokens/txt
219+/* tok-66 %txt /tests/golden/inline-leftout-barhep/tokens/txt
220−/* tre-66 %txt /tests/golden/inline-leftout-bartar/tree/txt
220+/* tre-66 %txt /tests/golden/inline-leftout-barhep/tree/txt
221−/* src-67 %jibb /tests/golden/inline-leftout-buc-alone/source/jibb
221+/* src-67 %jibb /tests/golden/inline-leftout-bartar/source/jibb
222−/* tok-67 %txt /tests/golden/inline-leftout-buc-alone/tokens/txt
222+/* tok-67 %txt /tests/golden/inline-leftout-bartar/tokens/txt
223−/* tre-67 %txt /tests/golden/inline-leftout-buc-alone/tree/txt
223+/* tre-67 %txt /tests/golden/inline-leftout-bartar/tree/txt
224−/* src-68 %jibb /tests/golden/inline-leftout-buc-paren/source/jibb
224+/* src-68 %jibb /tests/golden/inline-leftout-buc-alone/source/jibb
225−/* tok-68 %txt /tests/golden/inline-leftout-buc-paren/tokens/txt
225+/* tok-68 %txt /tests/golden/inline-leftout-buc-alone/tokens/txt
226−/* tre-68 %txt /tests/golden/inline-leftout-buc-paren/tree/txt
226+/* tre-68 %txt /tests/golden/inline-leftout-buc-alone/tree/txt
227−/* src-69 %jibb /tests/golden/inline-leftout-buc-paren-2/source/jibb
227+/* src-69 %jibb /tests/golden/inline-leftout-buc-paren/source/jibb
228−/* tok-69 %txt /tests/golden/inline-leftout-buc-paren-2/tokens/txt
228+/* tok-69 %txt /tests/golden/inline-leftout-buc-paren/tokens/txt
229−/* tre-69 %txt /tests/golden/inline-leftout-buc-paren-2/tree/txt
229+/* tre-69 %txt /tests/golden/inline-leftout-buc-paren/tree/txt
230−/* src-70 %jibb /tests/golden/inline-leftout-buc-paren-3/source/jibb
230+/* src-70 %jibb /tests/golden/inline-leftout-buc-paren-2/source/jibb
231−/* tok-70 %txt /tests/golden/inline-leftout-buc-paren-3/tokens/txt
231+/* tok-70 %txt /tests/golden/inline-leftout-buc-paren-2/tokens/txt
232−/* tre-70 %txt /tests/golden/inline-leftout-buc-paren-3/tree/txt
232+/* tre-70 %txt /tests/golden/inline-leftout-buc-paren-2/tree/txt
233−/* src-71 %jibb /tests/golden/inline-leftout-buccen/source/jibb
233+/* src-71 %jibb /tests/golden/inline-leftout-buc-paren-3/source/jibb
234−/* tok-71 %txt /tests/golden/inline-leftout-buccen/tokens/txt
234+/* tok-71 %txt /tests/golden/inline-leftout-buc-paren-3/tokens/txt
235−/* tre-71 %txt /tests/golden/inline-leftout-buccen/tree/txt
235+/* tre-71 %txt /tests/golden/inline-leftout-buc-paren-3/tree/txt
236−/* src-72 %jibb /tests/golden/inline-leftout-cencol/source/jibb
236+/* src-72 %jibb /tests/golden/inline-leftout-buccen/source/jibb
237−/* tok-72 %txt /tests/golden/inline-leftout-cencol/tokens/txt
237+/* tok-72 %txt /tests/golden/inline-leftout-buccen/tokens/txt
238−/* tre-72 %txt /tests/golden/inline-leftout-cencol/tree/txt
238+/* tre-72 %txt /tests/golden/inline-leftout-buccen/tree/txt
239−/* src-73 %jibb /tests/golden/inline-leftout-cenhep/source/jibb
239+/* src-73 %jibb /tests/golden/inline-leftout-cencol/source/jibb
240−/* tok-73 %txt /tests/golden/inline-leftout-cenhep/tokens/txt
240+/* tok-73 %txt /tests/golden/inline-leftout-cencol/tokens/txt
241−/* tre-73 %txt /tests/golden/inline-leftout-cenhep/tree/txt
241+/* tre-73 %txt /tests/golden/inline-leftout-cencol/tree/txt
242−/* src-74 %jibb /tests/golden/inline-leftout-centis/source/jibb
242+/* src-74 %jibb /tests/golden/inline-leftout-cenhep/source/jibb
243−/* tok-74 %txt /tests/golden/inline-leftout-centis/tokens/txt
243+/* tok-74 %txt /tests/golden/inline-leftout-cenhep/tokens/txt
244−/* tre-74 %txt /tests/golden/inline-leftout-centis/tree/txt
244+/* tre-74 %txt /tests/golden/inline-leftout-cenhep/tree/txt
245−/* src-75 %jibb /tests/golden/inline-leftout-colhep/source/jibb
245+/* src-75 %jibb /tests/golden/inline-leftout-centis/source/jibb
246−/* tok-75 %txt /tests/golden/inline-leftout-colhep/tokens/txt
246+/* tok-75 %txt /tests/golden/inline-leftout-centis/tokens/txt
247−/* tre-75 %txt /tests/golden/inline-leftout-colhep/tree/txt
247+/* tre-75 %txt /tests/golden/inline-leftout-centis/tree/txt
248−/* src-76 %jibb /tests/golden/inline-leftout-colon-wing/source/jibb
248+/* src-76 %jibb /tests/golden/inline-leftout-colhep/source/jibb
249−/* tok-76 %txt /tests/golden/inline-leftout-colon-wing/tokens/txt
249+/* tok-76 %txt /tests/golden/inline-leftout-colhep/tokens/txt
250−/* tre-76 %txt /tests/golden/inline-leftout-colon-wing/tree/txt
250+/* tre-76 %txt /tests/golden/inline-leftout-colhep/tree/txt
251−/* src-77 %jibb /tests/golden/inline-leftout-colsig/source/jibb
251+/* src-77 %jibb /tests/golden/inline-leftout-colon-wing/source/jibb
252−/* tok-77 %txt /tests/golden/inline-leftout-colsig/tokens/txt
252+/* tok-77 %txt /tests/golden/inline-leftout-colon-wing/tokens/txt
253−/* tre-77 %txt /tests/golden/inline-leftout-colsig/tree/txt
253+/* tre-77 %txt /tests/golden/inline-leftout-colon-wing/tree/txt
254−/* src-78 %jibb /tests/golden/inline-leftout-coltar/source/jibb
254+/* src-78 %jibb /tests/golden/inline-leftout-colsig/source/jibb
255−/* tok-78 %txt /tests/golden/inline-leftout-coltar/tokens/txt
255+/* tok-78 %txt /tests/golden/inline-leftout-colsig/tokens/txt
256−/* tre-78 %txt /tests/golden/inline-leftout-coltar/tree/txt
256+/* tre-78 %txt /tests/golden/inline-leftout-colsig/tree/txt
257−/* src-79 %jibb /tests/golden/inline-leftout-dottar/source/jibb
257+/* src-79 %jibb /tests/golden/inline-leftout-coltar/source/jibb
258−/* tok-79 %txt /tests/golden/inline-leftout-dottar/tokens/txt
258+/* tok-79 %txt /tests/golden/inline-leftout-coltar/tokens/txt
259−/* tre-79 %txt /tests/golden/inline-leftout-dottar/tree/txt
259+/* tre-79 %txt /tests/golden/inline-leftout-coltar/tree/txt
260−/* src-80 %jibb /tests/golden/inline-leftout-dottis/source/jibb
260+/* src-80 %jibb /tests/golden/inline-leftout-dottar/source/jibb
261−/* tok-80 %txt /tests/golden/inline-leftout-dottis/tokens/txt
261+/* tok-80 %txt /tests/golden/inline-leftout-dottar/tokens/txt
262−/* tre-80 %txt /tests/golden/inline-leftout-dottis/tree/txt
262+/* tre-80 %txt /tests/golden/inline-leftout-dottar/tree/txt
263−/* src-81 %jibb /tests/golden/inline-leftout-faslus/source/jibb
263+/* src-81 %jibb /tests/golden/inline-leftout-dottis/source/jibb
264−/* tok-81 %txt /tests/golden/inline-leftout-faslus/tokens/txt
264+/* tok-81 %txt /tests/golden/inline-leftout-dottis/tokens/txt
265−/* tre-81 %txt /tests/golden/inline-leftout-faslus/tree/txt
265+/* tre-81 %txt /tests/golden/inline-leftout-dottis/tree/txt
266−/* src-82 %jibb /tests/golden/inline-leftout-hephep/source/jibb
266+/* src-82 %jibb /tests/golden/inline-leftout-faslus/source/jibb
267−/* tok-82 %txt /tests/golden/inline-leftout-hephep/tokens/txt
267+/* tok-82 %txt /tests/golden/inline-leftout-faslus/tokens/txt
268−/* tre-82 %txt /tests/golden/inline-leftout-hephep/tree/txt
268+/* tre-82 %txt /tests/golden/inline-leftout-faslus/tree/txt
269−/* src-83 %jibb /tests/golden/inline-leftout-kethep-wide/source/jibb
269+/* src-83 %jibb /tests/golden/inline-leftout-hephep/source/jibb
270−/* tok-83 %txt /tests/golden/inline-leftout-kethep-wide/tokens/txt
270+/* tok-83 %txt /tests/golden/inline-leftout-hephep/tokens/txt
271−/* tre-83 %txt /tests/golden/inline-leftout-kethep-wide/tree/txt
271+/* tre-83 %txt /tests/golden/inline-leftout-hephep/tree/txt
272−/* src-84 %jibb /tests/golden/inline-leftout-kettar/source/jibb
272+/* src-84 %jibb /tests/golden/inline-leftout-kethep-wide/source/jibb
273−/* tok-84 %txt /tests/golden/inline-leftout-kettar/tokens/txt
273+/* tok-84 %txt /tests/golden/inline-leftout-kethep-wide/tokens/txt
274−/* tre-84 %txt /tests/golden/inline-leftout-kettar/tree/txt
274+/* tre-84 %txt /tests/golden/inline-leftout-kethep-wide/tree/txt
275−/* src-85 %jibb /tests/golden/inline-leftout-miccol/source/jibb
275+/* src-85 %jibb /tests/golden/inline-leftout-kettar/source/jibb
276−/* tok-85 %txt /tests/golden/inline-leftout-miccol/tokens/txt
276+/* tok-85 %txt /tests/golden/inline-leftout-kettar/tokens/txt
277−/* tre-85 %txt /tests/golden/inline-leftout-miccol/tree/txt
277+/* tre-85 %txt /tests/golden/inline-leftout-kettar/tree/txt
278−/* src-86 %jibb /tests/golden/inline-leftout-sail/source/jibb
278+/* src-86 %jibb /tests/golden/inline-leftout-miccol/source/jibb
279−/* tok-86 %txt /tests/golden/inline-leftout-sail/tokens/txt
279+/* tok-86 %txt /tests/golden/inline-leftout-miccol/tokens/txt
280−/* tre-86 %txt /tests/golden/inline-leftout-sail/tree/txt
280+/* tre-86 %txt /tests/golden/inline-leftout-miccol/tree/txt
281−/* src-87 %jibb /tests/golden/inline-leftout-sigbar/source/jibb
281+/* src-87 %jibb /tests/golden/inline-leftout-sail/source/jibb
282−/* tok-87 %txt /tests/golden/inline-leftout-sigbar/tokens/txt
282+/* tok-87 %txt /tests/golden/inline-leftout-sail/tokens/txt
283−/* tre-87 %txt /tests/golden/inline-leftout-sigbar/tree/txt
283+/* tre-87 %txt /tests/golden/inline-leftout-sail/tree/txt
284−/* src-88 %jibb /tests/golden/inline-leftout-signed-float-auras/source/jibb
284+/* src-88 %jibb /tests/golden/inline-leftout-sigbar/source/jibb
285−/* tok-88 %txt /tests/golden/inline-leftout-signed-float-auras/tokens/txt
285+/* tok-88 %txt /tests/golden/inline-leftout-sigbar/tokens/txt
286−/* tre-88 %txt /tests/golden/inline-leftout-signed-float-auras/tree/txt
286+/* tre-88 %txt /tests/golden/inline-leftout-sigbar/tree/txt
287−/* src-89 %jibb /tests/golden/inline-leftout-signed-float-auras-2/source/jibb
287+/* src-89 %jibb /tests/golden/inline-leftout-signed-float-auras/source/jibb
288−/* tok-89 %txt /tests/golden/inline-leftout-signed-float-auras-2/tokens/txt
288+/* tok-89 %txt /tests/golden/inline-leftout-signed-float-auras/tokens/txt
289−/* tre-89 %txt /tests/golden/inline-leftout-signed-float-auras-2/tree/txt
289+/* tre-89 %txt /tests/golden/inline-leftout-signed-float-auras/tree/txt
290−/* src-90 %jibb /tests/golden/inline-leftout-sigpam-wide/source/jibb
290+/* src-90 %jibb /tests/golden/inline-leftout-signed-float-auras-2/source/jibb
291−/* tok-90 %txt /tests/golden/inline-leftout-sigpam-wide/tokens/txt
291+/* tok-90 %txt /tests/golden/inline-leftout-signed-float-auras-2/tokens/txt
292−/* tre-90 %txt /tests/golden/inline-leftout-sigpam-wide/tree/txt
292+/* tre-90 %txt /tests/golden/inline-leftout-signed-float-auras-2/tree/txt
293−/* src-91 %jibb /tests/golden/inline-leftout-tis-paren/source/jibb
293+/* src-91 %jibb /tests/golden/inline-leftout-sigpam-wide/source/jibb
294−/* tok-91 %txt /tests/golden/inline-leftout-tis-paren/tokens/txt
294+/* tok-91 %txt /tests/golden/inline-leftout-sigpam-wide/tokens/txt
295−/* tre-91 %txt /tests/golden/inline-leftout-tis-paren/tree/txt
295+/* tre-91 %txt /tests/golden/inline-leftout-sigpam-wide/tree/txt
296−/* src-92 %jibb /tests/golden/inline-leftout-tisfas/source/jibb
296+/* src-92 %jibb /tests/golden/inline-leftout-tis-paren/source/jibb
297−/* tok-92 %txt /tests/golden/inline-leftout-tisfas/tokens/txt
297+/* tok-92 %txt /tests/golden/inline-leftout-tis-paren/tokens/txt
298−/* tre-92 %txt /tests/golden/inline-leftout-tisfas/tree/txt
298+/* tre-92 %txt /tests/golden/inline-leftout-tis-paren/tree/txt
299−/* src-93 %jibb /tests/golden/inline-leftout-tisgal/source/jibb
299+/* src-93 %jibb /tests/golden/inline-leftout-tisfas/source/jibb
300−/* tok-93 %txt /tests/golden/inline-leftout-tisgal/tokens/txt
300+/* tok-93 %txt /tests/golden/inline-leftout-tisfas/tokens/txt
301−/* tre-93 %txt /tests/golden/inline-leftout-tisgal/tree/txt
301+/* tre-93 %txt /tests/golden/inline-leftout-tisfas/tree/txt
302−/* src-94 %jibb /tests/golden/inline-leftout-tisgal-2/source/jibb
302+/* src-94 %jibb /tests/golden/inline-leftout-tisgal/source/jibb
303−/* tok-94 %txt /tests/golden/inline-leftout-tisgal-2/tokens/txt
303+/* tok-94 %txt /tests/golden/inline-leftout-tisgal/tokens/txt
304−/* tre-94 %txt /tests/golden/inline-leftout-tisgal-2/tree/txt
304+/* tre-94 %txt /tests/golden/inline-leftout-tisgal/tree/txt
305−/* src-95 %jibb /tests/golden/inline-leftout-tisgar/source/jibb
305+/* src-95 %jibb /tests/golden/inline-leftout-tisgal-2/source/jibb
306−/* tok-95 %txt /tests/golden/inline-leftout-tisgar/tokens/txt
306+/* tok-95 %txt /tests/golden/inline-leftout-tisgal-2/tokens/txt
307−/* tre-95 %txt /tests/golden/inline-leftout-tisgar/tree/txt
307+/* tre-95 %txt /tests/golden/inline-leftout-tisgal-2/tree/txt
308−/* src-96 %jibb /tests/golden/inline-leftout-tislus/source/jibb
308+/* src-96 %jibb /tests/golden/inline-leftout-tisgar/source/jibb
309−/* tok-96 %txt /tests/golden/inline-leftout-tislus/tokens/txt
309+/* tok-96 %txt /tests/golden/inline-leftout-tisgar/tokens/txt
310−/* tre-96 %txt /tests/golden/inline-leftout-tislus/tree/txt
310+/* tre-96 %txt /tests/golden/inline-leftout-tisgar/tree/txt
311−/* src-97 %jibb /tests/golden/inline-leftout-tistis/source/jibb
311+/* src-97 %jibb /tests/golden/inline-leftout-tislus/source/jibb
312−/* tok-97 %txt /tests/golden/inline-leftout-tistis/tokens/txt
312+/* tok-97 %txt /tests/golden/inline-leftout-tislus/tokens/txt
313−/* tre-97 %txt /tests/golden/inline-leftout-tistis/tree/txt
313+/* tre-97 %txt /tests/golden/inline-leftout-tislus/tree/txt
314−/* src-98 %jibb /tests/golden/inline-leftout-wutcol/source/jibb
314+/* src-98 %jibb /tests/golden/inline-leftout-tistis/source/jibb
315−/* tok-98 %txt /tests/golden/inline-leftout-wutcol/tokens/txt
315+/* tok-98 %txt /tests/golden/inline-leftout-tistis/tokens/txt
316−/* tre-98 %txt /tests/golden/inline-leftout-wutcol/tree/txt
316+/* tre-98 %txt /tests/golden/inline-leftout-tistis/tree/txt
317−/* src-99 %jibb /tests/golden/inline-leftout-wutcol-2/source/jibb
317+/* src-99 %jibb /tests/golden/inline-leftout-wutcol/source/jibb
318−/* tok-99 %txt /tests/golden/inline-leftout-wutcol-2/tokens/txt
318+/* tok-99 %txt /tests/golden/inline-leftout-wutcol/tokens/txt
319−/* tre-99 %txt /tests/golden/inline-leftout-wutcol-2/tree/txt
319+/* tre-99 %txt /tests/golden/inline-leftout-wutcol/tree/txt
320−/* src-100 %jibb /tests/golden/inline-leftout-wuthep-wide/source/jibb
320+/* src-100 %jibb /tests/golden/inline-leftout-wutcol-2/source/jibb
321−/* tok-100 %txt /tests/golden/inline-leftout-wuthep-wide/tokens/txt
321+/* tok-100 %txt /tests/golden/inline-leftout-wutcol-2/tokens/txt
322−/* tre-100 %txt /tests/golden/inline-leftout-wuthep-wide/tree/txt
322+/* tre-100 %txt /tests/golden/inline-leftout-wutcol-2/tree/txt
323−/* src-101 %jibb /tests/golden/inline-leftout-wutlus/source/jibb
323+/* src-101 %jibb /tests/golden/inline-leftout-wuthep-wide/source/jibb
324−/* tok-101 %txt /tests/golden/inline-leftout-wutlus/tokens/txt
324+/* tok-101 %txt /tests/golden/inline-leftout-wuthep-wide/tokens/txt
325−/* tre-101 %txt /tests/golden/inline-leftout-wutlus/tree/txt
325+/* tre-101 %txt /tests/golden/inline-leftout-wuthep-wide/tree/txt
326−/* src-102 %jibb /tests/golden/inline-leftout-wutsig/source/jibb
326+/* src-102 %jibb /tests/golden/inline-leftout-wutlus/source/jibb
327−/* tok-102 %txt /tests/golden/inline-leftout-wutsig/tokens/txt
327+/* tok-102 %txt /tests/golden/inline-leftout-wutlus/tokens/txt
328−/* tre-102 %txt /tests/golden/inline-leftout-wutsig/tree/txt
328+/* tre-102 %txt /tests/golden/inline-leftout-wutlus/tree/txt
329−/* src-103 %jibb /tests/golden/inline-leftout-wutzap/source/jibb
329+/* src-103 %jibb /tests/golden/inline-leftout-wutsig/source/jibb
330−/* tok-103 %txt /tests/golden/inline-leftout-wutzap/tokens/txt
330+/* tok-103 %txt /tests/golden/inline-leftout-wutsig/tokens/txt
331−/* tre-103 %txt /tests/golden/inline-leftout-wutzap/tree/txt
331+/* tre-103 %txt /tests/golden/inline-leftout-wutsig/tree/txt
332−/* src-104 %jibb /tests/golden/inline-leftout-zap-not/source/jibb
332+/* src-104 %jibb /tests/golden/inline-leftout-wutzap/source/jibb
333−/* tok-104 %txt /tests/golden/inline-leftout-zap-not/tokens/txt
333+/* tok-104 %txt /tests/golden/inline-leftout-wutzap/tokens/txt
334−/* tre-104 %txt /tests/golden/inline-leftout-zap-not/tree/txt
334+/* tre-104 %txt /tests/golden/inline-leftout-wutzap/tree/txt
335−/* src-105 %jibb /tests/golden/inline-leftout-zap-not-2/source/jibb
335+/* src-105 %jibb /tests/golden/inline-leftout-zap-not/source/jibb
336−/* tok-105 %txt /tests/golden/inline-leftout-zap-not-2/tokens/txt
336+/* tok-105 %txt /tests/golden/inline-leftout-zap-not/tokens/txt
337−/* tre-105 %txt /tests/golden/inline-leftout-zap-not-2/tree/txt
337+/* tre-105 %txt /tests/golden/inline-leftout-zap-not/tree/txt
338−/* src-106 %jibb /tests/golden/inline-leftout-zapgar/source/jibb
338+/* src-106 %jibb /tests/golden/inline-leftout-zap-not-2/source/jibb
339−/* tok-106 %txt /tests/golden/inline-leftout-zapgar/tokens/txt
339+/* tok-106 %txt /tests/golden/inline-leftout-zap-not-2/tokens/txt
340−/* tre-106 %txt /tests/golden/inline-leftout-zapgar/tree/txt
340+/* tre-106 %txt /tests/golden/inline-leftout-zap-not-2/tree/txt
341−/* src-107 %jibb /tests/golden/inline-list/source/jibb
341+/* src-107 %jibb /tests/golden/inline-leftout-zapgar/source/jibb
342−/* tok-107 %txt /tests/golden/inline-list/tokens/txt
342+/* tok-107 %txt /tests/golden/inline-leftout-zapgar/tokens/txt
343−/* tre-107 %txt /tests/golden/inline-list/tree/txt
343+/* tre-107 %txt /tests/golden/inline-leftout-zapgar/tree/txt
344−/* src-108 %jibb /tests/golden/inline-list-parens/source/jibb
344+/* src-108 %jibb /tests/golden/inline-list/source/jibb
345−/* tok-108 %txt /tests/golden/inline-list-parens/tokens/txt
345+/* tok-108 %txt /tests/golden/inline-list/tokens/txt
346−/* tre-108 %txt /tests/golden/inline-list-parens/tree/txt
346+/* tre-108 %txt /tests/golden/inline-list/tree/txt
347−/* src-109 %jibb /tests/golden/inline-literal-defaults/source/jibb
347+/* src-109 %jibb /tests/golden/inline-list-parens/source/jibb
348−/* tok-109 %txt /tests/golden/inline-literal-defaults/tokens/txt
348+/* tok-109 %txt /tests/golden/inline-list-parens/tokens/txt
349−/* tre-109 %txt /tests/golden/inline-literal-defaults/tree/txt
349+/* tre-109 %txt /tests/golden/inline-list-parens/tree/txt
350−/* src-110 %jibb /tests/golden/inline-load-slug/source/jibb
350+/* src-110 %jibb /tests/golden/inline-literal-defaults/source/jibb
351−/* tok-110 %txt /tests/golden/inline-load-slug/tokens/txt
351+/* tok-110 %txt /tests/golden/inline-literal-defaults/tokens/txt
352−/* tre-110 %txt /tests/golden/inline-load-slug/tree/txt
352+/* tre-110 %txt /tests/golden/inline-literal-defaults/tree/txt
353−/* src-111 %jibb /tests/golden/inline-local-names/source/jibb
353+/* src-111 %jibb /tests/golden/inline-load-slug/source/jibb
354−/* tok-111 %txt /tests/golden/inline-local-names/tokens/txt
354+/* tok-111 %txt /tests/golden/inline-load-slug/tokens/txt
355−/* tre-111 %txt /tests/golden/inline-local-names/tree/txt
355+/* tre-111 %txt /tests/golden/inline-load-slug/tree/txt
356−/* src-112 %jibb /tests/golden/inline-local-names-bodies/source/jibb
356+/* src-112 %jibb /tests/golden/inline-local-names/source/jibb
357−/* tok-112 %txt /tests/golden/inline-local-names-bodies/tokens/txt
357+/* tok-112 %txt /tests/golden/inline-local-names/tokens/txt
358−/* tre-112 %txt /tests/golden/inline-local-names-bodies/tree/txt
358+/* tre-112 %txt /tests/golden/inline-local-names/tree/txt
359−/* src-113 %jibb /tests/golden/inline-loobean/source/jibb
359+/* src-113 %jibb /tests/golden/inline-local-names-bodies/source/jibb
360−/* tok-113 %txt /tests/golden/inline-loobean/tokens/txt
360+/* tok-113 %txt /tests/golden/inline-local-names-bodies/tokens/txt
361−/* tre-113 %txt /tests/golden/inline-loobean/tree/txt
361+/* tre-113 %txt /tests/golden/inline-local-names-bodies/tree/txt
362−/* src-114 %jibb /tests/golden/inline-mark-digit/source/jibb
362+/* src-114 %jibb /tests/golden/inline-loobean/source/jibb
363−/* tok-114 %txt /tests/golden/inline-mark-digit/tokens/txt
363+/* tok-114 %txt /tests/golden/inline-loobean/tokens/txt
364−/* tre-114 %txt /tests/golden/inline-mark-digit/tree/txt
364+/* tre-114 %txt /tests/golden/inline-loobean/tree/txt
365−/* src-115 %jibb /tests/golden/inline-module-definitions/source/jibb
365+/* src-115 %jibb /tests/golden/inline-mark-digit/source/jibb
366−/* tok-115 %txt /tests/golden/inline-module-definitions/tokens/txt
366+/* tok-115 %txt /tests/golden/inline-mark-digit/tokens/txt
367−/* tre-115 %txt /tests/golden/inline-module-definitions/tree/txt
367+/* tre-115 %txt /tests/golden/inline-mark-digit/tree/txt
368−/* src-116 %jibb /tests/golden/inline-mold-add/source/jibb
368+/* src-116 %jibb /tests/golden/inline-module-definitions/source/jibb
369−/* tok-116 %txt /tests/golden/inline-mold-add/tokens/txt
369+/* tok-116 %txt /tests/golden/inline-module-definitions/tokens/txt
370−/* tre-116 %txt /tests/golden/inline-mold-add/tree/txt
370+/* tre-116 %txt /tests/golden/inline-module-definitions/tree/txt
371−/* src-117 %jibb /tests/golden/inline-mold-any-empty/source/jibb
371+/* src-117 %jibb /tests/golden/inline-mold-add/source/jibb
372−/* tok-117 %txt /tests/golden/inline-mold-any-empty/tokens/txt
372+/* tok-117 %txt /tests/golden/inline-mold-add/tokens/txt
373−/* tre-117 %txt /tests/golden/inline-mold-any-empty/tree/txt
373+/* tre-117 %txt /tests/golden/inline-mold-add/tree/txt
374−/* src-118 %jibb /tests/golden/inline-mold-atoms/source/jibb
374+/* src-118 %jibb /tests/golden/inline-mold-any-empty/source/jibb
375−/* tok-118 %txt /tests/golden/inline-mold-atoms/tokens/txt
375+/* tok-118 %txt /tests/golden/inline-mold-any-empty/tokens/txt
376−/* tre-118 %txt /tests/golden/inline-mold-atoms/tree/txt
376+/* tre-118 %txt /tests/golden/inline-mold-any-empty/tree/txt
377−/* src-119 %jibb /tests/golden/inline-mold-constants/source/jibb
377+/* src-119 %jibb /tests/golden/inline-mold-atoms/source/jibb
378−/* tok-119 %txt /tests/golden/inline-mold-constants/tokens/txt
378+/* tok-119 %txt /tests/golden/inline-mold-atoms/tokens/txt
379−/* tre-119 %txt /tests/golden/inline-mold-constants/tree/txt
379+/* tre-119 %txt /tests/golden/inline-mold-atoms/tree/txt
380−/* src-120 %jibb /tests/golden/inline-mold-containers/source/jibb
380+/* src-120 %jibb /tests/golden/inline-mold-constants/source/jibb
381−/* tok-120 %txt /tests/golden/inline-mold-containers/tokens/txt
381+/* tok-120 %txt /tests/golden/inline-mold-constants/tokens/txt
382−/* tre-120 %txt /tests/golden/inline-mold-containers/tree/txt
382+/* tre-120 %txt /tests/golden/inline-mold-constants/tree/txt
383−/* src-121 %jibb /tests/golden/inline-mold-gate/source/jibb
383+/* src-121 %jibb /tests/golden/inline-mold-containers/source/jibb
384−/* tok-121 %txt /tests/golden/inline-mold-gate/tokens/txt
384+/* tok-121 %txt /tests/golden/inline-mold-containers/tokens/txt
385−/* tre-121 %txt /tests/golden/inline-mold-gate/tree/txt
385+/* tre-121 %txt /tests/golden/inline-mold-containers/tree/txt
386−/* src-122 %jibb /tests/golden/inline-mold-generic/source/jibb
386+/* src-122 %jibb /tests/golden/inline-mold-gate/source/jibb
387−/* tok-122 %txt /tests/golden/inline-mold-generic/tokens/txt
387+/* tok-122 %txt /tests/golden/inline-mold-gate/tokens/txt
388−/* tre-122 %txt /tests/golden/inline-mold-generic/tree/txt
388+/* tre-122 %txt /tests/golden/inline-mold-gate/tree/txt
389−/* src-123 %jibb /tests/golden/inline-mold-opaque/source/jibb
389+/* src-123 %jibb /tests/golden/inline-mold-generic/source/jibb
390−/* tok-123 %txt /tests/golden/inline-mold-opaque/tokens/txt
390+/* tok-123 %txt /tests/golden/inline-mold-generic/tokens/txt
391−/* tre-123 %txt /tests/golden/inline-mold-opaque/tree/txt
391+/* tre-123 %txt /tests/golden/inline-mold-generic/tree/txt
392−/* src-124 %jibb /tests/golden/inline-mold-paths/source/jibb
392+/* src-124 %jibb /tests/golden/inline-mold-opaque/source/jibb
393−/* tok-124 %txt /tests/golden/inline-mold-paths/tokens/txt
393+/* tok-124 %txt /tests/golden/inline-mold-opaque/tokens/txt
394−/* tre-124 %txt /tests/golden/inline-mold-paths/tree/txt
394+/* tre-124 %txt /tests/golden/inline-mold-opaque/tree/txt
395−/* src-125 %jibb /tests/golden/inline-mold-records/source/jibb
395+/* src-125 %jibb /tests/golden/inline-mold-paths/source/jibb
396−/* tok-125 %txt /tests/golden/inline-mold-records/tokens/txt
396+/* tok-125 %txt /tests/golden/inline-mold-paths/tokens/txt
397−/* tre-125 %txt /tests/golden/inline-mold-records/tree/txt
397+/* tre-125 %txt /tests/golden/inline-mold-paths/tree/txt
398−/* src-126 %jibb /tests/golden/inline-namespaces/source/jibb
398+/* src-126 %jibb /tests/golden/inline-mold-records/source/jibb
399−/* tok-126 %txt /tests/golden/inline-namespaces/tokens/txt
399+/* tok-126 %txt /tests/golden/inline-mold-records/tokens/txt
400−/* tre-126 %txt /tests/golden/inline-namespaces/tree/txt
400+/* tre-126 %txt /tests/golden/inline-mold-records/tree/txt
401−/* src-127 %jibb /tests/golden/inline-no-operators/source/jibb
401+/* src-127 %jibb /tests/golden/inline-namespaces/source/jibb
402−/* tok-127 %txt /tests/golden/inline-no-operators/tokens/txt
402+/* tok-127 %txt /tests/golden/inline-namespaces/tokens/txt
403−/* tre-127 %txt /tests/golden/inline-no-operators/tree/txt
403+/* tre-127 %txt /tests/golden/inline-namespaces/tree/txt
404−/* src-128 %jibb /tests/golden/inline-no-subs/source/jibb
404+/* src-128 %jibb /tests/golden/inline-no-operators/source/jibb
405−/* tok-128 %txt /tests/golden/inline-no-subs/tokens/txt
405+/* tok-128 %txt /tests/golden/inline-no-operators/tokens/txt
406−/* tre-128 %txt /tests/golden/inline-no-subs/tree/txt
406+/* tre-128 %txt /tests/golden/inline-no-operators/tree/txt
407−/* src-129 %jibb /tests/golden/inline-null/source/jibb
407+/* src-129 %jibb /tests/golden/inline-no-subs/source/jibb
408−/* tok-129 %txt /tests/golden/inline-null/tokens/txt
408+/* tok-129 %txt /tests/golden/inline-no-subs/tokens/txt
409−/* tre-129 %txt /tests/golden/inline-null/tree/txt
409+/* tre-129 %txt /tests/golden/inline-no-subs/tree/txt
410−/* src-130 %jibb /tests/golden/inline-pair/source/jibb
410+/* src-130 %jibb /tests/golden/inline-null/source/jibb
411−/* tok-130 %txt /tests/golden/inline-pair/tokens/txt
411+/* tok-130 %txt /tests/golden/inline-null/tokens/txt
412−/* tre-130 %txt /tests/golden/inline-pair/tree/txt
412+/* tre-130 %txt /tests/golden/inline-null/tree/txt
413−/* src-131 %jibb /tests/golden/inline-pairs-two-items/source/jibb
413+/* src-131 %jibb /tests/golden/inline-pair/source/jibb
414−/* tok-131 %txt /tests/golden/inline-pairs-two-items/tokens/txt
414+/* tok-131 %txt /tests/golden/inline-pair/tokens/txt
415−/* tre-131 %txt /tests/golden/inline-pairs-two-items/tree/txt
415+/* tre-131 %txt /tests/golden/inline-pair/tree/txt
416−/* src-132 %jibb /tests/golden/inline-path/source/jibb
416+/* src-132 %jibb /tests/golden/inline-pairs-two-items/source/jibb
417−/* tok-132 %txt /tests/golden/inline-path/tokens/txt
417+/* tok-132 %txt /tests/golden/inline-pairs-two-items/tokens/txt
418−/* tre-132 %txt /tests/golden/inline-path/tree/txt
418+/* tre-132 %txt /tests/golden/inline-pairs-two-items/tree/txt
419−/* src-133 %jibb /tests/golden/inline-pattern-any/source/jibb
419+/* src-133 %jibb /tests/golden/inline-path/source/jibb
420−/* tok-133 %txt /tests/golden/inline-pattern-any/tokens/txt
420+/* tok-133 %txt /tests/golden/inline-path/tokens/txt
421−/* tre-133 %txt /tests/golden/inline-pattern-any/tree/txt
421+/* tre-133 %txt /tests/golden/inline-path/tree/txt
422−/* src-134 %jibb /tests/golden/inline-pattern-cell/source/jibb
422+/* src-134 %jibb /tests/golden/inline-pattern-any/source/jibb
423−/* tok-134 %txt /tests/golden/inline-pattern-cell/tokens/txt
423+/* tok-134 %txt /tests/golden/inline-pattern-any/tokens/txt
424−/* tre-134 %txt /tests/golden/inline-pattern-cell/tree/txt
424+/* tre-134 %txt /tests/golden/inline-pattern-any/tree/txt
425−/* src-135 %jibb /tests/golden/inline-pattern-cell-open-bad/source/jibb
425+/* src-135 %jibb /tests/golden/inline-pattern-cell/source/jibb
426−/* tok-135 %txt /tests/golden/inline-pattern-cell-open-bad/tokens/txt
426+/* tok-135 %txt /tests/golden/inline-pattern-cell/tokens/txt
427−/* tre-135 %txt /tests/golden/inline-pattern-cell-open-bad/tree/txt
427+/* tre-135 %txt /tests/golden/inline-pattern-cell/tree/txt
428−/* src-136 %jibb /tests/golden/inline-pattern-crash-arm/source/jibb
428+/* src-136 %jibb /tests/golden/inline-pattern-cell-open-bad/source/jibb
429−/* tok-136 %txt /tests/golden/inline-pattern-crash-arm/tokens/txt
429+/* tok-136 %txt /tests/golden/inline-pattern-cell-open-bad/tokens/txt
430−/* tre-136 %txt /tests/golden/inline-pattern-crash-arm/tree/txt
430+/* tre-136 %txt /tests/golden/inline-pattern-cell-open-bad/tree/txt
431−/* src-137 %jibb /tests/golden/inline-pattern-crash-bad/source/jibb
431+/* src-137 %jibb /tests/golden/inline-pattern-crash-arm/source/jibb
432−/* tok-137 %txt /tests/golden/inline-pattern-crash-bad/tokens/txt
432+/* tok-137 %txt /tests/golden/inline-pattern-crash-arm/tokens/txt
433−/* tre-137 %txt /tests/golden/inline-pattern-crash-bad/tree/txt
433+/* tre-137 %txt /tests/golden/inline-pattern-crash-arm/tree/txt
434−/* src-138 %jibb /tests/golden/inline-pattern-date-bad/source/jibb
434+/* src-138 %jibb /tests/golden/inline-pattern-crash-bad/source/jibb
435−/* tok-138 %txt /tests/golden/inline-pattern-date-bad/tokens/txt
435+/* tok-138 %txt /tests/golden/inline-pattern-crash-bad/tokens/txt
436−/* tre-138 %txt /tests/golden/inline-pattern-date-bad/tree/txt
436+/* tre-138 %txt /tests/golden/inline-pattern-crash-bad/tree/txt
437−/* src-139 %jibb /tests/golden/inline-pattern-duration-bad/source/jibb
437+/* src-139 %jibb /tests/golden/inline-pattern-date-bad/source/jibb
438−/* tok-139 %txt /tests/golden/inline-pattern-duration-bad/tokens/txt
438+/* tok-139 %txt /tests/golden/inline-pattern-date-bad/tokens/txt
439−/* tre-139 %txt /tests/golden/inline-pattern-duration-bad/tree/txt
439+/* tre-139 %txt /tests/golden/inline-pattern-date-bad/tree/txt
440−/* src-140 %jibb /tests/golden/inline-pattern-eq/source/jibb
440+/* src-140 %jibb /tests/golden/inline-pattern-duration-bad/source/jibb
441−/* tok-140 %txt /tests/golden/inline-pattern-eq/tokens/txt
441+/* tok-140 %txt /tests/golden/inline-pattern-duration-bad/tokens/txt
442−/* tre-140 %txt /tests/golden/inline-pattern-eq/tree/txt
442+/* tre-140 %txt /tests/golden/inline-pattern-duration-bad/tree/txt
443−/* src-141 %jibb /tests/golden/inline-pattern-face-bad/source/jibb
443+/* src-141 %jibb /tests/golden/inline-pattern-eq/source/jibb
444−/* tok-141 %txt /tests/golden/inline-pattern-face-bad/tokens/txt
444+/* tok-141 %txt /tests/golden/inline-pattern-eq/tokens/txt
445−/* tre-141 %txt /tests/golden/inline-pattern-face-bad/tree/txt
445+/* tre-141 %txt /tests/golden/inline-pattern-eq/tree/txt
446−/* src-142 %jibb /tests/golden/inline-pattern-head-tag/source/jibb
446+/* src-142 %jibb /tests/golden/inline-pattern-face-bad/source/jibb
447−/* tok-142 %txt /tests/golden/inline-pattern-head-tag/tokens/txt
447+/* tok-142 %txt /tests/golden/inline-pattern-face-bad/tokens/txt
448−/* tre-142 %txt /tests/golden/inline-pattern-head-tag/tree/txt
448+/* tre-142 %txt /tests/golden/inline-pattern-face-bad/tree/txt
449−/* src-143 %jibb /tests/golden/inline-pattern-interpolated-bad/source/jibb
449+/* src-143 %jibb /tests/golden/inline-pattern-head-tag/source/jibb
450−/* tok-143 %txt /tests/golden/inline-pattern-interpolated-bad/tokens/txt
450+/* tok-143 %txt /tests/golden/inline-pattern-head-tag/tokens/txt
451−/* tre-143 %txt /tests/golden/inline-pattern-interpolated-bad/tree/txt
451+/* tre-143 %txt /tests/golden/inline-pattern-head-tag/tree/txt
452−/* src-144 %jibb /tests/golden/inline-pattern-list-bad/source/jibb
452+/* src-144 %jibb /tests/golden/inline-pattern-interpolated-bad/source/jibb
453−/* tok-144 %txt /tests/golden/inline-pattern-list-bad/tokens/txt
453+/* tok-144 %txt /tests/golden/inline-pattern-interpolated-bad/tokens/txt
454−/* tre-144 %txt /tests/golden/inline-pattern-list-bad/tree/txt
454+/* tre-144 %txt /tests/golden/inline-pattern-interpolated-bad/tree/txt
455−/* src-145 %jibb /tests/golden/inline-pattern-literals/source/jibb
455+/* src-145 %jibb /tests/golden/inline-pattern-list-bad/source/jibb
456−/* tok-145 %txt /tests/golden/inline-pattern-literals/tokens/txt
456+/* tok-145 %txt /tests/golden/inline-pattern-list-bad/tokens/txt
457−/* tre-145 %txt /tests/golden/inline-pattern-literals/tree/txt
457+/* tre-145 %txt /tests/golden/inline-pattern-list-bad/tree/txt
458−/* src-146 %jibb /tests/golden/inline-pattern-loobean/source/jibb
458+/* src-146 %jibb /tests/golden/inline-pattern-literals/source/jibb
459−/* tok-146 %txt /tests/golden/inline-pattern-loobean/tokens/txt
459+/* tok-146 %txt /tests/golden/inline-pattern-literals/tokens/txt
460−/* tre-146 %txt /tests/golden/inline-pattern-loobean/tree/txt
460+/* tre-146 %txt /tests/golden/inline-pattern-literals/tree/txt
461−/* src-147 %jibb /tests/golden/inline-pattern-move-any/source/jibb
461+/* src-147 %jibb /tests/golden/inline-pattern-loobean/source/jibb
462−/* tok-147 %txt /tests/golden/inline-pattern-move-any/tokens/txt
462+/* tok-147 %txt /tests/golden/inline-pattern-loobean/tokens/txt
463−/* tre-147 %txt /tests/golden/inline-pattern-move-any/tree/txt
463+/* tre-147 %txt /tests/golden/inline-pattern-loobean/tree/txt
464−/* src-148 %jibb /tests/golden/inline-pattern-name/source/jibb
464+/* src-148 %jibb /tests/golden/inline-pattern-move-any/source/jibb
465−/* tok-148 %txt /tests/golden/inline-pattern-name/tokens/txt
465+/* tok-148 %txt /tests/golden/inline-pattern-move-any/tokens/txt
466−/* tre-148 %txt /tests/golden/inline-pattern-name/tree/txt
466+/* tre-148 %txt /tests/golden/inline-pattern-move-any/tree/txt
467−/* src-149 %jibb /tests/golden/inline-pattern-null/source/jibb
467+/* src-149 %jibb /tests/golden/inline-pattern-name/source/jibb
468−/* tok-149 %txt /tests/golden/inline-pattern-null/tokens/txt
468+/* tok-149 %txt /tests/golden/inline-pattern-name/tokens/txt
469−/* tre-149 %txt /tests/golden/inline-pattern-null/tree/txt
469+/* tre-149 %txt /tests/golden/inline-pattern-name/tree/txt
470−/* src-150 %jibb /tests/golden/inline-pattern-pair-bad/source/jibb
470+/* src-150 %jibb /tests/golden/inline-pattern-null/source/jibb
471−/* tok-150 %txt /tests/golden/inline-pattern-pair-bad/tokens/txt
471+/* tok-150 %txt /tests/golden/inline-pattern-null/tokens/txt
472−/* tre-150 %txt /tests/golden/inline-pattern-pair-bad/tree/txt
472+/* tre-150 %txt /tests/golden/inline-pattern-null/tree/txt
473−/* src-151 %jibb /tests/golden/inline-pattern-tail-tag/source/jibb
473+/* src-151 %jibb /tests/golden/inline-pattern-pair-bad/source/jibb
474−/* tok-151 %txt /tests/golden/inline-pattern-tail-tag/tokens/txt
474+/* tok-151 %txt /tests/golden/inline-pattern-pair-bad/tokens/txt
475−/* tre-151 %txt /tests/golden/inline-pattern-tail-tag/tree/txt
475+/* tre-151 %txt /tests/golden/inline-pattern-pair-bad/tree/txt
476−/* src-152 %jibb /tests/golden/inline-pattern-term/source/jibb
476+/* src-152 %jibb /tests/golden/inline-pattern-tail-tag/source/jibb
477−/* tok-152 %txt /tests/golden/inline-pattern-term/tokens/txt
477+/* tok-152 %txt /tests/golden/inline-pattern-tail-tag/tokens/txt
478−/* tre-152 %txt /tests/golden/inline-pattern-term/tree/txt
478+/* tre-152 %txt /tests/golden/inline-pattern-tail-tag/tree/txt
479−/* src-153 %jibb /tests/golden/inline-pattern-two-tags/source/jibb
479+/* src-153 %jibb /tests/golden/inline-pattern-term/source/jibb
480−/* tok-153 %txt /tests/golden/inline-pattern-two-tags/tokens/txt
480+/* tok-153 %txt /tests/golden/inline-pattern-term/tokens/txt
481−/* tre-153 %txt /tests/golden/inline-pattern-two-tags/tree/txt
481+/* tre-153 %txt /tests/golden/inline-pattern-term/tree/txt
482−/* src-154 %jibb /tests/golden/inline-pattern-unit/source/jibb
482+/* src-154 %jibb /tests/golden/inline-pattern-two-tags/source/jibb
483−/* tok-154 %txt /tests/golden/inline-pattern-unit/tokens/txt
483+/* tok-154 %txt /tests/golden/inline-pattern-two-tags/tokens/txt
484−/* tre-154 %txt /tests/golden/inline-pattern-unit/tree/txt
484+/* tre-154 %txt /tests/golden/inline-pattern-two-tags/tree/txt
485−/* src-155 %jibb /tests/golden/inline-qath/source/jibb
485+/* src-155 %jibb /tests/golden/inline-pattern-unit/source/jibb
486−/* tok-155 %txt /tests/golden/inline-qath/tokens/txt
486+/* tok-155 %txt /tests/golden/inline-pattern-unit/tokens/txt
487−/* tre-155 %txt /tests/golden/inline-qath/tree/txt
487+/* tre-155 %txt /tests/golden/inline-pattern-unit/tree/txt
488−/* src-156 %jibb /tests/golden/inline-requests/source/jibb
488+/* src-156 %jibb /tests/golden/inline-qath/source/jibb
489−/* tok-156 %txt /tests/golden/inline-requests/tokens/txt
489+/* tok-156 %txt /tests/golden/inline-qath/tokens/txt
490−/* tre-156 %txt /tests/golden/inline-requests/tree/txt
490+/* tre-156 %txt /tests/golden/inline-qath/tree/txt
491−/* src-157 %jibb /tests/golden/inline-scry-case/source/jibb
491+/* src-157 %jibb /tests/golden/inline-requests/source/jibb
492−/* tok-157 %txt /tests/golden/inline-scry-case/tokens/txt
492+/* tok-157 %txt /tests/golden/inline-requests/tokens/txt
493−/* tre-157 %txt /tests/golden/inline-scry-case/tree/txt
493+/* tre-157 %txt /tests/golden/inline-requests/tree/txt
494−/* src-158 %jibb /tests/golden/inline-self-reference/source/jibb
494+/* src-158 %jibb /tests/golden/inline-scry-case/source/jibb
495−/* tok-158 %txt /tests/golden/inline-self-reference/tokens/txt
495+/* tok-158 %txt /tests/golden/inline-scry-case/tokens/txt
496−/* tre-158 %txt /tests/golden/inline-self-reference/tree/txt
496+/* tre-158 %txt /tests/golden/inline-scry-case/tree/txt
497−/* src-159 %jibb /tests/golden/inline-ship/source/jibb
497+/* src-159 %jibb /tests/golden/inline-self-reference/source/jibb
498−/* tok-159 %txt /tests/golden/inline-ship/tokens/txt
498+/* tok-159 %txt /tests/golden/inline-self-reference/tokens/txt
499−/* tre-159 %txt /tests/golden/inline-ship/tree/txt
499+/* tre-159 %txt /tests/golden/inline-self-reference/tree/txt
500−/* src-160 %jibb /tests/golden/inline-static-image/source/jibb
500+/* src-160 %jibb /tests/golden/inline-ship/source/jibb
501−/* tok-160 %txt /tests/golden/inline-static-image/tokens/txt
501+/* tok-160 %txt /tests/golden/inline-ship/tokens/txt
502−/* tre-160 %txt /tests/golden/inline-static-image/tree/txt
502+/* tre-160 %txt /tests/golden/inline-ship/tree/txt
503−/* src-161 %jibb /tests/golden/inline-string/source/jibb
503+/* src-161 %jibb /tests/golden/inline-static-image/source/jibb
504−/* tok-161 %txt /tests/golden/inline-string/tokens/txt
504+/* tok-161 %txt /tests/golden/inline-static-image/tokens/txt
505−/* tre-161 %txt /tests/golden/inline-string/tree/txt
505+/* tre-161 %txt /tests/golden/inline-static-image/tree/txt
506−/* src-162 %jibb /tests/golden/inline-tag-shape/source/jibb
506+/* src-162 %jibb /tests/golden/inline-string/source/jibb
507−/* tok-162 %txt /tests/golden/inline-tag-shape/tokens/txt
507+/* tok-162 %txt /tests/golden/inline-string/tokens/txt
508−/* tre-162 %txt /tests/golden/inline-tag-shape/tree/txt
508+/* tre-162 %txt /tests/golden/inline-string/tree/txt
509−/* src-163 %jibb /tests/golden/inline-term/source/jibb
509+/* src-163 %jibb /tests/golden/inline-tag-shape/source/jibb
510−/* tok-163 %txt /tests/golden/inline-term/tokens/txt
510+/* tok-163 %txt /tests/golden/inline-tag-shape/tokens/txt
511−/* tre-163 %txt /tests/golden/inline-term/tree/txt
511+/* tre-163 %txt /tests/golden/inline-tag-shape/tree/txt
512−/* src-164 %jibb /tests/golden/inline-term-numeric/source/jibb
512+/* src-164 %jibb /tests/golden/inline-term/source/jibb
513−/* tok-164 %txt /tests/golden/inline-term-numeric/tokens/txt
513+/* tok-164 %txt /tests/golden/inline-term/tokens/txt
514−/* tre-164 %txt /tests/golden/inline-term-numeric/tree/txt
514+/* tre-164 %txt /tests/golden/inline-term/tree/txt
515−/* src-165 %jibb /tests/golden/inline-text-items/source/jibb
515+/* src-165 %jibb /tests/golden/inline-term-numeric/source/jibb
516−/* tok-165 %txt /tests/golden/inline-text-items/tokens/txt
516+/* tok-165 %txt /tests/golden/inline-term-numeric/tokens/txt
517−/* tre-165 %txt /tests/golden/inline-text-items/tree/txt
517+/* tre-165 %txt /tests/golden/inline-term-numeric/tree/txt
518−/* src-166 %jibb /tests/golden/inline-union-both-bad/source/jibb
518+/* src-166 %jibb /tests/golden/inline-text-items/source/jibb
519−/* tok-166 %txt /tests/golden/inline-union-both-bad/tokens/txt
519+/* tok-166 %txt /tests/golden/inline-text-items/tokens/txt
520−/* tre-166 %txt /tests/golden/inline-union-both-bad/tree/txt
520+/* tre-166 %txt /tests/golden/inline-text-items/tree/txt
521−/* src-167 %jibb /tests/golden/inline-union-local/source/jibb
521+/* src-167 %jibb /tests/golden/inline-union-both-bad/source/jibb
522−/* tok-167 %txt /tests/golden/inline-union-local/tokens/txt
522+/* tok-167 %txt /tests/golden/inline-union-both-bad/tokens/txt
523−/* tre-167 %txt /tests/golden/inline-union-local/tree/txt
523+/* tre-167 %txt /tests/golden/inline-union-both-bad/tree/txt
524−/* src-168 %jibb /tests/golden/inline-union-one-case/source/jibb
524+/* src-168 %jibb /tests/golden/inline-union-local/source/jibb
525−/* tok-168 %txt /tests/golden/inline-union-one-case/tokens/txt
525+/* tok-168 %txt /tests/golden/inline-union-local/tokens/txt
526−/* tre-168 %txt /tests/golden/inline-union-one-case/tree/txt
526+/* tre-168 %txt /tests/golden/inline-union-local/tree/txt
527−/* src-169 %jibb /tests/golden/inline-union-record-bad/source/jibb
527+/* src-169 %jibb /tests/golden/inline-union-one-case/source/jibb
528−/* tok-169 %txt /tests/golden/inline-union-record-bad/tokens/txt
528+/* tok-169 %txt /tests/golden/inline-union-one-case/tokens/txt
529−/* tre-169 %txt /tests/golden/inline-union-record-bad/tree/txt
529+/* tre-169 %txt /tests/golden/inline-union-one-case/tree/txt
530−/* src-170 %jibb /tests/golden/inline-union-wide/source/jibb
530+/* src-170 %jibb /tests/golden/inline-union-record-bad/source/jibb
531−/* tok-170 %txt /tests/golden/inline-union-wide/tokens/txt
531+/* tok-170 %txt /tests/golden/inline-union-record-bad/tokens/txt
532−/* tre-170 %txt /tests/golden/inline-union-wide/tree/txt
532+/* tre-170 %txt /tests/golden/inline-union-record-bad/tree/txt
533−/* src-171 %jibb /tests/golden/inline-unit/source/jibb
533+/* src-171 %jibb /tests/golden/inline-union-wide/source/jibb
534−/* tok-171 %txt /tests/golden/inline-unit/tokens/txt
534+/* tok-171 %txt /tests/golden/inline-union-wide/tokens/txt
535−/* tre-171 %txt /tests/golden/inline-unit/tree/txt
535+/* tre-171 %txt /tests/golden/inline-union-wide/tree/txt
536−/* src-172 %jibb /tests/golden/inline-wide-form-rune-bad/source/jibb
536+/* src-172 %jibb /tests/golden/inline-unit/source/jibb
537−/* tok-172 %txt /tests/golden/inline-wide-form-rune-bad/tokens/txt
537+/* tok-172 %txt /tests/golden/inline-unit/tokens/txt
538−/* tre-172 %txt /tests/golden/inline-wide-form-rune-bad/tree/txt
538+/* tre-172 %txt /tests/golden/inline-unit/tree/txt
539−/* src-173 %jibb /tests/golden/inline-wide-forms/source/jibb
539+/* src-173 %jibb /tests/golden/inline-wide-form-rune-bad/source/jibb
540−/* tok-173 %txt /tests/golden/inline-wide-forms/tokens/txt
540+/* tok-173 %txt /tests/golden/inline-wide-form-rune-bad/tokens/txt
541−/* tre-173 %txt /tests/golden/inline-wide-forms/tree/txt
541+/* tre-173 %txt /tests/golden/inline-wide-form-rune-bad/tree/txt
542−/* src-174 %jibb /tests/golden/inline-wide-union-call/source/jibb
542+/* src-174 %jibb /tests/golden/inline-wide-forms/source/jibb
543−/* tok-174 %txt /tests/golden/inline-wide-union-call/tokens/txt
543+/* tok-174 %txt /tests/golden/inline-wide-forms/tokens/txt
544−/* tre-174 %txt /tests/golden/inline-wide-union-call/tree/txt
544+/* tre-174 %txt /tests/golden/inline-wide-forms/tree/txt
545−/* src-175 %jibb /tests/golden/inline-wings/source/jibb
545+/* src-175 %jibb /tests/golden/inline-wide-union-call/source/jibb
546−/* tok-175 %txt /tests/golden/inline-wings/tokens/txt
546+/* tok-175 %txt /tests/golden/inline-wide-union-call/tokens/txt
547−/* tre-175 %txt /tests/golden/inline-wings/tree/txt
547+/* tre-175 %txt /tests/golden/inline-wide-union-call/tree/txt
548−/* src-176 %jibb /tests/golden/lex-base32-bad-1/source/jibb
548+/* src-176 %jibb /tests/golden/inline-wings/source/jibb
549−/* tok-176 %txt /tests/golden/lex-base32-bad-1/tokens/txt
549+/* tok-176 %txt /tests/golden/inline-wings/tokens/txt
550−/* tre-176 %txt /tests/golden/lex-base32-bad-1/tree/txt
550+/* tre-176 %txt /tests/golden/inline-wings/tree/txt
551−/* src-177 %jibb /tests/golden/lex-base32-ok-1/source/jibb
551+/* src-177 %jibb /tests/golden/lex-base32-bad-1/source/jibb
552−/* tok-177 %txt /tests/golden/lex-base32-ok-1/tokens/txt
552+/* tok-177 %txt /tests/golden/lex-base32-bad-1/tokens/txt
553−/* tre-177 %txt /tests/golden/lex-base32-ok-1/tree/txt
553+/* tre-177 %txt /tests/golden/lex-base32-bad-1/tree/txt
554−/* src-178 %jibb /tests/golden/lex-blob-bad-1/source/jibb
554+/* src-178 %jibb /tests/golden/lex-base32-ok-1/source/jibb
555−/* tok-178 %txt /tests/golden/lex-blob-bad-1/tokens/txt
555+/* tok-178 %txt /tests/golden/lex-base32-ok-1/tokens/txt
556−/* tre-178 %txt /tests/golden/lex-blob-bad-1/tree/txt
556+/* tre-178 %txt /tests/golden/lex-base32-ok-1/tree/txt
557−/* src-179 %jibb /tests/golden/lex-call-open-bad-1/source/jibb
557+/* src-179 %jibb /tests/golden/lex-blob-bad-1/source/jibb
558−/* tok-179 %txt /tests/golden/lex-call-open-bad-1/tokens/txt
558+/* tok-179 %txt /tests/golden/lex-blob-bad-1/tokens/txt
559−/* tre-179 %txt /tests/golden/lex-call-open-bad-1/tree/txt
559+/* tre-179 %txt /tests/golden/lex-blob-bad-1/tree/txt
560−/* src-180 %jibb /tests/golden/lex-call-open-bad-2/source/jibb
560+/* src-180 %jibb /tests/golden/lex-call-open-bad-1/source/jibb
561−/* tok-180 %txt /tests/golden/lex-call-open-bad-2/tokens/txt
561+/* tok-180 %txt /tests/golden/lex-call-open-bad-1/tokens/txt
562−/* tre-180 %txt /tests/golden/lex-call-open-bad-2/tree/txt
562+/* tre-180 %txt /tests/golden/lex-call-open-bad-1/tree/txt
563−/* src-181 %jibb /tests/golden/lex-call-open-bad-4/source/jibb
563+/* src-181 %jibb /tests/golden/lex-call-open-bad-2/source/jibb
564−/* tok-181 %txt /tests/golden/lex-call-open-bad-4/tokens/txt
564+/* tok-181 %txt /tests/golden/lex-call-open-bad-2/tokens/txt
565−/* tre-181 %txt /tests/golden/lex-call-open-bad-4/tree/txt
565+/* tre-181 %txt /tests/golden/lex-call-open-bad-2/tree/txt
566−/* src-182 %jibb /tests/golden/lex-call-open-ok-1/source/jibb
566+/* src-182 %jibb /tests/golden/lex-call-open-bad-4/source/jibb
567−/* tok-182 %txt /tests/golden/lex-call-open-ok-1/tokens/txt
567+/* tok-182 %txt /tests/golden/lex-call-open-bad-4/tokens/txt
568−/* tre-182 %txt /tests/golden/lex-call-open-ok-1/tree/txt
568+/* tre-182 %txt /tests/golden/lex-call-open-bad-4/tree/txt
569−/* src-183 %jibb /tests/golden/lex-call-open-ok-2/source/jibb
569+/* src-183 %jibb /tests/golden/lex-call-open-ok-1/source/jibb
570−/* tok-183 %txt /tests/golden/lex-call-open-ok-2/tokens/txt
570+/* tok-183 %txt /tests/golden/lex-call-open-ok-1/tokens/txt
571−/* tre-183 %txt /tests/golden/lex-call-open-ok-2/tree/txt
571+/* tre-183 %txt /tests/golden/lex-call-open-ok-1/tree/txt
572−/* src-184 %jibb /tests/golden/lex-cell-bad-1/source/jibb
572+/* src-184 %jibb /tests/golden/lex-call-open-ok-2/source/jibb
573−/* tok-184 %txt /tests/golden/lex-cell-bad-1/tokens/txt
573+/* tok-184 %txt /tests/golden/lex-call-open-ok-2/tokens/txt
574−/* tre-184 %txt /tests/golden/lex-cell-bad-1/tree/txt
574+/* tre-184 %txt /tests/golden/lex-call-open-ok-2/tree/txt
575−/* src-185 %jibb /tests/golden/lex-cell-ok-1/source/jibb
575+/* src-185 %jibb /tests/golden/lex-cell-bad-1/source/jibb
576−/* tok-185 %txt /tests/golden/lex-cell-ok-1/tokens/txt
576+/* tok-185 %txt /tests/golden/lex-cell-bad-1/tokens/txt
577−/* tre-185 %txt /tests/golden/lex-cell-ok-1/tree/txt
577+/* tre-185 %txt /tests/golden/lex-cell-bad-1/tree/txt
578−/* src-186 %jibb /tests/golden/lex-closer-bad-1/source/jibb
578+/* src-186 %jibb /tests/golden/lex-cell-ok-1/source/jibb
579−/* tok-186 %txt /tests/golden/lex-closer-bad-1/tokens/txt
579+/* tok-186 %txt /tests/golden/lex-cell-ok-1/tokens/txt
580−/* tre-186 %txt /tests/golden/lex-closer-bad-1/tree/txt
580+/* tre-186 %txt /tests/golden/lex-cell-ok-1/tree/txt
581−/* src-187 %jibb /tests/golden/lex-closer-bad-2/source/jibb
581+/* src-187 %jibb /tests/golden/lex-closer-bad-1/source/jibb
582−/* tok-187 %txt /tests/golden/lex-closer-bad-2/tokens/txt
582+/* tok-187 %txt /tests/golden/lex-closer-bad-1/tokens/txt
583−/* tre-187 %txt /tests/golden/lex-closer-bad-2/tree/txt
583+/* tre-187 %txt /tests/golden/lex-closer-bad-1/tree/txt
584−/* src-188 %jibb /tests/golden/lex-closer-bad-3/source/jibb
584+/* src-188 %jibb /tests/golden/lex-closer-bad-2/source/jibb
585−/* tok-188 %txt /tests/golden/lex-closer-bad-3/tokens/txt
585+/* tok-188 %txt /tests/golden/lex-closer-bad-2/tokens/txt
586−/* tre-188 %txt /tests/golden/lex-closer-bad-3/tree/txt
586+/* tre-188 %txt /tests/golden/lex-closer-bad-2/tree/txt
587−/* src-189 %jibb /tests/golden/lex-closer-bad-4/source/jibb
587+/* src-189 %jibb /tests/golden/lex-closer-bad-3/source/jibb
588−/* tok-189 %txt /tests/golden/lex-closer-bad-4/tokens/txt
588+/* tok-189 %txt /tests/golden/lex-closer-bad-3/tokens/txt
589−/* tre-189 %txt /tests/golden/lex-closer-bad-4/tree/txt
589+/* tre-189 %txt /tests/golden/lex-closer-bad-3/tree/txt
590−/* src-190 %jibb /tests/golden/lex-codepoint-bad-1/source/jibb
590+/* src-190 %jibb /tests/golden/lex-closer-bad-4/source/jibb
591−/* tok-190 %txt /tests/golden/lex-codepoint-bad-1/tokens/txt
591+/* tok-190 %txt /tests/golden/lex-closer-bad-4/tokens/txt
592−/* tre-190 %txt /tests/golden/lex-codepoint-bad-1/tree/txt
592+/* tre-190 %txt /tests/golden/lex-closer-bad-4/tree/txt
593−/* src-191 %jibb /tests/golden/lex-comment-bad-1/source/jibb
593+/* src-191 %jibb /tests/golden/lex-codepoint-bad-1/source/jibb
594−/* tok-191 %txt /tests/golden/lex-comment-bad-1/tokens/txt
594+/* tok-191 %txt /tests/golden/lex-codepoint-bad-1/tokens/txt
595−/* tre-191 %txt /tests/golden/lex-comment-bad-1/tree/txt
595+/* tre-191 %txt /tests/golden/lex-codepoint-bad-1/tree/txt
596−/* src-192 %jibb /tests/golden/lex-comment-ok-1/source/jibb
596+/* src-192 %jibb /tests/golden/lex-comment-bad-1/source/jibb
597−/* tok-192 %txt /tests/golden/lex-comment-ok-1/tokens/txt
597+/* tok-192 %txt /tests/golden/lex-comment-bad-1/tokens/txt
598−/* tre-192 %txt /tests/golden/lex-comment-ok-1/tree/txt
598+/* tre-192 %txt /tests/golden/lex-comment-bad-1/tree/txt
599−/* src-193 %jibb /tests/golden/lex-comment-ok-2/source/jibb
599+/* src-193 %jibb /tests/golden/lex-comment-ok-1/source/jibb
600−/* tok-193 %txt /tests/golden/lex-comment-ok-2/tokens/txt
600+/* tok-193 %txt /tests/golden/lex-comment-ok-1/tokens/txt
601−/* tre-193 %txt /tests/golden/lex-comment-ok-2/tree/txt
601+/* tre-193 %txt /tests/golden/lex-comment-ok-1/tree/txt
602−/* src-194 %jibb /tests/golden/lex-comment-ok-3/source/jibb
602+/* src-194 %jibb /tests/golden/lex-comment-ok-2/source/jibb
603−/* tok-194 %txt /tests/golden/lex-comment-ok-3/tokens/txt
603+/* tok-194 %txt /tests/golden/lex-comment-ok-2/tokens/txt
604−/* tre-194 %txt /tests/golden/lex-comment-ok-3/tree/txt
604+/* tre-194 %txt /tests/golden/lex-comment-ok-2/tree/txt
605−/* src-195 %jibb /tests/golden/lex-date-bad-1/source/jibb
605+/* src-195 %jibb /tests/golden/lex-comment-ok-3/source/jibb
606−/* tok-195 %txt /tests/golden/lex-date-bad-1/tokens/txt
606+/* tok-195 %txt /tests/golden/lex-comment-ok-3/tokens/txt
607−/* tre-195 %txt /tests/golden/lex-date-bad-1/tree/txt
607+/* tre-195 %txt /tests/golden/lex-comment-ok-3/tree/txt
608−/* src-196 %jibb /tests/golden/lex-date-bad-2/source/jibb
608+/* src-196 %jibb /tests/golden/lex-date-bad-1/source/jibb
609−/* tok-196 %txt /tests/golden/lex-date-bad-2/tokens/txt
609+/* tok-196 %txt /tests/golden/lex-date-bad-1/tokens/txt
610−/* tre-196 %txt /tests/golden/lex-date-bad-2/tree/txt
610+/* tre-196 %txt /tests/golden/lex-date-bad-1/tree/txt
611−/* src-197 %jibb /tests/golden/lex-date-bad-3/source/jibb
611+/* src-197 %jibb /tests/golden/lex-date-bad-2/source/jibb
612−/* tok-197 %txt /tests/golden/lex-date-bad-3/tokens/txt
612+/* tok-197 %txt /tests/golden/lex-date-bad-2/tokens/txt
613−/* tre-197 %txt /tests/golden/lex-date-bad-3/tree/txt
613+/* tre-197 %txt /tests/golden/lex-date-bad-2/tree/txt
614−/* src-198 %jibb /tests/golden/lex-date-ok-1/source/jibb
614+/* src-198 %jibb /tests/golden/lex-date-bad-3/source/jibb
615−/* tok-198 %txt /tests/golden/lex-date-ok-1/tokens/txt
615+/* tok-198 %txt /tests/golden/lex-date-bad-3/tokens/txt
616−/* tre-198 %txt /tests/golden/lex-date-ok-1/tree/txt
616+/* tre-198 %txt /tests/golden/lex-date-bad-3/tree/txt
617−/* src-199 %jibb /tests/golden/lex-date-ok-2/source/jibb
617+/* src-199 %jibb /tests/golden/lex-date-ok-1/source/jibb
618−/* tok-199 %txt /tests/golden/lex-date-ok-2/tokens/txt
618+/* tok-199 %txt /tests/golden/lex-date-ok-1/tokens/txt
619−/* tre-199 %txt /tests/golden/lex-date-ok-2/tree/txt
619+/* tre-199 %txt /tests/golden/lex-date-ok-1/tree/txt
620−/* src-200 %jibb /tests/golden/lex-decimal-bad-1/source/jibb
620+/* src-200 %jibb /tests/golden/lex-date-ok-2/source/jibb
621−/* tok-200 %txt /tests/golden/lex-decimal-bad-1/tokens/txt
621+/* tok-200 %txt /tests/golden/lex-date-ok-2/tokens/txt
622−/* tre-200 %txt /tests/golden/lex-decimal-bad-1/tree/txt
622+/* tre-200 %txt /tests/golden/lex-date-ok-2/tree/txt
623−/* src-201 %jibb /tests/golden/lex-decimal-bad-2/source/jibb
623+/* src-201 %jibb /tests/golden/lex-decimal-bad-1/source/jibb
624−/* tok-201 %txt /tests/golden/lex-decimal-bad-2/tokens/txt
624+/* tok-201 %txt /tests/golden/lex-decimal-bad-1/tokens/txt
625−/* tre-201 %txt /tests/golden/lex-decimal-bad-2/tree/txt
625+/* tre-201 %txt /tests/golden/lex-decimal-bad-1/tree/txt
626−/* src-202 %jibb /tests/golden/lex-decimal-ok-1/source/jibb
626+/* src-202 %jibb /tests/golden/lex-decimal-bad-2/source/jibb
627−/* tok-202 %txt /tests/golden/lex-decimal-ok-1/tokens/txt
627+/* tok-202 %txt /tests/golden/lex-decimal-bad-2/tokens/txt
628−/* tre-202 %txt /tests/golden/lex-decimal-ok-1/tree/txt
628+/* tre-202 %txt /tests/golden/lex-decimal-bad-2/tree/txt
629−/* src-203 %jibb /tests/golden/lex-duration-bad-1/source/jibb
629+/* src-203 %jibb /tests/golden/lex-decimal-ok-1/source/jibb
630−/* tok-203 %txt /tests/golden/lex-duration-bad-1/tokens/txt
630+/* tok-203 %txt /tests/golden/lex-decimal-ok-1/tokens/txt
631−/* tre-203 %txt /tests/golden/lex-duration-bad-1/tree/txt
631+/* tre-203 %txt /tests/golden/lex-decimal-ok-1/tree/txt
632−/* src-204 %jibb /tests/golden/lex-duration-bad-2/source/jibb
632+/* src-204 %jibb /tests/golden/lex-duration-bad-1/source/jibb
633−/* tok-204 %txt /tests/golden/lex-duration-bad-2/tokens/txt
633+/* tok-204 %txt /tests/golden/lex-duration-bad-1/tokens/txt
634−/* tre-204 %txt /tests/golden/lex-duration-bad-2/tree/txt
634+/* tre-204 %txt /tests/golden/lex-duration-bad-1/tree/txt
635−/* src-205 %jibb /tests/golden/lex-duration-ok-1/source/jibb
635+/* src-205 %jibb /tests/golden/lex-duration-bad-2/source/jibb
636−/* tok-205 %txt /tests/golden/lex-duration-ok-1/tokens/txt
636+/* tok-205 %txt /tests/golden/lex-duration-bad-2/tokens/txt
637−/* tre-205 %txt /tests/golden/lex-duration-ok-1/tree/txt
637+/* tre-205 %txt /tests/golden/lex-duration-bad-2/tree/txt
638−/* src-206 %jibb /tests/golden/lex-hex-bad-1/source/jibb
638+/* src-206 %jibb /tests/golden/lex-duration-ok-1/source/jibb
639−/* tok-206 %txt /tests/golden/lex-hex-bad-1/tokens/txt
639+/* tok-206 %txt /tests/golden/lex-duration-ok-1/tokens/txt
640−/* tre-206 %txt /tests/golden/lex-hex-bad-1/tree/txt
640+/* tre-206 %txt /tests/golden/lex-duration-ok-1/tree/txt
641−/* src-207 %jibb /tests/golden/lex-hex-ok-1/source/jibb
641+/* src-207 %jibb /tests/golden/lex-hex-bad-1/source/jibb
642−/* tok-207 %txt /tests/golden/lex-hex-ok-1/tokens/txt
642+/* tok-207 %txt /tests/golden/lex-hex-bad-1/tokens/txt
643−/* tre-207 %txt /tests/golden/lex-hex-ok-1/tree/txt
643+/* tre-207 %txt /tests/golden/lex-hex-bad-1/tree/txt
644−/* src-208 %jibb /tests/golden/lex-indent-bad-1/source/jibb
644+/* src-208 %jibb /tests/golden/lex-hex-ok-1/source/jibb
645−/* tok-208 %txt /tests/golden/lex-indent-bad-1/tokens/txt
645+/* tok-208 %txt /tests/golden/lex-hex-ok-1/tokens/txt
646−/* tre-208 %txt /tests/golden/lex-indent-bad-1/tree/txt
646+/* tre-208 %txt /tests/golden/lex-hex-ok-1/tree/txt
647−/* src-209 %jibb /tests/golden/lex-indent-bad-2/source/jibb
647+/* src-209 %jibb /tests/golden/lex-indent-bad-1/source/jibb
648−/* tok-209 %txt /tests/golden/lex-indent-bad-2/tokens/txt
648+/* tok-209 %txt /tests/golden/lex-indent-bad-1/tokens/txt
649−/* tre-209 %txt /tests/golden/lex-indent-bad-2/tree/txt
649+/* tre-209 %txt /tests/golden/lex-indent-bad-1/tree/txt
650−/* src-210 %jibb /tests/golden/lex-indent-bad-3/source/jibb
650+/* src-210 %jibb /tests/golden/lex-indent-bad-2/source/jibb
651−/* tok-210 %txt /tests/golden/lex-indent-bad-3/tokens/txt
651+/* tok-210 %txt /tests/golden/lex-indent-bad-2/tokens/txt
652−/* tre-210 %txt /tests/golden/lex-indent-bad-3/tree/txt
652+/* tre-210 %txt /tests/golden/lex-indent-bad-2/tree/txt
653−/* src-211 %jibb /tests/golden/lex-indent-ok-1/source/jibb
653+/* src-211 %jibb /tests/golden/lex-indent-bad-3/source/jibb
654−/* tok-211 %txt /tests/golden/lex-indent-ok-1/tokens/txt
654+/* tok-211 %txt /tests/golden/lex-indent-bad-3/tokens/txt
655−/* tre-211 %txt /tests/golden/lex-indent-ok-1/tree/txt
655+/* tre-211 %txt /tests/golden/lex-indent-bad-3/tree/txt
656−/* src-212 %jibb /tests/golden/lex-indent-ok-2/source/jibb
656+/* src-212 %jibb /tests/golden/lex-indent-ok-1/source/jibb
657−/* tok-212 %txt /tests/golden/lex-indent-ok-2/tokens/txt
657+/* tok-212 %txt /tests/golden/lex-indent-ok-1/tokens/txt
658−/* tre-212 %txt /tests/golden/lex-indent-ok-2/tree/txt
658+/* tre-212 %txt /tests/golden/lex-indent-ok-1/tree/txt
659−/* src-213 %jibb /tests/golden/lex-indent-ok-3/source/jibb
659+/* src-213 %jibb /tests/golden/lex-indent-ok-2/source/jibb
660−/* tok-213 %txt /tests/golden/lex-indent-ok-3/tokens/txt
660+/* tok-213 %txt /tests/golden/lex-indent-ok-2/tokens/txt
661−/* tre-213 %txt /tests/golden/lex-indent-ok-3/tree/txt
661+/* tre-213 %txt /tests/golden/lex-indent-ok-2/tree/txt
662−/* src-214 %jibb /tests/golden/lex-interp-bad-1/source/jibb
662+/* src-214 %jibb /tests/golden/lex-indent-ok-3/source/jibb
663−/* tok-214 %txt /tests/golden/lex-interp-bad-1/tokens/txt
663+/* tok-214 %txt /tests/golden/lex-indent-ok-3/tokens/txt
664−/* tre-214 %txt /tests/golden/lex-interp-bad-1/tree/txt
664+/* tre-214 %txt /tests/golden/lex-indent-ok-3/tree/txt
665−/* src-215 %jibb /tests/golden/lex-interp-bad-2/source/jibb
665+/* src-215 %jibb /tests/golden/lex-interp-bad-1/source/jibb
666−/* tok-215 %txt /tests/golden/lex-interp-bad-2/tokens/txt
666+/* tok-215 %txt /tests/golden/lex-interp-bad-1/tokens/txt
667−/* tre-215 %txt /tests/golden/lex-interp-bad-2/tree/txt
667+/* tre-215 %txt /tests/golden/lex-interp-bad-1/tree/txt
668−/* src-216 %jibb /tests/golden/lex-interp-bad-3/source/jibb
668+/* src-216 %jibb /tests/golden/lex-interp-bad-2/source/jibb
669−/* tok-216 %txt /tests/golden/lex-interp-bad-3/tokens/txt
669+/* tok-216 %txt /tests/golden/lex-interp-bad-2/tokens/txt
670−/* tre-216 %txt /tests/golden/lex-interp-bad-3/tree/txt
670+/* tre-216 %txt /tests/golden/lex-interp-bad-2/tree/txt
671−/* src-217 %jibb /tests/golden/lex-interp-bad-5/source/jibb
671+/* src-217 %jibb /tests/golden/lex-interp-bad-3/source/jibb
672−/* tok-217 %txt /tests/golden/lex-interp-bad-5/tokens/txt
672+/* tok-217 %txt /tests/golden/lex-interp-bad-3/tokens/txt
673−/* tre-217 %txt /tests/golden/lex-interp-bad-5/tree/txt
673+/* tre-217 %txt /tests/golden/lex-interp-bad-3/tree/txt
674−/* src-218 %jibb /tests/golden/lex-interp-bad-6/source/jibb
674+/* src-218 %jibb /tests/golden/lex-interp-bad-5/source/jibb
675−/* tok-218 %txt /tests/golden/lex-interp-bad-6/tokens/txt
675+/* tok-218 %txt /tests/golden/lex-interp-bad-5/tokens/txt
676−/* tre-218 %txt /tests/golden/lex-interp-bad-6/tree/txt
676+/* tre-218 %txt /tests/golden/lex-interp-bad-5/tree/txt
677−/* src-219 %jibb /tests/golden/lex-interp-ok-1/source/jibb
677+/* src-219 %jibb /tests/golden/lex-interp-bad-6/source/jibb
678−/* tok-219 %txt /tests/golden/lex-interp-ok-1/tokens/txt
678+/* tok-219 %txt /tests/golden/lex-interp-bad-6/tokens/txt
679−/* tre-219 %txt /tests/golden/lex-interp-ok-1/tree/txt
679+/* tre-219 %txt /tests/golden/lex-interp-bad-6/tree/txt
680−/* src-220 %jibb /tests/golden/lex-interp-ok-2/source/jibb
680+/* src-220 %jibb /tests/golden/lex-interp-ok-1/source/jibb
681−/* tok-220 %txt /tests/golden/lex-interp-ok-2/tokens/txt
681+/* tok-220 %txt /tests/golden/lex-interp-ok-1/tokens/txt
682−/* tre-220 %txt /tests/golden/lex-interp-ok-2/tree/txt
682+/* tre-220 %txt /tests/golden/lex-interp-ok-1/tree/txt
683−/* src-221 %jibb /tests/golden/lex-interp-ok-3/source/jibb
683+/* src-221 %jibb /tests/golden/lex-interp-ok-2/source/jibb
684−/* tok-221 %txt /tests/golden/lex-interp-ok-3/tokens/txt
684+/* tok-221 %txt /tests/golden/lex-interp-ok-2/tokens/txt
685−/* tre-221 %txt /tests/golden/lex-interp-ok-3/tree/txt
685+/* tre-221 %txt /tests/golden/lex-interp-ok-2/tree/txt
686−/* src-222 %jibb /tests/golden/lex-knot-bad-1/source/jibb
686+/* src-222 %jibb /tests/golden/lex-interp-ok-3/source/jibb
687−/* tok-222 %txt /tests/golden/lex-knot-bad-1/tokens/txt
687+/* tok-222 %txt /tests/golden/lex-interp-ok-3/tokens/txt
688−/* tre-222 %txt /tests/golden/lex-knot-bad-1/tree/txt
688+/* tre-222 %txt /tests/golden/lex-interp-ok-3/tree/txt
689−/* src-223 %jibb /tests/golden/lex-knot-ok-1/source/jibb
689+/* src-223 %jibb /tests/golden/lex-knot-bad-1/source/jibb
690−/* tok-223 %txt /tests/golden/lex-knot-ok-1/tokens/txt
690+/* tok-223 %txt /tests/golden/lex-knot-bad-1/tokens/txt
691−/* tre-223 %txt /tests/golden/lex-knot-ok-1/tree/txt
691+/* tre-223 %txt /tests/golden/lex-knot-bad-1/tree/txt
692−/* src-224 %jibb /tests/golden/lex-layout-bad-1/source/jibb
692+/* src-224 %jibb /tests/golden/lex-knot-ok-1/source/jibb
693−/* tok-224 %txt /tests/golden/lex-layout-bad-1/tokens/txt
693+/* tok-224 %txt /tests/golden/lex-knot-ok-1/tokens/txt
694−/* tre-224 %txt /tests/golden/lex-layout-bad-1/tree/txt
694+/* tre-224 %txt /tests/golden/lex-knot-ok-1/tree/txt
695−/* src-225 %jibb /tests/golden/lex-layout-bad-10/source/jibb
695+/* src-225 %jibb /tests/golden/lex-layout-bad-1/source/jibb
696−/* tok-225 %txt /tests/golden/lex-layout-bad-10/tokens/txt
696+/* tok-225 %txt /tests/golden/lex-layout-bad-1/tokens/txt
697−/* tre-225 %txt /tests/golden/lex-layout-bad-10/tree/txt
697+/* tre-225 %txt /tests/golden/lex-layout-bad-1/tree/txt
698−/* src-226 %jibb /tests/golden/lex-layout-bad-2/source/jibb
698+/* src-226 %jibb /tests/golden/lex-layout-bad-10/source/jibb
699−/* tok-226 %txt /tests/golden/lex-layout-bad-2/tokens/txt
699+/* tok-226 %txt /tests/golden/lex-layout-bad-10/tokens/txt
700−/* tre-226 %txt /tests/golden/lex-layout-bad-2/tree/txt
700+/* tre-226 %txt /tests/golden/lex-layout-bad-10/tree/txt
701−/* src-227 %jibb /tests/golden/lex-layout-bad-3/source/jibb
701+/* src-227 %jibb /tests/golden/lex-layout-bad-2/source/jibb
702−/* tok-227 %txt /tests/golden/lex-layout-bad-3/tokens/txt
702+/* tok-227 %txt /tests/golden/lex-layout-bad-2/tokens/txt
703−/* tre-227 %txt /tests/golden/lex-layout-bad-3/tree/txt
703+/* tre-227 %txt /tests/golden/lex-layout-bad-2/tree/txt
704−/* src-228 %jibb /tests/golden/lex-layout-bad-4/source/jibb
704+/* src-228 %jibb /tests/golden/lex-layout-bad-3/source/jibb
705−/* tok-228 %txt /tests/golden/lex-layout-bad-4/tokens/txt
705+/* tok-228 %txt /tests/golden/lex-layout-bad-3/tokens/txt
706−/* tre-228 %txt /tests/golden/lex-layout-bad-4/tree/txt
706+/* tre-228 %txt /tests/golden/lex-layout-bad-3/tree/txt
707−/* src-229 %jibb /tests/golden/lex-layout-bad-5/source/jibb
707+/* src-229 %jibb /tests/golden/lex-layout-bad-4/source/jibb
708−/* tok-229 %txt /tests/golden/lex-layout-bad-5/tokens/txt
708+/* tok-229 %txt /tests/golden/lex-layout-bad-4/tokens/txt
709−/* tre-229 %txt /tests/golden/lex-layout-bad-5/tree/txt
709+/* tre-229 %txt /tests/golden/lex-layout-bad-4/tree/txt
710−/* src-230 %jibb /tests/golden/lex-layout-bad-6/source/jibb
710+/* src-230 %jibb /tests/golden/lex-layout-bad-5/source/jibb
711−/* tok-230 %txt /tests/golden/lex-layout-bad-6/tokens/txt
711+/* tok-230 %txt /tests/golden/lex-layout-bad-5/tokens/txt
712−/* tre-230 %txt /tests/golden/lex-layout-bad-6/tree/txt
712+/* tre-230 %txt /tests/golden/lex-layout-bad-5/tree/txt
713−/* src-231 %jibb /tests/golden/lex-layout-bad-7/source/jibb
713+/* src-231 %jibb /tests/golden/lex-layout-bad-6/source/jibb
714−/* tok-231 %txt /tests/golden/lex-layout-bad-7/tokens/txt
714+/* tok-231 %txt /tests/golden/lex-layout-bad-6/tokens/txt
715−/* tre-231 %txt /tests/golden/lex-layout-bad-7/tree/txt
715+/* tre-231 %txt /tests/golden/lex-layout-bad-6/tree/txt
716−/* src-232 %jibb /tests/golden/lex-layout-bad-8/source/jibb
716+/* src-232 %jibb /tests/golden/lex-layout-bad-7/source/jibb
717−/* tok-232 %txt /tests/golden/lex-layout-bad-8/tokens/txt
717+/* tok-232 %txt /tests/golden/lex-layout-bad-7/tokens/txt
718−/* tre-232 %txt /tests/golden/lex-layout-bad-8/tree/txt
718+/* tre-232 %txt /tests/golden/lex-layout-bad-7/tree/txt
719−/* src-233 %jibb /tests/golden/lex-layout-bad-9/source/jibb
719+/* src-233 %jibb /tests/golden/lex-layout-bad-8/source/jibb
720−/* tok-233 %txt /tests/golden/lex-layout-bad-9/tokens/txt
720+/* tok-233 %txt /tests/golden/lex-layout-bad-8/tokens/txt
721−/* tre-233 %txt /tests/golden/lex-layout-bad-9/tree/txt
721+/* tre-233 %txt /tests/golden/lex-layout-bad-8/tree/txt
722−/* src-234 %jibb /tests/golden/lex-layout-ok-1/source/jibb
722+/* src-234 %jibb /tests/golden/lex-layout-bad-9/source/jibb
723−/* tok-234 %txt /tests/golden/lex-layout-ok-1/tokens/txt
723+/* tok-234 %txt /tests/golden/lex-layout-bad-9/tokens/txt
724−/* tre-234 %txt /tests/golden/lex-layout-ok-1/tree/txt
724+/* tre-234 %txt /tests/golden/lex-layout-bad-9/tree/txt
725−/* src-235 %jibb /tests/golden/lex-list-bad-1/source/jibb
725+/* src-235 %jibb /tests/golden/lex-layout-ok-1/source/jibb
726−/* tok-235 %txt /tests/golden/lex-list-bad-1/tokens/txt
726+/* tok-235 %txt /tests/golden/lex-layout-ok-1/tokens/txt
727−/* tre-235 %txt /tests/golden/lex-list-bad-1/tree/txt
727+/* tre-235 %txt /tests/golden/lex-layout-ok-1/tree/txt
728−/* src-236 %jibb /tests/golden/lex-list-ok-1/source/jibb
728+/* src-236 %jibb /tests/golden/lex-list-bad-1/source/jibb
729−/* tok-236 %txt /tests/golden/lex-list-ok-1/tokens/txt
729+/* tok-236 %txt /tests/golden/lex-list-bad-1/tokens/txt
730−/* tre-236 %txt /tests/golden/lex-list-ok-1/tree/txt
730+/* tre-236 %txt /tests/golden/lex-list-bad-1/tree/txt
731−/* src-237 %jibb /tests/golden/lex-loobean-bad-1/source/jibb
731+/* src-237 %jibb /tests/golden/lex-list-ok-1/source/jibb
732−/* tok-237 %txt /tests/golden/lex-loobean-bad-1/tokens/txt
732+/* tok-237 %txt /tests/golden/lex-list-ok-1/tokens/txt
733−/* tre-237 %txt /tests/golden/lex-loobean-bad-1/tree/txt
733+/* tre-237 %txt /tests/golden/lex-list-ok-1/tree/txt
734−/* src-238 %jibb /tests/golden/lex-loobean-ok-1/source/jibb
734+/* src-238 %jibb /tests/golden/lex-loobean-bad-1/source/jibb
735−/* tok-238 %txt /tests/golden/lex-loobean-ok-1/tokens/txt
735+/* tok-238 %txt /tests/golden/lex-loobean-bad-1/tokens/txt
736−/* tre-238 %txt /tests/golden/lex-loobean-ok-1/tree/txt
736+/* tre-238 %txt /tests/golden/lex-loobean-bad-1/tree/txt
737−/* src-239 %jibb /tests/golden/lex-name-bad-1/source/jibb
737+/* src-239 %jibb /tests/golden/lex-loobean-ok-1/source/jibb
738−/* tok-239 %txt /tests/golden/lex-name-bad-1/tokens/txt
738+/* tok-239 %txt /tests/golden/lex-loobean-ok-1/tokens/txt
739−/* tre-239 %txt /tests/golden/lex-name-bad-1/tree/txt
739+/* tre-239 %txt /tests/golden/lex-loobean-ok-1/tree/txt
740−/* src-240 %jibb /tests/golden/lex-name-bad-2/source/jibb
740+/* src-240 %jibb /tests/golden/lex-name-bad-1/source/jibb
741−/* tok-240 %txt /tests/golden/lex-name-bad-2/tokens/txt
741+/* tok-240 %txt /tests/golden/lex-name-bad-1/tokens/txt
742−/* tre-240 %txt /tests/golden/lex-name-bad-2/tree/txt
742+/* tre-240 %txt /tests/golden/lex-name-bad-1/tree/txt
743−/* src-241 %jibb /tests/golden/lex-name-bad-3/source/jibb
743+/* src-241 %jibb /tests/golden/lex-name-bad-2/source/jibb
744−/* tok-241 %txt /tests/golden/lex-name-bad-3/tokens/txt
744+/* tok-241 %txt /tests/golden/lex-name-bad-2/tokens/txt
745−/* tre-241 %txt /tests/golden/lex-name-bad-3/tree/txt
745+/* tre-241 %txt /tests/golden/lex-name-bad-2/tree/txt
746−/* src-242 %jibb /tests/golden/lex-name-bad-4/source/jibb
746+/* src-242 %jibb /tests/golden/lex-name-bad-3/source/jibb
747−/* tok-242 %txt /tests/golden/lex-name-bad-4/tokens/txt
747+/* tok-242 %txt /tests/golden/lex-name-bad-3/tokens/txt
748−/* tre-242 %txt /tests/golden/lex-name-bad-4/tree/txt
748+/* tre-242 %txt /tests/golden/lex-name-bad-3/tree/txt
749−/* src-243 %jibb /tests/golden/lex-name-bad-5/source/jibb
749+/* src-243 %jibb /tests/golden/lex-name-bad-4/source/jibb
750−/* tok-243 %txt /tests/golden/lex-name-bad-5/tokens/txt
750+/* tok-243 %txt /tests/golden/lex-name-bad-4/tokens/txt
751−/* tre-243 %txt /tests/golden/lex-name-bad-5/tree/txt
751+/* tre-243 %txt /tests/golden/lex-name-bad-4/tree/txt
752−/* src-244 %jibb /tests/golden/lex-name-bad-6/source/jibb
752+/* src-244 %jibb /tests/golden/lex-name-bad-5/source/jibb
753−/* tok-244 %txt /tests/golden/lex-name-bad-6/tokens/txt
753+/* tok-244 %txt /tests/golden/lex-name-bad-5/tokens/txt
754−/* tre-244 %txt /tests/golden/lex-name-bad-6/tree/txt
754+/* tre-244 %txt /tests/golden/lex-name-bad-5/tree/txt
755−/* src-245 %jibb /tests/golden/lex-name-ok-1/source/jibb
755+/* src-245 %jibb /tests/golden/lex-name-bad-6/source/jibb
756−/* tok-245 %txt /tests/golden/lex-name-ok-1/tokens/txt
756+/* tok-245 %txt /tests/golden/lex-name-bad-6/tokens/txt
757−/* tre-245 %txt /tests/golden/lex-name-ok-1/tree/txt
757+/* tre-245 %txt /tests/golden/lex-name-bad-6/tree/txt
758−/* src-246 %jibb /tests/golden/lex-null-bad-1/source/jibb
758+/* src-246 %jibb /tests/golden/lex-name-ok-1/source/jibb
759−/* tok-246 %txt /tests/golden/lex-null-bad-1/tokens/txt
759+/* tok-246 %txt /tests/golden/lex-name-ok-1/tokens/txt
760−/* tre-246 %txt /tests/golden/lex-null-bad-1/tree/txt
760+/* tre-246 %txt /tests/golden/lex-name-ok-1/tree/txt
761−/* src-247 %jibb /tests/golden/lex-null-bad-2/source/jibb
761+/* src-247 %jibb /tests/golden/lex-null-bad-1/source/jibb
762−/* tok-247 %txt /tests/golden/lex-null-bad-2/tokens/txt
762+/* tok-247 %txt /tests/golden/lex-null-bad-1/tokens/txt
763−/* tre-247 %txt /tests/golden/lex-null-bad-2/tree/txt
763+/* tre-247 %txt /tests/golden/lex-null-bad-1/tree/txt
764−/* src-248 %jibb /tests/golden/lex-null-ok-1/source/jibb
764+/* src-248 %jibb /tests/golden/lex-null-bad-2/source/jibb
765−/* tok-248 %txt /tests/golden/lex-null-ok-1/tokens/txt
765+/* tok-248 %txt /tests/golden/lex-null-bad-2/tokens/txt
766−/* tre-248 %txt /tests/golden/lex-null-ok-1/tree/txt
766+/* tre-248 %txt /tests/golden/lex-null-bad-2/tree/txt
767−/* src-249 %jibb /tests/golden/lex-open-bracket-bad-1/source/jibb
767+/* src-249 %jibb /tests/golden/lex-null-ok-1/source/jibb
768−/* tok-249 %txt /tests/golden/lex-open-bracket-bad-1/tokens/txt
768+/* tok-249 %txt /tests/golden/lex-null-ok-1/tokens/txt
769−/* tre-249 %txt /tests/golden/lex-open-bracket-bad-1/tree/txt
769+/* tre-249 %txt /tests/golden/lex-null-ok-1/tree/txt
770−/* src-250 %jibb /tests/golden/lex-open-bracket-bad-10/source/jibb
770+/* src-250 %jibb /tests/golden/lex-open-bracket-bad-1/source/jibb
771−/* tok-250 %txt /tests/golden/lex-open-bracket-bad-10/tokens/txt
771+/* tok-250 %txt /tests/golden/lex-open-bracket-bad-1/tokens/txt
772−/* tre-250 %txt /tests/golden/lex-open-bracket-bad-10/tree/txt
772+/* tre-250 %txt /tests/golden/lex-open-bracket-bad-1/tree/txt
773−/* src-251 %jibb /tests/golden/lex-open-bracket-bad-11/source/jibb
773+/* src-251 %jibb /tests/golden/lex-open-bracket-bad-10/source/jibb
774−/* tok-251 %txt /tests/golden/lex-open-bracket-bad-11/tokens/txt
774+/* tok-251 %txt /tests/golden/lex-open-bracket-bad-10/tokens/txt
775−/* tre-251 %txt /tests/golden/lex-open-bracket-bad-11/tree/txt
775+/* tre-251 %txt /tests/golden/lex-open-bracket-bad-10/tree/txt
776−/* src-252 %jibb /tests/golden/lex-open-bracket-bad-12/source/jibb
776+/* src-252 %jibb /tests/golden/lex-open-bracket-bad-11/source/jibb
777−/* tok-252 %txt /tests/golden/lex-open-bracket-bad-12/tokens/txt
777+/* tok-252 %txt /tests/golden/lex-open-bracket-bad-11/tokens/txt
778−/* tre-252 %txt /tests/golden/lex-open-bracket-bad-12/tree/txt
778+/* tre-252 %txt /tests/golden/lex-open-bracket-bad-11/tree/txt
779−/* src-253 %jibb /tests/golden/lex-open-bracket-bad-13/source/jibb
779+/* src-253 %jibb /tests/golden/lex-open-bracket-bad-12/source/jibb
780−/* tok-253 %txt /tests/golden/lex-open-bracket-bad-13/tokens/txt
780+/* tok-253 %txt /tests/golden/lex-open-bracket-bad-12/tokens/txt
781−/* tre-253 %txt /tests/golden/lex-open-bracket-bad-13/tree/txt
781+/* tre-253 %txt /tests/golden/lex-open-bracket-bad-12/tree/txt
782−/* src-254 %jibb /tests/golden/lex-open-bracket-bad-14/source/jibb
782+/* src-254 %jibb /tests/golden/lex-open-bracket-bad-13/source/jibb
783−/* tok-254 %txt /tests/golden/lex-open-bracket-bad-14/tokens/txt
783+/* tok-254 %txt /tests/golden/lex-open-bracket-bad-13/tokens/txt
784−/* tre-254 %txt /tests/golden/lex-open-bracket-bad-14/tree/txt
784+/* tre-254 %txt /tests/golden/lex-open-bracket-bad-13/tree/txt
785−/* src-255 %jibb /tests/golden/lex-open-bracket-bad-15/source/jibb
785+/* src-255 %jibb /tests/golden/lex-open-bracket-bad-14/source/jibb
786−/* tok-255 %txt /tests/golden/lex-open-bracket-bad-15/tokens/txt
786+/* tok-255 %txt /tests/golden/lex-open-bracket-bad-14/tokens/txt
787−/* tre-255 %txt /tests/golden/lex-open-bracket-bad-15/tree/txt
787+/* tre-255 %txt /tests/golden/lex-open-bracket-bad-14/tree/txt
788−/* src-256 %jibb /tests/golden/lex-open-bracket-bad-16/source/jibb
788+/* src-256 %jibb /tests/golden/lex-open-bracket-bad-15/source/jibb
789−/* tok-256 %txt /tests/golden/lex-open-bracket-bad-16/tokens/txt
789+/* tok-256 %txt /tests/golden/lex-open-bracket-bad-15/tokens/txt
790−/* tre-256 %txt /tests/golden/lex-open-bracket-bad-16/tree/txt
790+/* tre-256 %txt /tests/golden/lex-open-bracket-bad-15/tree/txt
791−/* src-257 %jibb /tests/golden/lex-open-bracket-bad-2/source/jibb
791+/* src-257 %jibb /tests/golden/lex-open-bracket-bad-16/source/jibb
792−/* tok-257 %txt /tests/golden/lex-open-bracket-bad-2/tokens/txt
792+/* tok-257 %txt /tests/golden/lex-open-bracket-bad-16/tokens/txt
793−/* tre-257 %txt /tests/golden/lex-open-bracket-bad-2/tree/txt
793+/* tre-257 %txt /tests/golden/lex-open-bracket-bad-16/tree/txt
794−/* src-258 %jibb /tests/golden/lex-open-bracket-bad-3/source/jibb
794+/* src-258 %jibb /tests/golden/lex-open-bracket-bad-2/source/jibb
795−/* tok-258 %txt /tests/golden/lex-open-bracket-bad-3/tokens/txt
795+/* tok-258 %txt /tests/golden/lex-open-bracket-bad-2/tokens/txt
796−/* tre-258 %txt /tests/golden/lex-open-bracket-bad-3/tree/txt
796+/* tre-258 %txt /tests/golden/lex-open-bracket-bad-2/tree/txt
797−/* src-259 %jibb /tests/golden/lex-open-bracket-bad-5/source/jibb
797+/* src-259 %jibb /tests/golden/lex-open-bracket-bad-3/source/jibb
798−/* tok-259 %txt /tests/golden/lex-open-bracket-bad-5/tokens/txt
798+/* tok-259 %txt /tests/golden/lex-open-bracket-bad-3/tokens/txt
799−/* tre-259 %txt /tests/golden/lex-open-bracket-bad-5/tree/txt
799+/* tre-259 %txt /tests/golden/lex-open-bracket-bad-3/tree/txt
800−/* src-260 %jibb /tests/golden/lex-open-bracket-bad-6/source/jibb
800+/* src-260 %jibb /tests/golden/lex-open-bracket-bad-5/source/jibb
801−/* tok-260 %txt /tests/golden/lex-open-bracket-bad-6/tokens/txt
801+/* tok-260 %txt /tests/golden/lex-open-bracket-bad-5/tokens/txt
802−/* tre-260 %txt /tests/golden/lex-open-bracket-bad-6/tree/txt
802+/* tre-260 %txt /tests/golden/lex-open-bracket-bad-5/tree/txt
803−/* src-261 %jibb /tests/golden/lex-open-bracket-bad-7/source/jibb
803+/* src-261 %jibb /tests/golden/lex-open-bracket-bad-6/source/jibb
804−/* tok-261 %txt /tests/golden/lex-open-bracket-bad-7/tokens/txt
804+/* tok-261 %txt /tests/golden/lex-open-bracket-bad-6/tokens/txt
805−/* tre-261 %txt /tests/golden/lex-open-bracket-bad-7/tree/txt
805+/* tre-261 %txt /tests/golden/lex-open-bracket-bad-6/tree/txt
806−/* src-262 %jibb /tests/golden/lex-open-bracket-bad-8/source/jibb
806+/* src-262 %jibb /tests/golden/lex-open-bracket-bad-7/source/jibb
807−/* tok-262 %txt /tests/golden/lex-open-bracket-bad-8/tokens/txt
807+/* tok-262 %txt /tests/golden/lex-open-bracket-bad-7/tokens/txt
808−/* tre-262 %txt /tests/golden/lex-open-bracket-bad-8/tree/txt
808+/* tre-262 %txt /tests/golden/lex-open-bracket-bad-7/tree/txt
809−/* src-263 %jibb /tests/golden/lex-open-bracket-bad-9/source/jibb
809+/* src-263 %jibb /tests/golden/lex-open-bracket-bad-8/source/jibb
810−/* tok-263 %txt /tests/golden/lex-open-bracket-bad-9/tokens/txt
810+/* tok-263 %txt /tests/golden/lex-open-bracket-bad-8/tokens/txt
811−/* tre-263 %txt /tests/golden/lex-open-bracket-bad-9/tree/txt
811+/* tre-263 %txt /tests/golden/lex-open-bracket-bad-8/tree/txt
812−/* src-264 %jibb /tests/golden/lex-open-bracket-ok-1/source/jibb
812+/* src-264 %jibb /tests/golden/lex-open-bracket-bad-9/source/jibb
813−/* tok-264 %txt /tests/golden/lex-open-bracket-ok-1/tokens/txt
813+/* tok-264 %txt /tests/golden/lex-open-bracket-bad-9/tokens/txt
814−/* tre-264 %txt /tests/golden/lex-open-bracket-ok-1/tree/txt
814+/* tre-264 %txt /tests/golden/lex-open-bracket-bad-9/tree/txt
815−/* src-265 %jibb /tests/golden/lex-open-bracket-ok-2/source/jibb
815+/* src-265 %jibb /tests/golden/lex-open-bracket-ok-1/source/jibb
816−/* tok-265 %txt /tests/golden/lex-open-bracket-ok-2/tokens/txt
816+/* tok-265 %txt /tests/golden/lex-open-bracket-ok-1/tokens/txt
817−/* tre-265 %txt /tests/golden/lex-open-bracket-ok-2/tree/txt
817+/* tre-265 %txt /tests/golden/lex-open-bracket-ok-1/tree/txt
818−/* src-266 %jibb /tests/golden/lex-open-bracket-ok-3/source/jibb
818+/* src-266 %jibb /tests/golden/lex-open-bracket-ok-2/source/jibb
819−/* tok-266 %txt /tests/golden/lex-open-bracket-ok-3/tokens/txt
819+/* tok-266 %txt /tests/golden/lex-open-bracket-ok-2/tokens/txt
820−/* tre-266 %txt /tests/golden/lex-open-bracket-ok-3/tree/txt
820+/* tre-266 %txt /tests/golden/lex-open-bracket-ok-2/tree/txt
821−/* src-267 %jibb /tests/golden/lex-open-bracket-ok-4/source/jibb
821+/* src-267 %jibb /tests/golden/lex-open-bracket-ok-3/source/jibb
822−/* tok-267 %txt /tests/golden/lex-open-bracket-ok-4/tokens/txt
822+/* tok-267 %txt /tests/golden/lex-open-bracket-ok-3/tokens/txt
823−/* tre-267 %txt /tests/golden/lex-open-bracket-ok-4/tree/txt
823+/* tre-267 %txt /tests/golden/lex-open-bracket-ok-3/tree/txt
824−/* src-268 %jibb /tests/golden/lex-open-bracket-ok-5/source/jibb
824+/* src-268 %jibb /tests/golden/lex-open-bracket-ok-4/source/jibb
825−/* tok-268 %txt /tests/golden/lex-open-bracket-ok-5/tokens/txt
825+/* tok-268 %txt /tests/golden/lex-open-bracket-ok-4/tokens/txt
826−/* tre-268 %txt /tests/golden/lex-open-bracket-ok-5/tree/txt
826+/* tre-268 %txt /tests/golden/lex-open-bracket-ok-4/tree/txt
827−/* src-269 %jibb /tests/golden/lex-open-bracket-ok-6/source/jibb
827+/* src-269 %jibb /tests/golden/lex-open-bracket-ok-5/source/jibb
828−/* tok-269 %txt /tests/golden/lex-open-bracket-ok-6/tokens/txt
828+/* tok-269 %txt /tests/golden/lex-open-bracket-ok-5/tokens/txt
829−/* tre-269 %txt /tests/golden/lex-open-bracket-ok-6/tree/txt
829+/* tre-269 %txt /tests/golden/lex-open-bracket-ok-5/tree/txt
830−/* src-270 %jibb /tests/golden/lex-open-bracket-ok-7/source/jibb
830+/* src-270 %jibb /tests/golden/lex-open-bracket-ok-6/source/jibb
831−/* tok-270 %txt /tests/golden/lex-open-bracket-ok-7/tokens/txt
831+/* tok-270 %txt /tests/golden/lex-open-bracket-ok-6/tokens/txt
832−/* tre-270 %txt /tests/golden/lex-open-bracket-ok-7/tree/txt
832+/* tre-270 %txt /tests/golden/lex-open-bracket-ok-6/tree/txt
833−/* src-271 %jibb /tests/golden/lex-open-bracket-ok-8/source/jibb
833+/* src-271 %jibb /tests/golden/lex-open-bracket-ok-7/source/jibb
834−/* tok-271 %txt /tests/golden/lex-open-bracket-ok-8/tokens/txt
834+/* tok-271 %txt /tests/golden/lex-open-bracket-ok-7/tokens/txt
835−/* tre-271 %txt /tests/golden/lex-open-bracket-ok-8/tree/txt
835+/* tre-271 %txt /tests/golden/lex-open-bracket-ok-7/tree/txt
836−/* src-272 %jibb /tests/golden/lex-open-bracket-ok-9/source/jibb
836+/* src-272 %jibb /tests/golden/lex-open-bracket-ok-8/source/jibb
837−/* tok-272 %txt /tests/golden/lex-open-bracket-ok-9/tokens/txt
837+/* tok-272 %txt /tests/golden/lex-open-bracket-ok-8/tokens/txt
838−/* tre-272 %txt /tests/golden/lex-open-bracket-ok-9/tree/txt
838+/* tre-272 %txt /tests/golden/lex-open-bracket-ok-8/tree/txt
839−/* src-273 %jibb /tests/golden/lex-open-mold-bad-1/source/jibb
839+/* src-273 %jibb /tests/golden/lex-open-bracket-ok-9/source/jibb
840−/* tok-273 %txt /tests/golden/lex-open-mold-bad-1/tokens/txt
840+/* tok-273 %txt /tests/golden/lex-open-bracket-ok-9/tokens/txt
841−/* tre-273 %txt /tests/golden/lex-open-mold-bad-1/tree/txt
841+/* tre-273 %txt /tests/golden/lex-open-bracket-ok-9/tree/txt
842−/* src-274 %jibb /tests/golden/lex-open-mold-bad-10/source/jibb
842+/* src-274 %jibb /tests/golden/lex-open-mold-bad-1/source/jibb
843−/* tok-274 %txt /tests/golden/lex-open-mold-bad-10/tokens/txt
843+/* tok-274 %txt /tests/golden/lex-open-mold-bad-1/tokens/txt
844−/* tre-274 %txt /tests/golden/lex-open-mold-bad-10/tree/txt
844+/* tre-274 %txt /tests/golden/lex-open-mold-bad-1/tree/txt
845−/* src-275 %jibb /tests/golden/lex-open-mold-bad-11/source/jibb
845+/* src-275 %jibb /tests/golden/lex-open-mold-bad-10/source/jibb
846−/* tok-275 %txt /tests/golden/lex-open-mold-bad-11/tokens/txt
846+/* tok-275 %txt /tests/golden/lex-open-mold-bad-10/tokens/txt
847−/* tre-275 %txt /tests/golden/lex-open-mold-bad-11/tree/txt
847+/* tre-275 %txt /tests/golden/lex-open-mold-bad-10/tree/txt
848−/* src-276 %jibb /tests/golden/lex-open-mold-bad-12/source/jibb
848+/* src-276 %jibb /tests/golden/lex-open-mold-bad-11/source/jibb
849−/* tok-276 %txt /tests/golden/lex-open-mold-bad-12/tokens/txt
849+/* tok-276 %txt /tests/golden/lex-open-mold-bad-11/tokens/txt
850−/* tre-276 %txt /tests/golden/lex-open-mold-bad-12/tree/txt
850+/* tre-276 %txt /tests/golden/lex-open-mold-bad-11/tree/txt
851−/* src-277 %jibb /tests/golden/lex-open-mold-bad-13/source/jibb
851+/* src-277 %jibb /tests/golden/lex-open-mold-bad-12/source/jibb
852−/* tok-277 %txt /tests/golden/lex-open-mold-bad-13/tokens/txt
852+/* tok-277 %txt /tests/golden/lex-open-mold-bad-12/tokens/txt
853−/* tre-277 %txt /tests/golden/lex-open-mold-bad-13/tree/txt
853+/* tre-277 %txt /tests/golden/lex-open-mold-bad-12/tree/txt
854−/* src-278 %jibb /tests/golden/lex-open-mold-bad-14/source/jibb
854+/* src-278 %jibb /tests/golden/lex-open-mold-bad-13/source/jibb
855−/* tok-278 %txt /tests/golden/lex-open-mold-bad-14/tokens/txt
855+/* tok-278 %txt /tests/golden/lex-open-mold-bad-13/tokens/txt
856−/* tre-278 %txt /tests/golden/lex-open-mold-bad-14/tree/txt
856+/* tre-278 %txt /tests/golden/lex-open-mold-bad-13/tree/txt
857−/* src-279 %jibb /tests/golden/lex-open-mold-bad-15/source/jibb
857+/* src-279 %jibb /tests/golden/lex-open-mold-bad-14/source/jibb
858−/* tok-279 %txt /tests/golden/lex-open-mold-bad-15/tokens/txt
858+/* tok-279 %txt /tests/golden/lex-open-mold-bad-14/tokens/txt
859−/* tre-279 %txt /tests/golden/lex-open-mold-bad-15/tree/txt
859+/* tre-279 %txt /tests/golden/lex-open-mold-bad-14/tree/txt
860−/* src-280 %jibb /tests/golden/lex-open-mold-bad-16/source/jibb
860+/* src-280 %jibb /tests/golden/lex-open-mold-bad-15/source/jibb
861−/* tok-280 %txt /tests/golden/lex-open-mold-bad-16/tokens/txt
861+/* tok-280 %txt /tests/golden/lex-open-mold-bad-15/tokens/txt
862−/* tre-280 %txt /tests/golden/lex-open-mold-bad-16/tree/txt
862+/* tre-280 %txt /tests/golden/lex-open-mold-bad-15/tree/txt
863−/* src-281 %jibb /tests/golden/lex-open-mold-bad-2/source/jibb
863+/* src-281 %jibb /tests/golden/lex-open-mold-bad-16/source/jibb
864−/* tok-281 %txt /tests/golden/lex-open-mold-bad-2/tokens/txt
864+/* tok-281 %txt /tests/golden/lex-open-mold-bad-16/tokens/txt
865−/* tre-281 %txt /tests/golden/lex-open-mold-bad-2/tree/txt
865+/* tre-281 %txt /tests/golden/lex-open-mold-bad-16/tree/txt
866−/* src-282 %jibb /tests/golden/lex-open-mold-bad-3/source/jibb
866+/* src-282 %jibb /tests/golden/lex-open-mold-bad-2/source/jibb
867−/* tok-282 %txt /tests/golden/lex-open-mold-bad-3/tokens/txt
867+/* tok-282 %txt /tests/golden/lex-open-mold-bad-2/tokens/txt
868−/* tre-282 %txt /tests/golden/lex-open-mold-bad-3/tree/txt
868+/* tre-282 %txt /tests/golden/lex-open-mold-bad-2/tree/txt
869−/* src-283 %jibb /tests/golden/lex-open-mold-bad-4/source/jibb
869+/* src-283 %jibb /tests/golden/lex-open-mold-bad-3/source/jibb
870−/* tok-283 %txt /tests/golden/lex-open-mold-bad-4/tokens/txt
870+/* tok-283 %txt /tests/golden/lex-open-mold-bad-3/tokens/txt
871−/* tre-283 %txt /tests/golden/lex-open-mold-bad-4/tree/txt
871+/* tre-283 %txt /tests/golden/lex-open-mold-bad-3/tree/txt
872−/* src-284 %jibb /tests/golden/lex-open-mold-bad-5/source/jibb
872+/* src-284 %jibb /tests/golden/lex-open-mold-bad-4/source/jibb
873−/* tok-284 %txt /tests/golden/lex-open-mold-bad-5/tokens/txt
873+/* tok-284 %txt /tests/golden/lex-open-mold-bad-4/tokens/txt
874−/* tre-284 %txt /tests/golden/lex-open-mold-bad-5/tree/txt
874+/* tre-284 %txt /tests/golden/lex-open-mold-bad-4/tree/txt
875−/* src-285 %jibb /tests/golden/lex-open-mold-bad-6/source/jibb
875+/* src-285 %jibb /tests/golden/lex-open-mold-bad-5/source/jibb
876−/* tok-285 %txt /tests/golden/lex-open-mold-bad-6/tokens/txt
876+/* tok-285 %txt /tests/golden/lex-open-mold-bad-5/tokens/txt
877−/* tre-285 %txt /tests/golden/lex-open-mold-bad-6/tree/txt
877+/* tre-285 %txt /tests/golden/lex-open-mold-bad-5/tree/txt
878−/* src-286 %jibb /tests/golden/lex-open-mold-bad-7/source/jibb
878+/* src-286 %jibb /tests/golden/lex-open-mold-bad-6/source/jibb
879−/* tok-286 %txt /tests/golden/lex-open-mold-bad-7/tokens/txt
879+/* tok-286 %txt /tests/golden/lex-open-mold-bad-6/tokens/txt
880−/* tre-286 %txt /tests/golden/lex-open-mold-bad-7/tree/txt
880+/* tre-286 %txt /tests/golden/lex-open-mold-bad-6/tree/txt
881−/* src-287 %jibb /tests/golden/lex-open-mold-bad-8/source/jibb
881+/* src-287 %jibb /tests/golden/lex-open-mold-bad-7/source/jibb
882−/* tok-287 %txt /tests/golden/lex-open-mold-bad-8/tokens/txt
882+/* tok-287 %txt /tests/golden/lex-open-mold-bad-7/tokens/txt
883−/* tre-287 %txt /tests/golden/lex-open-mold-bad-8/tree/txt
883+/* tre-287 %txt /tests/golden/lex-open-mold-bad-7/tree/txt
884−/* src-288 %jibb /tests/golden/lex-open-mold-bad-9/source/jibb
884+/* src-288 %jibb /tests/golden/lex-open-mold-bad-8/source/jibb
885−/* tok-288 %txt /tests/golden/lex-open-mold-bad-9/tokens/txt
885+/* tok-288 %txt /tests/golden/lex-open-mold-bad-8/tokens/txt
886−/* tre-288 %txt /tests/golden/lex-open-mold-bad-9/tree/txt
886+/* tre-288 %txt /tests/golden/lex-open-mold-bad-8/tree/txt
887−/* src-289 %jibb /tests/golden/lex-open-mold-ok-1/source/jibb
887+/* src-289 %jibb /tests/golden/lex-open-mold-bad-9/source/jibb
888−/* tok-289 %txt /tests/golden/lex-open-mold-ok-1/tokens/txt
888+/* tok-289 %txt /tests/golden/lex-open-mold-bad-9/tokens/txt
889−/* tre-289 %txt /tests/golden/lex-open-mold-ok-1/tree/txt
889+/* tre-289 %txt /tests/golden/lex-open-mold-bad-9/tree/txt
890−/* src-290 %jibb /tests/golden/lex-open-mold-ok-2/source/jibb
890+/* src-290 %jibb /tests/golden/lex-open-mold-ok-1/source/jibb
891−/* tok-290 %txt /tests/golden/lex-open-mold-ok-2/tokens/txt
891+/* tok-290 %txt /tests/golden/lex-open-mold-ok-1/tokens/txt
892−/* tre-290 %txt /tests/golden/lex-open-mold-ok-2/tree/txt
892+/* tre-290 %txt /tests/golden/lex-open-mold-ok-1/tree/txt
893−/* src-291 %jibb /tests/golden/lex-open-mold-ok-3/source/jibb
893+/* src-291 %jibb /tests/golden/lex-open-mold-ok-2/source/jibb
894−/* tok-291 %txt /tests/golden/lex-open-mold-ok-3/tokens/txt
894+/* tok-291 %txt /tests/golden/lex-open-mold-ok-2/tokens/txt
895−/* tre-291 %txt /tests/golden/lex-open-mold-ok-3/tree/txt
895+/* tre-291 %txt /tests/golden/lex-open-mold-ok-2/tree/txt
896−/* src-292 %jibb /tests/golden/lex-open-mold-ok-4/source/jibb
896+/* src-292 %jibb /tests/golden/lex-open-mold-ok-3/source/jibb
897−/* tok-292 %txt /tests/golden/lex-open-mold-ok-4/tokens/txt
897+/* tok-292 %txt /tests/golden/lex-open-mold-ok-3/tokens/txt
898−/* tre-292 %txt /tests/golden/lex-open-mold-ok-4/tree/txt
898+/* tre-292 %txt /tests/golden/lex-open-mold-ok-3/tree/txt
899−/* src-293 %jibb /tests/golden/lex-open-mold-ok-5/source/jibb
899+/* src-293 %jibb /tests/golden/lex-open-mold-ok-4/source/jibb
900−/* tok-293 %txt /tests/golden/lex-open-mold-ok-5/tokens/txt
900+/* tok-293 %txt /tests/golden/lex-open-mold-ok-4/tokens/txt
901−/* tre-293 %txt /tests/golden/lex-open-mold-ok-5/tree/txt
901+/* tre-293 %txt /tests/golden/lex-open-mold-ok-4/tree/txt
902−/* src-294 %jibb /tests/golden/lex-open-mold-ok-6/source/jibb
902+/* src-294 %jibb /tests/golden/lex-open-mold-ok-5/source/jibb
903−/* tok-294 %txt /tests/golden/lex-open-mold-ok-6/tokens/txt
903+/* tok-294 %txt /tests/golden/lex-open-mold-ok-5/tokens/txt
904−/* tre-294 %txt /tests/golden/lex-open-mold-ok-6/tree/txt
904+/* tre-294 %txt /tests/golden/lex-open-mold-ok-5/tree/txt
905−/* src-295 %jibb /tests/golden/lex-pair-binding-bad-1/source/jibb
905+/* src-295 %jibb /tests/golden/lex-open-mold-ok-6/source/jibb
906−/* tok-295 %txt /tests/golden/lex-pair-binding-bad-1/tokens/txt
906+/* tok-295 %txt /tests/golden/lex-open-mold-ok-6/tokens/txt
907−/* tre-295 %txt /tests/golden/lex-pair-binding-bad-1/tree/txt
907+/* tre-295 %txt /tests/golden/lex-open-mold-ok-6/tree/txt
908−/* src-296 %jibb /tests/golden/lex-pair-binding-ok-1/source/jibb
908+/* src-296 %jibb /tests/golden/lex-pair-binding-bad-1/source/jibb
909−/* tok-296 %txt /tests/golden/lex-pair-binding-ok-1/tokens/txt
909+/* tok-296 %txt /tests/golden/lex-pair-binding-bad-1/tokens/txt
910−/* tre-296 %txt /tests/golden/lex-pair-binding-ok-1/tree/txt
910+/* tre-296 %txt /tests/golden/lex-pair-binding-bad-1/tree/txt
911−/* src-297 %jibb /tests/golden/lex-path-bad-1/source/jibb
911+/* src-297 %jibb /tests/golden/lex-pair-binding-ok-1/source/jibb
912−/* tok-297 %txt /tests/golden/lex-path-bad-1/tokens/txt
912+/* tok-297 %txt /tests/golden/lex-pair-binding-ok-1/tokens/txt
913−/* tre-297 %txt /tests/golden/lex-path-bad-1/tree/txt
913+/* tre-297 %txt /tests/golden/lex-pair-binding-ok-1/tree/txt
914−/* src-298 %jibb /tests/golden/lex-path-ok-1/source/jibb
914+/* src-298 %jibb /tests/golden/lex-path-bad-1/source/jibb
915−/* tok-298 %txt /tests/golden/lex-path-ok-1/tokens/txt
915+/* tok-298 %txt /tests/golden/lex-path-bad-1/tokens/txt
916−/* tre-298 %txt /tests/golden/lex-path-ok-1/tree/txt
916+/* tre-298 %txt /tests/golden/lex-path-bad-1/tree/txt
917−/* src-299 %jibb /tests/golden/lex-rune-layout-bad-1/source/jibb
917+/* src-299 %jibb /tests/golden/lex-path-ok-1/source/jibb
918−/* tok-299 %txt /tests/golden/lex-rune-layout-bad-1/tokens/txt
918+/* tok-299 %txt /tests/golden/lex-path-ok-1/tokens/txt
919−/* tre-299 %txt /tests/golden/lex-rune-layout-bad-1/tree/txt
919+/* tre-299 %txt /tests/golden/lex-path-ok-1/tree/txt
920−/* src-300 %jibb /tests/golden/lex-rune-layout-bad-11/source/jibb
920+/* src-300 %jibb /tests/golden/lex-rune-layout-bad-1/source/jibb
921−/* tok-300 %txt /tests/golden/lex-rune-layout-bad-11/tokens/txt
921+/* tok-300 %txt /tests/golden/lex-rune-layout-bad-1/tokens/txt
922−/* tre-300 %txt /tests/golden/lex-rune-layout-bad-11/tree/txt
922+/* tre-300 %txt /tests/golden/lex-rune-layout-bad-1/tree/txt
923−/* src-301 %jibb /tests/golden/lex-rune-layout-bad-12/source/jibb
923+/* src-301 %jibb /tests/golden/lex-rune-layout-bad-11/source/jibb
924−/* tok-301 %txt /tests/golden/lex-rune-layout-bad-12/tokens/txt
924+/* tok-301 %txt /tests/golden/lex-rune-layout-bad-11/tokens/txt
925−/* tre-301 %txt /tests/golden/lex-rune-layout-bad-12/tree/txt
925+/* tre-301 %txt /tests/golden/lex-rune-layout-bad-11/tree/txt
926−/* src-302 %jibb /tests/golden/lex-rune-layout-bad-13/source/jibb
926+/* src-302 %jibb /tests/golden/lex-rune-layout-bad-12/source/jibb
927−/* tok-302 %txt /tests/golden/lex-rune-layout-bad-13/tokens/txt
927+/* tok-302 %txt /tests/golden/lex-rune-layout-bad-12/tokens/txt
928−/* tre-302 %txt /tests/golden/lex-rune-layout-bad-13/tree/txt
928+/* tre-302 %txt /tests/golden/lex-rune-layout-bad-12/tree/txt
929−/* src-303 %jibb /tests/golden/lex-rune-layout-bad-14/source/jibb
929+/* src-303 %jibb /tests/golden/lex-rune-layout-bad-13/source/jibb
930−/* tok-303 %txt /tests/golden/lex-rune-layout-bad-14/tokens/txt
930+/* tok-303 %txt /tests/golden/lex-rune-layout-bad-13/tokens/txt
931−/* tre-303 %txt /tests/golden/lex-rune-layout-bad-14/tree/txt
931+/* tre-303 %txt /tests/golden/lex-rune-layout-bad-13/tree/txt
932−/* src-304 %jibb /tests/golden/lex-rune-layout-bad-15/source/jibb
932+/* src-304 %jibb /tests/golden/lex-rune-layout-bad-14/source/jibb
933−/* tok-304 %txt /tests/golden/lex-rune-layout-bad-15/tokens/txt
933+/* tok-304 %txt /tests/golden/lex-rune-layout-bad-14/tokens/txt
934−/* tre-304 %txt /tests/golden/lex-rune-layout-bad-15/tree/txt
934+/* tre-304 %txt /tests/golden/lex-rune-layout-bad-14/tree/txt
935−/* src-305 %jibb /tests/golden/lex-rune-layout-bad-2/source/jibb
935+/* src-305 %jibb /tests/golden/lex-rune-layout-bad-15/source/jibb
936−/* tok-305 %txt /tests/golden/lex-rune-layout-bad-2/tokens/txt
936+/* tok-305 %txt /tests/golden/lex-rune-layout-bad-15/tokens/txt
937−/* tre-305 %txt /tests/golden/lex-rune-layout-bad-2/tree/txt
937+/* tre-305 %txt /tests/golden/lex-rune-layout-bad-15/tree/txt
938−/* src-306 %jibb /tests/golden/lex-rune-layout-bad-3/source/jibb
938+/* src-306 %jibb /tests/golden/lex-rune-layout-bad-2/source/jibb
939−/* tok-306 %txt /tests/golden/lex-rune-layout-bad-3/tokens/txt
939+/* tok-306 %txt /tests/golden/lex-rune-layout-bad-2/tokens/txt
940−/* tre-306 %txt /tests/golden/lex-rune-layout-bad-3/tree/txt
940+/* tre-306 %txt /tests/golden/lex-rune-layout-bad-2/tree/txt
941−/* src-307 %jibb /tests/golden/lex-rune-layout-bad-4/source/jibb
941+/* src-307 %jibb /tests/golden/lex-rune-layout-bad-3/source/jibb
942−/* tok-307 %txt /tests/golden/lex-rune-layout-bad-4/tokens/txt
942+/* tok-307 %txt /tests/golden/lex-rune-layout-bad-3/tokens/txt
943−/* tre-307 %txt /tests/golden/lex-rune-layout-bad-4/tree/txt
943+/* tre-307 %txt /tests/golden/lex-rune-layout-bad-3/tree/txt
944−/* src-308 %jibb /tests/golden/lex-rune-layout-bad-5/source/jibb
944+/* src-308 %jibb /tests/golden/lex-rune-layout-bad-4/source/jibb
945−/* tok-308 %txt /tests/golden/lex-rune-layout-bad-5/tokens/txt
945+/* tok-308 %txt /tests/golden/lex-rune-layout-bad-4/tokens/txt
946−/* tre-308 %txt /tests/golden/lex-rune-layout-bad-5/tree/txt
946+/* tre-308 %txt /tests/golden/lex-rune-layout-bad-4/tree/txt
947−/* src-309 %jibb /tests/golden/lex-rune-layout-bad-6/source/jibb
947+/* src-309 %jibb /tests/golden/lex-rune-layout-bad-5/source/jibb
948−/* tok-309 %txt /tests/golden/lex-rune-layout-bad-6/tokens/txt
948+/* tok-309 %txt /tests/golden/lex-rune-layout-bad-5/tokens/txt
949−/* tre-309 %txt /tests/golden/lex-rune-layout-bad-6/tree/txt
949+/* tre-309 %txt /tests/golden/lex-rune-layout-bad-5/tree/txt
950−/* src-310 %jibb /tests/golden/lex-rune-layout-bad-7/source/jibb
950+/* src-310 %jibb /tests/golden/lex-rune-layout-bad-6/source/jibb
951−/* tok-310 %txt /tests/golden/lex-rune-layout-bad-7/tokens/txt
951+/* tok-310 %txt /tests/golden/lex-rune-layout-bad-6/tokens/txt
952−/* tre-310 %txt /tests/golden/lex-rune-layout-bad-7/tree/txt
952+/* tre-310 %txt /tests/golden/lex-rune-layout-bad-6/tree/txt
953−/* src-311 %jibb /tests/golden/lex-rune-layout-bad-8/source/jibb
953+/* src-311 %jibb /tests/golden/lex-rune-layout-bad-7/source/jibb
954−/* tok-311 %txt /tests/golden/lex-rune-layout-bad-8/tokens/txt
954+/* tok-311 %txt /tests/golden/lex-rune-layout-bad-7/tokens/txt
955−/* tre-311 %txt /tests/golden/lex-rune-layout-bad-8/tree/txt
955+/* tre-311 %txt /tests/golden/lex-rune-layout-bad-7/tree/txt
956−/* src-312 %jibb /tests/golden/lex-rune-layout-bad-9/source/jibb
956+/* src-312 %jibb /tests/golden/lex-rune-layout-bad-8/source/jibb
957−/* tok-312 %txt /tests/golden/lex-rune-layout-bad-9/tokens/txt
957+/* tok-312 %txt /tests/golden/lex-rune-layout-bad-8/tokens/txt
958−/* tre-312 %txt /tests/golden/lex-rune-layout-bad-9/tree/txt
958+/* tre-312 %txt /tests/golden/lex-rune-layout-bad-8/tree/txt
959−/* src-313 %jibb /tests/golden/lex-rune-layout-ok-1/source/jibb
959+/* src-313 %jibb /tests/golden/lex-rune-layout-bad-9/source/jibb
960−/* tok-313 %txt /tests/golden/lex-rune-layout-ok-1/tokens/txt
960+/* tok-313 %txt /tests/golden/lex-rune-layout-bad-9/tokens/txt
961−/* tre-313 %txt /tests/golden/lex-rune-layout-ok-1/tree/txt
961+/* tre-313 %txt /tests/golden/lex-rune-layout-bad-9/tree/txt
962−/* src-314 %jibb /tests/golden/lex-rune-layout-ok-2/source/jibb
962+/* src-314 %jibb /tests/golden/lex-rune-layout-ok-1/source/jibb
963−/* tok-314 %txt /tests/golden/lex-rune-layout-ok-2/tokens/txt
963+/* tok-314 %txt /tests/golden/lex-rune-layout-ok-1/tokens/txt
964−/* tre-314 %txt /tests/golden/lex-rune-layout-ok-2/tree/txt
964+/* tre-314 %txt /tests/golden/lex-rune-layout-ok-1/tree/txt
965−/* src-315 %jibb /tests/golden/lex-ship-bad-1/source/jibb
965+/* src-315 %jibb /tests/golden/lex-rune-layout-ok-2/source/jibb
966−/* tok-315 %txt /tests/golden/lex-ship-bad-1/tokens/txt
966+/* tok-315 %txt /tests/golden/lex-rune-layout-ok-2/tokens/txt
967−/* tre-315 %txt /tests/golden/lex-ship-bad-1/tree/txt
967+/* tre-315 %txt /tests/golden/lex-rune-layout-ok-2/tree/txt
968−/* src-316 %jibb /tests/golden/lex-ship-ok-1/source/jibb
968+/* src-316 %jibb /tests/golden/lex-ship-bad-1/source/jibb
969−/* tok-316 %txt /tests/golden/lex-ship-ok-1/tokens/txt
969+/* tok-316 %txt /tests/golden/lex-ship-bad-1/tokens/txt
970−/* tre-316 %txt /tests/golden/lex-ship-ok-1/tree/txt
970+/* tre-316 %txt /tests/golden/lex-ship-bad-1/tree/txt
971−/* src-317 %jibb /tests/golden/lex-spacing-bad-1/source/jibb
971+/* src-317 %jibb /tests/golden/lex-ship-ok-1/source/jibb
972−/* tok-317 %txt /tests/golden/lex-spacing-bad-1/tokens/txt
972+/* tok-317 %txt /tests/golden/lex-ship-ok-1/tokens/txt
973−/* tre-317 %txt /tests/golden/lex-spacing-bad-1/tree/txt
973+/* tre-317 %txt /tests/golden/lex-ship-ok-1/tree/txt
974−/* src-318 %jibb /tests/golden/lex-spacing-bad-2/source/jibb
974+/* src-318 %jibb /tests/golden/lex-spacing-bad-1/source/jibb
975−/* tok-318 %txt /tests/golden/lex-spacing-bad-2/tokens/txt
975+/* tok-318 %txt /tests/golden/lex-spacing-bad-1/tokens/txt
976−/* tre-318 %txt /tests/golden/lex-spacing-bad-2/tree/txt
976+/* tre-318 %txt /tests/golden/lex-spacing-bad-1/tree/txt
977−/* src-319 %jibb /tests/golden/lex-spacing-ok-1/source/jibb
977+/* src-319 %jibb /tests/golden/lex-spacing-bad-2/source/jibb
978−/* tok-319 %txt /tests/golden/lex-spacing-ok-1/tokens/txt
978+/* tok-319 %txt /tests/golden/lex-spacing-bad-2/tokens/txt
979−/* tre-319 %txt /tests/golden/lex-spacing-ok-1/tree/txt
979+/* tre-319 %txt /tests/golden/lex-spacing-bad-2/tree/txt
980−/* src-320 %jibb /tests/golden/lex-spacing-ok-2/source/jibb
980+/* src-320 %jibb /tests/golden/lex-spacing-ok-1/source/jibb
981−/* tok-320 %txt /tests/golden/lex-spacing-ok-2/tokens/txt
981+/* tok-320 %txt /tests/golden/lex-spacing-ok-1/tokens/txt
982−/* tre-320 %txt /tests/golden/lex-spacing-ok-2/tree/txt
982+/* tre-320 %txt /tests/golden/lex-spacing-ok-1/tree/txt
983−/* src-321 %jibb /tests/golden/lex-spacing-ok-3/source/jibb
983+/* src-321 %jibb /tests/golden/lex-spacing-ok-2/source/jibb
984−/* tok-321 %txt /tests/golden/lex-spacing-ok-3/tokens/txt
984+/* tok-321 %txt /tests/golden/lex-spacing-ok-2/tokens/txt
985−/* tre-321 %txt /tests/golden/lex-spacing-ok-3/tree/txt
985+/* tre-321 %txt /tests/golden/lex-spacing-ok-2/tree/txt
986−/* src-322 %jibb /tests/golden/lex-string-bad-1/source/jibb
986+/* src-322 %jibb /tests/golden/lex-spacing-ok-3/source/jibb
987−/* tok-322 %txt /tests/golden/lex-string-bad-1/tokens/txt
987+/* tok-322 %txt /tests/golden/lex-spacing-ok-3/tokens/txt
988−/* tre-322 %txt /tests/golden/lex-string-bad-1/tree/txt
988+/* tre-322 %txt /tests/golden/lex-spacing-ok-3/tree/txt
989−/* src-323 %jibb /tests/golden/lex-string-bad-2/source/jibb
989+/* src-323 %jibb /tests/golden/lex-string-bad-1/source/jibb
990−/* tok-323 %txt /tests/golden/lex-string-bad-2/tokens/txt
990+/* tok-323 %txt /tests/golden/lex-string-bad-1/tokens/txt
991−/* tre-323 %txt /tests/golden/lex-string-bad-2/tree/txt
991+/* tre-323 %txt /tests/golden/lex-string-bad-1/tree/txt
992−/* src-324 %jibb /tests/golden/lex-string-ok-1/source/jibb
992+/* src-324 %jibb /tests/golden/lex-string-bad-2/source/jibb
993−/* tok-324 %txt /tests/golden/lex-string-ok-1/tokens/txt
993+/* tok-324 %txt /tests/golden/lex-string-bad-2/tokens/txt
994−/* tre-324 %txt /tests/golden/lex-string-ok-1/tree/txt
994+/* tre-324 %txt /tests/golden/lex-string-bad-2/tree/txt
995−/* src-325 %jibb /tests/golden/lex-term-bad-1/source/jibb
995+/* src-325 %jibb /tests/golden/lex-string-ok-1/source/jibb
996−/* tok-325 %txt /tests/golden/lex-term-bad-1/tokens/txt
996+/* tok-325 %txt /tests/golden/lex-string-ok-1/tokens/txt
997−/* tre-325 %txt /tests/golden/lex-term-bad-1/tree/txt
997+/* tre-325 %txt /tests/golden/lex-string-ok-1/tree/txt
998−/* src-326 %jibb /tests/golden/lex-term-bad-10/source/jibb
998+/* src-326 %jibb /tests/golden/lex-term-bad-1/source/jibb
999−/* tok-326 %txt /tests/golden/lex-term-bad-10/tokens/txt
999+/* tok-326 %txt /tests/golden/lex-term-bad-1/tokens/txt
1000−/* tre-326 %txt /tests/golden/lex-term-bad-10/tree/txt
1000+/* tre-326 %txt /tests/golden/lex-term-bad-1/tree/txt
1001−/* src-327 %jibb /tests/golden/lex-term-bad-11/source/jibb
1001+/* src-327 %jibb /tests/golden/lex-term-bad-10/source/jibb
1002−/* tok-327 %txt /tests/golden/lex-term-bad-11/tokens/txt
1002+/* tok-327 %txt /tests/golden/lex-term-bad-10/tokens/txt
1003−/* tre-327 %txt /tests/golden/lex-term-bad-11/tree/txt
1003+/* tre-327 %txt /tests/golden/lex-term-bad-10/tree/txt
1004−/* src-328 %jibb /tests/golden/lex-term-bad-12/source/jibb
1004+/* src-328 %jibb /tests/golden/lex-term-bad-11/source/jibb
1005−/* tok-328 %txt /tests/golden/lex-term-bad-12/tokens/txt
1005+/* tok-328 %txt /tests/golden/lex-term-bad-11/tokens/txt
1006−/* tre-328 %txt /tests/golden/lex-term-bad-12/tree/txt
1006+/* tre-328 %txt /tests/golden/lex-term-bad-11/tree/txt
1007−/* src-329 %jibb /tests/golden/lex-term-bad-13/source/jibb
1007+/* src-329 %jibb /tests/golden/lex-term-bad-12/source/jibb
1008−/* tok-329 %txt /tests/golden/lex-term-bad-13/tokens/txt
1008+/* tok-329 %txt /tests/golden/lex-term-bad-12/tokens/txt
1009−/* tre-329 %txt /tests/golden/lex-term-bad-13/tree/txt
1009+/* tre-329 %txt /tests/golden/lex-term-bad-12/tree/txt
1010−/* src-330 %jibb /tests/golden/lex-term-bad-14/source/jibb
1010+/* src-330 %jibb /tests/golden/lex-term-bad-13/source/jibb
1011−/* tok-330 %txt /tests/golden/lex-term-bad-14/tokens/txt
1011+/* tok-330 %txt /tests/golden/lex-term-bad-13/tokens/txt
1012−/* tre-330 %txt /tests/golden/lex-term-bad-14/tree/txt
1012+/* tre-330 %txt /tests/golden/lex-term-bad-13/tree/txt
1013−/* src-331 %jibb /tests/golden/lex-term-bad-15/source/jibb
1013+/* src-331 %jibb /tests/golden/lex-term-bad-14/source/jibb
1014−/* tok-331 %txt /tests/golden/lex-term-bad-15/tokens/txt
1014+/* tok-331 %txt /tests/golden/lex-term-bad-14/tokens/txt
1015−/* tre-331 %txt /tests/golden/lex-term-bad-15/tree/txt
1015+/* tre-331 %txt /tests/golden/lex-term-bad-14/tree/txt
1016−/* src-332 %jibb /tests/golden/lex-term-bad-2/source/jibb
1016+/* src-332 %jibb /tests/golden/lex-term-bad-15/source/jibb
1017−/* tok-332 %txt /tests/golden/lex-term-bad-2/tokens/txt
1017+/* tok-332 %txt /tests/golden/lex-term-bad-15/tokens/txt
1018−/* tre-332 %txt /tests/golden/lex-term-bad-2/tree/txt
1018+/* tre-332 %txt /tests/golden/lex-term-bad-15/tree/txt
1019−/* src-333 %jibb /tests/golden/lex-term-bad-3/source/jibb
1019+/* src-333 %jibb /tests/golden/lex-term-bad-2/source/jibb
1020−/* tok-333 %txt /tests/golden/lex-term-bad-3/tokens/txt
1020+/* tok-333 %txt /tests/golden/lex-term-bad-2/tokens/txt
1021−/* tre-333 %txt /tests/golden/lex-term-bad-3/tree/txt
1021+/* tre-333 %txt /tests/golden/lex-term-bad-2/tree/txt
1022−/* src-334 %jibb /tests/golden/lex-term-bad-4/source/jibb
1022+/* src-334 %jibb /tests/golden/lex-term-bad-3/source/jibb
1023−/* tok-334 %txt /tests/golden/lex-term-bad-4/tokens/txt
1023+/* tok-334 %txt /tests/golden/lex-term-bad-3/tokens/txt
1024−/* tre-334 %txt /tests/golden/lex-term-bad-4/tree/txt
1024+/* tre-334 %txt /tests/golden/lex-term-bad-3/tree/txt
1025−/* src-335 %jibb /tests/golden/lex-term-bad-5/source/jibb
1025+/* src-335 %jibb /tests/golden/lex-term-bad-4/source/jibb
1026−/* tok-335 %txt /tests/golden/lex-term-bad-5/tokens/txt
1026+/* tok-335 %txt /tests/golden/lex-term-bad-4/tokens/txt
1027−/* tre-335 %txt /tests/golden/lex-term-bad-5/tree/txt
1027+/* tre-335 %txt /tests/golden/lex-term-bad-4/tree/txt
1028−/* src-336 %jibb /tests/golden/lex-term-bad-6/source/jibb
1028+/* src-336 %jibb /tests/golden/lex-term-bad-5/source/jibb
1029−/* tok-336 %txt /tests/golden/lex-term-bad-6/tokens/txt
1029+/* tok-336 %txt /tests/golden/lex-term-bad-5/tokens/txt
1030−/* tre-336 %txt /tests/golden/lex-term-bad-6/tree/txt
1030+/* tre-336 %txt /tests/golden/lex-term-bad-5/tree/txt
1031−/* src-337 %jibb /tests/golden/lex-term-bad-7/source/jibb
1031+/* src-337 %jibb /tests/golden/lex-term-bad-6/source/jibb
1032−/* tok-337 %txt /tests/golden/lex-term-bad-7/tokens/txt
1032+/* tok-337 %txt /tests/golden/lex-term-bad-6/tokens/txt
1033−/* tre-337 %txt /tests/golden/lex-term-bad-7/tree/txt
1033+/* tre-337 %txt /tests/golden/lex-term-bad-6/tree/txt
1034−/* src-338 %jibb /tests/golden/lex-term-bad-8/source/jibb
1034+/* src-338 %jibb /tests/golden/lex-term-bad-7/source/jibb
1035−/* tok-338 %txt /tests/golden/lex-term-bad-8/tokens/txt
1035+/* tok-338 %txt /tests/golden/lex-term-bad-7/tokens/txt
1036−/* tre-338 %txt /tests/golden/lex-term-bad-8/tree/txt
1036+/* tre-338 %txt /tests/golden/lex-term-bad-7/tree/txt
1037−/* src-339 %jibb /tests/golden/lex-term-bad-9/source/jibb
1037+/* src-339 %jibb /tests/golden/lex-term-bad-8/source/jibb
1038−/* tok-339 %txt /tests/golden/lex-term-bad-9/tokens/txt
1038+/* tok-339 %txt /tests/golden/lex-term-bad-8/tokens/txt
1039−/* tre-339 %txt /tests/golden/lex-term-bad-9/tree/txt
1039+/* tre-339 %txt /tests/golden/lex-term-bad-8/tree/txt
1040−/* src-340 %jibb /tests/golden/lex-term-ok-1/source/jibb
1040+/* src-340 %jibb /tests/golden/lex-term-bad-9/source/jibb
1041−/* tok-340 %txt /tests/golden/lex-term-ok-1/tokens/txt
1041+/* tok-340 %txt /tests/golden/lex-term-bad-9/tokens/txt
1042−/* tre-340 %txt /tests/golden/lex-term-ok-1/tree/txt
1042+/* tre-340 %txt /tests/golden/lex-term-bad-9/tree/txt
1043−/* src-341 %jibb /tests/golden/lex-tight-change-bad-1/source/jibb
1043+/* src-341 %jibb /tests/golden/lex-term-dollar/source/jibb
1044−/* tok-341 %txt /tests/golden/lex-tight-change-bad-1/tokens/txt
1044+/* tok-341 %txt /tests/golden/lex-term-dollar/tokens/txt
1045−/* tre-341 %txt /tests/golden/lex-tight-change-bad-1/tree/txt
1045+/* tre-341 %txt /tests/golden/lex-term-dollar/tree/txt
1046−/* src-342 %jibb /tests/golden/lex-tight-change-bad-2/source/jibb
1046+/* src-342 %jibb /tests/golden/lex-term-ok-1/source/jibb
1047−/* tok-342 %txt /tests/golden/lex-tight-change-bad-2/tokens/txt
1047+/* tok-342 %txt /tests/golden/lex-term-ok-1/tokens/txt
1048−/* tre-342 %txt /tests/golden/lex-tight-change-bad-2/tree/txt
1048+/* tre-342 %txt /tests/golden/lex-term-ok-1/tree/txt
1049−/* src-343 %jibb /tests/golden/lex-tight-change-bad-3/source/jibb
1049+/* src-343 %jibb /tests/golden/lex-tight-change-bad-1/source/jibb
1050−/* tok-343 %txt /tests/golden/lex-tight-change-bad-3/tokens/txt
1050+/* tok-343 %txt /tests/golden/lex-tight-change-bad-1/tokens/txt
1051−/* tre-343 %txt /tests/golden/lex-tight-change-bad-3/tree/txt
1051+/* tre-343 %txt /tests/golden/lex-tight-change-bad-1/tree/txt
1052−/* src-344 %jibb /tests/golden/lex-tight-change-bad-4/source/jibb
1052+/* src-344 %jibb /tests/golden/lex-tight-change-bad-2/source/jibb
1053−/* tok-344 %txt /tests/golden/lex-tight-change-bad-4/tokens/txt
1053+/* tok-344 %txt /tests/golden/lex-tight-change-bad-2/tokens/txt
1054−/* tre-344 %txt /tests/golden/lex-tight-change-bad-4/tree/txt
1054+/* tre-344 %txt /tests/golden/lex-tight-change-bad-2/tree/txt
1055−/* src-345 %jibb /tests/golden/lex-tight-change-bad-5/source/jibb
1055+/* src-345 %jibb /tests/golden/lex-tight-change-bad-3/source/jibb
1056−/* tok-345 %txt /tests/golden/lex-tight-change-bad-5/tokens/txt
1056+/* tok-345 %txt /tests/golden/lex-tight-change-bad-3/tokens/txt
1057−/* tre-345 %txt /tests/golden/lex-tight-change-bad-5/tree/txt
1057+/* tre-345 %txt /tests/golden/lex-tight-change-bad-3/tree/txt
1058−/* src-346 %jibb /tests/golden/lex-tight-change-bad-6/source/jibb
1058+/* src-346 %jibb /tests/golden/lex-tight-change-bad-4/source/jibb
1059−/* tok-346 %txt /tests/golden/lex-tight-change-bad-6/tokens/txt
1059+/* tok-346 %txt /tests/golden/lex-tight-change-bad-4/tokens/txt
1060−/* tre-346 %txt /tests/golden/lex-tight-change-bad-6/tree/txt
1060+/* tre-346 %txt /tests/golden/lex-tight-change-bad-4/tree/txt
1061−/* src-347 %jibb /tests/golden/lex-tight-change-bad-7/source/jibb
1061+/* src-347 %jibb /tests/golden/lex-tight-change-bad-5/source/jibb
1062−/* tok-347 %txt /tests/golden/lex-tight-change-bad-7/tokens/txt
1062+/* tok-347 %txt /tests/golden/lex-tight-change-bad-5/tokens/txt
1063−/* tre-347 %txt /tests/golden/lex-tight-change-bad-7/tree/txt
1063+/* tre-347 %txt /tests/golden/lex-tight-change-bad-5/tree/txt
1064−/* src-348 %jibb /tests/golden/lex-tight-change-bad-8/source/jibb
1064+/* src-348 %jibb /tests/golden/lex-tight-change-bad-6/source/jibb
1065−/* tok-348 %txt /tests/golden/lex-tight-change-bad-8/tokens/txt
1065+/* tok-348 %txt /tests/golden/lex-tight-change-bad-6/tokens/txt
1066−/* tre-348 %txt /tests/golden/lex-tight-change-bad-8/tree/txt
1066+/* tre-348 %txt /tests/golden/lex-tight-change-bad-6/tree/txt
1067−/* src-349 %jibb /tests/golden/lex-tight-change-bad-9/source/jibb
1067+/* src-349 %jibb /tests/golden/lex-tight-change-bad-7/source/jibb
1068−/* tok-349 %txt /tests/golden/lex-tight-change-bad-9/tokens/txt
1068+/* tok-349 %txt /tests/golden/lex-tight-change-bad-7/tokens/txt
1069−/* tre-349 %txt /tests/golden/lex-tight-change-bad-9/tree/txt
1069+/* tre-349 %txt /tests/golden/lex-tight-change-bad-7/tree/txt
1070−/* src-350 %jibb /tests/golden/lex-tight-change-ok-1/source/jibb
1070+/* src-350 %jibb /tests/golden/lex-tight-change-bad-8/source/jibb
1071−/* tok-350 %txt /tests/golden/lex-tight-change-ok-1/tokens/txt
1071+/* tok-350 %txt /tests/golden/lex-tight-change-bad-8/tokens/txt
1072−/* tre-350 %txt /tests/golden/lex-tight-change-ok-1/tree/txt
1072+/* tre-350 %txt /tests/golden/lex-tight-change-bad-8/tree/txt
1073−/* src-351 %jibb /tests/golden/lex-tight-ctor-bad-1/source/jibb
1073+/* src-351 %jibb /tests/golden/lex-tight-change-bad-9/source/jibb
1074−/* tok-351 %txt /tests/golden/lex-tight-ctor-bad-1/tokens/txt
1074+/* tok-351 %txt /tests/golden/lex-tight-change-bad-9/tokens/txt
1075−/* tre-351 %txt /tests/golden/lex-tight-ctor-bad-1/tree/txt
1075+/* tre-351 %txt /tests/golden/lex-tight-change-bad-9/tree/txt
1076−/* src-352 %jibb /tests/golden/lex-tight-ctor-bad-2/source/jibb
1076+/* src-352 %jibb /tests/golden/lex-tight-change-ok-1/source/jibb
1077−/* tok-352 %txt /tests/golden/lex-tight-ctor-bad-2/tokens/txt
1077+/* tok-352 %txt /tests/golden/lex-tight-change-ok-1/tokens/txt
1078−/* tre-352 %txt /tests/golden/lex-tight-ctor-bad-2/tree/txt
1078+/* tre-352 %txt /tests/golden/lex-tight-change-ok-1/tree/txt
1079−/* src-353 %jibb /tests/golden/lex-tight-ctor-ok-1/source/jibb
1079+/* src-353 %jibb /tests/golden/lex-tight-ctor-bad-1/source/jibb
1080−/* tok-353 %txt /tests/golden/lex-tight-ctor-ok-1/tokens/txt
1080+/* tok-353 %txt /tests/golden/lex-tight-ctor-bad-1/tokens/txt
1081−/* tre-353 %txt /tests/golden/lex-tight-ctor-ok-1/tree/txt
1081+/* tre-353 %txt /tests/golden/lex-tight-ctor-bad-1/tree/txt
1082−/* src-354 %jibb /tests/golden/lex-tight-opener-bad-1/source/jibb
1082+/* src-354 %jibb /tests/golden/lex-tight-ctor-bad-2/source/jibb
1083−/* tok-354 %txt /tests/golden/lex-tight-opener-bad-1/tokens/txt
1083+/* tok-354 %txt /tests/golden/lex-tight-ctor-bad-2/tokens/txt
1084−/* tre-354 %txt /tests/golden/lex-tight-opener-bad-1/tree/txt
1084+/* tre-354 %txt /tests/golden/lex-tight-ctor-bad-2/tree/txt
1085−/* src-355 %jibb /tests/golden/lex-tight-opener-bad-2/source/jibb
1085+/* src-355 %jibb /tests/golden/lex-tight-ctor-ok-1/source/jibb
1086−/* tok-355 %txt /tests/golden/lex-tight-opener-bad-2/tokens/txt
1086+/* tok-355 %txt /tests/golden/lex-tight-ctor-ok-1/tokens/txt
1087−/* tre-355 %txt /tests/golden/lex-tight-opener-bad-2/tree/txt
1087+/* tre-355 %txt /tests/golden/lex-tight-ctor-ok-1/tree/txt
1088−/* src-356 %jibb /tests/golden/lex-tight-opener-bad-3/source/jibb
1088+/* src-356 %jibb /tests/golden/lex-tight-opener-bad-1/source/jibb
1089−/* tok-356 %txt /tests/golden/lex-tight-opener-bad-3/tokens/txt
1089+/* tok-356 %txt /tests/golden/lex-tight-opener-bad-1/tokens/txt
1090−/* tre-356 %txt /tests/golden/lex-tight-opener-bad-3/tree/txt
1090+/* tre-356 %txt /tests/golden/lex-tight-opener-bad-1/tree/txt
1091−/* src-357 %jibb /tests/golden/lex-tight-opener-bad-4/source/jibb
1091+/* src-357 %jibb /tests/golden/lex-tight-opener-bad-2/source/jibb
1092−/* tok-357 %txt /tests/golden/lex-tight-opener-bad-4/tokens/txt
1092+/* tok-357 %txt /tests/golden/lex-tight-opener-bad-2/tokens/txt
1093−/* tre-357 %txt /tests/golden/lex-tight-opener-bad-4/tree/txt
1093+/* tre-357 %txt /tests/golden/lex-tight-opener-bad-2/tree/txt
1094−/* src-358 %jibb /tests/golden/lex-tight-opener-ok-1/source/jibb
1094+/* src-358 %jibb /tests/golden/lex-tight-opener-bad-3/source/jibb
1095−/* tok-358 %txt /tests/golden/lex-tight-opener-ok-1/tokens/txt
1095+/* tok-358 %txt /tests/golden/lex-tight-opener-bad-3/tokens/txt
1096−/* tre-358 %txt /tests/golden/lex-tight-opener-ok-1/tree/txt
1096+/* tre-358 %txt /tests/golden/lex-tight-opener-bad-3/tree/txt
1097−/* src-359 %jibb /tests/golden/lex-tight-pair-bad-1/source/jibb
1097+/* src-359 %jibb /tests/golden/lex-tight-opener-bad-4/source/jibb
1098−/* tok-359 %txt /tests/golden/lex-tight-pair-bad-1/tokens/txt
1098+/* tok-359 %txt /tests/golden/lex-tight-opener-bad-4/tokens/txt
1099−/* tre-359 %txt /tests/golden/lex-tight-pair-bad-1/tree/txt
1099+/* tre-359 %txt /tests/golden/lex-tight-opener-bad-4/tree/txt
1100−/* src-360 %jibb /tests/golden/lex-tight-pair-bad-2/source/jibb
1100+/* src-360 %jibb /tests/golden/lex-tight-opener-ok-1/source/jibb
1101−/* tok-360 %txt /tests/golden/lex-tight-pair-bad-2/tokens/txt
1101+/* tok-360 %txt /tests/golden/lex-tight-opener-ok-1/tokens/txt
1102−/* tre-360 %txt /tests/golden/lex-tight-pair-bad-2/tree/txt
1102+/* tre-360 %txt /tests/golden/lex-tight-opener-ok-1/tree/txt
1103−/* src-361 %jibb /tests/golden/lex-tight-pair-bad-3/source/jibb
1103+/* src-361 %jibb /tests/golden/lex-tight-pair-bad-1/source/jibb
1104−/* tok-361 %txt /tests/golden/lex-tight-pair-bad-3/tokens/txt
1104+/* tok-361 %txt /tests/golden/lex-tight-pair-bad-1/tokens/txt
1105−/* tre-361 %txt /tests/golden/lex-tight-pair-bad-3/tree/txt
1105+/* tre-361 %txt /tests/golden/lex-tight-pair-bad-1/tree/txt
1106−/* src-362 %jibb /tests/golden/lex-tight-pair-ok-1/source/jibb
1106+/* src-362 %jibb /tests/golden/lex-tight-pair-bad-2/source/jibb
1107−/* tok-362 %txt /tests/golden/lex-tight-pair-ok-1/tokens/txt
1107+/* tok-362 %txt /tests/golden/lex-tight-pair-bad-2/tokens/txt
1108−/* tre-362 %txt /tests/golden/lex-tight-pair-ok-1/tree/txt
1108+/* tre-362 %txt /tests/golden/lex-tight-pair-bad-2/tree/txt
1109−/* src-363 %jibb /tests/golden/lex-tight-qath-bad-1/source/jibb
1109+/* src-363 %jibb /tests/golden/lex-tight-pair-bad-3/source/jibb
1110−/* tok-363 %txt /tests/golden/lex-tight-qath-bad-1/tokens/txt
1110+/* tok-363 %txt /tests/golden/lex-tight-pair-bad-3/tokens/txt
1111−/* tre-363 %txt /tests/golden/lex-tight-qath-bad-1/tree/txt
1111+/* tre-363 %txt /tests/golden/lex-tight-pair-bad-3/tree/txt
1112−/* src-364 %jibb /tests/golden/lex-tight-qath-bad-2/source/jibb
1112+/* src-364 %jibb /tests/golden/lex-tight-pair-ok-1/source/jibb
1113−/* tok-364 %txt /tests/golden/lex-tight-qath-bad-2/tokens/txt
1113+/* tok-364 %txt /tests/golden/lex-tight-pair-ok-1/tokens/txt
1114−/* tre-364 %txt /tests/golden/lex-tight-qath-bad-2/tree/txt
1114+/* tre-364 %txt /tests/golden/lex-tight-pair-ok-1/tree/txt
1115−/* src-365 %jibb /tests/golden/lex-tight-qath-bad-3/source/jibb
1115+/* src-365 %jibb /tests/golden/lex-tight-qath-bad-1/source/jibb
1116−/* tok-365 %txt /tests/golden/lex-tight-qath-bad-3/tokens/txt
1116+/* tok-365 %txt /tests/golden/lex-tight-qath-bad-1/tokens/txt
1117−/* tre-365 %txt /tests/golden/lex-tight-qath-bad-3/tree/txt
1117+/* tre-365 %txt /tests/golden/lex-tight-qath-bad-1/tree/txt
1118−/* src-366 %jibb /tests/golden/lex-tight-qath-ok-1/source/jibb
1118+/* src-366 %jibb /tests/golden/lex-tight-qath-bad-2/source/jibb
1119−/* tok-366 %txt /tests/golden/lex-tight-qath-ok-1/tokens/txt
1119+/* tok-366 %txt /tests/golden/lex-tight-qath-bad-2/tokens/txt
1120−/* tre-366 %txt /tests/golden/lex-tight-qath-ok-1/tree/txt
1120+/* tre-366 %txt /tests/golden/lex-tight-qath-bad-2/tree/txt
1121−/* src-367 %jibb /tests/golden/lex-tight-unit-bad-1/source/jibb
1121+/* src-367 %jibb /tests/golden/lex-tight-qath-bad-3/source/jibb
1122−/* tok-367 %txt /tests/golden/lex-tight-unit-bad-1/tokens/txt
1122+/* tok-367 %txt /tests/golden/lex-tight-qath-bad-3/tokens/txt
1123−/* tre-367 %txt /tests/golden/lex-tight-unit-bad-1/tree/txt
1123+/* tre-367 %txt /tests/golden/lex-tight-qath-bad-3/tree/txt
1124−/* src-368 %jibb /tests/golden/lex-tight-unit-ok-1/source/jibb
1124+/* src-368 %jibb /tests/golden/lex-tight-qath-ok-1/source/jibb
1125−/* tok-368 %txt /tests/golden/lex-tight-unit-ok-1/tokens/txt
1125+/* tok-368 %txt /tests/golden/lex-tight-qath-ok-1/tokens/txt
1126−/* tre-368 %txt /tests/golden/lex-tight-unit-ok-1/tree/txt
1126+/* tre-368 %txt /tests/golden/lex-tight-qath-ok-1/tree/txt
1127−/* src-369 %jibb /tests/golden/lex-tight-wing-bad-1/source/jibb
1127+/* src-369 %jibb /tests/golden/lex-tight-unit-bad-1/source/jibb
1128−/* tok-369 %txt /tests/golden/lex-tight-wing-bad-1/tokens/txt
1128+/* tok-369 %txt /tests/golden/lex-tight-unit-bad-1/tokens/txt
1129−/* tre-369 %txt /tests/golden/lex-tight-wing-bad-1/tree/txt
1129+/* tre-369 %txt /tests/golden/lex-tight-unit-bad-1/tree/txt
1130−/* src-370 %jibb /tests/golden/lex-tight-wing-ok-1/source/jibb
1130+/* src-370 %jibb /tests/golden/lex-tight-unit-ok-1/source/jibb
1131−/* tok-370 %txt /tests/golden/lex-tight-wing-ok-1/tokens/txt
1131+/* tok-370 %txt /tests/golden/lex-tight-unit-ok-1/tokens/txt
1132−/* tre-370 %txt /tests/golden/lex-tight-wing-ok-1/tree/txt
1132+/* tre-370 %txt /tests/golden/lex-tight-unit-ok-1/tree/txt
1133−/* src-371 %jibb /tests/golden/prelude-core-functions/source/jibb
1133+/* src-371 %jibb /tests/golden/lex-tight-wing-bad-1/source/jibb
1134−/* tok-371 %txt /tests/golden/prelude-core-functions/tokens/txt
1134+/* tok-371 %txt /tests/golden/lex-tight-wing-bad-1/tokens/txt
1135−/* tre-371 %txt /tests/golden/prelude-core-functions/tree/txt
1135+/* tre-371 %txt /tests/golden/lex-tight-wing-bad-1/tree/txt
1136−/* typ-371 %txt /tests/golden/prelude-core-functions/types/txt
1136+/* src-372 %jibb /tests/golden/lex-tight-wing-ok-1/source/jibb
1137−/* src-372 %jibb /tests/golden/types-partial-apply/source/jibb
1137+/* tok-372 %txt /tests/golden/lex-tight-wing-ok-1/tokens/txt
1138−/* tok-372 %txt /tests/golden/types-partial-apply/tokens/txt
1138+/* tre-372 %txt /tests/golden/lex-tight-wing-ok-1/tree/txt
1139−/* tre-372 %txt /tests/golden/types-partial-apply/tree/txt
1139+/* src-373 %jibb /tests/golden/prelude-core-functions/source/jibb
1140−/* typ-372 %txt /tests/golden/types-partial-apply/types/txt
1140+/* tok-373 %txt /tests/golden/prelude-core-functions/tokens/txt
1141−/* src-373 %jibb /tests/golden/types-partial-aura/source/jibb
1141+/* tre-373 %txt /tests/golden/prelude-core-functions/tree/txt
1142−/* tok-373 %txt /tests/golden/types-partial-aura/tokens/txt
1142+/* typ-373 %txt /tests/golden/prelude-core-functions/types/txt
1143−/* tre-373 %txt /tests/golden/types-partial-aura/tree/txt
1143+/* src-374 %jibb /tests/golden/prelude-list-unit/source/jibb
1144−/* typ-373 %txt /tests/golden/types-partial-aura/types/txt
1144+/* tok-374 %txt /tests/golden/prelude-list-unit/tokens/txt
1145−/* src-374 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1145+/* tre-374 %txt /tests/golden/prelude-list-unit/tree/txt
1146−/* tok-374 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1146+/* typ-374 %txt /tests/golden/prelude-list-unit/types/txt
1147−/* tre-374 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1147+/* src-375 %jibb /tests/golden/types-partial-apply/source/jibb
1148−/* typ-374 %txt /tests/golden/types-partial-aura-generalization/types/txt
1148+/* tok-375 %txt /tests/golden/types-partial-apply/tokens/txt
1149−/* src-375 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1149+/* tre-375 %txt /tests/golden/types-partial-apply/tree/txt
1150−/* tok-375 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1150+/* typ-375 %txt /tests/golden/types-partial-apply/types/txt
1151−/* tre-375 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1151+/* src-376 %jibb /tests/golden/types-partial-aura/source/jibb
1152−/* typ-375 %txt /tests/golden/types-partial-explicit-capital/types/txt
1152+/* tok-376 %txt /tests/golden/types-partial-aura/tokens/txt
1153−/* src-376 %jibb /tests/golden/types-partial-forward/source/jibb
1153+/* tre-376 %txt /tests/golden/types-partial-aura/tree/txt
1154−/* tok-376 %txt /tests/golden/types-partial-forward/tokens/txt
1154+/* typ-376 %txt /tests/golden/types-partial-aura/types/txt
1155−/* tre-376 %txt /tests/golden/types-partial-forward/tree/txt
1155+/* src-377 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1156−/* typ-376 %txt /tests/golden/types-partial-forward/types/txt
1156+/* tok-377 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1157−/* src-377 %jibb /tests/golden/types-partial-generalization/source/jibb
1157+/* tre-377 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1158−/* tok-377 %txt /tests/golden/types-partial-generalization/tokens/txt
1158+/* typ-377 %txt /tests/golden/types-partial-aura-generalization/types/txt
1159−/* tre-377 %txt /tests/golden/types-partial-generalization/tree/txt
1159+/* src-378 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1160−/* typ-377 %txt /tests/golden/types-partial-generalization/types/txt
1160+/* tok-378 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1161−/* src-378 %jibb /tests/golden/types-partial-identity/source/jibb
1161+/* tre-378 %txt /tests/golden/types-partial-bare-atom/tree/txt
1162−/* tok-378 %txt /tests/golden/types-partial-identity/tokens/txt
1162+/* typ-378 %txt /tests/golden/types-partial-bare-atom/types/txt
1163−/* tre-378 %txt /tests/golden/types-partial-identity/tree/txt
1163+/* src-379 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1164−/* typ-378 %txt /tests/golden/types-partial-identity/types/txt
1164+/* tok-379 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1165−/* src-379 %jibb /tests/golden/types-partial-occurs/source/jibb
1165+/* tre-379 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1166−/* tok-379 %txt /tests/golden/types-partial-occurs/tokens/txt
1166+/* typ-379 %txt /tests/golden/types-partial-dependency-chain/types/txt
1167−/* tre-379 %txt /tests/golden/types-partial-occurs/tree/txt
1167+/* src-380 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1168−/* typ-379 %txt /tests/golden/types-partial-occurs/types/txt
1168+/* tok-380 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1169−/* src-380 %jibb /tests/golden/types-partial-projection/source/jibb
1169+/* tre-380 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1170−/* tok-380 %txt /tests/golden/types-partial-projection/tokens/txt
1170+/* typ-380 %txt /tests/golden/types-partial-explicit-capital/types/txt
1171−/* tre-380 %txt /tests/golden/types-partial-projection/tree/txt
1171+/* src-381 %jibb /tests/golden/types-partial-forward/source/jibb
1172−/* typ-380 %txt /tests/golden/types-partial-projection/types/txt
1172+/* tok-381 %txt /tests/golden/types-partial-forward/tokens/txt
1173−/* src-381 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1173+/* tre-381 %txt /tests/golden/types-partial-forward/tree/txt
1174−/* tok-381 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1174+/* typ-381 %txt /tests/golden/types-partial-forward/types/txt
1175−/* tre-381 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1175+/* src-382 %jibb /tests/golden/types-partial-generalization/source/jibb
1176−/* typ-381 %txt /tests/golden/types-partial-shared-tvar/types/txt
1176+/* tok-382 %txt /tests/golden/types-partial-generalization/tokens/txt
1177−/* src-382 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1177+/* tre-382 %txt /tests/golden/types-partial-generalization/tree/txt
1178−/* tok-382 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1178+/* typ-382 %txt /tests/golden/types-partial-generalization/types/txt
1179−/* tre-382 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1179+/* src-383 %jibb /tests/golden/types-partial-identity/source/jibb
1180−/* typ-382 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1180+/* tok-383 %txt /tests/golden/types-partial-identity/tokens/txt
1181+/* tre-383 %txt /tests/golden/types-partial-identity/tree/txt
1182+/* typ-383 %txt /tests/golden/types-partial-identity/types/txt
1183+/* src-384 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1184+/* tok-384 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1185+/* tre-384 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1186+/* typ-384 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1187+/* src-385 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1188+/* tok-385 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1189+/* tre-385 %txt /tests/golden/types-partial-mold-composite/tree/txt
1190+/* typ-385 %txt /tests/golden/types-partial-mold-composite/types/txt
1191+/* src-386 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1192+/* tok-386 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1193+/* tre-386 %txt /tests/golden/types-partial-mold-forward/tree/txt
1194+/* typ-386 %txt /tests/golden/types-partial-mold-forward/types/txt
1195+/* src-387 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1196+/* tok-387 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1197+/* tre-387 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1198+/* typ-387 %txt /tests/golden/types-partial-mold-recursive/types/txt
1199+/* src-388 %jibb /tests/golden/types-partial-occurs/source/jibb
1200+/* tok-388 %txt /tests/golden/types-partial-occurs/tokens/txt
1201+/* tre-388 %txt /tests/golden/types-partial-occurs/tree/txt
1202+/* typ-388 %txt /tests/golden/types-partial-occurs/types/txt
1203+/* src-389 %jibb /tests/golden/types-partial-projection/source/jibb
1204+/* tok-389 %txt /tests/golden/types-partial-projection/tokens/txt
1205+/* tre-389 %txt /tests/golden/types-partial-projection/tree/txt
1206+/* typ-389 %txt /tests/golden/types-partial-projection/types/txt
1207+/* src-390 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1208+/* tok-390 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1209+/* tre-390 %txt /tests/golden/types-partial-shadow-global/tree/txt
1210+/* typ-390 %txt /tests/golden/types-partial-shadow-global/types/txt
1211+/* src-391 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1212+/* tok-391 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1213+/* tre-391 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1214+/* typ-391 %txt /tests/golden/types-partial-shared-tvar/types/txt
1215+/* src-392 %jibb /tests/golden/types-partial-union-cases/source/jibb
1216+/* tok-392 %txt /tests/golden/types-partial-union-cases/tokens/txt
1217+/* tre-392 %txt /tests/golden/types-partial-union-cases/tree/txt
1218+/* typ-392 %txt /tests/golden/types-partial-union-cases/types/txt
1219+/* src-393 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1220+/* tok-393 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1221+/* tre-393 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1222+/* typ-393 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1181|%
1223|%
1182:: one arm per case
1224:: one arm per case
1183::
1225::
@@ -1289,662 +1331,684 @@
1289 (check ~.inline-hoon-union-sample-bad src-53 `tok-53 `tre-53)
1331 (check ~.inline-hoon-union-sample-bad src-53 `tok-53 `tre-53)
1290++ test-inline-hoon-union-wide-sample-bad
1332++ test-inline-hoon-union-wide-sample-bad
1291 (check ~.inline-hoon-union-wide-sample-bad src-54 `tok-54 `tre-54)
1333 (check ~.inline-hoon-union-wide-sample-bad src-54 `tok-54 `tre-54)
1334+++ test-inline-import-dollar-mark-bad
1335+ (check ~.inline-import-dollar-mark-bad src-55 `tok-55 `tre-55)
1292++ test-inline-import-mark-face-bad
1336++ test-inline-import-mark-face-bad
1293− (check ~.inline-import-mark-face-bad src-55 `tok-55 `tre-55)
1337+ (check ~.inline-import-mark-face-bad src-56 `tok-56 `tre-56)
1294++ test-inline-import-root-bad
1338++ test-inline-import-root-bad
1295− (check ~.inline-import-root-bad src-56 `tok-56 `tre-56)
1339+ (check ~.inline-import-root-bad src-57 `tok-57 `tre-57)
1296++ test-inline-imports-after-definition
1340++ test-inline-imports-after-definition
1297− (check ~.inline-imports-after-definition src-57 `tok-57 `tre-57)
1341+ (check ~.inline-imports-after-definition src-58 `tok-58 `tre-58)
1298++ test-inline-island
1342++ test-inline-island
1299− (check ~.inline-island src-58 `tok-58 `tre-58)
1343+ (check ~.inline-island src-59 `tok-59 `tre-59)
1300++ test-inline-kinds
1344++ test-inline-kinds
1301− (check ~.inline-kinds src-59 `tok-59 `tre-59)
1345+ (check ~.inline-kinds src-60 `tok-60 `tre-60)
1302++ test-inline-knot
1346++ test-inline-knot
1303− (check ~.inline-knot src-60 `tok-60 `tre-60)
1347+ (check ~.inline-knot src-61 `tok-61 `tre-61)
1304++ test-inline-leftout-barcab
1348++ test-inline-leftout-barcab
1305− (check ~.inline-leftout-barcab src-61 `tok-61 `tre-61)
1349+ (check ~.inline-leftout-barcab src-62 `tok-62 `tre-62)
1306++ test-inline-leftout-barcen
1350++ test-inline-leftout-barcen
1307− (check ~.inline-leftout-barcen src-62 `tok-62 `tre-62)
1351+ (check ~.inline-leftout-barcen src-63 `tok-63 `tre-63)
1308++ test-inline-leftout-barcen-2
1352++ test-inline-leftout-barcen-2
1309− (check ~.inline-leftout-barcen-2 src-63 `tok-63 `tre-63)
1353+ (check ~.inline-leftout-barcen-2 src-64 `tok-64 `tre-64)
1310++ test-inline-leftout-barcen-3
1354++ test-inline-leftout-barcen-3
1311− (check ~.inline-leftout-barcen-3 src-64 `tok-64 `tre-64)
1355+ (check ~.inline-leftout-barcen-3 src-65 `tok-65 `tre-65)
1312++ test-inline-leftout-barhep
1356++ test-inline-leftout-barhep
1313− (check ~.inline-leftout-barhep src-65 `tok-65 `tre-65)
1357+ (check ~.inline-leftout-barhep src-66 `tok-66 `tre-66)
1314++ test-inline-leftout-bartar
1358++ test-inline-leftout-bartar
1315− (check ~.inline-leftout-bartar src-66 `tok-66 `tre-66)
1359+ (check ~.inline-leftout-bartar src-67 `tok-67 `tre-67)
1316++ test-inline-leftout-buc-alone
1360++ test-inline-leftout-buc-alone
1317− (check ~.inline-leftout-buc-alone src-67 `tok-67 `tre-67)
1361+ (check ~.inline-leftout-buc-alone src-68 `tok-68 `tre-68)
1318++ test-inline-leftout-buc-paren
1362++ test-inline-leftout-buc-paren
1319− (check ~.inline-leftout-buc-paren src-68 `tok-68 `tre-68)
1363+ (check ~.inline-leftout-buc-paren src-69 `tok-69 `tre-69)
1320++ test-inline-leftout-buc-paren-2
1364++ test-inline-leftout-buc-paren-2
1321− (check ~.inline-leftout-buc-paren-2 src-69 `tok-69 `tre-69)
1365+ (check ~.inline-leftout-buc-paren-2 src-70 `tok-70 `tre-70)
1322++ test-inline-leftout-buc-paren-3
1366++ test-inline-leftout-buc-paren-3
1323− (check ~.inline-leftout-buc-paren-3 src-70 `tok-70 `tre-70)
1367+ (check ~.inline-leftout-buc-paren-3 src-71 `tok-71 `tre-71)
1324++ test-inline-leftout-buccen
1368++ test-inline-leftout-buccen
1325− (check ~.inline-leftout-buccen src-71 `tok-71 `tre-71)
1369+ (check ~.inline-leftout-buccen src-72 `tok-72 `tre-72)
1326++ test-inline-leftout-cencol
1370++ test-inline-leftout-cencol
1327− (check ~.inline-leftout-cencol src-72 `tok-72 `tre-72)
1371+ (check ~.inline-leftout-cencol src-73 `tok-73 `tre-73)
1328++ test-inline-leftout-cenhep
1372++ test-inline-leftout-cenhep
1329− (check ~.inline-leftout-cenhep src-73 `tok-73 `tre-73)
1373+ (check ~.inline-leftout-cenhep src-74 `tok-74 `tre-74)
1330++ test-inline-leftout-centis
1374++ test-inline-leftout-centis
1331− (check ~.inline-leftout-centis src-74 `tok-74 `tre-74)
1375+ (check ~.inline-leftout-centis src-75 `tok-75 `tre-75)
1332++ test-inline-leftout-colhep
1376++ test-inline-leftout-colhep
1333− (check ~.inline-leftout-colhep src-75 `tok-75 `tre-75)
1377+ (check ~.inline-leftout-colhep src-76 `tok-76 `tre-76)
1334++ test-inline-leftout-colon-wing
1378++ test-inline-leftout-colon-wing
1335− (check ~.inline-leftout-colon-wing src-76 `tok-76 `tre-76)
1379+ (check ~.inline-leftout-colon-wing src-77 `tok-77 `tre-77)
1336++ test-inline-leftout-colsig
1380++ test-inline-leftout-colsig
1337− (check ~.inline-leftout-colsig src-77 `tok-77 `tre-77)
1381+ (check ~.inline-leftout-colsig src-78 `tok-78 `tre-78)
1338++ test-inline-leftout-coltar
1382++ test-inline-leftout-coltar
1339− (check ~.inline-leftout-coltar src-78 `tok-78 `tre-78)
1383+ (check ~.inline-leftout-coltar src-79 `tok-79 `tre-79)
1340++ test-inline-leftout-dottar
1384++ test-inline-leftout-dottar
1341− (check ~.inline-leftout-dottar src-79 `tok-79 `tre-79)
1385+ (check ~.inline-leftout-dottar src-80 `tok-80 `tre-80)
1342++ test-inline-leftout-dottis
1386++ test-inline-leftout-dottis
1343− (check ~.inline-leftout-dottis src-80 `tok-80 `tre-80)
1387+ (check ~.inline-leftout-dottis src-81 `tok-81 `tre-81)
1344++ test-inline-leftout-faslus
1388++ test-inline-leftout-faslus
1345− (check ~.inline-leftout-faslus src-81 `tok-81 `tre-81)
1389+ (check ~.inline-leftout-faslus src-82 `tok-82 `tre-82)
1346++ test-inline-leftout-hephep
1390++ test-inline-leftout-hephep
1347− (check ~.inline-leftout-hephep src-82 `tok-82 `tre-82)
1391+ (check ~.inline-leftout-hephep src-83 `tok-83 `tre-83)
1348++ test-inline-leftout-kethep-wide
1392++ test-inline-leftout-kethep-wide
1349− (check ~.inline-leftout-kethep-wide src-83 `tok-83 `tre-83)
1393+ (check ~.inline-leftout-kethep-wide src-84 `tok-84 `tre-84)
1350++ test-inline-leftout-kettar
1394++ test-inline-leftout-kettar
1351− (check ~.inline-leftout-kettar src-84 `tok-84 `tre-84)
1395+ (check ~.inline-leftout-kettar src-85 `tok-85 `tre-85)
1352++ test-inline-leftout-miccol
1396++ test-inline-leftout-miccol
1353− (check ~.inline-leftout-miccol src-85 `tok-85 `tre-85)
1397+ (check ~.inline-leftout-miccol src-86 `tok-86 `tre-86)
1354++ test-inline-leftout-sail
1398++ test-inline-leftout-sail
1355− (check ~.inline-leftout-sail src-86 `tok-86 `tre-86)
1399+ (check ~.inline-leftout-sail src-87 `tok-87 `tre-87)
1356++ test-inline-leftout-sigbar
1400++ test-inline-leftout-sigbar
1357− (check ~.inline-leftout-sigbar src-87 `tok-87 `tre-87)
1401+ (check ~.inline-leftout-sigbar src-88 `tok-88 `tre-88)
1358++ test-inline-leftout-signed-float-auras
1402++ test-inline-leftout-signed-float-auras
1359− (check ~.inline-leftout-signed-float-auras src-88 `tok-88 `tre-88)
1403+ (check ~.inline-leftout-signed-float-auras src-89 `tok-89 `tre-89)
1360++ test-inline-leftout-signed-float-auras-2
1404++ test-inline-leftout-signed-float-auras-2
1361− (check ~.inline-leftout-signed-float-auras-2 src-89 `tok-89 `tre-89)
1405+ (check ~.inline-leftout-signed-float-auras-2 src-90 `tok-90 `tre-90)
1362++ test-inline-leftout-sigpam-wide
1406++ test-inline-leftout-sigpam-wide
1363− (check ~.inline-leftout-sigpam-wide src-90 `tok-90 `tre-90)
1407+ (check ~.inline-leftout-sigpam-wide src-91 `tok-91 `tre-91)
1364++ test-inline-leftout-tis-paren
1408++ test-inline-leftout-tis-paren
1365− (check ~.inline-leftout-tis-paren src-91 `tok-91 `tre-91)
1409+ (check ~.inline-leftout-tis-paren src-92 `tok-92 `tre-92)
1366++ test-inline-leftout-tisfas
1410++ test-inline-leftout-tisfas
1367− (check ~.inline-leftout-tisfas src-92 `tok-92 `tre-92)
1411+ (check ~.inline-leftout-tisfas src-93 `tok-93 `tre-93)
1368++ test-inline-leftout-tisgal
1412++ test-inline-leftout-tisgal
1369− (check ~.inline-leftout-tisgal src-93 `tok-93 `tre-93)
1413+ (check ~.inline-leftout-tisgal src-94 `tok-94 `tre-94)
1370++ test-inline-leftout-tisgal-2
1414++ test-inline-leftout-tisgal-2
1371− (check ~.inline-leftout-tisgal-2 src-94 `tok-94 `tre-94)
1415+ (check ~.inline-leftout-tisgal-2 src-95 `tok-95 `tre-95)
1372++ test-inline-leftout-tisgar
1416++ test-inline-leftout-tisgar
1373− (check ~.inline-leftout-tisgar src-95 `tok-95 `tre-95)
1417+ (check ~.inline-leftout-tisgar src-96 `tok-96 `tre-96)
1374++ test-inline-leftout-tislus
1418++ test-inline-leftout-tislus
1375− (check ~.inline-leftout-tislus src-96 `tok-96 `tre-96)
1419+ (check ~.inline-leftout-tislus src-97 `tok-97 `tre-97)
1376++ test-inline-leftout-tistis
1420++ test-inline-leftout-tistis
1377− (check ~.inline-leftout-tistis src-97 `tok-97 `tre-97)
1421+ (check ~.inline-leftout-tistis src-98 `tok-98 `tre-98)
1378++ test-inline-leftout-wutcol
1422++ test-inline-leftout-wutcol
1379− (check ~.inline-leftout-wutcol src-98 `tok-98 `tre-98)
1423+ (check ~.inline-leftout-wutcol src-99 `tok-99 `tre-99)
1380++ test-inline-leftout-wutcol-2
1424++ test-inline-leftout-wutcol-2
1381− (check ~.inline-leftout-wutcol-2 src-99 `tok-99 `tre-99)
1425+ (check ~.inline-leftout-wutcol-2 src-100 `tok-100 `tre-100)
1382++ test-inline-leftout-wuthep-wide
1426++ test-inline-leftout-wuthep-wide
1383− (check ~.inline-leftout-wuthep-wide src-100 `tok-100 `tre-100)
1427+ (check ~.inline-leftout-wuthep-wide src-101 `tok-101 `tre-101)
1384++ test-inline-leftout-wutlus
1428++ test-inline-leftout-wutlus
1385− (check ~.inline-leftout-wutlus src-101 `tok-101 `tre-101)
1429+ (check ~.inline-leftout-wutlus src-102 `tok-102 `tre-102)
1386++ test-inline-leftout-wutsig
1430++ test-inline-leftout-wutsig
1387− (check ~.inline-leftout-wutsig src-102 `tok-102 `tre-102)
1431+ (check ~.inline-leftout-wutsig src-103 `tok-103 `tre-103)
1388++ test-inline-leftout-wutzap
1432++ test-inline-leftout-wutzap
1389− (check ~.inline-leftout-wutzap src-103 `tok-103 `tre-103)
1433+ (check ~.inline-leftout-wutzap src-104 `tok-104 `tre-104)
1390++ test-inline-leftout-zap-not
1434++ test-inline-leftout-zap-not
1391− (check ~.inline-leftout-zap-not src-104 `tok-104 `tre-104)
1435+ (check ~.inline-leftout-zap-not src-105 `tok-105 `tre-105)
1392++ test-inline-leftout-zap-not-2
1436++ test-inline-leftout-zap-not-2
1393− (check ~.inline-leftout-zap-not-2 src-105 `tok-105 `tre-105)
1437+ (check ~.inline-leftout-zap-not-2 src-106 `tok-106 `tre-106)
1394++ test-inline-leftout-zapgar
1438++ test-inline-leftout-zapgar
1395− (check ~.inline-leftout-zapgar src-106 `tok-106 `tre-106)
1439+ (check ~.inline-leftout-zapgar src-107 `tok-107 `tre-107)
1396++ test-inline-list
1440++ test-inline-list
1397− (check ~.inline-list src-107 `tok-107 `tre-107)
1441+ (check ~.inline-list src-108 `tok-108 `tre-108)
1398++ test-inline-list-parens
1442++ test-inline-list-parens
1399− (check ~.inline-list-parens src-108 `tok-108 `tre-108)
1443+ (check ~.inline-list-parens src-109 `tok-109 `tre-109)
1400++ test-inline-literal-defaults
1444++ test-inline-literal-defaults
1401− (check ~.inline-literal-defaults src-109 `tok-109 `tre-109)
1445+ (check ~.inline-literal-defaults src-110 `tok-110 `tre-110)
1402++ test-inline-load-slug
1446++ test-inline-load-slug
1403− (check ~.inline-load-slug src-110 `tok-110 `tre-110)
1447+ (check ~.inline-load-slug src-111 `tok-111 `tre-111)
1404++ test-inline-local-names
1448++ test-inline-local-names
1405− (check ~.inline-local-names src-111 `tok-111 `tre-111)
1449+ (check ~.inline-local-names src-112 `tok-112 `tre-112)
1406++ test-inline-local-names-bodies
1450++ test-inline-local-names-bodies
1407− (check ~.inline-local-names-bodies src-112 `tok-112 `tre-112)
1451+ (check ~.inline-local-names-bodies src-113 `tok-113 `tre-113)
1408++ test-inline-loobean
1452++ test-inline-loobean
1409− (check ~.inline-loobean src-113 `tok-113 `tre-113)
1453+ (check ~.inline-loobean src-114 `tok-114 `tre-114)
1410++ test-inline-mark-digit
1454++ test-inline-mark-digit
1411− (check ~.inline-mark-digit src-114 `tok-114 `tre-114)
1455+ (check ~.inline-mark-digit src-115 `tok-115 `tre-115)
1412++ test-inline-module-definitions
1456++ test-inline-module-definitions
1413− (check ~.inline-module-definitions src-115 `tok-115 `tre-115)
1457+ (check ~.inline-module-definitions src-116 `tok-116 `tre-116)
1414++ test-inline-mold-add
1458++ test-inline-mold-add
1415− (check ~.inline-mold-add src-116 `tok-116 `tre-116)
1459+ (check ~.inline-mold-add src-117 `tok-117 `tre-117)
1416++ test-inline-mold-any-empty
1460++ test-inline-mold-any-empty
1417− (check ~.inline-mold-any-empty src-117 `tok-117 `tre-117)
1461+ (check ~.inline-mold-any-empty src-118 `tok-118 `tre-118)
1418++ test-inline-mold-atoms
1462++ test-inline-mold-atoms
1419− (check ~.inline-mold-atoms src-118 `tok-118 `tre-118)
1463+ (check ~.inline-mold-atoms src-119 `tok-119 `tre-119)
1420++ test-inline-mold-constants
1464++ test-inline-mold-constants
1421− (check ~.inline-mold-constants src-119 `tok-119 `tre-119)
1465+ (check ~.inline-mold-constants src-120 `tok-120 `tre-120)
1422++ test-inline-mold-containers
1466++ test-inline-mold-containers
1423− (check ~.inline-mold-containers src-120 `tok-120 `tre-120)
1467+ (check ~.inline-mold-containers src-121 `tok-121 `tre-121)
1424++ test-inline-mold-gate
1468++ test-inline-mold-gate
1425− (check ~.inline-mold-gate src-121 `tok-121 `tre-121)
1469+ (check ~.inline-mold-gate src-122 `tok-122 `tre-122)
1426++ test-inline-mold-generic
1470++ test-inline-mold-generic
1427− (check ~.inline-mold-generic src-122 `tok-122 `tre-122)
1471+ (check ~.inline-mold-generic src-123 `tok-123 `tre-123)
1428++ test-inline-mold-opaque
1472++ test-inline-mold-opaque
1429− (check ~.inline-mold-opaque src-123 `tok-123 `tre-123)
1473+ (check ~.inline-mold-opaque src-124 `tok-124 `tre-124)
1430++ test-inline-mold-paths
1474++ test-inline-mold-paths
1431− (check ~.inline-mold-paths src-124 `tok-124 `tre-124)
1475+ (check ~.inline-mold-paths src-125 `tok-125 `tre-125)
1432++ test-inline-mold-records
1476++ test-inline-mold-records
1433− (check ~.inline-mold-records src-125 `tok-125 `tre-125)
1477+ (check ~.inline-mold-records src-126 `tok-126 `tre-126)
1434++ test-inline-namespaces
1478++ test-inline-namespaces
1435− (check ~.inline-namespaces src-126 `tok-126 `tre-126)
1479+ (check ~.inline-namespaces src-127 `tok-127 `tre-127)
1436++ test-inline-no-operators
1480++ test-inline-no-operators
1437− (check ~.inline-no-operators src-127 `tok-127 `tre-127)
1481+ (check ~.inline-no-operators src-128 `tok-128 `tre-128)
1438++ test-inline-no-subs
1482++ test-inline-no-subs
1439− (check ~.inline-no-subs src-128 `tok-128 `tre-128)
1483+ (check ~.inline-no-subs src-129 `tok-129 `tre-129)
1440++ test-inline-null
1484++ test-inline-null
1441− (check ~.inline-null src-129 `tok-129 `tre-129)
1485+ (check ~.inline-null src-130 `tok-130 `tre-130)
1442++ test-inline-pair
1486++ test-inline-pair
1443− (check ~.inline-pair src-130 `tok-130 `tre-130)
1487+ (check ~.inline-pair src-131 `tok-131 `tre-131)
1444++ test-inline-pairs-two-items
1488++ test-inline-pairs-two-items
1445− (check ~.inline-pairs-two-items src-131 `tok-131 `tre-131)
1489+ (check ~.inline-pairs-two-items src-132 `tok-132 `tre-132)
1446++ test-inline-path
1490++ test-inline-path
1447− (check ~.inline-path src-132 `tok-132 `tre-132)
1491+ (check ~.inline-path src-133 `tok-133 `tre-133)
1448++ test-inline-pattern-any
1492++ test-inline-pattern-any
1449− (check ~.inline-pattern-any src-133 `tok-133 `tre-133)
1493+ (check ~.inline-pattern-any src-134 `tok-134 `tre-134)
1450++ test-inline-pattern-cell
1494++ test-inline-pattern-cell
1451− (check ~.inline-pattern-cell src-134 `tok-134 `tre-134)
1495+ (check ~.inline-pattern-cell src-135 `tok-135 `tre-135)
1452++ test-inline-pattern-cell-open-bad
1496++ test-inline-pattern-cell-open-bad
1453− (check ~.inline-pattern-cell-open-bad src-135 `tok-135 `tre-135)
1497+ (check ~.inline-pattern-cell-open-bad src-136 `tok-136 `tre-136)
1454++ test-inline-pattern-crash-arm
1498++ test-inline-pattern-crash-arm
1455− (check ~.inline-pattern-crash-arm src-136 `tok-136 `tre-136)
1499+ (check ~.inline-pattern-crash-arm src-137 `tok-137 `tre-137)
1456++ test-inline-pattern-crash-bad
1500++ test-inline-pattern-crash-bad
1457− (check ~.inline-pattern-crash-bad src-137 `tok-137 `tre-137)
1501+ (check ~.inline-pattern-crash-bad src-138 `tok-138 `tre-138)
1458++ test-inline-pattern-date-bad
1502++ test-inline-pattern-date-bad
1459− (check ~.inline-pattern-date-bad src-138 `tok-138 `tre-138)
1503+ (check ~.inline-pattern-date-bad src-139 `tok-139 `tre-139)
1460++ test-inline-pattern-duration-bad
1504++ test-inline-pattern-duration-bad
1461− (check ~.inline-pattern-duration-bad src-139 `tok-139 `tre-139)
1505+ (check ~.inline-pattern-duration-bad src-140 `tok-140 `tre-140)
1462++ test-inline-pattern-eq
1506++ test-inline-pattern-eq
1463− (check ~.inline-pattern-eq src-140 `tok-140 `tre-140)
1507+ (check ~.inline-pattern-eq src-141 `tok-141 `tre-141)
1464++ test-inline-pattern-face-bad
1508++ test-inline-pattern-face-bad
1465− (check ~.inline-pattern-face-bad src-141 `tok-141 `tre-141)
1509+ (check ~.inline-pattern-face-bad src-142 `tok-142 `tre-142)
1466++ test-inline-pattern-head-tag
1510++ test-inline-pattern-head-tag
1467− (check ~.inline-pattern-head-tag src-142 `tok-142 `tre-142)
1511+ (check ~.inline-pattern-head-tag src-143 `tok-143 `tre-143)
1468++ test-inline-pattern-interpolated-bad
1512++ test-inline-pattern-interpolated-bad
1469− (check ~.inline-pattern-interpolated-bad src-143 `tok-143 `tre-143)
1513+ (check ~.inline-pattern-interpolated-bad src-144 `tok-144 `tre-144)
1470++ test-inline-pattern-list-bad
1514++ test-inline-pattern-list-bad
1471− (check ~.inline-pattern-list-bad src-144 `tok-144 `tre-144)
1515+ (check ~.inline-pattern-list-bad src-145 `tok-145 `tre-145)
1472++ test-inline-pattern-literals
1516++ test-inline-pattern-literals
1473− (check ~.inline-pattern-literals src-145 `tok-145 `tre-145)
1517+ (check ~.inline-pattern-literals src-146 `tok-146 `tre-146)
1474++ test-inline-pattern-loobean
1518++ test-inline-pattern-loobean
1475− (check ~.inline-pattern-loobean src-146 `tok-146 `tre-146)
1519+ (check ~.inline-pattern-loobean src-147 `tok-147 `tre-147)
1476++ test-inline-pattern-move-any
1520++ test-inline-pattern-move-any
1477− (check ~.inline-pattern-move-any src-147 `tok-147 `tre-147)
1521+ (check ~.inline-pattern-move-any src-148 `tok-148 `tre-148)
1478++ test-inline-pattern-name
1522++ test-inline-pattern-name
1479− (check ~.inline-pattern-name src-148 `tok-148 `tre-148)
1523+ (check ~.inline-pattern-name src-149 `tok-149 `tre-149)
1480++ test-inline-pattern-null
1524++ test-inline-pattern-null
1481− (check ~.inline-pattern-null src-149 `tok-149 `tre-149)
1525+ (check ~.inline-pattern-null src-150 `tok-150 `tre-150)
1482++ test-inline-pattern-pair-bad
1526++ test-inline-pattern-pair-bad
1483− (check ~.inline-pattern-pair-bad src-150 `tok-150 `tre-150)
1527+ (check ~.inline-pattern-pair-bad src-151 `tok-151 `tre-151)
1484++ test-inline-pattern-tail-tag
1528++ test-inline-pattern-tail-tag
1485− (check ~.inline-pattern-tail-tag src-151 `tok-151 `tre-151)
1529+ (check ~.inline-pattern-tail-tag src-152 `tok-152 `tre-152)
1486++ test-inline-pattern-term
1530++ test-inline-pattern-term
1487− (check ~.inline-pattern-term src-152 `tok-152 `tre-152)
1531+ (check ~.inline-pattern-term src-153 `tok-153 `tre-153)
1488++ test-inline-pattern-two-tags
1532++ test-inline-pattern-two-tags
1489− (check ~.inline-pattern-two-tags src-153 `tok-153 `tre-153)
1533+ (check ~.inline-pattern-two-tags src-154 `tok-154 `tre-154)
1490++ test-inline-pattern-unit
1534++ test-inline-pattern-unit
1491− (check ~.inline-pattern-unit src-154 `tok-154 `tre-154)
1535+ (check ~.inline-pattern-unit src-155 `tok-155 `tre-155)
1492++ test-inline-qath
1536++ test-inline-qath
1493− (check ~.inline-qath src-155 `tok-155 `tre-155)
1537+ (check ~.inline-qath src-156 `tok-156 `tre-156)
1494++ test-inline-requests
1538++ test-inline-requests
1495− (check ~.inline-requests src-156 `tok-156 `tre-156)
1539+ (check ~.inline-requests src-157 `tok-157 `tre-157)
1496++ test-inline-scry-case
1540++ test-inline-scry-case
1497− (check ~.inline-scry-case src-157 `tok-157 `tre-157)
1541+ (check ~.inline-scry-case src-158 `tok-158 `tre-158)
1498++ test-inline-self-reference
1542++ test-inline-self-reference
1499− (check ~.inline-self-reference src-158 `tok-158 `tre-158)
1543+ (check ~.inline-self-reference src-159 `tok-159 `tre-159)
1500++ test-inline-ship
1544++ test-inline-ship
1501− (check ~.inline-ship src-159 `tok-159 `tre-159)
1545+ (check ~.inline-ship src-160 `tok-160 `tre-160)
1502++ test-inline-static-image
1546++ test-inline-static-image
1503− (check ~.inline-static-image src-160 `tok-160 `tre-160)
1547+ (check ~.inline-static-image src-161 `tok-161 `tre-161)
1504++ test-inline-string
1548++ test-inline-string
1505− (check ~.inline-string src-161 `tok-161 `tre-161)
1549+ (check ~.inline-string src-162 `tok-162 `tre-162)
1506++ test-inline-tag-shape
1550++ test-inline-tag-shape
1507− (check ~.inline-tag-shape src-162 `tok-162 `tre-162)
1551+ (check ~.inline-tag-shape src-163 `tok-163 `tre-163)
1508++ test-inline-term
1552++ test-inline-term
1509− (check ~.inline-term src-163 `tok-163 `tre-163)
1553+ (check ~.inline-term src-164 `tok-164 `tre-164)
1510++ test-inline-term-numeric
1554++ test-inline-term-numeric
1511− (check ~.inline-term-numeric src-164 `tok-164 `tre-164)
1555+ (check ~.inline-term-numeric src-165 `tok-165 `tre-165)
1512++ test-inline-text-items
1556++ test-inline-text-items
1513− (check ~.inline-text-items src-165 `tok-165 `tre-165)
1557+ (check ~.inline-text-items src-166 `tok-166 `tre-166)
1514++ test-inline-union-both-bad
1558++ test-inline-union-both-bad
1515− (check ~.inline-union-both-bad src-166 `tok-166 `tre-166)
1559+ (check ~.inline-union-both-bad src-167 `tok-167 `tre-167)
1516++ test-inline-union-local
1560++ test-inline-union-local
1517− (check ~.inline-union-local src-167 `tok-167 `tre-167)
1561+ (check ~.inline-union-local src-168 `tok-168 `tre-168)
1518++ test-inline-union-one-case
1562++ test-inline-union-one-case
1519− (check ~.inline-union-one-case src-168 `tok-168 `tre-168)
1563+ (check ~.inline-union-one-case src-169 `tok-169 `tre-169)
1520++ test-inline-union-record-bad
1564++ test-inline-union-record-bad
1521− (check ~.inline-union-record-bad src-169 `tok-169 `tre-169)
1565+ (check ~.inline-union-record-bad src-170 `tok-170 `tre-170)
1522++ test-inline-union-wide
1566++ test-inline-union-wide
1523− (check ~.inline-union-wide src-170 `tok-170 `tre-170)
1567+ (check ~.inline-union-wide src-171 `tok-171 `tre-171)
1524++ test-inline-unit
1568++ test-inline-unit
1525− (check ~.inline-unit src-171 `tok-171 `tre-171)
1569+ (check ~.inline-unit src-172 `tok-172 `tre-172)
1526++ test-inline-wide-form-rune-bad
1570++ test-inline-wide-form-rune-bad
1527− (check ~.inline-wide-form-rune-bad src-172 `tok-172 `tre-172)
1571+ (check ~.inline-wide-form-rune-bad src-173 `tok-173 `tre-173)
1528++ test-inline-wide-forms
1572++ test-inline-wide-forms
1529− (check ~.inline-wide-forms src-173 `tok-173 `tre-173)
1573+ (check ~.inline-wide-forms src-174 `tok-174 `tre-174)
1530++ test-inline-wide-union-call
1574++ test-inline-wide-union-call
1531− (check ~.inline-wide-union-call src-174 `tok-174 `tre-174)
1575+ (check ~.inline-wide-union-call src-175 `tok-175 `tre-175)
1532++ test-inline-wings
1576++ test-inline-wings
1533− (check ~.inline-wings src-175 `tok-175 `tre-175)
1577+ (check ~.inline-wings src-176 `tok-176 `tre-176)
1534++ test-lex-base32-bad-1
1578++ test-lex-base32-bad-1
1535− (check ~.lex-base32-bad-1 src-176 `tok-176 `tre-176)
1579+ (check ~.lex-base32-bad-1 src-177 `tok-177 `tre-177)
1536++ test-lex-base32-ok-1
1580++ test-lex-base32-ok-1
1537− (check ~.lex-base32-ok-1 src-177 `tok-177 `tre-177)
1581+ (check ~.lex-base32-ok-1 src-178 `tok-178 `tre-178)
1538++ test-lex-blob-bad-1
1582++ test-lex-blob-bad-1
1539− (check ~.lex-blob-bad-1 src-178 `tok-178 `tre-178)
1583+ (check ~.lex-blob-bad-1 src-179 `tok-179 `tre-179)
1540++ test-lex-call-open-bad-1
1584++ test-lex-call-open-bad-1
1541− (check ~.lex-call-open-bad-1 src-179 `tok-179 `tre-179)
1585+ (check ~.lex-call-open-bad-1 src-180 `tok-180 `tre-180)
1542++ test-lex-call-open-bad-2
1586++ test-lex-call-open-bad-2
1543− (check ~.lex-call-open-bad-2 src-180 `tok-180 `tre-180)
1587+ (check ~.lex-call-open-bad-2 src-181 `tok-181 `tre-181)
1544++ test-lex-call-open-bad-4
1588++ test-lex-call-open-bad-4
1545− (check ~.lex-call-open-bad-4 src-181 `tok-181 `tre-181)
1589+ (check ~.lex-call-open-bad-4 src-182 `tok-182 `tre-182)
1546++ test-lex-call-open-ok-1
1590++ test-lex-call-open-ok-1
1547− (check ~.lex-call-open-ok-1 src-182 `tok-182 `tre-182)
1591+ (check ~.lex-call-open-ok-1 src-183 `tok-183 `tre-183)
1548++ test-lex-call-open-ok-2
1592++ test-lex-call-open-ok-2
1549− (check ~.lex-call-open-ok-2 src-183 `tok-183 `tre-183)
1593+ (check ~.lex-call-open-ok-2 src-184 `tok-184 `tre-184)
1550++ test-lex-cell-bad-1
1594++ test-lex-cell-bad-1
1551− (check ~.lex-cell-bad-1 src-184 `tok-184 `tre-184)
1595+ (check ~.lex-cell-bad-1 src-185 `tok-185 `tre-185)
1552++ test-lex-cell-ok-1
1596++ test-lex-cell-ok-1
1553− (check ~.lex-cell-ok-1 src-185 `tok-185 `tre-185)
1597+ (check ~.lex-cell-ok-1 src-186 `tok-186 `tre-186)
1554++ test-lex-closer-bad-1
1598++ test-lex-closer-bad-1
1555− (check ~.lex-closer-bad-1 src-186 `tok-186 `tre-186)
1599+ (check ~.lex-closer-bad-1 src-187 `tok-187 `tre-187)
1556++ test-lex-closer-bad-2
1600++ test-lex-closer-bad-2
1557− (check ~.lex-closer-bad-2 src-187 `tok-187 `tre-187)
1601+ (check ~.lex-closer-bad-2 src-188 `tok-188 `tre-188)
1558++ test-lex-closer-bad-3
1602++ test-lex-closer-bad-3
1559− (check ~.lex-closer-bad-3 src-188 `tok-188 `tre-188)
1603+ (check ~.lex-closer-bad-3 src-189 `tok-189 `tre-189)
1560++ test-lex-closer-bad-4
1604++ test-lex-closer-bad-4
1561− (check ~.lex-closer-bad-4 src-189 `tok-189 `tre-189)
1605+ (check ~.lex-closer-bad-4 src-190 `tok-190 `tre-190)
1562++ test-lex-codepoint-bad-1
1606++ test-lex-codepoint-bad-1
1563− (check ~.lex-codepoint-bad-1 src-190 `tok-190 `tre-190)
1607+ (check ~.lex-codepoint-bad-1 src-191 `tok-191 `tre-191)
1564++ test-lex-comment-bad-1
1608++ test-lex-comment-bad-1
1565− (check ~.lex-comment-bad-1 src-191 `tok-191 `tre-191)
1609+ (check ~.lex-comment-bad-1 src-192 `tok-192 `tre-192)
1566++ test-lex-comment-ok-1
1610++ test-lex-comment-ok-1
1567− (check ~.lex-comment-ok-1 src-192 `tok-192 `tre-192)
1611+ (check ~.lex-comment-ok-1 src-193 `tok-193 `tre-193)
1568++ test-lex-comment-ok-2
1612++ test-lex-comment-ok-2
1569− (check ~.lex-comment-ok-2 src-193 `tok-193 `tre-193)
1613+ (check ~.lex-comment-ok-2 src-194 `tok-194 `tre-194)
1570++ test-lex-comment-ok-3
1614++ test-lex-comment-ok-3
1571− (check ~.lex-comment-ok-3 src-194 `tok-194 `tre-194)
1615+ (check ~.lex-comment-ok-3 src-195 `tok-195 `tre-195)
1572++ test-lex-date-bad-1
1616++ test-lex-date-bad-1
1573− (check ~.lex-date-bad-1 src-195 `tok-195 `tre-195)
1617+ (check ~.lex-date-bad-1 src-196 `tok-196 `tre-196)
1574++ test-lex-date-bad-2
1618++ test-lex-date-bad-2
1575− (check ~.lex-date-bad-2 src-196 `tok-196 `tre-196)
1619+ (check ~.lex-date-bad-2 src-197 `tok-197 `tre-197)
1576++ test-lex-date-bad-3
1620++ test-lex-date-bad-3
1577− (check ~.lex-date-bad-3 src-197 `tok-197 `tre-197)
1621+ (check ~.lex-date-bad-3 src-198 `tok-198 `tre-198)
1578++ test-lex-date-ok-1
1622++ test-lex-date-ok-1
1579− (check ~.lex-date-ok-1 src-198 `tok-198 `tre-198)
1623+ (check ~.lex-date-ok-1 src-199 `tok-199 `tre-199)
1580++ test-lex-date-ok-2
1624++ test-lex-date-ok-2
1581− (check ~.lex-date-ok-2 src-199 `tok-199 `tre-199)
1625+ (check ~.lex-date-ok-2 src-200 `tok-200 `tre-200)
1582++ test-lex-decimal-bad-1
1626++ test-lex-decimal-bad-1
1583− (check ~.lex-decimal-bad-1 src-200 `tok-200 `tre-200)
1627+ (check ~.lex-decimal-bad-1 src-201 `tok-201 `tre-201)
1584++ test-lex-decimal-bad-2
1628++ test-lex-decimal-bad-2
1585− (check ~.lex-decimal-bad-2 src-201 `tok-201 `tre-201)
1629+ (check ~.lex-decimal-bad-2 src-202 `tok-202 `tre-202)
1586++ test-lex-decimal-ok-1
1630++ test-lex-decimal-ok-1
1587− (check ~.lex-decimal-ok-1 src-202 `tok-202 `tre-202)
1631+ (check ~.lex-decimal-ok-1 src-203 `tok-203 `tre-203)
1588++ test-lex-duration-bad-1
1632++ test-lex-duration-bad-1
1589− (check ~.lex-duration-bad-1 src-203 `tok-203 `tre-203)
1633+ (check ~.lex-duration-bad-1 src-204 `tok-204 `tre-204)
1590++ test-lex-duration-bad-2
1634++ test-lex-duration-bad-2
1591− (check ~.lex-duration-bad-2 src-204 `tok-204 `tre-204)
1635+ (check ~.lex-duration-bad-2 src-205 `tok-205 `tre-205)
1592++ test-lex-duration-ok-1
1636++ test-lex-duration-ok-1
1593− (check ~.lex-duration-ok-1 src-205 `tok-205 `tre-205)
1637+ (check ~.lex-duration-ok-1 src-206 `tok-206 `tre-206)
1594++ test-lex-hex-bad-1
1638++ test-lex-hex-bad-1
1595− (check ~.lex-hex-bad-1 src-206 `tok-206 `tre-206)
1639+ (check ~.lex-hex-bad-1 src-207 `tok-207 `tre-207)
1596++ test-lex-hex-ok-1
1640++ test-lex-hex-ok-1
1597− (check ~.lex-hex-ok-1 src-207 `tok-207 `tre-207)
1641+ (check ~.lex-hex-ok-1 src-208 `tok-208 `tre-208)
1598++ test-lex-indent-bad-1
1642++ test-lex-indent-bad-1
1599− (check ~.lex-indent-bad-1 src-208 `tok-208 `tre-208)
1643+ (check ~.lex-indent-bad-1 src-209 `tok-209 `tre-209)
1600++ test-lex-indent-bad-2
1644++ test-lex-indent-bad-2
1601− (check ~.lex-indent-bad-2 src-209 `tok-209 `tre-209)
1645+ (check ~.lex-indent-bad-2 src-210 `tok-210 `tre-210)
1602++ test-lex-indent-bad-3
1646++ test-lex-indent-bad-3
1603− (check ~.lex-indent-bad-3 src-210 `tok-210 `tre-210)
1647+ (check ~.lex-indent-bad-3 src-211 `tok-211 `tre-211)
1604++ test-lex-indent-ok-1
1648++ test-lex-indent-ok-1
1605− (check ~.lex-indent-ok-1 src-211 `tok-211 `tre-211)
1649+ (check ~.lex-indent-ok-1 src-212 `tok-212 `tre-212)
1606++ test-lex-indent-ok-2
1650++ test-lex-indent-ok-2
1607− (check ~.lex-indent-ok-2 src-212 `tok-212 `tre-212)
1651+ (check ~.lex-indent-ok-2 src-213 `tok-213 `tre-213)
1608++ test-lex-indent-ok-3
1652++ test-lex-indent-ok-3
1609− (check ~.lex-indent-ok-3 src-213 `tok-213 `tre-213)
1653+ (check ~.lex-indent-ok-3 src-214 `tok-214 `tre-214)
1610++ test-lex-interp-bad-1
1654++ test-lex-interp-bad-1
1611− (check ~.lex-interp-bad-1 src-214 `tok-214 `tre-214)
1655+ (check ~.lex-interp-bad-1 src-215 `tok-215 `tre-215)
1612++ test-lex-interp-bad-2
1656++ test-lex-interp-bad-2
1613− (check ~.lex-interp-bad-2 src-215 `tok-215 `tre-215)
1657+ (check ~.lex-interp-bad-2 src-216 `tok-216 `tre-216)
1614++ test-lex-interp-bad-3
1658++ test-lex-interp-bad-3
1615− (check ~.lex-interp-bad-3 src-216 `tok-216 `tre-216)
1659+ (check ~.lex-interp-bad-3 src-217 `tok-217 `tre-217)
1616++ test-lex-interp-bad-5
1660++ test-lex-interp-bad-5
1617− (check ~.lex-interp-bad-5 src-217 `tok-217 `tre-217)
1661+ (check ~.lex-interp-bad-5 src-218 `tok-218 `tre-218)
1618++ test-lex-interp-bad-6
1662++ test-lex-interp-bad-6
1619− (check ~.lex-interp-bad-6 src-218 `tok-218 `tre-218)
1663+ (check ~.lex-interp-bad-6 src-219 `tok-219 `tre-219)
1620++ test-lex-interp-ok-1
1664++ test-lex-interp-ok-1
1621− (check ~.lex-interp-ok-1 src-219 `tok-219 `tre-219)
1665+ (check ~.lex-interp-ok-1 src-220 `tok-220 `tre-220)
1622++ test-lex-interp-ok-2
1666++ test-lex-interp-ok-2
1623− (check ~.lex-interp-ok-2 src-220 `tok-220 `tre-220)
1667+ (check ~.lex-interp-ok-2 src-221 `tok-221 `tre-221)
1624++ test-lex-interp-ok-3
1668++ test-lex-interp-ok-3
1625− (check ~.lex-interp-ok-3 src-221 `tok-221 `tre-221)
1669+ (check ~.lex-interp-ok-3 src-222 `tok-222 `tre-222)
1626++ test-lex-knot-bad-1
1670++ test-lex-knot-bad-1
1627− (check ~.lex-knot-bad-1 src-222 `tok-222 `tre-222)
1671+ (check ~.lex-knot-bad-1 src-223 `tok-223 `tre-223)
1628++ test-lex-knot-ok-1
1672++ test-lex-knot-ok-1
1629− (check ~.lex-knot-ok-1 src-223 `tok-223 `tre-223)
1673+ (check ~.lex-knot-ok-1 src-224 `tok-224 `tre-224)
1630++ test-lex-layout-bad-1
1674++ test-lex-layout-bad-1
1631− (check ~.lex-layout-bad-1 src-224 `tok-224 `tre-224)
1675+ (check ~.lex-layout-bad-1 src-225 `tok-225 `tre-225)
1632++ test-lex-layout-bad-10
1676++ test-lex-layout-bad-10
1633− (check ~.lex-layout-bad-10 src-225 `tok-225 `tre-225)
1677+ (check ~.lex-layout-bad-10 src-226 `tok-226 `tre-226)
1634++ test-lex-layout-bad-2
1678++ test-lex-layout-bad-2
1635− (check ~.lex-layout-bad-2 src-226 `tok-226 `tre-226)
1679+ (check ~.lex-layout-bad-2 src-227 `tok-227 `tre-227)
1636++ test-lex-layout-bad-3
1680++ test-lex-layout-bad-3
1637− (check ~.lex-layout-bad-3 src-227 `tok-227 `tre-227)
1681+ (check ~.lex-layout-bad-3 src-228 `tok-228 `tre-228)
1638++ test-lex-layout-bad-4
1682++ test-lex-layout-bad-4
1639− (check ~.lex-layout-bad-4 src-228 `tok-228 `tre-228)
1683+ (check ~.lex-layout-bad-4 src-229 `tok-229 `tre-229)
1640++ test-lex-layout-bad-5
1684++ test-lex-layout-bad-5
1641− (check ~.lex-layout-bad-5 src-229 `tok-229 `tre-229)
1685+ (check ~.lex-layout-bad-5 src-230 `tok-230 `tre-230)
1642++ test-lex-layout-bad-6
1686++ test-lex-layout-bad-6
1643− (check ~.lex-layout-bad-6 src-230 `tok-230 `tre-230)
1687+ (check ~.lex-layout-bad-6 src-231 `tok-231 `tre-231)
1644++ test-lex-layout-bad-7
1688++ test-lex-layout-bad-7
1645− (check ~.lex-layout-bad-7 src-231 `tok-231 `tre-231)
1689+ (check ~.lex-layout-bad-7 src-232 `tok-232 `tre-232)
1646++ test-lex-layout-bad-8
1690++ test-lex-layout-bad-8
1647− (check ~.lex-layout-bad-8 src-232 `tok-232 `tre-232)
1691+ (check ~.lex-layout-bad-8 src-233 `tok-233 `tre-233)
1648++ test-lex-layout-bad-9
1692++ test-lex-layout-bad-9
1649− (check ~.lex-layout-bad-9 src-233 `tok-233 `tre-233)
1693+ (check ~.lex-layout-bad-9 src-234 `tok-234 `tre-234)
1650++ test-lex-layout-ok-1
1694++ test-lex-layout-ok-1
1651− (check ~.lex-layout-ok-1 src-234 `tok-234 `tre-234)
1695+ (check ~.lex-layout-ok-1 src-235 `tok-235 `tre-235)
1652++ test-lex-list-bad-1
1696++ test-lex-list-bad-1
1653− (check ~.lex-list-bad-1 src-235 `tok-235 `tre-235)
1697+ (check ~.lex-list-bad-1 src-236 `tok-236 `tre-236)
1654++ test-lex-list-ok-1
1698++ test-lex-list-ok-1
1655− (check ~.lex-list-ok-1 src-236 `tok-236 `tre-236)
1699+ (check ~.lex-list-ok-1 src-237 `tok-237 `tre-237)
1656++ test-lex-loobean-bad-1
1700++ test-lex-loobean-bad-1
1657− (check ~.lex-loobean-bad-1 src-237 `tok-237 `tre-237)
1701+ (check ~.lex-loobean-bad-1 src-238 `tok-238 `tre-238)
1658++ test-lex-loobean-ok-1
1702++ test-lex-loobean-ok-1
1659− (check ~.lex-loobean-ok-1 src-238 `tok-238 `tre-238)
1703+ (check ~.lex-loobean-ok-1 src-239 `tok-239 `tre-239)
1660++ test-lex-name-bad-1
1704++ test-lex-name-bad-1
1661− (check ~.lex-name-bad-1 src-239 `tok-239 `tre-239)
1705+ (check ~.lex-name-bad-1 src-240 `tok-240 `tre-240)
1662++ test-lex-name-bad-2
1706++ test-lex-name-bad-2
1663− (check ~.lex-name-bad-2 src-240 `tok-240 `tre-240)
1707+ (check ~.lex-name-bad-2 src-241 `tok-241 `tre-241)
1664++ test-lex-name-bad-3
1708++ test-lex-name-bad-3
1665− (check ~.lex-name-bad-3 src-241 `tok-241 `tre-241)
1709+ (check ~.lex-name-bad-3 src-242 `tok-242 `tre-242)
1666++ test-lex-name-bad-4
1710++ test-lex-name-bad-4
1667− (check ~.lex-name-bad-4 src-242 `tok-242 `tre-242)
1711+ (check ~.lex-name-bad-4 src-243 `tok-243 `tre-243)
1668++ test-lex-name-bad-5
1712++ test-lex-name-bad-5
1669− (check ~.lex-name-bad-5 src-243 `tok-243 `tre-243)
1713+ (check ~.lex-name-bad-5 src-244 `tok-244 `tre-244)
1670++ test-lex-name-bad-6
1714++ test-lex-name-bad-6
1671− (check ~.lex-name-bad-6 src-244 `tok-244 `tre-244)
1715+ (check ~.lex-name-bad-6 src-245 `tok-245 `tre-245)
1672++ test-lex-name-ok-1
1716++ test-lex-name-ok-1
1673− (check ~.lex-name-ok-1 src-245 `tok-245 `tre-245)
1717+ (check ~.lex-name-ok-1 src-246 `tok-246 `tre-246)
1674++ test-lex-null-bad-1
1718++ test-lex-null-bad-1
1675− (check ~.lex-null-bad-1 src-246 `tok-246 `tre-246)
1719+ (check ~.lex-null-bad-1 src-247 `tok-247 `tre-247)
1676++ test-lex-null-bad-2
1720++ test-lex-null-bad-2
1677− (check ~.lex-null-bad-2 src-247 `tok-247 `tre-247)
1721+ (check ~.lex-null-bad-2 src-248 `tok-248 `tre-248)
1678++ test-lex-null-ok-1
1722++ test-lex-null-ok-1
1679− (check ~.lex-null-ok-1 src-248 `tok-248 `tre-248)
1723+ (check ~.lex-null-ok-1 src-249 `tok-249 `tre-249)
1680++ test-lex-open-bracket-bad-1
1724++ test-lex-open-bracket-bad-1
1681− (check ~.lex-open-bracket-bad-1 src-249 `tok-249 `tre-249)
1725+ (check ~.lex-open-bracket-bad-1 src-250 `tok-250 `tre-250)
1682++ test-lex-open-bracket-bad-10
1726++ test-lex-open-bracket-bad-10
1683− (check ~.lex-open-bracket-bad-10 src-250 `tok-250 `tre-250)
1727+ (check ~.lex-open-bracket-bad-10 src-251 `tok-251 `tre-251)
1684++ test-lex-open-bracket-bad-11
1728++ test-lex-open-bracket-bad-11
1685− (check ~.lex-open-bracket-bad-11 src-251 `tok-251 `tre-251)
1729+ (check ~.lex-open-bracket-bad-11 src-252 `tok-252 `tre-252)
1686++ test-lex-open-bracket-bad-12
1730++ test-lex-open-bracket-bad-12
1687− (check ~.lex-open-bracket-bad-12 src-252 `tok-252 `tre-252)
1731+ (check ~.lex-open-bracket-bad-12 src-253 `tok-253 `tre-253)
1688++ test-lex-open-bracket-bad-13
1732++ test-lex-open-bracket-bad-13
1689− (check ~.lex-open-bracket-bad-13 src-253 `tok-253 `tre-253)
1733+ (check ~.lex-open-bracket-bad-13 src-254 `tok-254 `tre-254)
1690++ test-lex-open-bracket-bad-14
1734++ test-lex-open-bracket-bad-14
1691− (check ~.lex-open-bracket-bad-14 src-254 `tok-254 `tre-254)
1735+ (check ~.lex-open-bracket-bad-14 src-255 `tok-255 `tre-255)
1692++ test-lex-open-bracket-bad-15
1736++ test-lex-open-bracket-bad-15
1693− (check ~.lex-open-bracket-bad-15 src-255 `tok-255 `tre-255)
1737+ (check ~.lex-open-bracket-bad-15 src-256 `tok-256 `tre-256)
1694++ test-lex-open-bracket-bad-16
1738++ test-lex-open-bracket-bad-16
1695− (check ~.lex-open-bracket-bad-16 src-256 `tok-256 `tre-256)
1739+ (check ~.lex-open-bracket-bad-16 src-257 `tok-257 `tre-257)
1696++ test-lex-open-bracket-bad-2
1740++ test-lex-open-bracket-bad-2
1697− (check ~.lex-open-bracket-bad-2 src-257 `tok-257 `tre-257)
1741+ (check ~.lex-open-bracket-bad-2 src-258 `tok-258 `tre-258)
1698++ test-lex-open-bracket-bad-3
1742++ test-lex-open-bracket-bad-3
1699− (check ~.lex-open-bracket-bad-3 src-258 `tok-258 `tre-258)
1743+ (check ~.lex-open-bracket-bad-3 src-259 `tok-259 `tre-259)
1700++ test-lex-open-bracket-bad-5
1744++ test-lex-open-bracket-bad-5
1701− (check ~.lex-open-bracket-bad-5 src-259 `tok-259 `tre-259)
1745+ (check ~.lex-open-bracket-bad-5 src-260 `tok-260 `tre-260)
1702++ test-lex-open-bracket-bad-6
1746++ test-lex-open-bracket-bad-6
1703− (check ~.lex-open-bracket-bad-6 src-260 `tok-260 `tre-260)
1747+ (check ~.lex-open-bracket-bad-6 src-261 `tok-261 `tre-261)
1704++ test-lex-open-bracket-bad-7
1748++ test-lex-open-bracket-bad-7
1705− (check ~.lex-open-bracket-bad-7 src-261 `tok-261 `tre-261)
1749+ (check ~.lex-open-bracket-bad-7 src-262 `tok-262 `tre-262)
1706++ test-lex-open-bracket-bad-8
1750++ test-lex-open-bracket-bad-8
1707− (check ~.lex-open-bracket-bad-8 src-262 `tok-262 `tre-262)
1751+ (check ~.lex-open-bracket-bad-8 src-263 `tok-263 `tre-263)
1708++ test-lex-open-bracket-bad-9
1752++ test-lex-open-bracket-bad-9
1709− (check ~.lex-open-bracket-bad-9 src-263 `tok-263 `tre-263)
1753+ (check ~.lex-open-bracket-bad-9 src-264 `tok-264 `tre-264)
1710++ test-lex-open-bracket-ok-1
1754++ test-lex-open-bracket-ok-1
1711− (check ~.lex-open-bracket-ok-1 src-264 `tok-264 `tre-264)
1755+ (check ~.lex-open-bracket-ok-1 src-265 `tok-265 `tre-265)
1712++ test-lex-open-bracket-ok-2
1756++ test-lex-open-bracket-ok-2
1713− (check ~.lex-open-bracket-ok-2 src-265 `tok-265 `tre-265)
1757+ (check ~.lex-open-bracket-ok-2 src-266 `tok-266 `tre-266)
1714++ test-lex-open-bracket-ok-3
1758++ test-lex-open-bracket-ok-3
1715− (check ~.lex-open-bracket-ok-3 src-266 `tok-266 `tre-266)
1759+ (check ~.lex-open-bracket-ok-3 src-267 `tok-267 `tre-267)
1716++ test-lex-open-bracket-ok-4
1760++ test-lex-open-bracket-ok-4
1717− (check ~.lex-open-bracket-ok-4 src-267 `tok-267 `tre-267)
1761+ (check ~.lex-open-bracket-ok-4 src-268 `tok-268 `tre-268)
1718++ test-lex-open-bracket-ok-5
1762++ test-lex-open-bracket-ok-5
1719− (check ~.lex-open-bracket-ok-5 src-268 `tok-268 `tre-268)
1763+ (check ~.lex-open-bracket-ok-5 src-269 `tok-269 `tre-269)
1720++ test-lex-open-bracket-ok-6
1764++ test-lex-open-bracket-ok-6
1721− (check ~.lex-open-bracket-ok-6 src-269 `tok-269 `tre-269)
1765+ (check ~.lex-open-bracket-ok-6 src-270 `tok-270 `tre-270)
1722++ test-lex-open-bracket-ok-7
1766++ test-lex-open-bracket-ok-7
1723− (check ~.lex-open-bracket-ok-7 src-270 `tok-270 `tre-270)
1767+ (check ~.lex-open-bracket-ok-7 src-271 `tok-271 `tre-271)
1724++ test-lex-open-bracket-ok-8
1768++ test-lex-open-bracket-ok-8
1725− (check ~.lex-open-bracket-ok-8 src-271 `tok-271 `tre-271)
1769+ (check ~.lex-open-bracket-ok-8 src-272 `tok-272 `tre-272)
1726++ test-lex-open-bracket-ok-9
1770++ test-lex-open-bracket-ok-9
1727− (check ~.lex-open-bracket-ok-9 src-272 `tok-272 `tre-272)
1771+ (check ~.lex-open-bracket-ok-9 src-273 `tok-273 `tre-273)
1728++ test-lex-open-mold-bad-1
1772++ test-lex-open-mold-bad-1
1729− (check ~.lex-open-mold-bad-1 src-273 `tok-273 `tre-273)
1773+ (check ~.lex-open-mold-bad-1 src-274 `tok-274 `tre-274)
1730++ test-lex-open-mold-bad-10
1774++ test-lex-open-mold-bad-10
1731− (check ~.lex-open-mold-bad-10 src-274 `tok-274 `tre-274)
1775+ (check ~.lex-open-mold-bad-10 src-275 `tok-275 `tre-275)
1732++ test-lex-open-mold-bad-11
1776++ test-lex-open-mold-bad-11
1733− (check ~.lex-open-mold-bad-11 src-275 `tok-275 `tre-275)
1777+ (check ~.lex-open-mold-bad-11 src-276 `tok-276 `tre-276)
1734++ test-lex-open-mold-bad-12
1778++ test-lex-open-mold-bad-12
1735− (check ~.lex-open-mold-bad-12 src-276 `tok-276 `tre-276)
1779+ (check ~.lex-open-mold-bad-12 src-277 `tok-277 `tre-277)
1736++ test-lex-open-mold-bad-13
1780++ test-lex-open-mold-bad-13
1737− (check ~.lex-open-mold-bad-13 src-277 `tok-277 `tre-277)
1781+ (check ~.lex-open-mold-bad-13 src-278 `tok-278 `tre-278)
1738++ test-lex-open-mold-bad-14
1782++ test-lex-open-mold-bad-14
1739− (check ~.lex-open-mold-bad-14 src-278 `tok-278 `tre-278)
1783+ (check ~.lex-open-mold-bad-14 src-279 `tok-279 `tre-279)
1740++ test-lex-open-mold-bad-15
1784++ test-lex-open-mold-bad-15
1741− (check ~.lex-open-mold-bad-15 src-279 `tok-279 `tre-279)
1785+ (check ~.lex-open-mold-bad-15 src-280 `tok-280 `tre-280)
1742++ test-lex-open-mold-bad-16
1786++ test-lex-open-mold-bad-16
1743− (check ~.lex-open-mold-bad-16 src-280 `tok-280 `tre-280)
1787+ (check ~.lex-open-mold-bad-16 src-281 `tok-281 `tre-281)
1744++ test-lex-open-mold-bad-2
1788++ test-lex-open-mold-bad-2
1745− (check ~.lex-open-mold-bad-2 src-281 `tok-281 `tre-281)
1789+ (check ~.lex-open-mold-bad-2 src-282 `tok-282 `tre-282)
1746++ test-lex-open-mold-bad-3
1790++ test-lex-open-mold-bad-3
1747− (check ~.lex-open-mold-bad-3 src-282 `tok-282 `tre-282)
1791+ (check ~.lex-open-mold-bad-3 src-283 `tok-283 `tre-283)
1748++ test-lex-open-mold-bad-4
1792++ test-lex-open-mold-bad-4
1749− (check ~.lex-open-mold-bad-4 src-283 `tok-283 `tre-283)
1793+ (check ~.lex-open-mold-bad-4 src-284 `tok-284 `tre-284)
1750++ test-lex-open-mold-bad-5
1794++ test-lex-open-mold-bad-5
1751− (check ~.lex-open-mold-bad-5 src-284 `tok-284 `tre-284)
1795+ (check ~.lex-open-mold-bad-5 src-285 `tok-285 `tre-285)
1752++ test-lex-open-mold-bad-6
1796++ test-lex-open-mold-bad-6
1753− (check ~.lex-open-mold-bad-6 src-285 `tok-285 `tre-285)
1797+ (check ~.lex-open-mold-bad-6 src-286 `tok-286 `tre-286)
1754++ test-lex-open-mold-bad-7
1798++ test-lex-open-mold-bad-7
1755− (check ~.lex-open-mold-bad-7 src-286 `tok-286 `tre-286)
1799+ (check ~.lex-open-mold-bad-7 src-287 `tok-287 `tre-287)
1756++ test-lex-open-mold-bad-8
1800++ test-lex-open-mold-bad-8
1757− (check ~.lex-open-mold-bad-8 src-287 `tok-287 `tre-287)
1801+ (check ~.lex-open-mold-bad-8 src-288 `tok-288 `tre-288)
1758++ test-lex-open-mold-bad-9
1802++ test-lex-open-mold-bad-9
1759− (check ~.lex-open-mold-bad-9 src-288 `tok-288 `tre-288)
1803+ (check ~.lex-open-mold-bad-9 src-289 `tok-289 `tre-289)
1760++ test-lex-open-mold-ok-1
1804++ test-lex-open-mold-ok-1
1761− (check ~.lex-open-mold-ok-1 src-289 `tok-289 `tre-289)
1805+ (check ~.lex-open-mold-ok-1 src-290 `tok-290 `tre-290)
1762++ test-lex-open-mold-ok-2
1806++ test-lex-open-mold-ok-2
1763− (check ~.lex-open-mold-ok-2 src-290 `tok-290 `tre-290)
1807+ (check ~.lex-open-mold-ok-2 src-291 `tok-291 `tre-291)
1764++ test-lex-open-mold-ok-3
1808++ test-lex-open-mold-ok-3
1765− (check ~.lex-open-mold-ok-3 src-291 `tok-291 `tre-291)
1809+ (check ~.lex-open-mold-ok-3 src-292 `tok-292 `tre-292)
1766++ test-lex-open-mold-ok-4
1810++ test-lex-open-mold-ok-4
1767− (check ~.lex-open-mold-ok-4 src-292 `tok-292 `tre-292)
1811+ (check ~.lex-open-mold-ok-4 src-293 `tok-293 `tre-293)
1768++ test-lex-open-mold-ok-5
1812++ test-lex-open-mold-ok-5
1769− (check ~.lex-open-mold-ok-5 src-293 `tok-293 `tre-293)
1813+ (check ~.lex-open-mold-ok-5 src-294 `tok-294 `tre-294)
1770++ test-lex-open-mold-ok-6
1814++ test-lex-open-mold-ok-6
1771− (check ~.lex-open-mold-ok-6 src-294 `tok-294 `tre-294)
1815+ (check ~.lex-open-mold-ok-6 src-295 `tok-295 `tre-295)
1772++ test-lex-pair-binding-bad-1
1816++ test-lex-pair-binding-bad-1
1773− (check ~.lex-pair-binding-bad-1 src-295 `tok-295 `tre-295)
1817+ (check ~.lex-pair-binding-bad-1 src-296 `tok-296 `tre-296)
1774++ test-lex-pair-binding-ok-1
1818++ test-lex-pair-binding-ok-1
1775− (check ~.lex-pair-binding-ok-1 src-296 `tok-296 `tre-296)
1819+ (check ~.lex-pair-binding-ok-1 src-297 `tok-297 `tre-297)
1776++ test-lex-path-bad-1
1820++ test-lex-path-bad-1
1777− (check ~.lex-path-bad-1 src-297 `tok-297 `tre-297)
1821+ (check ~.lex-path-bad-1 src-298 `tok-298 `tre-298)
1778++ test-lex-path-ok-1
1822++ test-lex-path-ok-1
1779− (check ~.lex-path-ok-1 src-298 `tok-298 `tre-298)
1823+ (check ~.lex-path-ok-1 src-299 `tok-299 `tre-299)
1780++ test-lex-rune-layout-bad-1
1824++ test-lex-rune-layout-bad-1
1781− (check ~.lex-rune-layout-bad-1 src-299 `tok-299 `tre-299)
1825+ (check ~.lex-rune-layout-bad-1 src-300 `tok-300 `tre-300)
1782++ test-lex-rune-layout-bad-11
1826++ test-lex-rune-layout-bad-11
1783− (check ~.lex-rune-layout-bad-11 src-300 `tok-300 `tre-300)
1827+ (check ~.lex-rune-layout-bad-11 src-301 `tok-301 `tre-301)
1784++ test-lex-rune-layout-bad-12
1828++ test-lex-rune-layout-bad-12
1785− (check ~.lex-rune-layout-bad-12 src-301 `tok-301 `tre-301)
1829+ (check ~.lex-rune-layout-bad-12 src-302 `tok-302 `tre-302)
1786++ test-lex-rune-layout-bad-13
1830++ test-lex-rune-layout-bad-13
1787− (check ~.lex-rune-layout-bad-13 src-302 `tok-302 `tre-302)
1831+ (check ~.lex-rune-layout-bad-13 src-303 `tok-303 `tre-303)
1788++ test-lex-rune-layout-bad-14
1832++ test-lex-rune-layout-bad-14
1789− (check ~.lex-rune-layout-bad-14 src-303 `tok-303 `tre-303)
1833+ (check ~.lex-rune-layout-bad-14 src-304 `tok-304 `tre-304)
1790++ test-lex-rune-layout-bad-15
1834++ test-lex-rune-layout-bad-15
1791− (check ~.lex-rune-layout-bad-15 src-304 `tok-304 `tre-304)
1835+ (check ~.lex-rune-layout-bad-15 src-305 `tok-305 `tre-305)
1792++ test-lex-rune-layout-bad-2
1836++ test-lex-rune-layout-bad-2
1793− (check ~.lex-rune-layout-bad-2 src-305 `tok-305 `tre-305)
1837+ (check ~.lex-rune-layout-bad-2 src-306 `tok-306 `tre-306)
1794++ test-lex-rune-layout-bad-3
1838++ test-lex-rune-layout-bad-3
1795− (check ~.lex-rune-layout-bad-3 src-306 `tok-306 `tre-306)
1839+ (check ~.lex-rune-layout-bad-3 src-307 `tok-307 `tre-307)
1796++ test-lex-rune-layout-bad-4
1840++ test-lex-rune-layout-bad-4
1797− (check ~.lex-rune-layout-bad-4 src-307 `tok-307 `tre-307)
1841+ (check ~.lex-rune-layout-bad-4 src-308 `tok-308 `tre-308)
1798++ test-lex-rune-layout-bad-5
1842++ test-lex-rune-layout-bad-5
1799− (check ~.lex-rune-layout-bad-5 src-308 `tok-308 `tre-308)
1843+ (check ~.lex-rune-layout-bad-5 src-309 `tok-309 `tre-309)
1800++ test-lex-rune-layout-bad-6
1844++ test-lex-rune-layout-bad-6
1801− (check ~.lex-rune-layout-bad-6 src-309 `tok-309 `tre-309)
1845+ (check ~.lex-rune-layout-bad-6 src-310 `tok-310 `tre-310)
1802++ test-lex-rune-layout-bad-7
1846++ test-lex-rune-layout-bad-7
1803− (check ~.lex-rune-layout-bad-7 src-310 `tok-310 `tre-310)
1847+ (check ~.lex-rune-layout-bad-7 src-311 `tok-311 `tre-311)
1804++ test-lex-rune-layout-bad-8
1848++ test-lex-rune-layout-bad-8
1805− (check ~.lex-rune-layout-bad-8 src-311 `tok-311 `tre-311)
1849+ (check ~.lex-rune-layout-bad-8 src-312 `tok-312 `tre-312)
1806++ test-lex-rune-layout-bad-9
1850++ test-lex-rune-layout-bad-9
1807− (check ~.lex-rune-layout-bad-9 src-312 `tok-312 `tre-312)
1851+ (check ~.lex-rune-layout-bad-9 src-313 `tok-313 `tre-313)
1808++ test-lex-rune-layout-ok-1
1852++ test-lex-rune-layout-ok-1
1809− (check ~.lex-rune-layout-ok-1 src-313 `tok-313 `tre-313)
1853+ (check ~.lex-rune-layout-ok-1 src-314 `tok-314 `tre-314)
1810++ test-lex-rune-layout-ok-2
1854++ test-lex-rune-layout-ok-2
1811− (check ~.lex-rune-layout-ok-2 src-314 `tok-314 `tre-314)
1855+ (check ~.lex-rune-layout-ok-2 src-315 `tok-315 `tre-315)
1812++ test-lex-ship-bad-1
1856++ test-lex-ship-bad-1
1813− (check ~.lex-ship-bad-1 src-315 `tok-315 `tre-315)
1857+ (check ~.lex-ship-bad-1 src-316 `tok-316 `tre-316)
1814++ test-lex-ship-ok-1
1858++ test-lex-ship-ok-1
1815− (check ~.lex-ship-ok-1 src-316 `tok-316 `tre-316)
1859+ (check ~.lex-ship-ok-1 src-317 `tok-317 `tre-317)
1816++ test-lex-spacing-bad-1
1860++ test-lex-spacing-bad-1
1817− (check ~.lex-spacing-bad-1 src-317 `tok-317 `tre-317)
1861+ (check ~.lex-spacing-bad-1 src-318 `tok-318 `tre-318)
1818++ test-lex-spacing-bad-2
1862++ test-lex-spacing-bad-2
1819− (check ~.lex-spacing-bad-2 src-318 `tok-318 `tre-318)
1863+ (check ~.lex-spacing-bad-2 src-319 `tok-319 `tre-319)
1820++ test-lex-spacing-ok-1
1864++ test-lex-spacing-ok-1
1821− (check ~.lex-spacing-ok-1 src-319 `tok-319 `tre-319)
1865+ (check ~.lex-spacing-ok-1 src-320 `tok-320 `tre-320)
1822++ test-lex-spacing-ok-2
1866++ test-lex-spacing-ok-2
1823− (check ~.lex-spacing-ok-2 src-320 `tok-320 `tre-320)
1867+ (check ~.lex-spacing-ok-2 src-321 `tok-321 `tre-321)
1824++ test-lex-spacing-ok-3
1868++ test-lex-spacing-ok-3
1825− (check ~.lex-spacing-ok-3 src-321 `tok-321 `tre-321)
1869+ (check ~.lex-spacing-ok-3 src-322 `tok-322 `tre-322)
1826++ test-lex-string-bad-1
1870++ test-lex-string-bad-1
1827− (check ~.lex-string-bad-1 src-322 `tok-322 `tre-322)
1871+ (check ~.lex-string-bad-1 src-323 `tok-323 `tre-323)
1828++ test-lex-string-bad-2
1872++ test-lex-string-bad-2
1829− (check ~.lex-string-bad-2 src-323 `tok-323 `tre-323)
1873+ (check ~.lex-string-bad-2 src-324 `tok-324 `tre-324)
1830++ test-lex-string-ok-1
1874++ test-lex-string-ok-1
1831− (check ~.lex-string-ok-1 src-324 `tok-324 `tre-324)
1875+ (check ~.lex-string-ok-1 src-325 `tok-325 `tre-325)
1832++ test-lex-term-bad-1
1876++ test-lex-term-bad-1
1833− (check ~.lex-term-bad-1 src-325 `tok-325 `tre-325)
1877+ (check ~.lex-term-bad-1 src-326 `tok-326 `tre-326)
1834++ test-lex-term-bad-10
1878++ test-lex-term-bad-10
1835− (check ~.lex-term-bad-10 src-326 `tok-326 `tre-326)
1879+ (check ~.lex-term-bad-10 src-327 `tok-327 `tre-327)
1836++ test-lex-term-bad-11
1880++ test-lex-term-bad-11
1837− (check ~.lex-term-bad-11 src-327 `tok-327 `tre-327)
1881+ (check ~.lex-term-bad-11 src-328 `tok-328 `tre-328)
1838++ test-lex-term-bad-12
1882++ test-lex-term-bad-12
1839− (check ~.lex-term-bad-12 src-328 `tok-328 `tre-328)
1883+ (check ~.lex-term-bad-12 src-329 `tok-329 `tre-329)
1840++ test-lex-term-bad-13
1884++ test-lex-term-bad-13
1841− (check ~.lex-term-bad-13 src-329 `tok-329 `tre-329)
1885+ (check ~.lex-term-bad-13 src-330 `tok-330 `tre-330)
1842++ test-lex-term-bad-14
1886++ test-lex-term-bad-14
1843− (check ~.lex-term-bad-14 src-330 `tok-330 `tre-330)
1887+ (check ~.lex-term-bad-14 src-331 `tok-331 `tre-331)
1844++ test-lex-term-bad-15
1888++ test-lex-term-bad-15
1845− (check ~.lex-term-bad-15 src-331 `tok-331 `tre-331)
1889+ (check ~.lex-term-bad-15 src-332 `tok-332 `tre-332)
1846++ test-lex-term-bad-2
1890++ test-lex-term-bad-2
1847− (check ~.lex-term-bad-2 src-332 `tok-332 `tre-332)
1891+ (check ~.lex-term-bad-2 src-333 `tok-333 `tre-333)
1848++ test-lex-term-bad-3
1892++ test-lex-term-bad-3
1849− (check ~.lex-term-bad-3 src-333 `tok-333 `tre-333)
1893+ (check ~.lex-term-bad-3 src-334 `tok-334 `tre-334)
1850++ test-lex-term-bad-4
1894++ test-lex-term-bad-4
1851− (check ~.lex-term-bad-4 src-334 `tok-334 `tre-334)
1895+ (check ~.lex-term-bad-4 src-335 `tok-335 `tre-335)
1852++ test-lex-term-bad-5
1896++ test-lex-term-bad-5
1853− (check ~.lex-term-bad-5 src-335 `tok-335 `tre-335)
1897+ (check ~.lex-term-bad-5 src-336 `tok-336 `tre-336)
1854++ test-lex-term-bad-6
1898++ test-lex-term-bad-6
1855− (check ~.lex-term-bad-6 src-336 `tok-336 `tre-336)
1899+ (check ~.lex-term-bad-6 src-337 `tok-337 `tre-337)
1856++ test-lex-term-bad-7
1900++ test-lex-term-bad-7
1857− (check ~.lex-term-bad-7 src-337 `tok-337 `tre-337)
1901+ (check ~.lex-term-bad-7 src-338 `tok-338 `tre-338)
1858++ test-lex-term-bad-8
1902++ test-lex-term-bad-8
1859− (check ~.lex-term-bad-8 src-338 `tok-338 `tre-338)
1903+ (check ~.lex-term-bad-8 src-339 `tok-339 `tre-339)
1860++ test-lex-term-bad-9
1904++ test-lex-term-bad-9
1861− (check ~.lex-term-bad-9 src-339 `tok-339 `tre-339)
1905+ (check ~.lex-term-bad-9 src-340 `tok-340 `tre-340)
1906+++ test-lex-term-dollar
1907+ (check ~.lex-term-dollar src-341 `tok-341 `tre-341)
1862++ test-lex-term-ok-1
1908++ test-lex-term-ok-1
1863− (check ~.lex-term-ok-1 src-340 `tok-340 `tre-340)
1909+ (check ~.lex-term-ok-1 src-342 `tok-342 `tre-342)
1864++ test-lex-tight-change-bad-1
1910++ test-lex-tight-change-bad-1
1865− (check ~.lex-tight-change-bad-1 src-341 `tok-341 `tre-341)
1911+ (check ~.lex-tight-change-bad-1 src-343 `tok-343 `tre-343)
1866++ test-lex-tight-change-bad-2
1912++ test-lex-tight-change-bad-2
1867− (check ~.lex-tight-change-bad-2 src-342 `tok-342 `tre-342)
1913+ (check ~.lex-tight-change-bad-2 src-344 `tok-344 `tre-344)
1868++ test-lex-tight-change-bad-3
1914++ test-lex-tight-change-bad-3
1869− (check ~.lex-tight-change-bad-3 src-343 `tok-343 `tre-343)
1915+ (check ~.lex-tight-change-bad-3 src-345 `tok-345 `tre-345)
1870++ test-lex-tight-change-bad-4
1916++ test-lex-tight-change-bad-4
1871− (check ~.lex-tight-change-bad-4 src-344 `tok-344 `tre-344)
1917+ (check ~.lex-tight-change-bad-4 src-346 `tok-346 `tre-346)
1872++ test-lex-tight-change-bad-5
1918++ test-lex-tight-change-bad-5
1873− (check ~.lex-tight-change-bad-5 src-345 `tok-345 `tre-345)
1919+ (check ~.lex-tight-change-bad-5 src-347 `tok-347 `tre-347)
1874++ test-lex-tight-change-bad-6
1920++ test-lex-tight-change-bad-6
1875− (check ~.lex-tight-change-bad-6 src-346 `tok-346 `tre-346)
1921+ (check ~.lex-tight-change-bad-6 src-348 `tok-348 `tre-348)
1876++ test-lex-tight-change-bad-7
1922++ test-lex-tight-change-bad-7
1877− (check ~.lex-tight-change-bad-7 src-347 `tok-347 `tre-347)
1923+ (check ~.lex-tight-change-bad-7 src-349 `tok-349 `tre-349)
1878++ test-lex-tight-change-bad-8
1924++ test-lex-tight-change-bad-8
1879− (check ~.lex-tight-change-bad-8 src-348 `tok-348 `tre-348)
1925+ (check ~.lex-tight-change-bad-8 src-350 `tok-350 `tre-350)
1880++ test-lex-tight-change-bad-9
1926++ test-lex-tight-change-bad-9
1881− (check ~.lex-tight-change-bad-9 src-349 `tok-349 `tre-349)
1927+ (check ~.lex-tight-change-bad-9 src-351 `tok-351 `tre-351)
1882++ test-lex-tight-change-ok-1
1928++ test-lex-tight-change-ok-1
1883− (check ~.lex-tight-change-ok-1 src-350 `tok-350 `tre-350)
1929+ (check ~.lex-tight-change-ok-1 src-352 `tok-352 `tre-352)
1884++ test-lex-tight-ctor-bad-1
1930++ test-lex-tight-ctor-bad-1
1885− (check ~.lex-tight-ctor-bad-1 src-351 `tok-351 `tre-351)
1931+ (check ~.lex-tight-ctor-bad-1 src-353 `tok-353 `tre-353)
1886++ test-lex-tight-ctor-bad-2
1932++ test-lex-tight-ctor-bad-2
1887− (check ~.lex-tight-ctor-bad-2 src-352 `tok-352 `tre-352)
1933+ (check ~.lex-tight-ctor-bad-2 src-354 `tok-354 `tre-354)
1888++ test-lex-tight-ctor-ok-1
1934++ test-lex-tight-ctor-ok-1
1889− (check ~.lex-tight-ctor-ok-1 src-353 `tok-353 `tre-353)
1935+ (check ~.lex-tight-ctor-ok-1 src-355 `tok-355 `tre-355)
1890++ test-lex-tight-opener-bad-1
1936++ test-lex-tight-opener-bad-1
1891− (check ~.lex-tight-opener-bad-1 src-354 `tok-354 `tre-354)
1937+ (check ~.lex-tight-opener-bad-1 src-356 `tok-356 `tre-356)
1892++ test-lex-tight-opener-bad-2
1938++ test-lex-tight-opener-bad-2
1893− (check ~.lex-tight-opener-bad-2 src-355 `tok-355 `tre-355)
1939+ (check ~.lex-tight-opener-bad-2 src-357 `tok-357 `tre-357)
1894++ test-lex-tight-opener-bad-3
1940++ test-lex-tight-opener-bad-3
1895− (check ~.lex-tight-opener-bad-3 src-356 `tok-356 `tre-356)
1941+ (check ~.lex-tight-opener-bad-3 src-358 `tok-358 `tre-358)
1896++ test-lex-tight-opener-bad-4
1942++ test-lex-tight-opener-bad-4
1897− (check ~.lex-tight-opener-bad-4 src-357 `tok-357 `tre-357)
1943+ (check ~.lex-tight-opener-bad-4 src-359 `tok-359 `tre-359)
1898++ test-lex-tight-opener-ok-1
1944++ test-lex-tight-opener-ok-1
1899− (check ~.lex-tight-opener-ok-1 src-358 `tok-358 `tre-358)
1945+ (check ~.lex-tight-opener-ok-1 src-360 `tok-360 `tre-360)
1900++ test-lex-tight-pair-bad-1
1946++ test-lex-tight-pair-bad-1
1901− (check ~.lex-tight-pair-bad-1 src-359 `tok-359 `tre-359)
1947+ (check ~.lex-tight-pair-bad-1 src-361 `tok-361 `tre-361)
1902++ test-lex-tight-pair-bad-2
1948++ test-lex-tight-pair-bad-2
1903− (check ~.lex-tight-pair-bad-2 src-360 `tok-360 `tre-360)
1949+ (check ~.lex-tight-pair-bad-2 src-362 `tok-362 `tre-362)
1904++ test-lex-tight-pair-bad-3
1950++ test-lex-tight-pair-bad-3
1905− (check ~.lex-tight-pair-bad-3 src-361 `tok-361 `tre-361)
1951+ (check ~.lex-tight-pair-bad-3 src-363 `tok-363 `tre-363)
1906++ test-lex-tight-pair-ok-1
1952++ test-lex-tight-pair-ok-1
1907− (check ~.lex-tight-pair-ok-1 src-362 `tok-362 `tre-362)
1953+ (check ~.lex-tight-pair-ok-1 src-364 `tok-364 `tre-364)
1908++ test-lex-tight-qath-bad-1
1954++ test-lex-tight-qath-bad-1
1909− (check ~.lex-tight-qath-bad-1 src-363 `tok-363 `tre-363)
1955+ (check ~.lex-tight-qath-bad-1 src-365 `tok-365 `tre-365)
1910++ test-lex-tight-qath-bad-2
1956++ test-lex-tight-qath-bad-2
1911− (check ~.lex-tight-qath-bad-2 src-364 `tok-364 `tre-364)
1957+ (check ~.lex-tight-qath-bad-2 src-366 `tok-366 `tre-366)
1912++ test-lex-tight-qath-bad-3
1958++ test-lex-tight-qath-bad-3
1913− (check ~.lex-tight-qath-bad-3 src-365 `tok-365 `tre-365)
1959+ (check ~.lex-tight-qath-bad-3 src-367 `tok-367 `tre-367)
1914++ test-lex-tight-qath-ok-1
1960++ test-lex-tight-qath-ok-1
1915− (check ~.lex-tight-qath-ok-1 src-366 `tok-366 `tre-366)
1961+ (check ~.lex-tight-qath-ok-1 src-368 `tok-368 `tre-368)
1916++ test-lex-tight-unit-bad-1
1962++ test-lex-tight-unit-bad-1
1917− (check ~.lex-tight-unit-bad-1 src-367 `tok-367 `tre-367)
1963+ (check ~.lex-tight-unit-bad-1 src-369 `tok-369 `tre-369)
1918++ test-lex-tight-unit-ok-1
1964++ test-lex-tight-unit-ok-1
1919− (check ~.lex-tight-unit-ok-1 src-368 `tok-368 `tre-368)
1965+ (check ~.lex-tight-unit-ok-1 src-370 `tok-370 `tre-370)
1920++ test-lex-tight-wing-bad-1
1966++ test-lex-tight-wing-bad-1
1921− (check ~.lex-tight-wing-bad-1 src-369 `tok-369 `tre-369)
1967+ (check ~.lex-tight-wing-bad-1 src-371 `tok-371 `tre-371)
1922++ test-lex-tight-wing-ok-1
1968++ test-lex-tight-wing-ok-1
1923− (check ~.lex-tight-wing-ok-1 src-370 `tok-370 `tre-370)
1969+ (check ~.lex-tight-wing-ok-1 src-372 `tok-372 `tre-372)
1924++ test-prelude-core-functions
1970++ test-prelude-core-functions
1925− (weld (check ~.prelude-core-functions src-371 `tok-371 `tre-371) (check-types ~.prelude-core-functions ~[%tests %golden ~.prelude-core-functions %source %jibb] src-371 `typ-371))
1971+ (weld (check ~.prelude-core-functions src-373 `tok-373 `tre-373) (check-types ~.prelude-core-functions ~[%tests %golden ~.prelude-core-functions %source %jibb] src-373 `typ-373))
1972+++ test-prelude-list-unit
1973+ (weld (check ~.prelude-list-unit src-374 `tok-374 `tre-374) (check-types ~.prelude-list-unit ~[%tests %golden ~.prelude-list-unit %source %jibb] src-374 `typ-374))
1926++ test-types-partial-apply
1974++ test-types-partial-apply
1927− (weld (check ~.types-partial-apply src-372 `tok-372 `tre-372) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-372 `typ-372))
1975+ (weld (check ~.types-partial-apply src-375 `tok-375 `tre-375) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-375 `typ-375))
1928++ test-types-partial-aura
1976++ test-types-partial-aura
1929− (weld (check ~.types-partial-aura src-373 `tok-373 `tre-373) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-373 `typ-373))
1977+ (weld (check ~.types-partial-aura src-376 `tok-376 `tre-376) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-376 `typ-376))
1930++ test-types-partial-aura-generalization
1978++ test-types-partial-aura-generalization
1931− (weld (check ~.types-partial-aura-generalization src-374 `tok-374 `tre-374) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-374 `typ-374))
1979+ (weld (check ~.types-partial-aura-generalization src-377 `tok-377 `tre-377) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-377 `typ-377))
1980+++ test-types-partial-bare-atom
1981+ (weld (check ~.types-partial-bare-atom src-378 `tok-378 `tre-378) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-378 `typ-378))
1982+++ test-types-partial-dependency-chain
1983+ (weld (check ~.types-partial-dependency-chain src-379 `tok-379 `tre-379) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-379 `typ-379))
1932++ test-types-partial-explicit-capital
1984++ test-types-partial-explicit-capital
1933− (weld (check ~.types-partial-explicit-capital src-375 `tok-375 `tre-375) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-375 `typ-375))
1985+ (weld (check ~.types-partial-explicit-capital src-380 `tok-380 `tre-380) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-380 `typ-380))
1934++ test-types-partial-forward
1986++ test-types-partial-forward
1935− (weld (check ~.types-partial-forward src-376 `tok-376 `tre-376) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-376 `typ-376))
1987+ (weld (check ~.types-partial-forward src-381 `tok-381 `tre-381) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-381 `typ-381))
1936++ test-types-partial-generalization
1988++ test-types-partial-generalization
1937− (weld (check ~.types-partial-generalization src-377 `tok-377 `tre-377) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-377 `typ-377))
1989+ (weld (check ~.types-partial-generalization src-382 `tok-382 `tre-382) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-382 `typ-382))
1938++ test-types-partial-identity
1990++ test-types-partial-identity
1939− (weld (check ~.types-partial-identity src-378 `tok-378 `tre-378) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-378 `typ-378))
1991+ (weld (check ~.types-partial-identity src-383 `tok-383 `tre-383) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-383 `typ-383))
1992+++ test-types-partial-mold-bare-aura
1993+ (weld (check ~.types-partial-mold-bare-aura src-384 `tok-384 `tre-384) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-384 `typ-384))
1994+++ test-types-partial-mold-composite
1995+ (weld (check ~.types-partial-mold-composite src-385 `tok-385 `tre-385) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-385 `typ-385))
1996+++ test-types-partial-mold-forward
1997+ (weld (check ~.types-partial-mold-forward src-386 `tok-386 `tre-386) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-386 `typ-386))
1998+++ test-types-partial-mold-recursive
1999+ (weld (check ~.types-partial-mold-recursive src-387 `tok-387 `tre-387) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-387 `typ-387))
1940++ test-types-partial-occurs
2000++ test-types-partial-occurs
1941− (weld (check ~.types-partial-occurs src-379 `tok-379 `tre-379) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-379 `typ-379))
2001+ (weld (check ~.types-partial-occurs src-388 `tok-388 `tre-388) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-388 `typ-388))
1942++ test-types-partial-projection
2002++ test-types-partial-projection
1943− (weld (check ~.types-partial-projection src-380 `tok-380 `tre-380) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-380 `typ-380))
2003+ (weld (check ~.types-partial-projection src-389 `tok-389 `tre-389) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-389 `typ-389))
2004+++ test-types-partial-shadow-global
2005+ (weld (check ~.types-partial-shadow-global src-390 `tok-390 `tre-390) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-390 `typ-390))
1944++ test-types-partial-shared-tvar
2006++ test-types-partial-shared-tvar
1945− (weld (check ~.types-partial-shared-tvar src-381 `tok-381 `tre-381) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-381 `typ-381))
2007+ (weld (check ~.types-partial-shared-tvar src-391 `tok-391 `tre-391) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-391 `typ-391))
2008+++ test-types-partial-union-cases
2009+ (weld (check ~.types-partial-union-cases src-392 `tok-392 `tre-392) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-392 `typ-392))
1946++ test-types-partial-unresolved-tag
2010++ test-types-partial-unresolved-tag
1947− (weld (check ~.types-partial-unresolved-tag src-382 `tok-382 `tre-382) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-382 `typ-382))
2011+ (weld (check ~.types-partial-unresolved-tag src-393 `tok-393 `tre-393) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-393 `typ-393))
1948::
2012::
1949:: +check: run golden:jibb on a case and compare both outputs
2013:: +check: run golden:jibb on a case and compare both outputs
1950::
2014::
tests/type-import/about.txtnew file+7
@@ -0,0 +1,7 @@
1+The checker accepts caller-supplied results from the Hoon type reader. This
2+fixture compiles a small /sur against zuse, selects its molds, and passes the
3+actual reader results to the inference fragment. It checks both supported
4+unfaced types and failures that must remain unsupported until the checker can
5+translate them. A missing import and a duplicate supplied mold fail closed.
6+The types output is partial and does not claim that the module was checked.
7+The same fixture runs under urbit eval and through -test on the fake ship.
tests/type-import/expected.txtnew file+9
@@ -0,0 +1,9 @@
1+partial inference; module not checked
2+++ f: $-(@t @t)
3+++ g: $-([@ud @t] [@ud @t])
4+++ face: sample mold is not supported by partial inference
5+++ constant: sample mold is not supported by partial inference
6+++ choice: sample mold is not supported by partial inference
7+++ failed: sample mold is not supported by partial inference
8+++ duplicate: sample mold is not supported by partial inference
9+++ undeclared: sample mold is not supported by partial inference
tests/type-import/source.txtnew file+9
@@ -0,0 +1,9 @@
1+/- fixture
2+++ f |= x=title.fixture x
3+++ g |= x=pair.fixture x
4+++ face |= x=faced.fixture x
5+++ constant |= x=constant.fixture x
6+++ choice |= x=choice.fixture x
7+++ failed |= x=failed.fixture x
8+++ duplicate |= x=duplicate.fixture x
9+++ undeclared |= x=title.missing x
tests/type-import/sur.txtnew file+7
@@ -0,0 +1,7 @@
1+|%
2++$ title @t
3++$ pair [@ud @t]
4++$ faced [name=@t]
5++$ constant %yes
6++$ choice ?(%yes %no)
7+--
tools/clay-fixturesnew file+24
@@ -0,0 +1,24 @@
1+#!/usr/bin/env python3
2+"""Build the example /sur and mark fixtures through Clay on the fake ship."""
3+
4+from pathlib import Path
5+import subprocess
6+import sys
7+
8+root = Path(__file__).resolve().parent.parent
9+ship = root / 'tools' / 'ship'
10+fixtures = root / 'tests' / 'clay-fixtures'
11+try:
12+ subprocess.run([str(ship), 'sync', 'my-app'], check=True)
13+ result = subprocess.run([str(ship), 'run', str(fixtures / 'build.txt')],
14+ stdout=subprocess.PIPE, check=True)
15+except subprocess.CalledProcessError as error:
16+ sys.exit(error.returncode)
17+expected = (fixtures / 'expected.txt').read_bytes()
18+if result.stdout != expected:
19+ print('Clay fixture builds differ from tests/clay-fixtures/expected.txt',
20+ file=sys.stderr)
21+ print('expected:', expected.decode().rstrip(), file=sys.stderr)
22+ print('actual: ', result.stdout.decode().rstrip(), file=sys.stderr)
23+ sys.exit(1)
24+print('Clay fixture builds: 7 passed')
tools/importer-test+5−2
@@ -10,7 +10,10 @@ fixture = root / 'tests' / 'importer'
10command = [str(root / 'tools' / 'hoon'), '--lib', str(root / 'jibb-dev' / 'lib' / 'jibb-import.hoon'),
10command = [str(root / 'tools' / 'hoon'), '--lib', str(root / 'jibb-dev' / 'lib' / 'jibb-import.hoon'),
11 '--raw', '--cord', 'small=' + str(fixture / 'small.txt'),
11 '--raw', '--cord', 'small=' + str(fixture / 'small.txt'),
12 '--cord', 'epic=' + str(fixture / 'tlon-epic.txt'),
12 '--cord', 'epic=' + str(fixture / 'tlon-epic.txt'),
13+ '--cord', 'presence=' + str(fixture / 'tlon-presence.txt'),
14+ '--cord', 'docs=' + str(fixture / 'tlon-docs.txt'),
15+ '--cord', 'shadow=' + str(fixture / 'shadow.txt'),
13− '(fixture-output small epic)']
16+ '(fixture-output small epic presence docs shadow)']
14result = subprocess.run(command, stdout=subprocess.PIPE)
17result = subprocess.run(command, stdout=subprocess.PIPE)
15if result.returncode:
18if result.returncode:
16 sys.exit(result.returncode)
19 sys.exit(result.returncode)
@@ -22,4 +25,4 @@ if result.stdout != expected:
22 result.stdout.decode().splitlines(keepends=True),
25 result.stdout.decode().splitlines(keepends=True),
23 fromfile='expected tree.txt', tofile='actual types'))
26 fromfile='expected tree.txt', tofile='actual types'))
24 sys.exit(1)
27 sys.exit(1)
25−print('importer golden: 16 projections passed')
28+print('importer golden: 35 projections passed')
tools/ship+12−3
@@ -866,10 +866,17 @@ def show(path):
866def assemble(desk, lib=None, golden=None):
866def assemble(desk, lib=None, golden=None):
867 """The files of one of the repo's desks, checked as vere and Clay
867 """The files of one of the repo's desks, checked as vere and Clay
868 will see them. lib replaces /lib/jibb.hoon; golden, for the
868 will see them. lib replaces /lib/jibb.hoon; golden, for the
869− jibb-dev test desk, is the folder of golden cases."""
869+ jibb-dev test desk, is the folder of golden cases. When either is
870+ overridden, exclude other /tests/lib programs so they don't run
871+ against an unrelated library or pollute the custom case results."""
870 if desk not in DESKS:
872 if desk not in DESKS:
871 raise Unable('no desk %s here; the repo builds %s'
873 raise Unable('no desk %s here; the repo builds %s'
872 % (desk, ', '.join(sorted(DESKS))))
874 % (desk, ', '.join(sorted(DESKS))))
875+ # Override runs are harness tests, not tests of the repository's
876+ # importer, checker, or other test files against the replacement lib.
877+ isolated = (lib is not None or
878+ (golden is not None and
879+ os.path.abspath(golden) != os.path.abspath(GOLDEN)))
873 a = Assembly(desk)
880 a = Assembly(desk)
874 vendor = os.path.join(ROOT, 'vendor')
881 vendor = os.path.join(ROOT, 'vendor')
875 for pkg in sorted(os.listdir(vendor)):
882 for pkg in sorted(os.listdir(vendor)):
@@ -880,8 +887,10 @@ def assemble(desk, lib=None, golden=None):
880 golden = golden or GOLDEN
887 golden = golden or GOLDEN
881 if os.path.isdir(os.path.join(ROOT, 'tests')):
888 if os.path.isdir(os.path.join(ROOT, 'tests')):
882 a.add_tree(os.path.join(ROOT, 'tests'), 'tests',
889 a.add_tree(os.path.join(ROOT, 'tests'), 'tests',
883− skip=['golden'], drop=lambda rel: rel ==
890+ skip=['golden'], drop=lambda rel:
884− os.path.join('lib', 'jibb.hoon'))
891+ rel == os.path.join('lib', 'jibb.hoon') or
892+ (isolated and rel.startswith('lib' + os.sep) and
893+ rel.endswith('.hoon')))
885 if os.path.isdir(golden):
894 if os.path.isdir(golden):
886 a.add_tree(golden, os.path.join('tests', 'golden'))
895 a.add_tree(golden, os.path.join('tests', 'golden'))
887 a.add(os.path.join('tests', 'lib', 'jibb.hoon'),
896 a.add(os.path.join('tests', 'lib', 'jibb.hoon'),
tools/testdata/ship-selftest+16
@@ -151,6 +151,22 @@ def generator_checks(tmp):
151 bad_path = False
151 bad_path = False
152 check('invalid logical paths are rejected', bad_path)
152 check('invalid logical paths are rejected', bad_path)
153
153
154+ normal = ship.assemble('jibb-dev')
155+ normal_tests = {p for p in normal.files if p.startswith('tests/lib/') and
156+ p.endswith('.hoon')}
157+ check('default assembly keeps the repository test programs',
158+ {'tests/lib/jibb.hoon', 'tests/lib/jibb-import.hoon',
159+ 'tests/lib/jibb-typecheck.hoon', 'tests/lib/jibb-bridge.hoon'}
160+ <= normal_tests, sorted(normal_tests))
161+ for label, kwargs in (('custom library', {'lib': STUB}),
162+ ('custom goldens', {'golden': CASES}),
163+ ('both overrides', {'lib': STUB, 'golden': CASES})):
164+ assembled = ship.assemble('jibb-dev', **kwargs)
165+ tests = {p for p in assembled.files if p.startswith('tests/lib/') and
166+ p.endswith('.hoon')}
167+ check(label + ' runs only its generated golden tests',
168+ tests == {'tests/lib/jibb.hoon'}, sorted(tests))
169+
154 clash = os.path.join(tmp, 'clash')
170 clash = os.path.join(tmp, 'clash')
155 for case in ('a.b', 'a_b', 'a-b', 'Upper', 'has space'):
171 for case in ('a.b', 'a_b', 'a-b', 'Upper', 'has space'):
156 write_case(clash, case, b'++ x\n')
172 write_case(clash, case, b'++ x\n')
tools/type-import-testnew file+39
@@ -0,0 +1,39 @@
1+#!/usr/bin/env python3
2+"""Run the importer/checker bridge fixture under urbit eval."""
3+
4+from pathlib import Path
5+import difflib
6+import subprocess
7+import sys
8+import tempfile
9+
10+root = Path(__file__).resolve().parent.parent
11+fixture = root / 'tests' / 'type-import'
12+reader = (root / 'jibb-dev/lib/jibb-import.hoon').read_text()
13+tests = (root / 'tests/lib/jibb-bridge.hoon').read_text()
14+tests = tests[tests.index('\n|%\n') + 1:]
15+expression = ('=/ jibb .\n=/ jibb-import\n' + reader +
16+ '\n=/ sur=wain (to-wain:format sur-text)\n'
17+ '=/ source=wain (to-wain:format source-text)\n'
18+ '=/ expected=wain (to-wain:format expected-text)\n'
19+ '=/ bridge\n' + tests +
20+ '\n(bridge-output:bridge sur-text source-text)\n')
21+with tempfile.TemporaryDirectory(prefix='jibb-type-import-') as tmp:
22+ program = Path(tmp) / 'bridge.hoon'
23+ program.write_text(expression)
24+ result = subprocess.run([
25+ str(root / 'tools/hoon'), '--raw', '-f', str(program),
26+ '--cord', 'sur-text=' + str(fixture / 'sur.txt'),
27+ '--cord', 'source-text=' + str(fixture / 'source.txt'),
28+ '--cord', 'expected-text=' + str(fixture / 'expected.txt')],
29+ stdout=subprocess.PIPE)
30+if result.returncode:
31+ sys.exit(result.returncode)
32+expected = (fixture / 'expected.txt').read_bytes()
33+if result.stdout != expected:
34+ sys.stderr.writelines(difflib.unified_diff(
35+ expected.decode().splitlines(keepends=True),
36+ result.stdout.decode().splitlines(keepends=True),
37+ fromfile='expected.txt', tofile='actual types'))
38+ sys.exit(1)
39+print('importer/checker bridge golden passed')