on master help sign in
Drop the union rune
aad6ddbiko
docs/README.md+4−4
@@ -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). Where this repo and the doc disagree, the doc wins. This folder keeps a copy of the doc and what the doc doesn't hold: 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 the 2026-10-30 decision to drop `$?`; the Claude document still needs that change. 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| --- | --- |
@@ -10,11 +10,11 @@ Jibb's spec is a design doc by @iko, [Jibb — an Elm-architecture UI language f
10| [development.md](development.md) | Setting up a machine, the ground rules, the checks to run before pushing |
10| [development.md](development.md) | Setting up a machine, the ground rules, the checks to run before pushing |
11| [compiler.md](compiler.md) | A map of `jibb-dev/lib/jibb.hoon`: its API, data, errors and printed formats |
11| [compiler.md](compiler.md) | A map of `jibb-dev/lib/jibb.hoon`: its API, data, errors and printed formats |
12| [prompts/milestone-2.md](prompts/milestone-2.md) | A brief for the developer who builds milestone 2, types and prelude |
12| [prompts/milestone-2.md](prompts/milestone-2.md) | A brief for the developer who builds milestone 2, types and prelude |
13−| [prompts/drop-union-rune.md](prompts/drop-union-rune.md) | A brief for the developer who drops `$?`, as decided on 2026-10-30, before milestone 2 |
13+| [prompts/drop-union-rune.md](prompts/drop-union-rune.md) | The completed brief for dropping `$?`, as decided on 2026-10-30, before milestone 2 |
14
14
15## The spec
15## The spec
16
16
17−`spec/` is a snapshot of the doc taken on 2026-10-30, after @iko's answers to the 12 grammar questions that day. Each file is one tab, exported as Markdown and not edited:
17+`spec/` began as a snapshot of the doc taken on 2026-10-30, after @iko's answers to the 12 grammar questions that day. It has since been edited to record the decision to drop `$?`; the Claude document still needs those edits. Each file corresponds to one tab:
18
18
19| File | Tab |
19| File | Tab |
20| --- | --- |
20| --- | --- |
@@ -28,7 +28,7 @@ The doc has a sixth tab, "Loom on Urbit", which is empty, so it has no file.
28
28
29The overview's pipeline diagram, "Jibb pipeline · source to browser in three stages", is embedded content, so the export holds only a placeholder line for it under Architecture. The doc shows it.
29The overview's pipeline diagram, "Jibb pipeline · source to browser in three stages", is embedded content, so the export holds only a placeholder line for it under Architecture. The doc shows it.
30
30
31−The snapshot can go stale. Before relying on a detail, check the doc. To refresh it, export each tab as Markdown again (in a Claude session, the Claude Docs connector's `export` gives each tab's Markdown), replace the files, and run:
31+The two copies can diverge. Sync the decision to the Claude document before refreshing this copy, then export each tab as Markdown again (in a Claude session, the Claude Docs connector's `export` gives each tab's Markdown), replace the files, and run:
32
32
33```
33```
34git diff docs/spec # what changed in the doc
34git diff docs/spec # what changed in the doc
docs/compiler.md+2−2
@@ -18,7 +18,7 @@ The plan's Compiler architecture section gives the whole pipeline. Here it is sh
18
18
19- **One core, no Ford runes.** `urbit eval` runs the library as `=> <this file> <expression>`, and a ship builds it as `/lib/jibb.hoon`. So it can't import with `/-` or `/+`, and under `urbit eval` it can't scry. Anything from Clay, such as an imported module's text or a `/sur` file's type, is best passed in by the caller, which keeps every stage testable under eval.
19- **One core, no Ford runes.** `urbit eval` runs the library as `=> <this file> <expression>`, and a ship builds it as `/lib/jibb.hoon`. So it can't import with `/-` or `/+`, and under `urbit eval` it can't scry. Anything from Clay, such as an imported module's text or a `/sur` file's type, is best passed in by the caller, which keeps every stage testable under eval.
20- **The standard library is the subject.** Under `urbit eval`, as on a ship, the library is built against `..zuse`: `hoon.hoon`, lull and zuse. It reads literals with Hoon's own parser, `nuck:so`. Hoon's type engine, `ut`, is there for milestone 2, and under eval `ride` compiles Hoon source, such as a `/sur` file without Ford runes, into a type, which tests can use in place of Clay's builds.
20- **The standard library is the subject.** Under `urbit eval`, as on a ship, the library is built against `..zuse`: `hoon.hoon`, lull and zuse. It reads literals with Hoon's own parser, `nuck:so`. Hoon's type engine, `ut`, is there for milestone 2, and under eval `ride` compiles Hoon source, such as a `/sur` file without Ford runes, into a type, which tests can use in place of Clay's builds.
21−- **The doc wins.** Where the file and the doc disagree, the doc is right, and the file's notes quote the doc's words for each rule they implement.
21+- **The spec wins.** Where the file and the spec disagree, the spec is right, and the file's notes quote its words for each rule they implement. The repository spec records the decision to drop `$?`, pending synchronization to the Claude document.
22
22
23## API
23## API
24
24
@@ -68,7 +68,7 @@ Every node is `[%tag at=span …]`, so `+span-of` finds its span in one place; t
68
68
69- **Module**: imports (`%sur` for `/-`, `%mark` for `/%`, `%jibb` for `/=`), then definitions (`%mold` for `+$`, `%value` for `++`).
69- **Module**: imports (`%sur` for `/-`, `%mark` for `/%`, `%jibb` for `/=`), then definitions (`%mold` for `+$`, `%value` for `++`).
70- **Expressions** (`expr`): `%lit`, `%str`, `%path`, `%qath`, `%wing`, `%change`, `%pair`, `%unit`, `%group`, `%list`, `%tuple`, `%gate-wide`, `%ctor`, `%call`, `%gate`, `%cast`, `%trace`, `%branch`, `%crash`, and `%body` for an indented body, with its local definitions if it has any.
70- **Expressions** (`expr`): `%lit`, `%str`, `%path`, `%qath`, `%wing`, `%change`, `%pair`, `%unit`, `%group`, `%list`, `%tuple`, `%gate-wide`, `%ctor`, `%call`, `%gate`, `%cast`, `%trace`, `%branch`, `%crash`, and `%body` for an indented body, with its local definitions if it has any.
71−- **Molds as written** (`shape`): `%aura`, `%noun`, `%void`, `%flag`, `%const`, `%ref`, `%tvar`, `%path`, `%apply`, `%cell`, `%union`, `%fn`, `%generic`.
71+- **Molds as written** (`shape`): `%aura`, `%noun`, `%void`, `%flag`, `%const`, `%ref`, `%tvar`, `%path`, `%apply`, `%cell`, `%union`, `%fn`, `%generic`. A `%union` spans its first through last case and has no lead token; a single case is its own mold. `%generic` spans from the `|$` after a `+$` name through its body.
72- **Samples, fields and patterns**: a sample is `%bind`, `%face`, `%pun`, `%cell` or `%bare`, since a bare name binds anywhere in a sample; a pattern is `%lit`, `%str`, `%any`, `%bind` or `%cell`.
72- **Samples, fields and patterns**: a sample is `%bind`, `%face`, `%pun`, `%cell` or `%bare`, since a bare name binds anywhere in a sample; a pattern is `%lit`, `%str`, `%any`, `%bind` or `%cell`.
73- **Literals** (`lit`) keep the form they matched, their aura and value, and their text as written, which the printers show.
73- **Literals** (`lit`) keep the form they matched, their aura and value, and their text as written, which the printers show.
74
74
docs/open-questions.md+3−2
@@ -23,15 +23,16 @@ Found while writing [prompts/milestone-2.md](prompts/milestone-2.md) and checkin
23
23
241. **How the prelude declares natives.** The overview's Prelude section says the prelude is "written in Jibb and vendored as `/lib/jibb/prelude`", and that "Only the prelude declares natives, Jibb's jets, and private helpers". The Core language tab gives each native "a Jibb type, a Hoon gate in `/lib/jibb` … and a JavaScript function in the runtime". The Grammar has no syntax for declaring a native, so how does the prelude say that `add` is a native of type `$-([@ @] @)`?
241. **How the prelude declares natives.** The overview's Prelude section says the prelude is "written in Jibb and vendored as `/lib/jibb/prelude`", and that "Only the prelude declares natives, Jibb's jets, and private helpers". The Core language tab gives each native "a Jibb type, a Hoon gate in `/lib/jibb` … and a JavaScript function in the runtime". The Grammar has no syntax for declaring a native, so how does the prelude say that `add` is a native of type `$-([@ @] @)`?
252. **How the prelude marks its private names.** Modules: "Everything is exported and read through the import's face, as `card.card`. Only the prelude has private names." The Grammar has no syntax for privacy either.
252. **How the prelude marks its private names.** Modules: "Everything is exported and read through the import's face, as `card.card`. Only the prelude has private names." The Grammar has no syntax for privacy either.
26−3. **What the prelude holds, and how much of it milestone 2 writes.** The Prelude table names groups and examples, "such as `(get.by m k)`", and for the data molds says "and the rest", so which names and types make up the prelude? Its list probably belongs in the doc. The plan's milestone 2 builds "the prelude's types", while the Decisions tab's Build order puts "the core prelude gates" in the same step. And which list gates are natives depends on the plan's first open question, "natives that take gates".
26+3. **What the prelude holds, and how much of it milestone 2 writes.** The Prelude table names groups and examples, "such as `(get.by m k)`", and for the data molds says "and the rest", so which names and types make up the prelude? Its list probably belongs in the doc. The plan's milestone 2 builds "the prelude's types", while the Decisions tab's Build order puts "the core prelude gates" in the same step. And which list gates are natives depends on the plan's first open question, "natives that take gates". The prelude must name every union its elements and attributes take, such as spaces, roles and tones; no module may use those names, since no name may shadow the prelude's.
274. **Aura and type variables in a gate's molds.** Molds: "`add` takes `[@ @]` and returns `@`, all one aura" and "A bare `@` in a `+$` is one aura variable per module, `@ud` if unfixed." Is every bare `@` in one `++`'s molds, its samples and casts, the same aura variable, as in `add`'s type, or is each `@` its own, and is it generalized per `++` as type variables are? With it: must a capital stay general, so that `++ f |= x=A (add x 1)` is an error, or may its body fix it? Is a capital in a local `++` the enclosing `++`'s? And does a number's `@ud` default apply to an aura variable its `++` would generalize, which would make `++ inc |= n=@ (add n 1)` a `$-(@ud @ud)`?
274. **Aura and type variables in a gate's molds.** Molds: "`add` takes `[@ @]` and returns `@`, all one aura" and "A bare `@` in a `+$` is one aura variable per module, `@ud` if unfixed." Is every bare `@` in one `++`'s molds, its samples and casts, the same aura variable, as in `add`'s type, or is each `@` its own, and is it generalized per `++` as type variables are? With it: must a capital stay general, so that `++ f |= x=A (add x 1)` is an error, or may its body fix it? Is a capital in a local `++` the enclosing `++`'s? And does a number's `@ud` default apply to an aura variable its `++` would generalize, which would make `++ inc |= n=@ (add n 1)` a `$-(@ud @ud)`?
285. **Cells of no items or one.** The parser takes `[]` and `[a]` as tuples, as the EBNF's `"[" { item } "]"` allows, and leaves them to the checker. The Literals section may already answer it: "Every literal reads exactly as Hoon reads it", and its table lists Cell. Hoon reads `[a]` as `a` and rejects `[]`. The proposed reading is Hoon's. Whatever the answer, the theme's `dark=[tones=[…]]`, a record of one field, must still check.
285. **Cells of no items or one.** The parser takes `[]` and `[a]` as tuples, as the EBNF's `"[" { item } "]"` allows, and leaves them to the checker. The Literals section may already answer it: "Every literal reads exactly as Hoon reads it", and its table lists Cell. Hoon reads `[a]` as `a` and rejects `[]`. The proposed reading is Hoon's. Whatever the answer, the theme's `dark=[tones=[…]]`, a record of one field, must still check.
296. **A change with no items.** `m()` parses as a change with no edits, as `wing "(" { item } ")"` allows. Is it an error?
296. **A change with no items.** `m()` parses as a change with no edits, as `wing "(" { item } ")"` allows. Is it an error?
307. **The doc's blocks that aren't whole modules.** The plan's "Done when" for milestone 2 says "the doc's examples typecheck, except those written as errors". Three `jibb` blocks need context to check. The overview's `cmd` and `sub` molds (`doc-overview-01-cmd-sub`) are what the Effects decision calls "the library unions", so in a module of their own they would shadow the prelude's. The Core language tab's `update` (`doc-core-02-update`) is a part of the todo list island. And the Grammar's imports (`doc-grammar-01-imports`) import `/sur/todo.hoon` and `/ui/components/card`, which the doc doesn't show, and the `%todo-action` mark, which the overview shows but which imports `/sur/todo.hoon` itself. The proposed reading is to check each in its context: the first as prelude source, the second inside the island, the third against fixture files.
307. **The doc's blocks that aren't whole modules.** The plan's "Done when" for milestone 2 says "the doc's examples typecheck, except those written as errors". Three `jibb` blocks need context to check. The overview's `cmd` and `sub` molds (`doc-overview-01-cmd-sub`) are what the Effects decision calls "the library unions", so in a module of their own they would shadow the prelude's. The Core language tab's `update` (`doc-core-02-update`) is a part of the todo list island. And the Grammar's imports (`doc-grammar-01-imports`) import `/sur/todo.hoon` and `/ui/components/card`, which the doc doesn't show, and the `%todo-action` mark, which the overview shows but which imports `/sur/todo.hoon` itself. The proposed reading is to check each in its context: the first as prelude source, the second inside the island, the third against fixture files.
318. **Tuples and records.** Molds: "Faces are part of the type, so `[a=@ b=@]` and `[x=@ y=@]` don't unify", and a cell literal "takes a default when its `++` is checked", a tuple. Can a tuple meet a record? The doc's examples need it to: worked example 3's `init` gives `[ts "" ~]` for the `model` record, and the basket's `init` gives `[[~ %.n] ""]`; `row-of` gives `[id.t …]` where `each` takes `[key=* el=(element M)]`; `|=%typed` builds `[%typed t]` for the case `[%typed text=@t]`, which the Grammar calls "a case `[%typed @t]`"; and `program` and `store` can't know the faces of samples such as `[=msg m=model]` and `[a=cart-action s=state]`. The proposed reading: a position without a face unifies with one that has a face, and takes it; two different faces don't unify.
318. **Tuples and records.** Molds: "Faces are part of the type, so `[a=@ b=@]` and `[x=@ y=@]` don't unify", and a cell literal "takes a default when its `++` is checked", a tuple. Can a tuple meet a record? The doc's examples need it to: worked example 3's `init` gives `[ts "" ~]` for the `model` record, and the basket's `init` gives `[[~ %.n] ""]`; `row-of` gives `[id.t …]` where `each` takes `[key=* el=(element M)]`; `|=%typed` builds `[%typed t]` for the case `[%typed text=@t]`, which the Grammar calls "a case `[%typed @t]`"; and `program` and `store` can't know the faces of samples such as `[=msg m=model]` and `[a=cart-action s=state]`. The proposed reading: a position without a face unifies with one that has a face, and takes it; two different faces don't unify.
329. **Values where `*` is expected.** Molds: "**Any noun**: `*`", with "no subtyping". `each` and `table` take `key=*`, and worked example 3 passes a `@ud` key. How does a typed value meet `*`? One reading: `*` in a gate's mold is a fresh type variable, so any value fits, and the rule against gates in keys comes from the core-language proposal.
329. **Values where `*` is expected.** Molds: "**Any noun**: `*`", with "no subtyping". `each` and `table` take `key=*`, and worked example 3 passes a `@ud` key. How does a typed value meet `*`? One reading: `*` in a gate's mold is a fresh type variable, so any value fits, and the rule against gates in keys comes from the core-language proposal.
33−10. **What `link`, `image` and `go` take.** Links and URLs: "`link`, `image` and `go` also take two kinds of unchecked cord", besides application paths, and `image`'s `src` is "an application path to a static image or `[url=@t width=@ud height=@ud]`". But the Effects block has `[%go url=@t]`, and a `$?` of a `qath` and a cord breaks the union rule, since "molds that can be either … overlap both" and the Core language tab lowers an application path to "A list of knots". `link` is in worked example 1. Two gates, or a type-directed rule listed in the Grammar ("No built-ins; type-directed rules are welcome, each listed in the Grammar tab")?
33+10. **What `link`, `image` and `go` take.** Links and URLs: "`link`, `image` and `go` also take two kinds of unchecked cord", besides application paths, and `image`'s `src` is "an application path to a static image or `[url=@t width=@ud height=@ud]`". But the Effects block has `[%go url=@t]`, and a union of a `qath` and a cord breaks the union rule, since "molds that can be either … overlap both" and the Core language tab lowers an application path to "A list of knots". `link` is in worked example 1. Two gates, or a type-directed rule listed in the Grammar ("No built-ins; type-directed rules are welcome, each listed in the Grammar tab")?
3411. **Stores and derived gates.** "`poke` and `paths` are declarations, not molds" in an API file; is a store's `+$ poke` one too, since as a mold it would shadow the prelude's opaque `poke`? How does the checker know a module is a store before it has checked `main`, whose type decides the kind? What may a derived name clash with, given that the doc's API file imports `/- todo` and has a `%todo` case whose request is `todo`? And since "islands can't watch paths that need a separate scry path", is watching a request whose case has `scry=` a type error?
3411. **Stores and derived gates.** "`poke` and `paths` are declarations, not molds" in an API file; is a store's `+$ poke` one too, since as a mold it would shadow the prelude's opaque `poke`? How does the checker know a module is a store before it has checked `main`, whose type decides the kind? What may a derived name clash with, given that the doc's API file imports `/- todo` and has a `%todo` case whose request is `todo`? And since "islands can't watch paths that need a separate scry path", is watching a request whose case has `scry=` a type error?
35+12. **How to print a union without a name.** Jibb has no syntax for one, but Hoon imports bring them in, as in a field's `?(%approve %deny)`, `$@` and `$^`, and the fold of a `(facts full d1 d2)` request does too. How should messages and `types.txt` print them? @iko's decision calls for "a print-only notation".
35
36
36## Grammar questions never put to the doc's author
37## Grammar questions never put to the doc's author
37
38
docs/prompts/milestone-2.md+15−12
@@ -4,9 +4,9 @@ A brief for the developer who builds milestone 2 of Jibb. Paste it as the first
4
4
5---
5---
6
6
7−You are building milestone 2 of Jibb, a UI language for Urbit: a Hoon dialect with an indentation layout. Its spec is @iko's design doc, [Jibb — an Elm-architecture UI language for Urbit](https://claude.ai/artifact/DMBr48qzi5z8hcwn2ccPBv), copied into `docs/spec/`. Milestone 1 built the layout pass and the parser in Hoon, in `jibb-dev/lib/jibb.hoon`. Milestone 2 adds the type checker, the imports, and the prelude.
7+You are building milestone 2 of Jibb, a UI language for Urbit: a Hoon dialect with an indentation layout. Its spec is @iko's design doc, [Jibb — an Elm-architecture UI language for Urbit](https://claude.ai/artifact/DMBr48qzi5z8hcwn2ccPBv), with its repository copy in `docs/spec/`; the repository records the decision to drop `$?` pending synchronization to the Claude document. Milestone 1 built the layout pass and the parser in Hoon, in `jibb-dev/lib/jibb.hoon`. Milestone 2 adds the type checker, the imports, and the prelude.
8
8
9−Before you start, check `docs/status.md`. If dropping `$?`, which @iko decided on 2026-10-30, isn't done yet, do it first, as [drop-union-rune.md](drop-union-rune.md) says: it changes the grammar this brief describes.
9+Before milestone 2, @iko decided on 2026-10-30 to drop `$?`. The change is described in [drop-union-rune.md](drop-union-rune.md); check `docs/status.md` for its completion.
10
10
11## Read first
11## Read first
12
12
@@ -19,11 +19,11 @@ Before you start, check `docs/status.md`. If dropping `$?`, which @iko decided o
197. `docs/compiler.md`, then the design notes at the top of `jibb-dev/lib/jibb.hoon` and its `%tree` chapter: the syntax tree you will check.
197. `docs/compiler.md`, then the design notes at the top of `jibb-dev/lib/jibb.hoon` and its `%tree` chapter: the syntax tree you will check.
208. `docs/open-questions.md`.
208. `docs/open-questions.md`.
21
21
22−Then set up the machine as `docs/development.md` says and run its checks. All 344 golden cases should pass before you change anything.
22+Then set up the machine as `docs/development.md` says and run its checks. All golden cases should pass before you change anything.
23
23
24## Ground rules
24## Ground rules
25
25
26−- **The doc wins.** Where code and doc disagree, the doc stands until it changes. `docs/spec/` is a snapshot of 2026-10-30; check the doc itself before relying on a detail.
26+- **The spec wins.** Where code and spec disagree, the spec stands until it changes. `docs/spec/` records the decision to drop `$?`, which still needs synchronization to the Claude document; consult the document for other details as described in `docs/README.md`.
27- **Don't decide the language.** A question about what Jibb means goes to @iko: as a comment on the doc, on the words it's about, if you can comment there, or else in the project's chat, where @iko reviews work. List it in `docs/open-questions.md` too. Meanwhile follow the most likely reading, mark it "(doc question)" in the library's notes, and keep going. A language change is agreed first and recorded in the Decisions tab.
27- **Don't decide the language.** A question about what Jibb means goes to @iko: as a comment on the doc, on the words it's about, if you can comment there, or else in the project's chat, where @iko reviews work. List it in `docs/open-questions.md` too. Meanwhile follow the most likely reading, mark it "(doc question)" in the library's notes, and keep going. A language change is agreed first and recorded in the Decisions tab.
28- **No built-ins.** The Decisions tab's Special rules row: "No built-ins; type-directed rules are welcome, each listed in the Grammar tab". A typing rule the Grammar doesn't list, such as a special case for one gate, is a language change.
28- **No built-ins.** The Decisions tab's Special rules row: "No built-ins; type-directed rules are welcome, each listed in the Grammar tab". A typing rule the Grammar doesn't list, such as a special case for one gate, is a language change.
29- **Implementation choices are yours**: data structures, algorithms, error wording within the doc's rules, test layout. Record the reasoning in the library's design notes, as milestone 1 did.
29- **Implementation choices are yours**: data structures, algorithms, error wording within the doc's rules, test layout. Record the reasoning in the library's design notes, as milestone 1 did.
@@ -49,7 +49,7 @@ And from the plan's Risks:
49
49
50## First steps
50## First steps
51
51
52−1. **Settle the open questions.** The checker needs answers the doc doesn't give yet. `docs/open-questions.md` lists eleven under "Questions milestone 2 raises", found by walking the doc's examples through its rules:
52+1. **Settle the open questions.** The checker needs answers the doc doesn't give yet. `docs/open-questions.md` lists twelve under "Questions milestone 2 raises", found by walking the doc's examples through its rules:
53 1. how the prelude declares natives;
53 1. how the prelude declares natives;
54 2. how it marks private names;
54 2. how it marks private names;
55 3. what the prelude holds, and whether milestone 2 writes "the prelude's types", as the plan says, or "the core prelude gates", as the Decisions tab's Build order says;
55 3. what the prelude holds, and whether milestone 2 writes "the prelude's types", as the plan says, or "the core prelude gates", as the Decisions tab's Build order says;
@@ -60,7 +60,8 @@ And from the plan's Risks:
60 8. whether a tuple can meet a record, which worked example 3 needs;
60 8. whether a tuple can meet a record, which worked example 3 needs;
61 9. how a typed value meets `*`, as `each`'s `key=*` does;
61 9. how a typed value meets `*`, as `each`'s `key=*` does;
62 10. what `link`, `image` and `go` take;
62 10. what `link`, `image` and `go` take;
63− 11. stores' `+$ poke`, derived-name clashes, and watching a `scry=` case.
63+ 11. stores' `+$ poke`, derived-name clashes, and watching a `scry=` case;
64+ 12. the print-only notation for unions without a name.
64
65
65 The plan's first open question matters too: whether `eq`'s arguments and map and set keys must be free of gates, and a gate may never tell a union's cases apart, which changes the disjointness check; whether natives may take gates, which decides whether `turn`, `sort` and `skim` are natives; and whether a value that depends on itself through a gate is an error. Put each to @iko in your first days with a proposed answer and the reason for it, and build on the proposal until you hear back.
66 The plan's first open question matters too: whether `eq`'s arguments and map and set keys must be free of gates, and a gate may never tell a union's cases apart, which changes the disjointness check; whether natives may take gates, which decides whether `turn`, `sort` and `skim` are natives; and whether a value that depends on itself through a gate is an error. Put each to @iko in your first days with a proposed answer and the reason for it, and build on the proposal until you hear back.
662. **Start the importer early**, as the plan's Risks ask: first on a small `/sur` file, then on Tlon's. "Suggested design" below has a way in.
672. **Start the importer early**, as the plan's Risks ask: first on a small `/sur` file, then on Tlon's. "Suggested design" below has a way in.
@@ -76,7 +77,7 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
76- Type variables are capitals, "generalized per `++`". Names "may refer to each other in any order", so infer `++` definitions in dependency order, a group of mutually recursive ones together.
77- Type variables are capitals, "generalized per `++`". Names "may refer to each other in any order", so infer `++` definitions in dependency order, a group of mutually recursive ones together.
77- "Gates may call themselves and their siblings; other values can't refer to themselves, so `++ title (trim title)` is an error." Molds may be recursive, and "recursive molds go by name and module".
78- "Gates may call themselves and their siblings; other values can't refer to themselves, so `++ title (trim title)` is an error." Molds may be recursive, and "recursive molds go by name and module".
78- 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 ~)`.
79- 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 ~)`.
79−- Generic molds: `+$ result |$ [V E] $?` with cases below, applied as `(result V E)`; the prelude's `cmd` and `sub` are `|$ [M]`.
80+- Generic molds: `+$ result |$ [V E]` with cases below, applied as `(result V E)`; `|$` goes right after a `+$`'s name, and the prelude's `cmd` and `sub` use `|$ [M]`.
80- `!!` is the empty mold, and as an expression it has any type. `*` is any noun; how other types meet it is open question 9.
81- `!!` is the empty mold, and as an expression it has any type. `*` is any noun; how other types meet it is open question 9.
81- `poke`, `ask` and `qath` are opaque, built only by derived gates, `pure` and application-path literals.
82- `poke`, `ask` and `qath` are opaque, built only by derived gates, `pure` and application-path literals.
82- The Literals table gives every other literal its type: `0x1f` a `@ux`, ships `@p`, dates `@da`, durations `@dr`, `~.knot` a `@ta`, strings `@t`, `` `x `` a `(unit A)`, `~[…]` a `(list A)`, `gap+%s2` the pair `[%gap %s2]`, `/posts/~zod` a `path`, `%/blog` a `qath`.
83- The Literals table gives every other literal its type: `0x1f` a `@ux`, ships `@p`, dates `@da`, durations `@dr`, `~.knot` a `@ta`, strings `@t`, `` `x `` a `(unit A)`, `~[…]` a `(list A)`, `gap+%s2` the pair `[%gap %s2]`, `/posts/~zod` a `path`, `%/blog` a `qath`.
@@ -90,6 +91,7 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
90- In `{…}`, atoms print by aura, a bare `@` as `@ud`; `@t`, `@ta`, `@tas` and tapes splice as text; "any other cell is an error asking for a printer". String literals are always cords.
91- In `{…}`, atoms print by aura, a bare `@` as `@ud`; `@t`, `@ta`, `@tas` and tapes splice as text; "any other cell is an error asking for a printer". String literals are always cords.
91
92
92**Unions** (Grammar: Molds, Runes; Decisions: Unions)
93**Unions** (Grammar: Molds, Runes; Decisions: Unions)
94+- 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.
93- 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."
95- 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."
94
96
95**Patterns and `?-`** (Grammar: Patterns; Decisions: Branching, Binding patterns)
97**Patterns and `?-`** (Grammar: Patterns; Decisions: Branching, Binding patterns)
@@ -107,8 +109,8 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
107- `main`'s type decides a module's kind: `(element !!)` a page, `(page R D)` a page with data, `(program D X M)` an island, `(store S)` a store; no `main`, a library.
109- `main`'s type decides a module's kind: `(element !!)` a page, `(page R D)` a page with data, `(program D X M)` an island, `(store S)` a store; no `main`, a library.
108
110
109**Importing Hoon types** (overview: Importing Hoon types; Decisions: Hoon types)
111**Importing Hoon types** (overview: Importing Hoon types; Decisions: Hoon types)
110−- The table: `$%` and `$?` become `$?`; `$@` a `$?` with an atom case; `$^` a `$?` if its cases differ as nouns, else an error where used; `$~` dropped; `map`, `set`, `qeu`, `jar`, `jug` the same, by name; `mop` as `(mop K V)`, read with `on`; other `$|` their base type; `%0`, `%&` and `%|` tags; recursive molds recursive, matched by name; cores, gates, vases, signed and float auras an error where used.
112+- The table: `$%` and `$?` become a union; `$@` a union with an atom case; `$^` a union if its cases differ as nouns, else an error where used; `$~` dropped; `map`, `set`, `qeu`, `jar`, `jug` the same, by name; `mop` as `(mop K V)`, read with `on`; other `$|` their base type; `%0`, `%&` and `%|` tags; recursive molds recursive, matched by name; cores, gates, vases, signed and float auras an error where used.
111−- "Unused molds are skipped, so unsupported constructs elsewhere in a `/sur` file are fine."
113+- "Unused molds are skipped, so unsupported constructs elsewhere in a `/sur` file are fine." A field's unnamed union imports too, although Jibb cannot write one.
112
114
113**Islands, pages and stores** (overview: The Elm architecture on Urbit; Grammar: Modules and the store example)
115**Islands, pages and stores** (overview: The Elm architecture on Urbit; Grammar: Modules and the store example)
114- `(page load view)`, `(program init update view subs)` and `(store init update)` build the kinds. The worked examples show their gates' shapes: `update` takes `[msg model]` and gives a model and a list of `cmd`s, `subs` gives a list of `sub`s, a store's `update` takes a poke and the state.
116- `(page load view)`, `(program init update view subs)` and `(store init update)` build the kinds. The worked examples show their gates' shapes: `update` takes `[msg model]` and gives a model and a list of `cmd`s, `subs` gives a list of `sub`s, a store's `update` takes a poke and the state.
@@ -129,6 +131,7 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
129
131
130**Errors**
132**Errors**
131- Each one the Grammar tab describes needs a golden case with its message. A start on the list: an aura mismatch; mismatched faces; "msg has no case %submitt"; an unresolved tag, as the Grammar's `add-button` ("nothing fixes the union of %add"); an open constraint at the end of a module; a `|=%tag` whose union has no such case tagged at its head; a union whose cases overlap; a missing `?-` case, named; an arm that earlier arms cover; a value that refers to itself; a shadowed name, including a prelude or imported one; a cell in `{…}` with no printer; `~[text "hi"]`, where the checker suggests `~[(text "hi")]`; clashing derived names; an import cycle; from an import, a signed or float aura, a core, gate or vase, or a `$^` whose cases don't differ as nouns, each where used; a `(facts …)` outside an API file's `paths`; a gate in island data or a model, naming the field; a repeated attribute in a literal list. Read the Grammar tab, and the other tabs' mentions of "error" and "the checker", and make the list complete.
133- Each one the Grammar tab describes needs a golden case with its message. A start on the list: an aura mismatch; mismatched faces; "msg has no case %submitt"; an unresolved tag, as the Grammar's `add-button` ("nothing fixes the union of %add"); an open constraint at the end of a module; a `|=%tag` whose union has no such case tagged at its head; a union whose cases overlap; a missing `?-` case, named; an arm that earlier arms cover; a value that refers to itself; a shadowed name, including a prelude or imported one; a cell in `{…}` with no printer; `~[text "hi"]`, where the checker suggests `~[(text "hi")]`; clashing derived names; an import cycle; from an import, a signed or float aura, a core, gate or vase, or a `$^` whose cases don't differ as nouns, each where used; a `(facts …)` outside an API file's `paths`; a gate in island data or a model, naming the field; a repeated attribute in a literal list. Read the Grammar tab, and the other tabs' mentions of "error" and "the checker", and make the list complete.
134+- For a `+$` whose cases overlap or do not fit, suggest that a record or tuple leaves its `[` open on the `+$` line. `+$ pt` above `@t` and `[@ud @ud]` is a valid union.
132- "Each error names both conflicting sites, with excerpts." Today's `error` is `[file line col msg]`, a start only; spans keep each node's end so that a type error can underline both sites.
135- "Each error names both conflicting sites, with excerpts." Today's `error` is `[file line col msg]`, a start only; spans keep each node's end so that a type error can underline both sites.
133- Messages name things in the doc's words and quote the code they're about in backticks, as milestone 1's do. Their wording is fixed by the golden tests once written.
136- Messages name things in the doc's words and quote the code they're about in backticks, as milestone 1's do. Their wording is fixed by the golden tests once written.
134
137
@@ -146,17 +149,17 @@ Suggestions, not rules; change them where you find better.
146 `..zuse` is the subject a ship builds `/sur` files against, so molds from lull and zuse, such as `json` and `mark`, resolve. Each `+$` arm's type comes as a `%hold` whose expansion is a `%hint` with a `%made` note naming the arm, then the mold: a `$%` is a `%fork` of cells headed by `%tas` constants. A `(map id item)` field is named only in its arm's own `%hold`, whose Hoon calls `map` by name. Once the arm is expanded, the field is a `%hold` whose Hoon is the body of `map`, `(tree (pair key value))` with its `apt` check, which expands to a second `%hold`, `tree`'s body, and only then to a treap's `%fork`. So recognising maps, sets and the rest by name means reading an arm's Hoon before expanding it, or comparing a `%hold`'s Hoon with the standard library molds' own bodies. On a ship, `.^(vase %ca /=my-app=/sur/todo/hoon)` builds a `/sur` file, and a mark's type is its door's sample. Most of Tlon's `/sur` files begin with `/-` or `/+` (25 of the 40 in `tloncorp/tlon-apps`, `desk/sur`, on 2026-10-30), so under eval their imports must be resolved by hand; on the ship Clay does it.
149 `..zuse` is the subject a ship builds `/sur` files against, so molds from lull and zuse, such as `json` and `mark`, resolve. Each `+$` arm's type comes as a `%hold` whose expansion is a `%hint` with a `%made` note naming the arm, then the mold: a `$%` is a `%fork` of cells headed by `%tas` constants. A `(map id item)` field is named only in its arm's own `%hold`, whose Hoon calls `map` by name. Once the arm is expanded, the field is a `%hold` whose Hoon is the body of `map`, `(tree (pair key value))` with its `apt` check, which expands to a second `%hold`, `tree`'s body, and only then to a treap's `%fork`. So recognising maps, sets and the rest by name means reading an arm's Hoon before expanding it, or comparing a `%hold`'s Hoon with the standard library molds' own bodies. On a ship, `.^(vase %ca /=my-app=/sur/todo/hoon)` builds a `/sur` file, and a mark's type is its door's sample. Most of Tlon's `/sur` files begin with `/-` or `/+` (25 of the 40 in `tloncorp/tlon-apps`, `desk/sur`, on 2026-10-30), so under eval their imports must be resolved by hand; on the ship Clay does it.
147- **Inference**: union-find over a map of variables, levels for generalization rather than scanning the environment, and a queue of deferred constraints, retried as variables are bound and reported when the module ends. Infer `++`s in strongly connected groups. Measure early: Hoon is slow, and a 2,000-line module should check in seconds, not minutes.
150- **Inference**: union-find over a map of variables, levels for generalization rather than scanning the environment, and a queue of deferred constraints, retried as variables are bound and reported when the module ends. Infer `++`s in strongly connected groups. Measure early: Hoon is slow, and a 2,000-line module should check in seconds, not minutes.
148- **Exhaustiveness**: Maranget's "Warnings for pattern matching" (Journal of Functional Programming, 2007) fits nouns: constructors are constants and cells.
151- **Exhaustiveness**: Maranget's "Warnings for pattern matching" (Journal of Functional Programming, 2007) fits nouns: constructors are constants and cells.
149−- **A type printer** in Jibb's mold syntax, for golden output and for messages.
152+- **A type printer** for golden output and messages. Use Jibb's mold syntax where possible; Jibb has no syntax for an unnamed union. Open question 12 asks for a print-only notation.
150- **Mind two names.** The library's `+in`, a bit test, hides the standard library's set door `in`, and `+fail` hides Hoon's parser rule `fail`. Write `in:..zuse`, or rename `+in` before the checker uses sets.
153- **Mind two names.** The library's `+in`, a bit test, hides the standard library's set door `in`, and `+fail` hides Hoon's parser rule `fail`. Write `in:..zuse`, or rename `+in` before the checker uses sets.
151
154
152## Tests
155## Tests
153
156
154−- **A third golden output.** Add the checker's output to `+golden`, say `types.txt`: each definition's type in Jibb syntax and the module's kind, or the rendered error. Teach `tools/golden`, `tools/ship gen-tests`, the stubs and self-tests in `tools/testdata`, README.md and `docs/development.md` about it, with an `expect:` form for the checker, then add it to the existing cases and review every one.
157+- **A third golden output.** Add the checker's output to `+golden`, say `types.txt`: each definition's type (using the print-only notation for unnamed unions once question 12 is settled) and the module's kind, or the rendered error. Teach `tools/golden`, `tools/ship gen-tests`, the stubs and self-tests in `tools/testdata`, README.md and `docs/development.md` about it, with an `expect:` form for the checker, then add it to the existing cases and review every one.
155- **Cases with imports.** Six of the doc's fourteen `jibb` blocks import other modules, three of them `/sur` files or marks, and the Core language tab's `update` needs the todo API without importing it. Give a case a way to carry the files it imports, under eval and on the ship alike. A case also needs its own path under `/ui`: both runners pass the file as `/tests/golden/<case>/source/jibb`, but an API file is known by its path, `/ui/api/<agent>.jibb`, whose name is the agent its constructors poke.
158- **Cases with imports.** Six of the doc's fourteen `jibb` blocks import other modules, three of them `/sur` files or marks, and the Core language tab's `update` needs the todo API without importing it. Give a case a way to carry the files it imports, under eval and on the ship alike. A case also needs its own path under `/ui`: both runners pass the file as `/tests/golden/<case>/source/jibb`, but an API file is known by its path, `/ui/api/<agent>.jibb`, whose name is the agent its constructors poke.
156- **Hoon files on the ship.** `tools/ship test` runs `-test` on the `jibb-dev` desk's `/tests`, which builds every `.hoon` file there as a test file. A fixture mark that starts `/- todo`, or one of Tlon's files, fails that build, and with it the run. Keep such files where `-test` won't build them, as `.txt` read with `/*`, or in a desk of their own, and keep them out of `jibb-dev/`, which app desks vendor, and `vendor/`, which goes into every desk.
159- **Hoon files on the ship.** `tools/ship test` runs `-test` on the `jibb-dev` desk's `/tests`, which builds every `.hoon` file there as a test file. A fixture mark that starts `/- todo`, or one of Tlon's files, fails that build, and with it the run. Keep such files where `-test` won't build them, as `.txt` read with `/*`, or in a desk of their own, and keep them out of `jibb-dev/`, which app desks vendor, and `vendor/`, which goes into every desk.
157- **Fixtures for the doc's examples.** `my-app/ui/` holds nine of the doc's blocks as modules. Add what they import that the doc doesn't show: `/sur/todo.hoon` and the marks `todo-action`, `todos`, `todo-update` and `todo-item` (the overview shows `/mar/todo-action.hoon`; `row-of` reads `id`, `done` and `text` from an item); `/sur/blog.hoon`, a mark for the posts, of type `(list post:blog)`, and `/ui/api/blog.jibb`, whose `posts` case names that type through `/%`; and `/ui/components/card.jibb`, with a `card` gate from a post to an element. Keep them as small as the examples allow, say in a comment at the top of each that it is a fixture and not from the doc, and don't change the doc's blocks.
160- **Fixtures for the doc's examples.** `my-app/ui/` holds nine of the doc's blocks as modules. Add what they import that the doc doesn't show: `/sur/todo.hoon` and the marks `todo-action`, `todos`, `todo-update` and `todo-item` (the overview shows `/mar/todo-action.hoon`; `row-of` reads `id`, `done` and `text` from an item); `/sur/blog.hoon`, a mark for the posts, of type `(list post:blog)`, and `/ui/api/blog.jibb`, whose `posts` case names that type through `/%`; and `/ui/components/card.jibb`, with a `card` gate from a post to an element. Keep them as small as the examples allow, say in a comment at the top of each that it is a fixture and not from the doc, and don't change the doc's blocks.
158- **Every doc example typechecks**, except the Grammar's buttons example, whose `add-button` is written as an error and must fail with it. The same block marks `labelled` and `wide` as fine, so show them checking too, by printing the definitions that check beside the error or in a case without `add-button`. Open question 7 proposes how to check the three blocks that aren't whole modules.
161- **Every doc example typechecks**, except the Grammar's buttons example, whose `add-button` is written as an error and must fail with it. The same block marks `labelled` and `wide` as fine, so show them checking too, by printing the definitions that check beside the error or in a case without `add-button`. Open question 7 proposes how to check the three blocks that aren't whole modules.
159−- **The `/sur` import.** A test `/sur` file with `$%`, `$@`, a map and a recursive mold, imported and printed in Jibb syntax, under eval and on the ship. Then Tlon's real files, as the risk asks: they need not import fully, but every mold a test uses must, and any error must be the table's.
162+- **The `/sur` import.** A test `/sur` file with `$%`, `$@`, a map and a recursive mold, imported and printed, using the print-only notation for unnamed unions when needed, under eval and on the ship. Then Tlon's real files, as the risk asks: they need not import fully, but every mold a test uses must, and any error must be the table's.
160- **On the ship**: the golden cases as `-test` arms, and the `my-app` desk checked with its Hoon types read through Clay: every module checks except `ui/components/buttons.jibb`, which gives `add-button`'s error.
163- **On the ship**: the golden cases as `-test` arms, and the `my-app` desk checked with its Hoon types read through Clay: every module checks except `ui/components/buttons.jibb`, which gives `add-button`'s error.
161- **Speed**: time the corpus and the `my-app` desk, and record both in `docs/status.md`.
164- **Speed**: time the corpus and the `my-app` desk, and record both in `docs/status.md`.
162
165
docs/spec/decisions.md+2−2
@@ -8,7 +8,7 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
8
8
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 record items, as `m(draft="x")`; `.` reads fields, imports and prelude groups; no name may shadow another | Decided 2026-10-29 |
11+| Syntax | Hoon's runes as keywords, and its literals; wide forms only for `\|=` and `$-`; changes take record items, as `m(draft="x")`; `.` 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: `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| Numeric terms | `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors | Decided 2026-10-30 |
13| Numeric terms | `%` and a decimal as Hoon writes it: `%1.000`; `%1000` and `%007` are errors | Decided 2026-10-30 |
14| 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 |
14| 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 |
@@ -22,7 +22,7 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
22| 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 |
22| 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 |
23| Jibb code blocks | Labelled `jibb` in this doc; each is a golden test | Decided 2026-10-30 |
23| Jibb code blocks | Labelled `jibb` in this doc; each is a golden test | Decided 2026-10-30 |
24| Definitions | `++` for values, `+$` for molds; no `=/` | Decided |
24| Definitions | `++` for values, `+$` for molds; no `=/` | Decided |
25−| Unions | `$?` only; tags anywhere; cases differ as nouns; a tag literal or `~` waits for its union, and an unresolved one is an error | Decided 2026-10-29 |
25+| 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 |
26| Branching | `?-` only, loobeans included; exhaustive, with explicit catch-alls; covered arms are errors; failures say `!!` | Decided 2026-10-29 |
26| Branching | `?-` only, loobeans included; exhaustive, with explicit catch-alls; covered arms are errors; failures say `!!` | Decided 2026-10-29 |
27| Equality and negation | The gates `eq` and `not` | Decided |
27| Equality and negation | The gates `eq` and `not` | Decided |
28| Special rules | No built-ins; type-directed rules are welcome, each listed in the Grammar tab | Decided 2026-10-29 |
28| Special rules | No built-ins; type-directed rules are welcome, each listed in the Grammar tab | Decided 2026-10-29 |
docs/spec/grammar.md+15−17
@@ -9,7 +9,7 @@ The syntax the compiler accepts.
9- **Indentation is structure**: a deeper line continues the line above; returning to an earlier indentation closes every block since. Spaces only; blank and comment-only lines don't count.
9- **Indentation is structure**: a deeper line continues the line above; returning to an earlier indentation closes every block since. Spaces only; blank and comment-only lines don't count.
10- **Layout tokens**: a deeper line emits INDENT, the same depth NEWLINE, a shallower one a DEDENT per closed level, then NEWLINE.
10- **Layout tokens**: a deeper line emits INDENT, the same depth NEWLINE, a shallower one a DEDENT per closed level, then NEWLINE.
11- **Open brackets**: a bracket open at line end takes one item per deeper line and closes at the first line that isn't deeper, with no closer. Brackets opened and closed on one line work as usual. A mold's `[` and `(` open the same way, with one field or mold per deeper line. A line may leave several brackets open: the deeper lines go to the last one, or to the body of the last rune, and the others close with it, so `(column ~ ~[` above its items needs no `)`.
11- **Open brackets**: a bracket open at line end takes one item per deeper line and closes at the first line that isn't deeper, with no closer. Brackets opened and closed on one line work as usual. A mold's `[` and `(` open the same way, with one field or mold per deeper line. A line may leave several brackets open: the deeper lines go to the last one, or to the body of the last rune, and the others close with it, so `(column ~ ~[` above its items needs no `)`.
12−- **Tight forms**: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`.
12+- **Tight forms**: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`.
13- **Spacing**: one space between items; more for alignment. That is style, which the formatter keeps: the parser takes one or more spaces between items, and allows spaces after an opener, before a closer and at the end of a line. Faces `name=value`, puns `=name` and typed path segments `[id=@ud]` take no spaces, and a rune is followed by one.
13- **Spacing**: one space between items; more for alignment. That is style, which the formatter keeps: the parser takes one or more spaces between items, and allows spaces after an opener, before a closer and at the end of a line. Faces `name=value`, puns `=name` and typed path segments `[id=@ud]` take no spaces, and a rune is followed by one.
14- **Comments**: `::` to the end of the line, outside strings; inside a string, `::` is text.
14- **Comments**: `::` to the end of the line, outside strings; inside a string, `::` is text.
15- **Names**: Hoon terms; lowercase letters, digits and hyphens, starting with a letter.
15- **Names**: Hoon terms; lowercase letters, digits and hyphens, starting with a letter.
@@ -54,22 +54,21 @@ Every literal reads exactly as Hoon reads it: `1000` is an error (write `1.000`)
54A rune's first children sit on its line, the last taking the rest of it; the others follow, indented.
54A rune's first children sit on its line, the last taking the rest of it; the others follow, indented.
55
55
56- `++` **luslus**: defines a value, at top level or as local names at the start of any body (a gate's, an arm's, a `^-`'s, a `~&`'s or a `++`'s), visible to each other and the final expression. Gates may call themselves and their siblings; other values can't refer to themselves, so `++ title (trim title)` is an error.
56- `++` **luslus**: defines a value, at top level or as local names at the start of any body (a gate's, an arm's, a `^-`'s, a `~&`'s or a `++`'s), visible to each other and the final expression. Gates may call themselves and their siblings; other values can't refer to themselves, so `++ title (trim title)` is an error.
57−- `+$` **lusbuc**: defines a mold, likewise; molds may be recursive.
57+- `+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive.
58- `|=` **bartis**: a gate with a faced sample, `m=model`, `=msg` (`msg=msg`) or `[a=@ b=@]`; the body on the same line or below.
58- `|=` **bartis**: a gate with a faced sample, `m=model`, `=msg` (`msg=msg`) or `[a=@ b=@]`; the body on the same line or below.
59−- `$?` **bucwut**: a union, one case per line or `$?(%a %b)`; cases must differ as nouns.
60- `?-` **wuthep**: the only branch, exhaustive; the subject on its line, then arms of a pattern and an expression or body. Conditions switch on `%.y` and `%.n`.
59- `?-` **wuthep**: the only branch, exhaustive; the subject on its line, then arms of a pattern and an expression or body. Conditions switch on `%.y` and `%.n`.
61- `^-` **kethep**: a cast; the mold on its line, the expression after it or below.
60- `^-` **kethep**: a cast; the mold on its line, the expression after it or below.
62- `~&` **sigpam**: prints the value on its line, then runs the body below; output goes to the ship's log or the browser's console.
61- `~&` **sigpam**: prints the value on its line, then runs the body below; output goes to the ship's log or the browser's console.
63- `!!` **zapzap**: a crash, an expression of any type; as a mold, the empty mold. It is an operand, so `f !!` and `~[!!]` need no parentheses.
62- `!!` **zapzap**: a crash, an expression of any type; as a mold, the empty mold. It is an operand, so `f !!` and `~[!!]` need no parentheses.
64- `$-` **buchep**: a gate's mold, `$-(sample product)`.
63- `$-` **buchep**: a gate's mold, `$-(sample product)`.
65−- `|$` **barbuc**: a generic mold, `|$ [A] mold`.
64+- `|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below.
66
65
67−Only `|=`, `$?` and `$-` have wide forms: `|=(sample expr)`, `$?(case case)`, `$-(mold mold)`. Their children are operands, so calls inside need parentheses.
66+Only `|=` and `$-` have wide forms: `|=(sample expr)` and `$-(mold mold)`. Their children are operands, so calls inside need parentheses.
68
67
69Left out on purpose:
68Left out on purpose:
70
69
71- `|%`, `|_`, `|*`: modules are records.
70- `|%`, `|_`, `|*`: modules are records.
72−- `$%`: `$?` covers unions.
71+- `$?`, `$%`: a union is a `+$` with its cases below.
73- `?+`, `?:`: `?-` is the branch.
72- `?+`, `?:`: `?-` is the branch.
74- `.=`, `?!`, `=(a b)`, `!x`: `eq` and `not` are gates.
73- `.=`, `?!`, `=(a b)`, `!x`: `eq` and `not` are gates.
75- `=/`: `++` defines values.
74- `=/`: `++` defines values.
@@ -124,18 +123,18 @@ A mold is only a type: never called on a noun, and with no default. Types are in
124- **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.
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.
125- **Constants**: `%add`, `~` and the loobeans have one value each.
124- **Constants**: `%add`, `~` and the loobeans have one value each.
126- **Records and tuples**: `[text=@t done=?]`, `[@t ?]`. Faces are part of the type, so `[a=@ b=@]` and `[x=@ y=@]` 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 ?]`. Faces are part of the type, so `[a=@ b=@]` and `[x=@ y=@]` 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.
127−- **Unions**: `$?`; 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: 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.
128- **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)`.
129- **Gates**: `$-(A B)`. Type variables are capitals, generalized per `++`.
128- **Gates**: `$-(A B)`. Type variables are capitals, generalized per `++`.
130- **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.
131−- **Generic molds**: `+$ result |$ [V E] $?` with cases below.
130+- **Generic molds**: `+$ result |$ [V E]` with cases below; `|$` goes only right after a `+$`'s name.
132- **Any noun**: `*`. **Empty**: `!!`.
131- **Any noun**: `*`. **Empty**: `!!`.
133- **Opaque**: `poke`, `ask` and `qath`, built only by derived gates, `pure` and application-path literals. `(facts full diff …)` appears only in an API file's `paths`.
132- **Opaque**: `poke`, `ask` and `qath`, built only by derived gates, `pure` and application-path literals. `(facts full diff …)` appears only in an API file's `paths`.
134- **Identity**: recursive molds go by name and module.
133- **Identity**: recursive molds go by name and module.
135
134
136## Tag resolution
135## Tag resolution
137
136
138−A tag literal or `~` gets a fresh type variable and a pending constraint: the variable must become a union with a matching case, or an atom type the term fits. Once unification fixes the variable, each constraint is checked against the union's cases or, for `@tas`, `@ta`, `@` or `*`, makes the tag that constant atom. A literal that matches nothing is an error naming the union, such as "msg has no case %submitt".
137+A tag literal or `~` gets a fresh type variable and a pending constraint: the variable must become a union with a matching case, or an atom type the term fits. A mold that isn't a union counts as a union of one case, for tags and for `|=%tag`: `[%go "x"]` fits `+$ go [%go url=@t]`, and `|=%typed` works against `$-(@t M)` when `M` is `[%typed text=@t]`. Once unification fixes the variable, each constraint is checked against the union's cases or, for `@tas`, `@ta`, `@` or `*`, makes the tag that constant atom. A literal that matches nothing is an error naming the union, such as "msg has no case %submitt".
139
138
140- A constraint records the literal's shape, such as `[@t %draft]`, and matches cases by shape and shared tag positions; a literal in a field position is checked against that field.
139- A constraint records the literal's shape, such as `[@t %draft]`, and matches cases by shape and shared tag positions; a literal in a field position is checked against that field.
141- `|=%typed` is a case's constructor: against `$-(@t M)` it is `|=(t [%typed t])`, requiring `M` to have a case `[%typed @t]`. It works for cases tagged at their head; a bare tag is always a value.
140- `|=%typed` is a case's constructor: against `$-(@t M)` it is `|=(t [%typed t])`, requiring `M` to have a case `[%typed @t]`. It works for cases tagged at their head; a bare tag is always a value.
@@ -197,7 +196,7 @@ Arms are tried in order. Every case needs an arm or a catch-all, `*` or a bare n
197Tags can sit anywhere in a case, and a case can carry several:
196Tags can sit anywhere in a case, and a case can carry several:
198
197
199```jibb
198```jibb
200−+$ step $?
199++$ step
201 [%move %left n=@ud]
200 [%move %left n=@ud]
202 [%move %right n=@ud]
201 [%move %right n=@ud]
203 [text=@t %draft]
202 [text=@t %draft]
@@ -227,8 +226,10 @@ Leaving out `%stop` is an error naming it; to crash instead, write `%stop !!`.
227
226
228module = { import NEWLINE } { definition NEWLINE } ;
227module = { import NEWLINE } { definition NEWLINE } ;
229import = "/-" name | "/%" term | "/=" name pathlit ;
228import = "/-" name | "/%" term | "/=" name pathlit ;
230−definition = "+$" name ( mold | INDENT mold DEDENT )
229+definition = "+$" name [ generic ] ( mold | cases )
231 | "++" name ( expr | body ) ;
230 | "++" name ( expr | body ) ;
231+generic = "|$" "[" typevar { typevar } "]" ;
232+cases = INDENT mold { NEWLINE mold } DEDENT ; (* one case is that mold; more make a union *)
232
233
233body = INDENT { definition NEWLINE } expr DEDENT ;
234body = INDENT { definition NEWLINE } expr DEDENT ;
234expr = rune | call ;
235expr = rune | call ;
@@ -261,10 +262,7 @@ mold = aura | "*" | "!!" | "?" | "~" | term | loobean | ref | typevar
261 | pathmold
262 | pathmold
262 | "(" ref mold { mold } ")" | "(" ref { mold } mlines
263 | "(" ref mold { mold } ")" | "(" ref { mold } mlines
263 | "[" field { field } "]" | "[" { field } flines
264 | "[" field { field } "]" | "[" { field } flines
264− | "$?" INDENT mold { NEWLINE mold } DEDENT
265− | "$?(" mold { mold } ")"
266− | "$-(" mold mold ")"
265+ | "$-(" mold mold ")" ;
267− | "|$" "[" typevar { typevar } "]" mold ;
268field = [ name "=" ] mold | "=" name ; (* =msg is msg=msg *)
266field = [ name "=" ] mold | "=" name ; (* =msg is msg=msg *)
269mlines = INDENT mold { NEWLINE mold } DEDENT ; (* a mold's ( left open *)
267mlines = INDENT mold { NEWLINE mold } DEDENT ; (* a mold's ( left open *)
270flines = INDENT field { NEWLINE field } DEDENT ; (* a mold's [ left open *)
268flines = INDENT field { NEWLINE field } DEDENT ; (* a mold's [ left open *)
@@ -291,7 +289,7 @@ knot = { lower | digit | "-" | "." | "~" | "_" } ;
291```jibb
289```jibb
292:: /ui/stores/cart.jibb
290:: /ui/stores/cart.jibb
293+$ state [items=(list @t) open=?]
291+$ state [items=(list @t) open=?]
294−+$ cart-action $?
292++$ cart-action
295 [%add item=@t]
293 [%add item=@t]
296 %toggle
294 %toggle
297+$ poke cart-action
295+$ poke cart-action
@@ -311,7 +309,7 @@ knot = { lower | digit | "-" | "." | "~" | "_" } ;
311++ main (program init update view subs)
309++ main (program init update view subs)
312
310
313+$ model [cart=state.cart note=@t]
311+$ model [cart=state.cart note=@t]
314−+$ msg $?
312++$ msg
315 [%noted text=@t]
313 [%noted text=@t]
316 %add
314 %add
317 %toggle
315 %toggle
docs/spec/overview.md+8−8
@@ -63,9 +63,9 @@ Hoon's runes and literals in an indentation layout, over Hoon's nouns and molds,
63
63
64| Hoon | Jibb |
64| Hoon | Jibb |
65| --- | --- |
65| --- | --- |
66−| `$%`, `$?` | `$?` |
66+| `$%`, `$?` | A union |
67−| `$@` | `$?` with an atom case |
67+| `$@` | A union with an atom case |
68−| `$^` | `$?` if its cases differ as nouns, else an error where used |
68+| `$^` | A union if its cases differ as nouns, else an error where used |
69| `$~` | Dropped |
69| `$~` | Dropped |
70| `map`, `set`, `qeu`, `jar`, `jug` | The same, by name, checked with `apt` on arrival |
70| `map`, `set`, `qeu`, `jar`, `jug` | The same, by name, checked with `apt` on arrival |
71| `mop` | `(mop K V)`, read with `on` |
71| `mop` | `(mop K V)`, read with `on` |
@@ -74,7 +74,7 @@ Hoon's runes and literals in an indentation layout, over Hoon's nouns and molds,
74| Recursive molds, such as `json` | Recursive, matched by name |
74| Recursive molds, such as `json` | Recursive, matched by name |
75| Cores, gates, vases, signed and float auras | An error where used |
75| Cores, gates, vases, signed and float auras | An error where used |
76
76
77−Unused molds are skipped, so unsupported constructs elsewhere in a `/sur` file are fine.
77+Unused molds are skipped, so unsupported constructs elsewhere in a `/sur` file are fine. A union without a name, as a field's `?(%approve %deny)`, imports too, though Jibb can't write one.
78
78
79## Prelude
79## Prelude
80
80
@@ -138,13 +138,13 @@ Loads and renders run in Nock.
138**Effects.** Commands and subscriptions are library values:
138**Effects.** Commands and subscriptions are library values:
139
139
140```jibb
140```jibb
141−+$ cmd |$ [M] $?
141++$ cmd |$ [M]
142 [%poke p=poke reply=$-((unit @t) M)]
142 [%poke p=poke reply=$-((unit @t) M)]
143 [%go url=@t]
143 [%go url=@t]
144 [%wait gap=@dr msg=M]
144 [%wait gap=@dr msg=M]
145 [%now reply=$-(@da M)]
145 [%now reply=$-(@da M)]
146 [%who reply=$-(@p M)]
146 [%who reply=$-(@p M)]
147−+$ sub |$ [M] $?
147++$ sub |$ [M]
148 [%watch a=(ask M)]
148 [%watch a=(ask M)]
149 [%every gap=@dr reply=$-(@da M)]
149 [%every gap=@dr reply=$-(@da M)]
150 [%url reply=$-(path M)]
150 [%url reply=$-(path M)]
@@ -290,7 +290,7 @@ Each agent Jibb talks to has `/ui/api/<agent>.jibb`, declaring its pokes in `+$
290
290
291+$ item item.todo
291+$ item item.todo
292+$ poke todo-action
292+$ poke todo-action
293−+$ paths $?
293++$ paths
294 [%todos /todos todos]
294 [%todos /todos todos]
295 [%changes /changes (facts todos todo-update)]
295 [%changes /changes (facts todos todo-update)]
296 [%todo /todo/[id=@ud] todo-item]
296 [%todo /todo/[id=@ud] todo-item]
@@ -453,7 +453,7 @@ A `page`: each request scries `%blog` and renders in Nock.
453++ main (program init update view subs)
453++ main (program init update view subs)
454
454
455+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
455+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
456−+$ msg $?
456++$ msg
457 [%typed text=@t]
457 [%typed text=@t]
458 %submit
458 %submit
459 [%toggled id=@ud]
459 [%toggled id=@ud]
docs/status.md+5−4
@@ -15,7 +15,7 @@ As of 2026-10-30, at commit ab797a9. The plan is [spec/implementation-plan.md](s
15
15
16The plan sets no dates: "agree them after milestone 1, once it shows how fast the Hoon work goes". They haven't been agreed yet. Milestone 1's commits run from 2026-10-29 18:13 UTC to 2026-10-30 11:50 UTC.
16The plan sets no dates: "agree them after milestone 1, once it shows how fast the Hoon work goes". They haven't been agreed yet. Milestone 1's commits run from 2026-10-29 18:13 UTC to 2026-10-30 11:50 UTC.
17
17
18−Decided on 2026-10-30 and not done yet: Jibb drops `$?`, so a `+$` takes a union's cases on the lines below its name. The doc, the parser and the tests still have `$?`. [prompts/drop-union-rune.md](prompts/drop-union-rune.md) briefs the change, which comes before milestone 2.
18+On 2026-10-30, @iko decided that Jibb drops `$?`, so a `+$` takes a union's cases on the lines below its name. [prompts/drop-union-rune.md](prompts/drop-union-rune.md) records the change before milestone 2. The repository spec records the decision; the Claude document still needs to be synchronized.
19
19
20## Milestone 1: parser and mark
20## Milestone 1: parser and mark
21
21
@@ -33,7 +33,7 @@ What the plan asks for, and where it is:
33
33
34Besides the plan's list:
34Besides the plan's list:
35
35
36−- 344 golden cases: 152 that parse and 192 that fail, each failure at a stated line and column. Each case's `about.txt` quotes the doc's words it tests.
36+- 368 golden cases: 153 that parse and 215 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). Each case's `about.txt` quotes the doc's words it tests.
37- They pass under `urbit eval` (`tools/golden`, about 9 s for the corpus) and as `-test` arms on the fake ship (`tools/ship test`).
37- They pass under `urbit eval` (`tools/golden`, about 9 s for the corpus) and as `-test` arms on the fake ship (`tools/ship test`).
38- `tools/testdata/selftest` (18 checks) and `tools/testdata/ship-selftest` test the tools themselves.
38- `tools/testdata/selftest` (18 checks) and `tools/testdata/ship-selftest` test the tools themselves.
39- 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.
39- 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.
@@ -49,19 +49,20 @@ Besides the plan's list:
49| 7c739b7 | 2026-10-30 | Fixes from two independent audits; milestone 1 done |
49| 7c739b7 | 2026-10-30 | Fixes from two independent audits; milestone 1 done |
50| 5a4aa73 | 2026-10-30 | `tools/doc-blocks`, after the doc labelled its Jibb blocks |
50| 5a4aa73 | 2026-10-30 | `tools/doc-blocks`, after the doc labelled its Jibb blocks |
51| ab797a9 | 2026-10-30 | The 12 grammar decisions of 2026-10-30: four changed the parser, eight confirmed it |
51| ab797a9 | 2026-10-30 | The 12 grammar decisions of 2026-10-30: four changed the parser, eight confirmed it |
52+| This change | 2026-10-30 | Drop `$?`; `+$` takes union cases below its name |
52
53
53## Checking it
54## Checking it
54
55
55On a machine set up as [development.md](development.md) says:
56On a machine set up as [development.md](development.md) says:
56
57
57```
58```
58−tools/golden # 344 cases under urbit eval
59+tools/golden # 368 cases under urbit eval
59tools/hoon check-spans-test # prints <<>> when the span checker works
60tools/hoon check-spans-test # prints <<>> when the span checker works
60tools/testdata/selftest # the tools themselves
61tools/testdata/selftest # the tools themselves
61tools/doc-blocks docs/spec # the doc's examples are golden cases
62tools/doc-blocks docs/spec # the doc's examples are golden cases
62tools/ship start
63tools/ship start
63tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
64tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
64−tools/ship test # the same 344 cases as -test arms on the ship
65+tools/ship test # the same 368 cases as -test arms on the ship
65tools/testdata/ship-selftest
66tools/testdata/ship-selftest
66tools/ship check-commit # |commit stores .jibb files
67tools/ship check-commit # |commit stores .jibb files
67```
68```
jibb-dev/lib/jibb.hoon+137−101
@@ -50,7 +50,7 @@
50:: so does editor tooling later. A node starts at its first token and
50:: so does editor tooling later. A node starts at its first token and
51:: ends where its last token ends: its closing token if it has one, else
51:: ends where its last token ends: its closing token if it has one, else
52:: its last child's last token, never a layout token. So an open
52:: its last child's last token, never a layout token. So an open
53−:: bracket, a body, ?-'s arms and $?'s cases end with their last line's
53+:: bracket, a body, ?-'s arms and a +$'s cases end with their last line's
54:: code, not at the line that closes them. Every node's span holds its
54:: code, not at the line that closes them. Every node's span holds its
55:: children's spans, in source order. The printed tree shows starts
55:: children's spans, in source order. The printed tree shows starts
56:: only, and milestone 1's errors use starts only, so ends are first
56:: only, and milestone 1's errors use starts only, so ends are first
@@ -143,7 +143,7 @@
143:: The layout pass knows nothing of brackets: it emits INDENT, NEWLINE and
143:: The layout pass knows nothing of brackets: it emits INDENT, NEWLINE and
144:: DEDENT by column alone. The parser decides what takes an indented
144:: DEDENT by column alone. The parser decides what takes an indented
145:: block: a bracket left open at the end of its line, a rune's body, ?-'s
145:: block: a bracket left open at the end of its line, a rune's body, ?-'s
146−:: arms, $?'s cases, a +$ mold on the next line. A bracket opened and
146+:: arms, and a +$'s cases on the next lines. A bracket opened and
147:: closed on one line is just tokens.
147:: closed on one line is just tokens.
148::
148::
149:: 2.6 Tokens. After the indentation, tokens are read left to right;
149:: 2.6 Tokens. After the indentation, tokens are read left to right;
@@ -193,7 +193,7 @@
193:: / glyph, then a path segment may follow (2.7)
193:: / glyph, then a path segment may follow (2.7)
194:: ++ +$ + glyphs
194:: ++ +$ + glyphs
195:: |=( |= |$ glyphs
195:: |=( |= |$ glyphs
196−:: $?( $? $-( glyphs; $- followed by anything but ( is an error
196+:: $-( glyph; $- followed by anything but ( is an error
197:: at 3rd, "`$-` has only the wide form `$-(sample
197:: at 3rd, "`$-` has only the wide form `$-(sample
198:: product)`"
198:: product)`"
199:: ^- ?- !! ? glyphs (? alone is the loobean mold; ? then a
199:: ^- ?- !! ? glyphs (? alone is the loobean mold; ? then a
@@ -217,7 +217,7 @@
217:: at it, "this `}` closes no `{`"
217:: at it, "this `}` closes no `{`"
218:: | $ ^ followed by nothing above or in the table below:
218:: | $ ^ followed by nothing above or in the table below:
219:: an error at 2nd, "`|` begins `|=`, `|=(` or `|$`",
219:: an error at 2nd, "`|` begins `|=`, `|=(` or `|$`",
220−:: "`$` begins `$?`, `$?(` or `$-(`", "`^` begins `^-`"
220+:: "`$` begins `$-(`", "`^` begins `^-`"
221:: : followed by anything but :, an error at 2nd: the
221:: : followed by anything but :, an error at 2nd: the
222:: table's :~ :* :- :+ :^ :_ and a:b, else "a comment
222:: table's :~ :* :- :+ :^ :_ and a:b, else "a comment
223:: starts with `::`"
223:: starts with `::`"
@@ -239,7 +239,7 @@
239:: |- 2nd gates recurse by name
239:: |- 2nd gates recurse by name
240:: $( 2nd gates recurse by name (at the $ where an
240:: $( 2nd gates recurse by name (at the $ where an
241:: expression goes, as no expression starts $)
241:: expression goes, as no expression starts $)
242−:: $% 2nd $? covers unions
242+:: $? $% 2nd a union is a +$ with its cases below
243:: ?: ?+ 2nd ?- is the branch, and so for Hoon's other ?
243:: ?: ?+ 2nd ?- is the branch, and so for Hoon's other ?
244:: runes, ?~ ?= ?. ?@ ?^ ?& ?| ?< ?> (?:: is ?
244:: runes, ?~ ?= ?. ?@ ?^ ?& ?| ?< ?> (?:: is ?
245:: and a comment)
245:: and a comment)
@@ -432,6 +432,12 @@
432:: 100.000 such calls, 8 s of it starting urbit and building the
432:: 100.000 such calls, 8 s of it starting urbit and building the
433:: library, and most of the rest printing the tree, 46 MB at 100.000.
433:: library, and most of the rest printing the tree, 46 MB at 100.000.
434::
434::
435+:: @iko decided 2026-10-30 (Decisions): "No `$?`: a `+$` with its cases
436+:: on the lines below is a union, so every union written in Jibb has a
437+:: name; one case is just that mold; a mold that isn't a union counts as
438+:: a union of one case for tags and `|=%tag`; a generic's `|$` comes right
439+:: after the `+$`'s name; tags anywhere".
440+::
435:: The EBNF and its nodes (see the types below):
441:: The EBNF and its nodes (see the types below):
436:: module { import NEWLINE } { definition NEWLINE }, then the end
442:: module { import NEWLINE } { definition NEWLINE }, then the end
437:: of the tokens; an import after a definition is the error
443:: of the tokens; an import after a definition is the error
@@ -441,9 +447,10 @@
441:: %& or %| (doc question). /='s path has a segment, as it
447:: %& or %| (doc question). /='s path has a segment, as it
442:: names a module's file: /= card / is an error just past
448:: names a module's file: /= card / is an error just past
443:: the / (doc question)
449:: the / (doc question)
444−:: definition +$ name mold, or the mold alone on a deeper line ->
450+:: definition +$ name, optional |$ [vars], then a mold on its line or
445−:: %mold (both layouts give one node); ++ name expr or body
451+:: cases below -> %mold; one case is that mold, several
452+:: are %union. The optional generic wraps either in %generic.
446−:: -> %value (a body becomes a %body expr)
453+:: ++ name expr or body -> %value (a body becomes a %body expr)
447:: body INDENT { definition NEWLINE } expr DEDENT -> %body
454:: body INDENT { definition NEWLINE } expr DEDENT -> %body
448:: call one operand is that operand; more -> %call head args
455:: call one operand is that operand; more -> %call head args
449:: operand literal -> %lit or %str; pathlit -> %path, as a path
456:: operand literal -> %lit or %str; pathlit -> %path, as a path
@@ -472,14 +479,14 @@
472:: cell sample at any depth, as b in |= [a=@ b], which is
479:: cell sample at any depth, as b in |= [a=@ b], which is
473:: a %cell of samples (Decisions: every bare name in a
480:: a %cell of samples (Decisions: every bare name in a
474:: sample binds, at any depth). A name inside a mold, as a
481:: sample binds, at any depth). A name inside a mold, as a
475−:: in (list a), $-(a b) or $?(a b), is a mold. A cell
482+:: in (list a) or $-(a b), is a mold. A cell
476:: sample's [ has no open form, as a cell pattern's hasn't
483:: sample's [ has no open form, as a cell pattern's hasn't
477:: (Decisions)
484:: (Decisions)
478:: mold aura -> %aura; * -> %noun; !! -> %void; ? -> %flag;
485:: mold aura -> %aura; * -> %noun; !! -> %void; ? -> %flag;
479:: ~ term loobean -> %const; ref -> %ref; typevar -> %tvar;
486:: ~ term loobean -> %const; ref -> %ref; typevar -> %tvar;
480:: pathmold -> %path; ( ref mold … ) -> %apply; [ field … ]
487:: pathmold -> %path; ( ref mold … ) -> %apply; [ field … ]
481−:: -> %cell; $? with cases below, and $?( … ) -> %union;
488+:: -> %cell; $-( mold mold ) -> %fn. Only a +$ definition
482−:: $-( mold mold ) -> %fn; |$ [ typevar … ] mold -> %generic.
489+:: introduces %union or %generic.
483:: A mold's ( and [ may be left open at the end of their
490:: A mold's ( and [ may be left open at the end of their
484:: line, as an expression's brackets can (Decisions):
491:: line, as an expression's brackets can (Decisions):
485:: ( ref { mold } mlines -> %apply, the name staying on
492:: ( ref { mold } mlines -> %apply, the name staying on
@@ -490,7 +497,7 @@
490:: deeper line, which may itself open, to the DEDENT; a
497:: deeper line, which may itself open, to the DEDENT; a
491:: second item on a line, or a closer, is an error. The
498:: second item on a line, or a closer, is an error. The
492:: node is the closed form's, ending with its last item.
499:: node is the closed form's, ending with its last item.
493−:: $?( and $-( have no open form: $? covers long unions
500+:: $-( has no open form.
494:: field name=mold -> %face; =name -> %pun; mold -> %bare
501:: field name=mold -> %face; =name -> %pun; mold -> %bare
495:: pattern term number ship loobean ~ -> %lit (dates, durations and
502:: pattern term number ship loobean ~ -> %lit (dates, durations and
496:: knots are errors); string without {…} -> %str; * -> %any;
503:: knots are errors); string without {…} -> %str; * -> %any;
@@ -520,11 +527,11 @@
520:: holds for every bracket before the last, whether or not it has
527:: holds for every bracket before the last, whether or not it has
521:: an open form of its own, as the Decisions say "the brackets
528:: an open form of its own, as the Decisions say "the brackets
522:: before it close with it": an expression's ( [ and ~[, a change's
529:: before it close with it": an expression's ( [ and ~[, a change's
523−:: (, |=(, a mold's ( [ $?( and $-(, an application path's (…), and
530+:: (, |=(, a mold's ( [ and $-(, an application path's (…), and
524:: a cell sample's [. A segment's ( holds an expression as an
531:: a cell sample's [. A segment's ( holds an expression as an
525:: expression's ( does and needs only its ), so %/a/(f ~[ above its
532:: expression's ( does and needs only its ), so %/a/(f ~[ above its
526−:: items is %/a/(f ~[…]), as $?( and $-(, which have no open form
533+:: items is %/a/(f ~[…]), as $-(, which has no open form
527−:: either, close so; a sample's [ that closes so leaves its gate no
534+:: either, closes so; a sample's [ that closes so leaves its gate no
528:: body. A cell pattern's [ and |$'s [ hold no other bracket, and
535:: body. A cell pattern's [ and |$'s [ hold no other bracket, and
529:: an interpolation's {…} closes on its line (2.9). A rune's body
536:: an interpolation's {…} closes on its line (2.9). A rune's body
530:: or arms that took the lines close the brackets before the rune
537:: or arms that took the lines close the brackets before the rune
@@ -537,9 +544,8 @@
537:: the line (Errors below). A mold's ( never needs more than its )
544:: the line (Errors below). A mold's ( never needs more than its )
538:: once it holds its name: one that is the last opener on its line
545:: once it holds its name: one that is the last opener on its line
539:: takes the deeper lines as its open form (Decisions), and one
546:: takes the deeper lines as its open form (Decisions), and one
540−:: before a later opener, or before a $? with its cases below,
541−:: holds that mold after its name, so it closes with it: (map $?
547+:: before a later opener holds that mold after its name and closes
542−:: above its cases is (map $?(…)).
548+:: with it.
543:: - Local definitions: at the start of any body, a gate's, an arm's,
549:: - Local definitions: at the start of any body, a gate's, an arm's,
544:: a ^-'s, a ~&'s or a ++'s, as the EBNF's body takes them
550:: a ^-'s, a ~&'s or a ++'s, as the EBNF's body takes them
545:: (Decisions); +$ as well as ++, as the Runes prose's "likewise"
551:: (Decisions); +$ as well as ++, as the Runes prose's "likewise"
@@ -553,14 +559,14 @@
553:: lines, fields and samples), =name (pun); in a path or application
559:: lines, fields and samples), =name (pun); in a path or application
554:: path, each / and the segment after it, and all of a typed segment,
560:: path, each / and the segment after it, and all of a typed segment,
555:: [id=@ud]
561:: [id=@ud]
556−:: - either way: right after an opener ( [ ~[ |=( $?( $-( or {, and
562+:: - either way: right after an opener ( [ ~[ |=( $-( or {, and
557:: right before a closer ) ] or } (the theme example writes `[ space=`),
563:: right before a closer ) ] or } (the theme example writes `[ space=`),
558:: the ( and ) of an application path's segment included; inside
564:: the ( and ) of an application path's segment included; inside
559:: them the expression is spaced as anywhere else, as %/x/(f a)
565:: them the expression is spaced as anywhere else, as %/x/(f a)
560:: A missing space is an error at the tight token, and a space inside
566:: A missing space is an error at the tight token, and a space inside
561:: a tight form, or the end of the line there, is one where it starts
567:: a tight form, or the end of the line there, is one where it starts
562:: (Errors). A rune with children, and an import glyph, is followed by
568:: (Errors). A rune with children, and an import glyph, is followed by
563−:: a space (or, for $? with its cases below, the end of the line).
569+:: a space.
564:: Items are separated by one or more spaces; how many isn't checked,
570:: Items are separated by one or more spaces; how many isn't checked,
565:: and a line may end in spaces. Spacing beyond this is style, which
571:: and a line may end in spaces. Spacing beyond this is style, which
566:: the formatter keeps: "one space between items; more for alignment"
572:: the formatter keeps: "one space between items; more for alignment"
@@ -603,17 +609,15 @@
603:: whatever line comes next: at the end of that line, just past its
609:: whatever line comes next: at the end of that line, just past its
604:: last token, "found the end of the line" (+fail-line), as no later
610:: last token, "found the end of the line" (+fail-line), as no later
605:: line can supply it. That is a rune's part on its line (|='s
611:: line can supply it. That is a rune's part on its line (|='s
606−:: sample, ^-'s mold, ~&'s value, ?-'s subject, |$'s [ and mold), a
612+:: sample, ^-'s mold, ~&'s value, ?-'s subject, |$'s [), a
607:: name after ++ or +$, an import's parts, and what a bracket that
613:: name after ++ or +$, an import's parts, and what a bracket that
608−:: closes on its line still needs: one with no open form ($?( $-(
614+:: closes on its line still needs: one with no open form ($-(
609:: |=(, a cell sample's or cell pattern's [, |$'s [, an application
615:: |=(, a cell sample's or cell pattern's [, |$'s [, an application
610:: path's (…), a ( before a rune), or a mold's ( before its name,
616:: path's (…), a ( before a rune), or a mold's ( before its name,
611:: which stays on the first line (Decisions); the bracket adds "this
617:: which stays on the first line (Decisions); the bracket adds "this
612:: bracket closes on its line" (+unclosed-want). So `++ x ^-` above
618:: bracket closes on its line" (+unclosed-want). So `++ x ^-` above
613:: a deeper line fails at 1:8, "expected a mold, found the end of the
619:: a deeper line fails at 1:8, "expected a mold, found the end of the
614−:: line", and `+$ x $?(%a` above ` %b` at 1:11, "expected `)` to
615−:: close the `$?(` at 1:6, found the end of the line; this bracket
616−:: closes on its line". Spaces and a comment after the last token
620+:: line". Spaces and a comment after the last token
617:: emit nothing (2.3, 2.6), so they don't move the end of the line:
621:: emit nothing (2.3, 2.6), so they don't move the end of the line:
618:: `++ x ^- :: c` fails at 1:8 too. At the end of the file the place
622:: `++ x ^- :: c` fails at 1:8 too. At the end of the file the place
619:: is the same, and the message says "the end of the file".
623:: is the same, and the message says "the end of the file".
@@ -663,7 +667,7 @@
663:: found `M`". A bracket that closes on its line names, at a closer that
667:: found `M`". A bracket that closes on its line names, at a closer that
664:: doesn't match or at its line's end, what it still needs: its closer
668:: doesn't match or at its line's end, what it still needs: its closer
665:: once it holds all it needs, else its next part, as `$-(@)` and `$-(@]`
669:: once it holds all it needs, else its next part, as `$-(@)` and `$-(@]`
666−:: are "expected a mold, the product", `$?(]` and `$-(]` "expected a
670+:: are "expected a mold, the product", and `$-(]` "expected a
667:: mold", `|=(]` and `|= []` "expected a sample", `|=(a]` "expected the
671:: mold", `|=(]` and `|= []` "expected a sample", `|=(a]` "expected the
668:: gate's body" (+unclosed-want). So does a group's ( with nothing after
672:: gate's body" (+unclosed-want). So does a group's ( with nothing after
669:: it on its line, as () is no group: `()` and `(]` are "expected an
673:: it on its line, as () is no group: `()` and `(]` are "expected an
@@ -767,7 +771,7 @@
767:: (apply 2:17 list (aura 2:23 @t)))
771:: (apply 2:17 list (aura 2:23 @t)))
768:: (face 2:27 open (flag 2:32))))
772:: (face 2:27 open (flag 2:32))))
769:: (mold 3:1 cart-action
773:: (mold 3:1 cart-action
770−:: (union 3:16
774+:: (union 4:3
771:: (cell 4:3
775:: (cell 4:3
772:: (const 4:4 %add)
776:: (const 4:4 %add)
773:: (face 4:9 item (aura 4:14 @t)))
777:: (face 4:9 item (aura 4:14 @t)))
@@ -863,11 +867,11 @@
863+$ glyph
867+$ glyph
864 $? %indent %dedent %newline :: layout
868 $? %indent %dedent %newline :: layout
865 %'(' %')' %'[' %']' :: brackets
869 %'(' %')' %'[' %']' :: brackets
866− %'~[' %'|=(' %'$?(' %'$-(' :: openers
870+ %'~[' %'|=(' %'$-(' :: openers
867 %'%/' %'/' :: paths
871 %'%/' %'/' :: paths
868 %'+' %'`' %'=' :: pair, unit, face
872 %'+' %'`' %'=' :: pair, unit, face
869 %'*' %'?' :: noun, loobean mold
873 %'*' %'?' :: noun, loobean mold
870− %'++' %'+$' %'|=' %'|$' %'$?' :: runes
874+ %'++' %'+$' %'|=' %'|$' :: runes
871 %'^-' %'~&' %'?-' %'!!' :: runes
875 %'^-' %'~&' %'?-' %'!!' :: runes
872 %'/-' %'/%' %'/=' :: imports
876 %'/-' %'/%' %'/=' :: imports
873 ==
877 ==
@@ -1011,9 +1015,9 @@
1011 [%path at=span segs=(list pseg)] :: / /todos /todo/[id=@ud]
1015 [%path at=span segs=(list pseg)] :: / /todos /todo/[id=@ud]
1012 [%apply at=span ref=(list term) args=(list shape)] :: (list @t)
1016 [%apply at=span ref=(list term) args=(list shape)] :: (list @t)
1013 [%cell at=span fields=(list field)] :: [text=@t done=?]
1017 [%cell at=span fields=(list field)] :: [text=@t done=?]
1014− [%union at=span cases=(list shape)] :: $? below, or $?(%a %b)
1018+ [%union at=span cases=(list shape)] :: several +$ cases below
1015 [%fn at=span sample=shape product=shape] :: $-(@t M)
1019 [%fn at=span sample=shape product=shape] :: $-(@t M)
1016− [%generic at=span vars=(list @t) body=shape] :: |$ [M] $? …
1020+ [%generic at=span vars=(list @t) body=shape] :: +$ name |$ [M] …
1017 ==
1021 ==
1018::
1022::
1019:: +pseg: a path mold's segment, a knot or [name=aura]
1023:: +pseg: a path mold's segment, a knot or [name=aura]
@@ -1313,14 +1317,14 @@
1313 ?: =('-' b) (err +(col) "`|-` is left out: gates recurse by name")
1317 ?: =('-' b) (err +(col) "`|-` is left out: gates recurse by name")
1314 (err +(col) "`|` begins `|=`, `|=(` or `|$`")
1318 (err +(col) "`|` begins `|=`, `|=(` or `|$`")
1315 ?: =('$' a)
1319 ?: =('$' a)
1316− ?: &(=('?' b) =('(' c)) (emit 3 %'$?(')
1320+ ?: =('?' b)
1317− ?: =('?' b) (emit 2 %'$?')
1321+ (err +(col) "`$?` is left out: a union is a `+$` with its cases below")
1318 ?: &(=('-' b) =('(' c)) (emit 3 %'$-(')
1322 ?: &(=('-' b) =('(' c)) (emit 3 %'$-(')
1319 ?: =('-' b)
1323 ?: =('-' b)
1320 (err (add 2 col) "`$-` has only the wide form `$-(sample product)`")
1324 (err (add 2 col) "`$-` has only the wide form `$-(sample product)`")
1321 ?: =('(' b) (err +(col) "`$(…)` is left out: gates recurse by name")
1325 ?: =('(' b) (err +(col) "`$(…)` is left out: gates recurse by name")
1322− ?: =('%' b) (err +(col) "`$%` is left out: `$?` covers unions")
1326+ ?: =('%' b) (err +(col) "`$%` is left out: a union is a `+$` with its cases below")
1323− (err +(col) "`$` begins `$?`, `$?(` or `$-(`")
1327+ (err +(col) "`$` begins `$-(`")
1324 ?: =('^' a)
1328 ?: =('^' a)
1325 ?: =('-' b) (emit 2 %'^-')
1329 ?: =('-' b) (emit 2 %'^-')
1326 (err +(col) "`^` begins `^-`")
1330 (err +(col) "`^` begins `^-`")
@@ -1661,14 +1665,15 @@
1661:: What may begin each place the parser reads (section 3, Errors):
1665:: What may begin each place the parser reads (section 3, Errors):
1662:: an expression a-z 0-9 " ( [ ~ % / ` | ^ ? !
1666:: an expression a-z 0-9 " ( [ ~ % / ` | ^ ? !
1663:: an operand a-z 0-9 " ( [ ~ % / ` | !
1667:: an operand a-z 0-9 " ( [ ~ % / ` | !
1664−:: a mold a-z A-Z @ * ! ? ~ % / ( [ $ |
1668+:: a mold a-z A-Z @ * ! ? ~ % / ( [ $
1665:: a pattern a-z 0-9 " ~ % * [
1669:: a pattern a-z 0-9 " ~ % * [
1666:: and what may go tight after an operand: . ( + = after a name, a
1670:: and what may go tight after an operand: . ( + = after a name, a
1667:: closer ) ] }, or the : of a comment
1671:: closer ) ] }, or the : of a comment
1668::
1672::
1669++ expr-mask 0x57ff.ffff.4800.0000.83ff.8126.0000.0000
1673++ expr-mask 0x57ff.ffff.4800.0000.83ff.8126.0000.0000
1670++ operand-mask 0x57ff.ffff.0800.0000.03ff.8126.0000.0000
1674++ operand-mask 0x57ff.ffff.0800.0000.03ff.8126.0000.0000
1671−++ mold-mask 0x57ff.fffe.0fff.ffff.8000.8532.0000.0000
1675+++ mold-mask 0x47ff.fffe.0fff.ffff.8000.8532.0000.0000
1676+++ bar-mask 0x1000.0000.0000.0000.0000.0000.0000.0000
1672++ pattern-mask 0x47ff.fffe.0800.0000.03ff.0424.0000.0000
1677++ pattern-mask 0x47ff.fffe.0800.0000.03ff.0424.0000.0000
1673++ after-mask 0x2000.0000.2000.0000.2400.4b00.0000.0000
1678++ after-mask 0x2000.0000.2000.0000.2400.4b00.0000.0000
1674++ plus-mask 0x800.0000.0000 :: +
1679++ plus-mask 0x800.0000.0000 :: +
@@ -3005,7 +3010,7 @@
3005 =* u i.ts
3010 =* u i.ts
3006 ?: =(at.u at.t) |(?=(~ open) !i.open)
3011 ?: =(at.u at.t) |(?=(~ open) !i.open)
3007 ?: (is-layout u) $(ts t.ts, open ~)
3012 ?: (is-layout u) $(ts t.ts, open ~)
3008− ?: ?=(?(%'(' %'[' %'~[' %'|=(' %'$?(' %'$-(') lex.u)
3013+ ?: ?=(?(%'(' %'[' %'~[' %'|=(' %'$-(') lex.u)
3009 $(ts t.ts, open [& open])
3014 $(ts t.ts, open [& open])
3010 ?: ?=([%str-head *] lex.u) $(ts t.ts, open [| open])
3015 ?: ?=([%str-head *] lex.u) $(ts t.ts, open [| open])
3011 ?: ?=([%str-mid *] lex.u) $(ts t.ts, open [| ?~(open ~ t.open)])
3016 ?: ?=([%str-mid *] lex.u) $(ts t.ts, open [| ?~(open ~ t.open)])
@@ -3089,7 +3094,7 @@
3089 (bad-space i.rest nex "a path segment")
3094 (bad-space i.rest nex "a path segment")
3090 ::
3095 ::
3091 :: +read-def: ++ name, then an expression or a body; +$ name, then a
3096 :: +read-def: ++ name, then an expression or a body; +$ name, then a
3092− :: mold on its line or alone on a deeper one. can is what may begin
3097+ :: mold on its line or cases on deeper lines. can is what may begin
3093 :: a line where a definition goes (+fail-in).
3098 :: a line where a definition goes (+fail-in).
3094 ::
3099 ::
3095 ++ read-def
3100 ++ read-def
@@ -3111,20 +3116,64 @@
3111 (bad-in-why ts want can "`+` begins `++` or `+$`")
3116 (bad-in-why ts want can "`+` begins `++` or `+$`")
3112 ?. =(%'+$' lex.rune) (bad-in ts want can)
3117 ?. =(%'+$' lex.rune) (bad-in ts want can)
3113 ;< [nam=term after=(list token)] then (read-def-name rune t.ts)
3118 ;< [nam=term after=(list token)] then (read-def-name rune t.ts)
3114− ?: ?=([[* * %indent] *] after)
3115− ;< [s=shape more=(list token)] then (read-mold t.after)
3116− ?: ?=([[* * %dedent] *] more)
3117− [%& [%mold [beg.at.rune end:(span-of s)] nam s] t.more]
3118− ?. ?=([[* * %newline] *] more) (bad-end-in more 0)
3119− %^ bad-why more "the end of the mold"
3120− "a `+$` takes one mold; a union is `$?` with its cases below"
3121− ?: ?=([[* * ?(%newline %dedent)] *] after)
3122− (bad after "a mold, on its line or a deeper one")
3123 ?: &(?=(^ after) tight.i.after)
3119 ?: &(?=(^ after) tight.i.after)
3124 (no-gap after "a space after the name")
3120 (no-gap after "a space after the name")
3121+ ?: ?=([[* * [%error *]] *] after)
3122+ (bad-in after "a mold" (con mold-mask bar-mask))
3123+ ?: ?=([[* * ?(%'|=' %'|=(')] *] after)
3124+ %: bad-in-why after "a mold" (con mold-mask bar-mask)
3125+ "a gate's mold is $-(sample product)"
3126+ ==
3125− ;< [s=shape more=(list token)] then (read-mold after)
3127+ ;< [s=shape more=(list token)] then
3128+ ?: ?=([[* * %'|$'] *] after)
3129+ (read-generic i.after t.after)
3130+ (read-def-body after)
3126 [%& [%mold [beg.at.rune end:(span-of s)] nam s] more]
3131 [%& [%mold [beg.at.rune end:(span-of s)] nam s] more]
3127 ::
3132 ::
3133+ :: +hoon-union: a tight ( immediately after a ? mold
3134+ ::
3135+ ++ hoon-union
3136+ |= [ts=(list token) after=(list token)]
3137+ ^- ?
3138+ ?. ?=([[* %& %'('] *] after) |
3139+ |- ^- ?
3140+ ?~ ts |
3141+ ?: =(t.ts after) =(%'?' lex.i.ts)
3142+ $(ts t.ts)
3143+ ::
3144+ :: +read-def-body: one mold on the definition line or its cases below
3145+ ::
3146+ ++ read-def-body
3147+ |= ts=(list token)
3148+ ^- (pare shape)
3149+ ?. ?=([[* * %indent] *] ts)
3150+ ?: ?=([[* * ?(%newline %dedent)] *] ts)
3151+ (bad ts "a mold, on its line or a deeper one")
3152+ ;< [s=shape more=(list token)] then (read-mold ts)
3153+ ?: (hoon-union ts more)
3154+ (bad-why more "the end of the line" "a union is a `+$` with its cases below")
3155+ ?: ?=([[* * %indent] *] more)
3156+ %^ bad-why more "the end of the line"
3157+ "a `+$` takes one mold on its line or its cases below, not both"
3158+ [%& s more]
3159+ =| cs=(list shape)
3160+ =/ rest=(list token) t.ts
3161+ |- ^- (pare shape)
3162+ ;< [c=shape after=(list token)] then (read-mold rest)
3163+ ?: (hoon-union rest after)
3164+ (bad-why after "the end of the line" "a union is a `+$` with its cases below")
3165+ ?: ?=([[* * %newline] *] after) $(cs [c cs], rest t.after)
3166+ ?: ?=([[* * %dedent] *] after)
3167+ ?~ cs [%& c t.after]
3168+ =/ cases=(list shape) (flop [c cs])
3169+ [%& [%union [beg:(span-of (rear cs)) end:(span-of c)] cases] t.after]
3170+ ?: ?=([[* * %'='] *] after)
3171+ %^ bad-why after "the end of the line"
3172+ "a `+$`'s lines below are its cases; a record's fields go in a [ left open on the `+$` line"
3173+ ?: ?=([[* * %indent] *] after) (bad-end after)
3174+ ?: &(?=(^ after) (stray i.after)) (bad-end after)
3175+ (bad-why after "the end of the line" "a union takes one case per line")
3176+ ::
3128 :: +read-def-name: after ++ or +$, a space and a name
3177 :: +read-def-name: after ++ or +$, a space and a name
3129 ::
3178 ::
3130 ++ read-def-name
3179 ++ read-def-name
@@ -3530,6 +3579,8 @@
3530 ?: &(?=(^ ts) |((is-closer i.ts) (is-layout i.ts)))
3579 ?: &(?=(^ ts) |((is-closer i.ts) (is-layout i.ts)))
3531 (unclosed-want "a sample" ts)
3580 (unclosed-want "a sample" ts)
3532 ;< [s=sample after=(list token)] then (read-sample ts)
3581 ;< [s=sample after=(list token)] then (read-sample ts)
3582+ ?: (hoon-union ts after)
3583+ (bad-why after "a space after the sample" "a union is a `+$` with its cases below")
3533 ?: &(?=(^ after) |((is-closer i.after) (is-layout i.after)))
3584 ?: &(?=(^ after) |((is-closer i.after) (is-layout i.after)))
3534 =/ dm (doomed ts after "the gate's body")
3585 =/ dm (doomed ts after "the gate's body")
3535 ?^ dm u.dm
3586 ?^ dm u.dm
@@ -3560,6 +3611,8 @@
3560 ?: =('%' (first-char i.ts)) (bad-in ts "a term" cen-mask)
3611 ?: =('%' (first-char i.ts)) (bad-in ts "a term" cen-mask)
3561 (no-gap ts "a space after `|=`")
3612 (no-gap ts "a space after `|=`")
3562 ;< [s=sample after=(list token)] then (read-sample ts)
3613 ;< [s=sample after=(list token)] then (read-sample ts)
3614+ ?: (hoon-union ts after)
3615+ (bad-why after "a space after the sample" "a union is a `+$` with its cases below")
3563 =/ dm (doomed ts after "an expression, or a body on deeper lines")
3616 =/ dm (doomed ts after "an expression, or a body on deeper lines")
3564 ?^ dm u.dm
3617 ?^ dm u.dm
3565 ;< [e=expr more=(list token)] then
3618 ;< [e=expr more=(list token)] then
@@ -3573,6 +3626,8 @@
3573 ^- (pare expr)
3626 ^- (pare expr)
3574 ?: &(?=(^ ts) tight.i.ts) (wide-rune "^-" ts)
3627 ?: &(?=(^ ts) tight.i.ts) (wide-rune "^-" ts)
3575 ;< [s=shape after=(list token)] then (read-mold ts)
3628 ;< [s=shape after=(list token)] then (read-mold ts)
3629+ ?: (hoon-union ts after)
3630+ (bad-why after "a space after the mold" "a union is a `+$` with its cases below")
3576 =/ dm (doomed ts after "an expression, or a body on deeper lines")
3631 =/ dm (doomed ts after "an expression, or a body on deeper lines")
3577 ?^ dm u.dm
3632 ?^ dm u.dm
3578 ;< [e=expr more=(list token)] then
3633 ;< [e=expr more=(list token)] then
@@ -3730,6 +3785,8 @@
3730 (unclosed op "]" rest)
3785 (unclosed op "]" rest)
3731 ?: &(?=(^ ss) ?=(^ rest) tight.i.rest) (no-space rest)
3786 ?: &(?=(^ ss) ?=(^ rest) tight.i.rest) (no-space rest)
3732 ;< [s=sample after=(list token)] then (read-sample rest)
3787 ;< [s=sample after=(list token)] then (read-sample rest)
3788+ ?: (hoon-union rest after)
3789+ (bad-why after "a space between items" "a union is a `+$` with its cases below")
3733 $(ss [s ss], rest after)
3790 $(ss [s ss], rest after)
3734 ::
3791 ::
3735 :: +read-field: a cell mold's field: name=mold, =name, or a mold
3792 :: +read-field: a cell mold's field: name=mold, =name, or a mold
@@ -3784,10 +3841,10 @@
3784 %'/' (read-pathmold t t.ts)
3841 %'/' (read-pathmold t t.ts)
3785 %'(' (read-apply t t.ts)
3842 %'(' (read-apply t t.ts)
3786 %'[' (read-cell-mold t t.ts)
3843 %'[' (read-cell-mold t t.ts)
3787− %'$?' (read-union t t.ts)
3788− %'$?(' (read-union-wide t t.ts)
3789 %'$-(' (read-fn t t.ts)
3844 %'$-(' (read-fn t t.ts)
3790− %'|$' (read-generic t t.ts)
3845+ %'|$' %: bad-in-why ts "a mold" mold-mask
3846+ "`|$` goes right after a `+$`'s name, as in +$ result |$ [V E]"
3847+ ==
3791 ::
3848 ::
3792 ?(%'|=' %'|=(')
3849 ?(%'|=' %'|=(')
3793 %: bad-in-why ts "a mold" mold-mask
3850 %: bad-in-why ts "a mold" mold-mask
@@ -3800,33 +3857,33 @@
3800 [%& [%const at.t p.lex.t] t.ts]
3857 [%& [%const at.t p.lex.t] t.ts]
3801 ==
3858 ==
3802 ::
3859 ::
3803− :: +read-molds: molds to the ) of the bracket op opened, at least one,
3860+ :: +read-molds: molds after an application name, to its ) or its last
3804− :: or to the line that isn't deeper when the last one took the deeper
3805− :: lines (+shut). After an apply's name, each follows a space and the
3861+ :: mold's deeper lines (+shut). Each follows a space; ( may be left
3806− :: ( may be left open, with one mold per deeper line (mlines); a $?(
3862+ :: open, with one mold per deeper line (mlines).
3807− :: takes its first mold tight and has no open form.
3808 ::
3863 ::
3809 ++ read-molds
3864 ++ read-molds
3810− |= [op=token apply=? ts=(list token)]
3865+ |= [op=token ts=(list token)]
3811 ^- (pare [(list shape) loc])
3866 ^- (pare [(list shape) loc])
3812 =| ms=(list shape)
3867 =| ms=(list shape)
3813 |- ^- (pare [(list shape) loc])
3868 |- ^- (pare [(list shape) loc])
3814 ?: ?=([[* * %')'] *] ts)
3869 ?: ?=([[* * %')'] *] ts)
3815 ?~ ms (bad ts "a mold")
3870 ?~ ms (bad ts "a mold")
3816 [%& [(flop ms) end.at.i.ts] t.ts]
3871 [%& [(flop ms) end.at.i.ts] t.ts]
3817− ?: &(apply ?=([[* * %indent] *] ts))
3872+ ?: ?=([[* * %indent] *] ts)
3818 ;< [ls=(list shape) more=(list token)] then (read-mlines t.ts)
3873 ;< [ls=(list shape) more=(list token)] then (read-mlines t.ts)
3819 =/ every=(list shape) (weld (flop ms) ls)
3874 =/ every=(list shape) (weld (flop ms) ls)
3820 [%& [every ?~(every end.at.op end:(span-of (rear every)))] more]
3875 [%& [every ?~(every end.at.op end:(span-of (rear every)))] more]
3821 ?: (shut op ?~(ms ~ `(span-of i.ms)) ts)
3876 ?: (shut op ?~(ms ~ `(span-of i.ms)) ts)
3822 [%& [(flop ms) ?~(ms end.at.op end:(span-of i.ms))] ts]
3877 [%& [(flop ms) ?~(ms end.at.op end:(span-of i.ms))] ts]
3823− ?: &(apply ?=([[* * ?(%newline %dedent)] *] ts))
3878+ ?: ?=([[* * ?(%newline %dedent)] *] ts)
3824 (unclosed-open op ")" "a mold" ts)
3879 (unclosed-open op ")" "a mold" ts)
3825 ?: &(?=(^ ts) |((is-closer i.ts) (is-layout i.ts)))
3880 ?: &(?=(^ ts) |((is-closer i.ts) (is-layout i.ts)))
3826 ?~ ms (unclosed-want "a mold" ts)
3881 ?~ ms (unclosed-want "a mold" ts)
3827 (unclosed op ")" ts)
3882 (unclosed op ")" ts)
3828− ?: &(?=(^ ts) tight.i.ts |(apply ?=(^ ms))) (no-space ts)
3883+ ?: &(?=(^ ts) tight.i.ts) (no-space ts)
3829 ;< [m=shape after=(list token)] then (read-mold ts)
3884 ;< [m=shape after=(list token)] then (read-mold ts)
3885+ ?: (hoon-union ts after)
3886+ (bad-why after "a space between items" "a union is a `+$` with its cases below")
3830 $(ms [m ms], ts after)
3887 $(ms [m ms], ts after)
3831 ::
3888 ::
3832 :: +read-apply: ( ref mold { mold } ), or ( ref { mold } and its
3889 :: +read-apply: ( ref mold { mold } ), or ( ref { mold } and its
@@ -3842,19 +3899,9 @@
3842 ==
3899 ==
3843 ?. ?=([[* * ?([%name *] [%wing *])] *] ts) (bad-in ts want lower-mask)
3900 ?. ?=([[* * ?([%name *] [%wing *])] *] ts) (bad-in ts want lower-mask)
3844 ;< [[ms=(list shape) fin=loc] after=(list token)] then
3901 ;< [[ms=(list shape) fin=loc] after=(list token)] then
3845− (read-molds op & t.ts)
3902+ (read-molds op t.ts)
3846 [%& [%apply [beg.at.op fin] (names-of lex.i.ts) ms] after]
3903 [%& [%apply [beg.at.op fin] (names-of lex.i.ts) ms] after]
3847 ::
3904 ::
3848− :: +read-union-wide: $?( mold { mold } ), closed on its line or with
3849− :: its last case's lines (+read-molds)
3850− ::
3851− ++ read-union-wide
3852− |= [op=token ts=(list token)]
3853− ^- (pare shape)
3854− ;< [[ms=(list shape) fin=loc] after=(list token)] then
3855− (read-molds op | ts)
3856− [%& [%union [beg.at.op fin] ms] after]
3857− ::
3858 :: +read-fn: $-( mold mold ), closed on its line, or with the product
3905 :: +read-fn: $-( mold mold ), closed on its line, or with the product
3859 :: when that took the deeper lines (+shut); a sample that took them
3906 :: when that took the deeper lines (+shut); a sample that took them
3860 :: leaves it no product (+doomed)
3907 :: leaves it no product (+doomed)
@@ -3865,6 +3912,8 @@
3865 ?: &(?=(^ ts) |((is-closer i.ts) (is-layout i.ts)))
3912 ?: &(?=(^ ts) |((is-closer i.ts) (is-layout i.ts)))
3866 (unclosed-want "a mold" ts)
3913 (unclosed-want "a mold" ts)
3867 ;< [a=shape after=(list token)] then (read-mold ts)
3914 ;< [a=shape after=(list token)] then (read-mold ts)
3915+ ?: (hoon-union ts after)
3916+ (bad-why after "a space between items" "a union is a `+$` with its cases below")
3868 =/ want=tape "a mold, the product"
3917 =/ want=tape "a mold, the product"
3869 ?: &(?=(^ after) |((is-closer i.after) (is-layout i.after)))
3918 ?: &(?=(^ after) |((is-closer i.after) (is-layout i.after)))
3870 =/ dm (doomed ts after want)
3919 =/ dm (doomed ts after want)
@@ -3872,6 +3921,8 @@
3872 (unclosed-want want after)
3921 (unclosed-want want after)
3873 ?: &(?=(^ after) tight.i.after) (no-space after)
3922 ?: &(?=(^ after) tight.i.after) (no-space after)
3874 ;< [b=shape more=(list token)] then (read-mold after)
3923 ;< [b=shape more=(list token)] then (read-mold after)
3924+ ?: (hoon-union after more)
3925+ (bad-why more "a space between items" "a union is a `+$` with its cases below")
3875 ?: ?=([[* * %')'] *] more)
3926 ?: ?=([[* * %')'] *] more)
3876 [%& [%fn [beg.at.op end.at.i.more] a b] t.more]
3927 [%& [%fn [beg.at.op end.at.i.more] a b] t.more]
3877 ?: (shut op `(span-of b) more)
3928 ?: (shut op `(span-of b) more)
@@ -3903,6 +3954,8 @@
3903 (unclosed op "]" ts)
3954 (unclosed op "]" ts)
3904 ?: &(?=(^ fs) ?=(^ ts) tight.i.ts) (no-space ts)
3955 ?: &(?=(^ fs) ?=(^ ts) tight.i.ts) (no-space ts)
3905 ;< [f=field after=(list token)] then (read-field ts)
3956 ;< [f=field after=(list token)] then (read-field ts)
3957+ ?: (hoon-union ts after)
3958+ (bad-why after "a space between items" "a union is a `+$` with its cases below")
3906 $(fs [f fs], ts after)
3959 $(fs [f fs], ts after)
3907 ::
3960 ::
3908 :: +read-mlines: after a mold's open ('s INDENT, one mold per line, to
3961 :: +read-mlines: after a mold's open ('s INDENT, one mold per line, to
@@ -3916,6 +3969,8 @@
3916 =/ cf (closer-first ts "a mold")
3969 =/ cf (closer-first ts "a mold")
3917 ?^ cf u.cf
3970 ?^ cf u.cf
3918 ;< [m=shape after=(list token)] then (read-mold ts)
3971 ;< [m=shape after=(list token)] then (read-mold ts)
3972+ ?: (hoon-union ts after)
3973+ (bad-why after "the end of the line" "a union is a `+$` with its cases below")
3919 ?: ?=([[* * %newline] *] after) $(ms [m ms], ts t.after)
3974 ?: ?=([[* * %newline] *] after) $(ms [m ms], ts t.after)
3920 ?: ?=([[* * %dedent] *] after) [%& (flop [m ms]) t.after]
3975 ?: ?=([[* * %dedent] *] after) [%& (flop [m ms]) t.after]
3921 (mold-line-end after "mold")
3976 (mold-line-end after "mold")
@@ -3931,6 +3986,8 @@
3931 =/ cf (closer-first ts "a field")
3986 =/ cf (closer-first ts "a field")
3932 ?^ cf u.cf
3987 ?^ cf u.cf
3933 ;< [f=field after=(list token)] then (read-field ts)
3988 ;< [f=field after=(list token)] then (read-field ts)
3989+ ?: (hoon-union ts after)
3990+ (bad-why after "the end of the line" "a union is a `+$` with its cases below")
3934 ?: ?=([[* * %newline] *] after) $(fs [f fs], ts t.after)
3991 ?: ?=([[* * %newline] *] after) $(fs [f fs], ts t.after)
3935 ?: ?=([[* * %dedent] *] after) [%& (flop [f fs]) t.after]
3992 ?: ?=([[* * %dedent] *] after) [%& (flop [f fs]) t.after]
3936 (mold-line-end after "field")
3993 (mold-line-end after "field")
@@ -3947,28 +4004,7 @@
3947 %^ bad-why ts "the end of the line"
4004 %^ bad-why ts "the end of the line"
3948 "a bracket open at the end of its line takes one {noun} per line"
4005 "a bracket open at the end of its line takes one {noun} per line"
3949 ::
4006 ::
3950− :: +read-union: $?, then its cases below, one mold per line
3951− ::
3952− ++ read-union
3953− |= [buc=token ts=(list token)]
3954− ^- (pare shape)
3955− ?. ?=([[* * %indent] *] ts)
3956− ?: ?=([[* * ?(%newline %dedent)] *] ts)
3957− (bad ts "`$?`'s cases on deeper lines")
3958− %^ bad-why ts "the end of the line"
3959− "`$?` takes its cases on deeper lines, one per line, or write $?(%a %b)"
3960− =| cs=(list shape)
3961− =/ rest=(list token) t.ts
3962− |- ^- (pare shape)
3963− ;< [c=shape after=(list token)] then (read-mold rest)
3964− ?: ?=([[* * %newline] *] after) $(cs [c cs], rest t.after)
3965− ?: ?=([[* * %dedent] *] after)
3966− [%& [%union [beg.at.buc end:(span-of c)] (flop [c cs])] t.after]
3967− ?: ?=([[* * %indent] *] after) (bad-end after)
3968− ?: &(?=(^ after) (stray i.after)) (bad-end after)
3969− (bad-why after "the end of the line" "a union takes one case per line")
3970− ::
3971− :: +read-generic: |$ [ typevar { typevar } ] mold
4007+ :: +read-generic: |$ [ typevar { typevar } ], then a definition body
3972 ::
4008 ::
3973 ++ read-generic
4009 ++ read-generic
3974 |= [bar=token ts=(list token)]
4010 |= [bar=token ts=(list token)]
@@ -3984,7 +4020,7 @@
3984 ?~ vs (bad rest "a type variable")
4020 ?~ vs (bad rest "a type variable")
3985 =/ more=(list token) t.rest
4021 =/ more=(list token) t.rest
3986 ?: &(?=(^ more) tight.i.more) (no-gap more "a space after `]`")
4022 ?: &(?=(^ more) tight.i.more) (no-gap more "a space after `]`")
3987− ;< [b=shape after=(list token)] then (read-mold more)
4023+ ;< [b=shape after=(list token)] then (read-def-body more)
3988 [%& [%generic [beg.at.bar end:(span-of b)] (flop vs) b] after]
4024 [%& [%generic [beg.at.bar end:(span-of b)] (flop vs) b] after]
3989 ?: &(?=(^ rest) |((is-closer i.rest) (is-layout i.rest)))
4025 ?: &(?=(^ rest) |((is-closer i.rest) (is-layout i.rest)))
3990 ?~ vs (unclosed-want "a type variable" rest)
4026 ?~ vs (unclosed-want "a type variable" rest)
@@ -4065,7 +4101,7 @@
4065:: %two where the token after its first ends: |=%got, =msg, /- todo
4101:: %two where the token after its first ends: |=%got, =msg, /- todo
4066:: %shut at the closer of its first token, an opener closed on its
4102:: %shut at the closer of its first token, an opener closed on its
4067:: line; or with its last child, if that opener is left open
4103:: line; or with its last child, if that opener is left open
4068−:: or is a rune, as $? with its cases below
4104+:: or is a rune with its body below
4069:: %shut2 likewise from the token after its first, a change's (
4105:: %shut2 likewise from the token after its first, a change's (
4070:: %run at the end of the path it starts: then each tight / and
4106:: %run at the end of the path it starts: then each tight / and
4071:: knot, and each tight [ or ( to its closer; or with its
4107:: knot, and each tight [ or ( to its closer; or with its
@@ -4128,7 +4164,7 @@
4128 ?: |(?=(~ t.toks) (is-layout i.t.toks)) ~
4164 ?: |(?=(~ t.toks) (is-layout i.t.toks)) ~
4129 `[beg.at.i.t.toks tight.i.t.toks]
4165 `[beg.at.i.t.toks tight.i.t.toks]
4130 =. info (~(put by info) beg.at.t [k end.at.t nex])
4166 =. info (~(put by info) beg.at.t [k end.at.t nex])
4131− ?: ?=(?(%'(' %'[' %'~[' %'|=(' %'$?(' %'$-(' %str-head) k)
4167+ ?: ?=(?(%'(' %'[' %'~[' %'|=(' %'$-(' %str-head) k)
4132 $(toks t.toks, open [beg.at.t open])
4168 $(toks t.toks, open [beg.at.t open])
4133 ?. ?=(?(%')' %']' %str-mid %str-tail) k) $(toks t.toks)
4169 ?. ?=(?(%')' %']' %str-mid %str-tail) k) $(toks t.toks)
4134 ?~ open $(toks t.toks)
4170 ?~ open $(toks t.toks)
@@ -4436,7 +4472,7 @@
4436 ::
4472 ::
4437 %union
4473 %union
4438 =/ ks=(list outline) (turn cases.s outline-shape)
4474 =/ ks=(list outline) (turn cases.s outline-shape)
4439− [%union at.s ~[%'$?' %'$?('] %shut ks]
4475+ [%union at.s ~ %kid ks]
4440 ::
4476 ::
4441 %fn
4477 %fn
4442 =/ ks=(list outline)
4478 =/ ks=(list outline)
@@ -4477,12 +4513,12 @@
4477 ['++ x ~[\0a (f a)\0a++ y 1' ~[[%call [2 4] [2 4] [2 8]]]]
4513 ['++ x ~[\0a (f a)\0a++ y 1' ~[[%call [2 4] [2 4] [2 8]]]]
4478 :: a literal running on to the next one's end
4514 :: a literal running on to the next one's end
4479 ['++ x f 1 2' ~[[%lit [1 8] [1 8] [1 11]]]]
4515 ['++ x f 1 2' ~[[%lit [1 8] [1 8] [1 11]]]]
4480− :: a path, a string, a change and a wide union cut short
4516+ :: a path, a string, a change and a union cut short
4481 ['++ x f /a/b c' ~[[%path [1 8] [1 8] [1 10]]]]
4517 ['++ x f /a/b c' ~[[%path [1 8] [1 8] [1 10]]]]
4482 ['++ x f "a{b}c" d' ~[[%str [1 8] [1 8] [1 13]]]]
4518 ['++ x f "a{b}c" d' ~[[%str [1 8] [1 8] [1 13]]]]
4483 ['++ x m(a=1) b' ~[[%change [1 6] [1 6] [1 11]]]]
4519 ['++ x m(a=1) b' ~[[%change [1 6] [1 6] [1 11]]]]
4484− :- '+$ x $?(%a %b)'
4520+ :- '+$ x\0a %a\0a %b'
4485− ~[[%union [1 6] [1 6] [1 14]] [%mold [1 1] [1 1] [1 14]]]
4521+ ~[[%union [2 3] [2 3] [2 5]] [%mold [1 1] [1 1] [2 5]]]
4486 :: a mold's cell before its closer, a typed segment past its own
4522 :: a mold's cell before its closer, a typed segment past its own
4487 :- '+$ x [a=[@ @] b=@]'
4523 :- '+$ x [a=[@ @] b=@]'
4488 ~[[%cell [1 9] [1 9] [1 13]] [%face [1 7] [1 7] [1 13]]]
4524 ~[[%cell [1 9] [1 9] [1 13]] [%face [1 7] [1 7] [1 13]]]
my-app/ui/api/todo.jibb+1−1
@@ -7,7 +7,7 @@
7
7
8+$ item item.todo
8+$ item item.todo
9+$ poke todo-action
9+$ poke todo-action
10−+$ paths $?
10++$ paths
11 [%todos /todos todos]
11 [%todos /todos todos]
12 [%changes /changes (facts todos todo-update)]
12 [%changes /changes (facts todos todo-update)]
13 [%todo /todo/[id=@ud] todo-item]
13 [%todo /todo/[id=@ud] todo-item]
my-app/ui/basket.jibb+1−1
@@ -4,7 +4,7 @@
4++ main (program init update view subs)
4++ main (program init update view subs)
5
5
6+$ model [cart=state.cart note=@t]
6+$ model [cart=state.cart note=@t]
7−+$ msg $?
7++$ msg
8 [%noted text=@t]
8 [%noted text=@t]
9 %add
9 %add
10 %toggle
10 %toggle
my-app/ui/stores/cart.jibb+1−1
@@ -1,6 +1,6 @@
1:: /ui/stores/cart.jibb
1:: /ui/stores/cart.jibb
2+$ state [items=(list @t) open=?]
2+$ state [items=(list @t) open=?]
3−+$ cart-action $?
3++$ cart-action
4 [%add item=@t]
4 [%add item=@t]
5 %toggle
5 %toggle
6+$ poke cart-action
6+$ poke cart-action
my-app/ui/todo-list.jibb+1−1
@@ -3,7 +3,7 @@
3++ main (program init update view subs)
3++ main (program init update view subs)
4
4
5+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
5+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
6−+$ msg $?
6++$ msg
7 [%typed text=@t]
7 [%typed text=@t]
8 %submit
8 %submit
9 [%toggled id=@ud]
9 [%toggled id=@ud]
tests/golden/doc-grammar-04-step/about.txt+1−1
@@ -1,3 +1,3 @@
1source: Grammar tab, section "Patterns", code block 4 of the tab
1source: Grammar tab, section "Patterns", code block 4 of the tab
2−tests: a union `+$ step $?` with one case per deeper line: cells with tags at the head, in the middle and at the end, faced fields, and a bare term; a blank line between definitions; a `?-` whose arms are cell patterns mixing tags and binding names, and a bare term, with their expressions aligned by extra spaces; interpolated strings and a name as arm expressions
2+tests: a union `+$ step` with one case per deeper line: cells with tags at the head, in the middle and at the end, faced fields, and a bare term; a blank line between definitions; a `?-` whose arms are cell patterns mixing tags and binding names, and a bare term, with their expressions aligned by extra spaces; interpolated strings and a name as arm expressions
3expect: parses
3expect: parses
tests/golden/doc-grammar-04-step/source.jibb+1−1
@@ -1,4 +1,4 @@
1−+$ step $?
1++$ step
2 [%move %left n=@ud]
2 [%move %left n=@ud]
3 [%move %right n=@ud]
3 [%move %right n=@ud]
4 [text=@t %draft]
4 [text=@t %draft]
tests/golden/doc-grammar-04-step/tokens.txt−1
@@ -1,6 +1,5 @@
11:1 glyph +$
11:1 glyph +$
21:4 name step
21:4 name step
3−1:9 glyph $?
42:3 INDENT
32:3 INDENT
52:3 glyph [
42:3 glyph [
62:4 tight lit %move
52:4 tight lit %move
tests/golden/doc-grammar-04-step/tree.txt+1−1
@@ -1,6 +1,6 @@
1(module
1(module
2 (mold 1:1 step
2 (mold 1:1 step
3− (union 1:9
3+ (union 2:3
4 (cell 2:3
4 (cell 2:3
5 (const 2:4 %move)
5 (const 2:4 %move)
6 (const 2:10 %left)
6 (const 2:10 %left)
tests/golden/doc-grammar-06-cart-store/source.jibb+1−1
@@ -1,6 +1,6 @@
1:: /ui/stores/cart.jibb
1:: /ui/stores/cart.jibb
2+$ state [items=(list @t) open=?]
2+$ state [items=(list @t) open=?]
3−+$ cart-action $?
3++$ cart-action
4 [%add item=@t]
4 [%add item=@t]
5 %toggle
5 %toggle
6+$ poke cart-action
6+$ poke cart-action
tests/golden/doc-grammar-06-cart-store/tokens.txt−1
@@ -14,7 +14,6 @@
143:1 NEWLINE
143:1 NEWLINE
153:1 glyph +$
153:1 glyph +$
163:4 name cart-action
163:4 name cart-action
17−3:16 glyph $?
184:3 INDENT
174:3 INDENT
194:3 glyph [
184:3 glyph [
204:4 tight lit %add
194:4 tight lit %add
tests/golden/doc-grammar-06-cart-store/tree.txt+1−1
@@ -5,7 +5,7 @@
5 (apply 2:17 list (aura 2:23 @t)))
5 (apply 2:17 list (aura 2:23 @t)))
6 (face 2:27 open (flag 2:32))))
6 (face 2:27 open (flag 2:32))))
7 (mold 3:1 cart-action
7 (mold 3:1 cart-action
8− (union 3:16
8+ (union 4:3
9 (cell 4:3
9 (cell 4:3
10 (const 4:4 %add)
10 (const 4:4 %add)
11 (face 4:9 item (aura 4:14 @t)))
11 (face 4:9 item (aura 4:14 @t)))
tests/golden/doc-grammar-07-basket/source.jibb+1−1
@@ -4,7 +4,7 @@
4++ main (program init update view subs)
4++ main (program init update view subs)
5
5
6+$ model [cart=state.cart note=@t]
6+$ model [cart=state.cart note=@t]
7−+$ msg $?
7++$ msg
8 [%noted text=@t]
8 [%noted text=@t]
9 %add
9 %add
10 %toggle
10 %toggle
tests/golden/doc-grammar-07-basket/tokens.txt−1
@@ -30,7 +30,6 @@
307:1 NEWLINE
307:1 NEWLINE
317:1 glyph +$
317:1 glyph +$
327:4 name msg
327:4 name msg
33−7:8 glyph $?
348:3 INDENT
338:3 INDENT
358:3 glyph [
348:3 glyph [
368:4 tight lit %noted
358:4 tight lit %noted
tests/golden/doc-grammar-07-basket/tree.txt+1−1
@@ -8,7 +8,7 @@
8 (face 6:11 cart (ref 6:16 state.cart))
8 (face 6:11 cart (ref 6:16 state.cart))
9 (face 6:27 note (aura 6:32 @t))))
9 (face 6:27 note (aura 6:32 @t))))
10 (mold 7:1 msg
10 (mold 7:1 msg
11− (union 7:8
11+ (union 8:3
12 (cell 8:3
12 (cell 8:3
13 (const 8:4 %noted)
13 (const 8:4 %noted)
14 (face 8:11 text (aura 8:16 @t)))
14 (face 8:11 text (aura 8:16 @t)))
tests/golden/doc-overview-01-cmd-sub/about.txt+1−1
@@ -1,3 +1,3 @@
1source: the first tab ("Jibb — an Elm-architecture UI language for Urbit"), section "The Elm architecture on Urbit", Effects, code block 1 of the tab
1source: the first tab ("Jibb — an Elm-architecture UI language for Urbit"), section "The Elm architecture on Urbit", Effects, code block 1 of the tab
2−tests: generic molds `+$ cmd |$ [M] $?` and `+$ sub |$ [M] $?` whose unions have their cases on the deeper lines; cell molds with faced fields whose molds are names, auras, type variables, a mold application `(ask M)`, and gate molds `$-((unit @t) M)`, `$-(@da M)`, `$-(@p M)` and `$-(path M)`
2+tests: generic molds `+$ cmd |$ [M]` and `+$ sub |$ [M]` whose unions have their cases on the deeper lines; cell molds with faced fields whose molds are names, auras, type variables, a mold application `(ask M)`, and gate molds `$-((unit @t) M)`, `$-(@da M)`, `$-(@p M)` and `$-(path M)`
3expect: parses
3expect: parses
tests/golden/doc-overview-01-cmd-sub/source.jibb+2−2
@@ -1,10 +1,10 @@
1−+$ cmd |$ [M] $?
1++$ cmd |$ [M]
2 [%poke p=poke reply=$-((unit @t) M)]
2 [%poke p=poke reply=$-((unit @t) M)]
3 [%go url=@t]
3 [%go url=@t]
4 [%wait gap=@dr msg=M]
4 [%wait gap=@dr msg=M]
5 [%now reply=$-(@da M)]
5 [%now reply=$-(@da M)]
6 [%who reply=$-(@p M)]
6 [%who reply=$-(@p M)]
7−+$ sub |$ [M] $?
7++$ sub |$ [M]
8 [%watch a=(ask M)]
8 [%watch a=(ask M)]
9 [%every gap=@dr reply=$-(@da M)]
9 [%every gap=@dr reply=$-(@da M)]
10 [%url reply=$-(path M)]
10 [%url reply=$-(path M)]
tests/golden/doc-overview-01-cmd-sub/tokens.txt−2
@@ -4,7 +4,6 @@
41:11 glyph [
41:11 glyph [
51:12 tight tvar M
51:12 tight tvar M
61:13 tight glyph ]
61:13 tight glyph ]
7−1:15 glyph $?
82:3 INDENT
72:3 INDENT
92:3 glyph [
82:3 glyph [
102:4 tight lit %poke
92:4 tight lit %poke
@@ -66,7 +65,6 @@
667:11 glyph [
657:11 glyph [
677:12 tight tvar M
667:12 tight tvar M
687:13 tight glyph ]
677:13 tight glyph ]
69−7:15 glyph $?
708:3 INDENT
688:3 INDENT
718:3 glyph [
698:3 glyph [
728:4 tight lit %watch
708:4 tight lit %watch
tests/golden/doc-overview-01-cmd-sub/tree.txt+2−2
@@ -1,7 +1,7 @@
1(module
1(module
2 (mold 1:1 cmd
2 (mold 1:1 cmd
3 (generic 1:8 M
3 (generic 1:8 M
4− (union 1:15
4+ (union 2:3
5 (cell 2:3
5 (cell 2:3
6 (const 2:4 %poke)
6 (const 2:4 %poke)
7 (face 2:10 p (ref 2:12 poke))
7 (face 2:10 p (ref 2:12 poke))
@@ -26,7 +26,7 @@
26 (fn 6:15 (aura 6:18 @p) (tvar 6:21 M)))))))
26 (fn 6:15 (aura 6:18 @p) (tvar 6:21 M)))))))
27 (mold 7:1 sub
27 (mold 7:1 sub
28 (generic 7:8 M
28 (generic 7:8 M
29− (union 7:15
29+ (union 8:3
30 (cell 8:3
30 (cell 8:3
31 (const 8:4 %watch)
31 (const 8:4 %watch)
32 (face 8:11 a
32 (face 8:11 a
tests/golden/doc-overview-04-todo-api/source.jibb+1−1
@@ -7,7 +7,7 @@
7
7
8+$ item item.todo
8+$ item item.todo
9+$ poke todo-action
9+$ poke todo-action
10−+$ paths $?
10++$ paths
11 [%todos /todos todos]
11 [%todos /todos todos]
12 [%changes /changes (facts todos todo-update)]
12 [%changes /changes (facts todos todo-update)]
13 [%todo /todo/[id=@ud] todo-item]
13 [%todo /todo/[id=@ud] todo-item]
tests/golden/doc-overview-04-todo-api/tokens.txt−1
@@ -23,7 +23,6 @@
2310:1 NEWLINE
2310:1 NEWLINE
2410:1 glyph +$
2410:1 glyph +$
2510:4 name paths
2510:4 name paths
26−10:10 glyph $?
2711:3 INDENT
2611:3 INDENT
2811:3 glyph [
2711:3 glyph [
2911:4 tight lit %todos
2811:4 tight lit %todos
tests/golden/doc-overview-04-todo-api/tree.txt+1−1
@@ -7,7 +7,7 @@
7 (mold 8:1 item (ref 8:9 item.todo))
7 (mold 8:1 item (ref 8:9 item.todo))
8 (mold 9:1 poke (ref 9:9 todo-action))
8 (mold 9:1 poke (ref 9:9 todo-action))
9 (mold 10:1 paths
9 (mold 10:1 paths
10− (union 10:10
10+ (union 11:3
11 (cell 11:3 (const 11:4 %todos) (path 11:11 /todos) (ref 11:18 todos))
11 (cell 11:3 (const 11:4 %todos) (path 11:11 /todos) (ref 11:18 todos))
12 (cell 12:3
12 (cell 12:3
13 (const 12:4 %changes)
13 (const 12:4 %changes)
tests/golden/doc-overview-10-todo-list/source.jibb+1−1
@@ -3,7 +3,7 @@
3++ main (program init update view subs)
3++ main (program init update view subs)
4
4
5+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
5+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
6−+$ msg $?
6++$ msg
7 [%typed text=@t]
7 [%typed text=@t]
8 %submit
8 %submit
9 [%toggled id=@ud]
9 [%toggled id=@ud]
tests/golden/doc-overview-10-todo-list/tokens.txt−1
@@ -39,7 +39,6 @@
396:1 NEWLINE
396:1 NEWLINE
406:1 glyph +$
406:1 glyph +$
416:4 name msg
416:4 name msg
42−6:8 glyph $?
437:3 INDENT
427:3 INDENT
447:3 glyph [
437:3 glyph [
457:4 tight lit %typed
447:4 tight lit %typed
tests/golden/doc-overview-10-todo-list/tree.txt+1−1
@@ -11,7 +11,7 @@
11 (face 5:43 error
11 (face 5:43 error
12 (apply 5:49 unit (aura 5:55 @t)))))
12 (apply 5:49 unit (aura 5:55 @t)))))
13 (mold 6:1 msg
13 (mold 6:1 msg
14− (union 6:8
14+ (union 7:3
15 (cell 7:3
15 (cell 7:3
16 (const 7:4 %typed)
16 (const 7:4 %typed)
17 (face 7:11 text (aura 7:16 @t)))
17 (face 7:11 text (aura 7:16 @t)))
tests/golden/inline-gate-after-definition-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: `|=` immediately after a definition name, where `|$` may begin
3+expect: error at 1:7 — `|` could begin `|$`, but `=` cannot continue it
tests/golden/inline-gate-after-definition-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x |=
tests/golden/inline-gate-after-definition-bad/tokens.txtnew file+4
@@ -0,0 +1,4 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph |=
4+1:8 NEWLINE
tests/golden/inline-gate-after-definition-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-gate-after-definition-bad/source.jibb:1:7: expected a mold, found `|=`; a gate's mold is $-(sample product)
2++$ x |=
3+ ^
tests/golden/inline-gate-field-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: `|=` where a field mold goes
3+expect: error at 1:9 — a mold cannot begin with `|`
tests/golden/inline-gate-field-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x [a=|=]
tests/golden/inline-gate-field-bad/tokens.txtnew file+8
@@ -0,0 +1,8 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph [
4+1:7 tight name a
5+1:8 tight glyph =
6+1:9 tight glyph |=
7+1:11 tight glyph ]
8+1:12 NEWLINE
tests/golden/inline-gate-field-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-gate-field-bad/source.jibb:1:9: expected a mold, found `|=`; a gate's mold is $-(sample product)
2++$ x [a=|=]
3+ ^
tests/golden/inline-generic-apply-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: `|$` in a mold application
3+expect: error at 1:12 — `|$` goes right after a `+$` name
tests/golden/inline-generic-apply-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x (list |$ [A] A)
tests/golden/inline-generic-apply-bad/tokens.txtnew file+11
@@ -0,0 +1,11 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph (
4+1:7 tight name list
5+1:12 glyph |$
6+1:15 glyph [
7+1:16 tight tvar A
8+1:17 tight glyph ]
9+1:19 tvar A
10+1:20 tight glyph )
11+1:21 NEWLINE
tests/golden/inline-generic-apply-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-apply-bad/source.jibb:1:12: expected a mold, found `|$`; `|$` goes right after a `+$`'s name, as in +$ result |$ [V E]
2++$ x (list |$ [A] A)
3+ ^
tests/golden/inline-generic-both-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: a generic mold on the definition line and cases below
3+expect: error at 2:3 — a `+$` takes one mold on its line or its cases below, not both
tests/golden/inline-generic-both-bad/source.jibbnew file+3
@@ -0,0 +1,3 @@
1++$ x |$ [A] A
2+ %a
3+ %b
tests/golden/inline-generic-both-bad/tokens.txtnew file+13
@@ -0,0 +1,13 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph |$
4+1:9 glyph [
5+1:10 tight tvar A
6+1:11 tight glyph ]
7+1:13 tvar A
8+2:3 INDENT
9+2:3 lit %a
10+3:3 NEWLINE
11+3:3 lit %b
12+3:5 DEDENT
13+3:5 NEWLINE
tests/golden/inline-generic-both-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-both-bad/source.jibb:2:3: expected the end of the line, found a deeper line; a `+$` takes one mold on its line or its cases below, not both
2+ %a
3+ ^
tests/golden/inline-generic-case-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: `|$` on the line below a bare `+$`
3+expect: error at 2:3 — `|$` goes right after a `+$` name
tests/golden/inline-generic-case-bad/source.jibbnew file+2
@@ -0,0 +1,2 @@
1++$ x
2+ |$ [A] A
tests/golden/inline-generic-case-bad/tokens.txtnew file+10
@@ -0,0 +1,10 @@
1+1:1 glyph +$
2+1:4 name x
3+2:3 INDENT
4+2:3 glyph |$
5+2:6 glyph [
6+2:7 tight tvar A
7+2:8 tight glyph ]
8+2:10 tvar A
9+2:11 DEDENT
10+2:11 NEWLINE
tests/golden/inline-generic-case-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-case-bad/source.jibb:2:3: expected a mold, found `|$`; `|$` goes right after a `+$`'s name, as in +$ result |$ [V E]
2+ |$ [A] A
3+ ^
tests/golden/inline-generic-cast-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: `|$` in a cast mold
3+expect: error at 1:9 — `|$` goes right after a `+$` name
tests/golden/inline-generic-cast-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1+++ f ^- |$ [A] A 5
tests/golden/inline-generic-cast-bad/tokens.txtnew file+10
@@ -0,0 +1,10 @@
1+1:1 glyph ++
2+1:4 name f
3+1:6 glyph ^-
4+1:9 glyph |$
5+1:12 glyph [
6+1:13 tight tvar A
7+1:14 tight glyph ]
8+1:16 tvar A
9+1:18 lit 5
10+1:19 NEWLINE
tests/golden/inline-generic-cast-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-cast-bad/source.jibb:1:9: expected a mold, found `|$`; `|$` goes right after a `+$`'s name, as in +$ result |$ [V E]
2+++ f ^- |$ [A] A 5
3+ ^
tests/golden/inline-generic-empty-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: a generic definition with no body below its type variables
3+expect: error at 2:1 — the generic body can follow on a deeper line
tests/golden/inline-generic-empty-bad/source.jibbnew file+2
@@ -0,0 +1,2 @@
1++$ x |$ [A]
2++$ y @
tests/golden/inline-generic-empty-bad/tokens.txtnew file+11
@@ -0,0 +1,11 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph |$
4+1:9 glyph [
5+1:10 tight tvar A
6+1:11 tight glyph ]
7+2:1 NEWLINE
8+2:1 glyph +$
9+2:4 name y
10+2:6 aura @
11+2:7 NEWLINE
tests/golden/inline-generic-empty-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-empty-bad/source.jibb:2:1: expected a mold, on its line or a deeper one, found a line at the same depth
2++$ y @
3+^
tests/golden/inline-generic-field-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: `|$` in a field mold
3+expect: error at 1:9 — `|$` goes right after a `+$` name
tests/golden/inline-generic-field-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x [a=|$ [A] A]
tests/golden/inline-generic-field-bad/tokens.txtnew file+12
@@ -0,0 +1,12 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph [
4+1:7 tight name a
5+1:8 tight glyph =
6+1:9 tight glyph |$
7+1:12 glyph [
8+1:13 tight tvar A
9+1:14 tight glyph ]
10+1:16 tvar A
11+1:17 tight glyph ]
12+1:18 NEWLINE
tests/golden/inline-generic-field-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-field-bad/source.jibb:1:9: expected a mold, found `|$`; `|$` goes right after a `+$`'s name, as in +$ result |$ [V E]
2++$ x [a=|$ [A] A]
3+ ^
tests/golden/inline-generic-mold/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "`|$` barbuc: a generic mold, `|$ [A] mold`."
1+source: Grammar tab, Runes: "`|$` barbuc: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2tests: a generic mold of one type variable
2tests: a generic mold of one type variable
3expect: parses
3expect: parses
tests/golden/inline-generic-prefix-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: `|%` where an optional generic can follow a definition name
3+expect: error at 1:7 — `|` could begin `|$`, but `%` cannot continue it
tests/golden/inline-generic-prefix-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x |%
tests/golden/inline-generic-prefix-bad/tokens.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-prefix-bad/source.jibb:1:7: `|%` is left out: modules are records
2++$ x |%
3+ ^
tests/golden/inline-generic-prefix-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-generic-prefix-bad/source.jibb:1:7: `|%` is left out: modules are records
2++$ x |%
3+ ^
tests/golden/inline-hoon-union-apply-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: Hoon union syntax in a mold application
3+expect: error at 1:13 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-apply-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x (list ?(%a %b))
tests/golden/inline-hoon-union-apply-bad/tokens.txtnew file+11
@@ -0,0 +1,11 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph (
4+1:7 tight name list
5+1:12 glyph ?
6+1:13 tight glyph (
7+1:14 tight lit %a
8+1:17 lit %b
9+1:19 tight glyph )
10+1:20 tight glyph )
11+1:21 NEWLINE
tests/golden/inline-hoon-union-apply-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-apply-bad/source.jibb:1:13: expected a space between items, found `(`; a union is a `+$` with its cases below
2++$ x (list ?(%a %b))
3+ ^
tests/golden/inline-hoon-union-cast-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: Hoon union syntax in a cast mold
3+expect: error at 1:10 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-cast-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1+++ f ^- ?(%a %b) %a
tests/golden/inline-hoon-union-cast-bad/tokens.txtnew file+10
@@ -0,0 +1,10 @@
1+1:1 glyph ++
2+1:4 name f
3+1:6 glyph ^-
4+1:9 glyph ?
5+1:10 tight glyph (
6+1:11 tight lit %a
7+1:14 lit %b
8+1:16 tight glyph )
9+1:18 lit %a
10+1:20 NEWLINE
tests/golden/inline-hoon-union-cast-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-cast-bad/source.jibb:1:10: expected a space after the mold, found `(`; a union is a `+$` with its cases below
2+++ f ^- ?(%a %b) %a
3+ ^
tests/golden/inline-hoon-union-definition-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: Hoon union syntax after a definition name
3+expect: error at 1:7 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-definition-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x ?(%a %b)
tests/golden/inline-hoon-union-definition-bad/tokens.txtnew file+8
@@ -0,0 +1,8 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph ?
4+1:7 tight glyph (
5+1:8 tight lit %a
6+1:11 lit %b
7+1:13 tight glyph )
8+1:14 NEWLINE
tests/golden/inline-hoon-union-definition-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-definition-bad/source.jibb:1:7: expected the end of the line, found `(`; a union is a `+$` with its cases below
2++$ x ?(%a %b)
3+ ^
tests/golden/inline-hoon-union-field-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: Hoon union syntax in a field
3+expect: error at 1:12 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-field-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x [dir=?(%l %r)]
tests/golden/inline-hoon-union-field-bad/tokens.txtnew file+12
@@ -0,0 +1,12 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph [
4+1:7 tight name dir
5+1:10 tight glyph =
6+1:11 tight glyph ?
7+1:12 tight glyph (
8+1:13 tight lit %l
9+1:16 lit %r
10+1:18 tight glyph )
11+1:19 tight glyph ]
12+1:20 NEWLINE
tests/golden/inline-hoon-union-field-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-field-bad/source.jibb:1:12: expected a space between items, found `(`; a union is a `+$` with its cases below
2++$ x [dir=?(%l %r)]
3+ ^
tests/golden/inline-hoon-union-gate-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: Hoon union syntax in a gate mold
3+expect: error at 1:10 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-gate-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x $-(?(%a %b) @t)
tests/golden/inline-hoon-union-gate-bad/tokens.txtnew file+11
@@ -0,0 +1,11 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph $-(
4+1:9 tight glyph ?
5+1:10 tight glyph (
6+1:11 tight lit %a
7+1:14 lit %b
8+1:16 tight glyph )
9+1:18 aura @t
10+1:20 tight glyph )
11+1:21 NEWLINE
tests/golden/inline-hoon-union-gate-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-gate-bad/source.jibb:1:10: expected a space between items, found `(`; a union is a `+$` with its cases below
2++$ x $-(?(%a %b) @t)
3+ ^
tests/golden/inline-hoon-union-nested-sample-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."
2+tests: Hoon union syntax in a field of a cell sample
3+expect: error at 1:13 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-nested-sample-bad/source.jibbnew file+2
@@ -0,0 +1,2 @@
1+++ f |= [s=?(%a %b) n=@ud]
2+ s
tests/golden/inline-hoon-union-nested-sample-bad/tokens.txtnew file+19
@@ -0,0 +1,19 @@
1+1:1 glyph ++
2+1:4 name f
3+1:6 glyph |=
4+1:9 glyph [
5+1:10 tight name s
6+1:11 tight glyph =
7+1:12 tight glyph ?
8+1:13 tight glyph (
9+1:14 tight lit %a
10+1:17 lit %b
11+1:19 tight glyph )
12+1:21 name n
13+1:22 tight glyph =
14+1:23 tight aura @ud
15+1:26 tight glyph ]
16+2:3 INDENT
17+2:3 name s
18+2:4 DEDENT
19+2:4 NEWLINE
tests/golden/inline-hoon-union-nested-sample-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-nested-sample-bad/source.jibb:1:13: expected a space between items, found `(`; a union is a `+$` with its cases below
2+++ f |= [s=?(%a %b) n=@ud]
3+ ^
tests/golden/inline-hoon-union-open-apply-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."
2+tests: Hoon union syntax in an argument on a deeper line of an open mold application
3+expect: error at 2:4 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-open-apply-bad/source.jibbnew file+2
@@ -0,0 +1,2 @@
1++$ x (list
2+ ?(%a %b)
tests/golden/inline-hoon-union-open-apply-bad/tokens.txtnew file+12
@@ -0,0 +1,12 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph (
4+1:7 tight name list
5+2:3 INDENT
6+2:3 glyph ?
7+2:4 tight glyph (
8+2:5 tight lit %a
9+2:8 lit %b
10+2:10 tight glyph )
11+2:11 DEDENT
12+2:11 NEWLINE
tests/golden/inline-hoon-union-open-apply-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-open-apply-bad/source.jibb:2:4: expected the end of the line, found `(`; a union is a `+$` with its cases below
2+ ?(%a %b)
3+ ^
tests/golden/inline-hoon-union-open-field-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."
2+tests: Hoon union syntax in a field on a deeper line of an open cell mold
3+expect: error at 2:8 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-open-field-bad/source.jibbnew file+2
@@ -0,0 +1,2 @@
1++$ x [
2+ dir=?(%l %r)
tests/golden/inline-hoon-union-open-field-bad/tokens.txtnew file+13
@@ -0,0 +1,13 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 glyph [
4+2:3 INDENT
5+2:3 name dir
6+2:6 tight glyph =
7+2:7 tight glyph ?
8+2:8 tight glyph (
9+2:9 tight lit %l
10+2:12 lit %r
11+2:14 tight glyph )
12+2:15 DEDENT
13+2:15 NEWLINE
tests/golden/inline-hoon-union-open-field-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-open-field-bad/source.jibb:2:8: expected the end of the line, found `(`; a union is a `+$` with its cases below
2+ dir=?(%l %r)
3+ ^
tests/golden/inline-hoon-union-sample-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: Hoon union syntax in a gate sample
3+expect: error at 1:12 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-sample-bad/source.jibbnew file+2
@@ -0,0 +1,2 @@
1+++ f |= s=?(%a %b)
2+ s
tests/golden/inline-hoon-union-sample-bad/tokens.txtnew file+14
@@ -0,0 +1,14 @@
1+1:1 glyph ++
2+1:4 name f
3+1:6 glyph |=
4+1:9 name s
5+1:10 tight glyph =
6+1:11 tight glyph ?
7+1:12 tight glyph (
8+1:13 tight lit %a
9+1:16 lit %b
10+1:18 tight glyph )
11+2:3 INDENT
12+2:3 name s
13+2:4 DEDENT
14+2:4 NEWLINE
tests/golden/inline-hoon-union-sample-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-sample-bad/source.jibb:1:12: expected a space after the sample, found `(`; a union is a `+$` with its cases below
2+++ f |= s=?(%a %b)
3+ ^
tests/golden/inline-hoon-union-wide-sample-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."
2+tests: Hoon union syntax in a wide gate sample
3+expect: error at 1:12 — a union is a `+$` with its cases below
tests/golden/inline-hoon-union-wide-sample-bad/source.jibbnew file+1
@@ -0,0 +1 @@
1+++ f |=(s=?(%a %b) s)
tests/golden/inline-hoon-union-wide-sample-bad/tokens.txtnew file+13
@@ -0,0 +1,13 @@
1+1:1 glyph ++
2+1:4 name f
3+1:6 glyph |=(
4+1:9 tight name s
5+1:10 tight glyph =
6+1:11 tight glyph ?
7+1:12 tight glyph (
8+1:13 tight lit %a
9+1:16 lit %b
10+1:18 tight glyph )
11+1:20 name s
12+1:21 tight glyph )
13+1:22 NEWLINE
tests/golden/inline-hoon-union-wide-sample-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-hoon-union-wide-sample-bad/source.jibb:1:12: expected a space after the sample, found `(`; a union is a `+$` with its cases below
2+++ f |=(s=?(%a %b) s)
3+ ^
tests/golden/inline-leftout-buc-alone/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: a `$` alone where a mold goes
3+expect: error at 1:7 — `$` begins `$-(`
tests/golden/inline-leftout-buc-alone/source.jibbnew file+1
@@ -0,0 +1 @@
1++$ x $
tests/golden/inline-leftout-buc-alone/tokens.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-leftout-buc-alone/source.jibb:1:7: `$` begins `$-(`
2++$ x $
3+ ^
tests/golden/inline-leftout-buc-alone/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-leftout-buc-alone/source.jibb:1:7: `$` begins `$-(`
2++$ x $
3+ ^
tests/golden/inline-leftout-buc-paren-2/about.txt+1−1
@@ -1,3 +1,3 @@
1source: Grammar tab, Runes, "Left out on purpose": "`|-`, `$(…)`: gates recurse by name."
1source: Grammar tab, Runes, "Left out on purpose": "`|-`, `$(…)`: gates recurse by name."
2−tests: `$(…)` where a mold goes, whose `$` could still begin `$?` or `$-(`
2+tests: `$(…)` where a mold goes, whose `$` can only begin `$-(`
3expect: error at 1:7 — a mold can begin with `$`, so the `(` is where the text stops being valid; `$(…)` is left out (gates recurse by name)
3expect: error at 1:7 — a mold can begin with `$`, so the `(` is where the text stops being valid; `$(…)` is left out (gates recurse by name)
tests/golden/inline-leftout-buccen/about.txt+2−2
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes, "Left out on purpose": "`$%`: `$?` covers unions."
1+source: Grammar tab, Runes, Left out on purpose: "`$?`, `$%`: a union is a `+$` with its cases below."
2tests: `$%`, which the doc leaves out, where Hoon would write it
2tests: `$%`, which the doc leaves out, where Hoon would write it
3−expect: error at 1:7 — `$%` is left out ($? covers unions); in a mold, `$` can only begin `$?` or `$-(`
3+expect: error at 1:7 — `$%` is left out: a union is a `+$` with its cases below
tests/golden/inline-leftout-buccen/tokens.txt+1−1
@@ -1,3 +1,3 @@
1−/tests/golden/inline-leftout-buccen/source.jibb:1:7: `$%` is left out: `$?` covers unions
1+/tests/golden/inline-leftout-buccen/source.jibb:1:7: `$%` is left out: a union is a `+$` with its cases below
2+$ x $%
2+$ x $%
3 ^
3 ^
tests/golden/inline-leftout-buccen/tree.txt+1−1
@@ -1,3 +1,3 @@
1−/tests/golden/inline-leftout-buccen/source.jibb:1:7: `$%` is left out: `$?` covers unions
1+/tests/golden/inline-leftout-buccen/source.jibb:1:7: `$%` is left out: a union is a `+$` with its cases below
2+$ x $%
2+$ x $%
3 ^
3 ^
tests/golden/inline-mold-generic/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Molds: "Generic molds: `+$ result |$ [V E] $?` with cases below."
1+source: Grammar tab, Molds: "Generic molds: `+$ result |$ [V E]` with cases below; `|$` goes only right after a `+$`'s name."
2tests: a generic mold of two type variables over a union whose cases are on the deeper lines (the two cases are this case's own; the doc says only "with cases below")
2tests: a generic mold of two type variables over a union whose cases are on the deeper lines (the two cases are this case's own; the doc says only "with cases below")
3expect: parses
3expect: parses
tests/golden/inline-mold-generic/source.jibb+1−1
@@ -1,3 +1,3 @@
1−+$ result |$ [V E] $?
1++$ result |$ [V E]
2 [%ok value=V]
2 [%ok value=V]
3 [%err error=E]
3 [%err error=E]
tests/golden/inline-mold-generic/tokens.txt−1
@@ -5,7 +5,6 @@
51:15 tight tvar V
51:15 tight tvar V
61:17 tvar E
61:17 tvar E
71:18 tight glyph ]
71:18 tight glyph ]
8−1:20 glyph $?
92:3 INDENT
82:3 INDENT
102:3 glyph [
92:3 glyph [
112:4 tight lit %ok
102:4 tight lit %ok
tests/golden/inline-mold-generic/tree.txt+1−1
@@ -1,7 +1,7 @@
1(module
1(module
2 (mold 1:1 result
2 (mold 1:1 result
3 (generic 1:11 V E
3 (generic 1:11 V E
4− (union 1:20
4+ (union 2:3
5 (cell 2:3
5 (cell 2:3
6 (const 2:4 %ok)
6 (const 2:4 %ok)
7 (face 2:8 value (tvar 2:14 V)))
7 (face 2:8 value (tvar 2:14 V)))
tests/golden/inline-pattern-crash-arm/about.txt+1−1
@@ -1,3 +1,3 @@
1source: Grammar tab, Patterns: "Leaving out `%stop` is an error naming it; to crash instead, write `%stop !!`."
1source: Grammar tab, Patterns: "Leaving out `%stop` is an error naming it; to crash instead, write `%stop !!`."
2−tests: an arm whose expression is the crash `!!`, in a gate whose sample is a wide union
2+tests: an arm whose expression is the crash `!!`, in a gate whose sample is a named union
3expect: parses
3expect: parses
tests/golden/inline-pattern-crash-arm/source.jibb+4−1
@@ -1,4 +1,7 @@
1−++ f |= s=$?(%go %stop)
1++$ action
2+ %go
3+ %stop
4+++ f |= s=action
2 ?- s
5 ?- s
3 %go 1
6 %go 1
4 %stop !!
7 %stop !!
tests/golden/inline-pattern-crash-arm/tokens.txt+25−20
@@ -1,21 +1,26 @@
1−1:1 glyph ++
1+1:1 glyph +$
2−1:4 name f
2+1:4 name action
3−1:6 glyph |=
4−1:9 name s
5−1:10 tight glyph =
6−1:11 tight glyph $?(
7−1:14 tight lit %go
8−1:18 lit %stop
9−1:23 tight glyph )
102:3 INDENT
32:3 INDENT
4+2:3 lit %go
5+3:3 NEWLINE
6+3:3 lit %stop
7+4:1 DEDENT
8+4:1 NEWLINE
9+4:1 glyph ++
10+4:4 name f
11+4:6 glyph |=
12+4:9 name s
13+4:10 tight glyph =
14+4:11 tight name action
15+5:3 INDENT
11−2:3 glyph ?-
16+5:3 glyph ?-
12−2:6 name s
17+5:6 name s
13−3:5 INDENT
18+6:5 INDENT
14−3:5 lit %go
19+6:5 lit %go
15−3:12 lit 1
20+6:12 lit 1
16−4:5 NEWLINE
21+7:5 NEWLINE
17−4:5 lit %stop
22+7:5 lit %stop
18−4:12 glyph !!
23+7:12 glyph !!
19−4:14 DEDENT
24+7:14 DEDENT
20−4:14 DEDENT
25+7:14 DEDENT
21−4:14 NEWLINE
26+7:14 NEWLINE
tests/golden/inline-pattern-crash-arm/tree.txt+10−9
@@ -1,10 +1,11 @@
1(module
1(module
2+ (mold 1:1 action
3+ (union 2:3 (const 2:3 %go) (const 3:3 %stop)))
2− (value 1:1 f
4+ (value 4:1 f
3− (gate 1:6
5+ (gate 4:6
4− (face 1:9 s
6+ (face 4:9 s (ref 4:11 action))
5− (union 1:11 (const 1:14 %go) (const 1:18 %stop)))
6− (body 2:3
7+ (body 5:3
7− (branch 2:3
8+ (branch 5:3
8− (wing 2:6 s)
9+ (wing 5:6 s)
9− (arm 3:5 (lit 3:5 %go) (lit 3:12 1))
10+ (arm 6:5 (lit 6:5 %go) (lit 6:12 1))
10− (arm 4:5 (lit 4:5 %stop) (crash 4:12)))))))
11+ (arm 7:5 (lit 7:5 %stop) (crash 7:12)))))))
tests/golden/inline-pattern-crash-bad/about.txt+1−1
@@ -1,3 +1,3 @@
1source: Grammar tab, Patterns: "Patterns take terms, numbers, strings without `{…}`, ships, loobeans and `~`, not lists or pairs."; the EBNF: `pattern = term | number | string | ship | loobean | "~" | "*" | name | "[" pattern { pattern } "]" ;`; Decisions, 2026-10-30: "Crash: `!!` is an operand, so `f !!` and `~[!!]` need no parentheses"
1source: Grammar tab, Patterns: "Patterns take terms, numbers, strings without `{…}`, ships, loobeans and `~`, not lists or pairs."; the EBNF: `pattern = term | number | string | ship | loobean | "~" | "*" | name | "[" pattern { pattern } "]" ;`; Decisions, 2026-10-30: "Crash: `!!` is an operand, so `f !!` and `~[!!]` need no parentheses"
2tests: `!!` where an arm's pattern goes
2tests: `!!` where an arm's pattern goes
3−expect: error at 4:5 — `!!` is an operand (Decisions), not a pattern, and no pattern begins with `!`; a case that should crash is written %stop !!
3+expect: error at 7:5 — `!!` is an operand (Decisions), not a pattern, and no pattern begins with `!`; a case that should crash is written %stop !!
tests/golden/inline-pattern-crash-bad/source.jibb+4−1
@@ -1,4 +1,7 @@
1−++ f |= s=$?(%go %stop)
1++$ action
2+ %go
3+ %stop
4+++ f |= s=action
2 ?- s
5 ?- s
3 %go 1
6 %go 1
4 !! 2
7 !! 2
tests/golden/inline-pattern-crash-bad/tokens.txt+25−20
@@ -1,21 +1,26 @@
1−1:1 glyph ++
1+1:1 glyph +$
2−1:4 name f
2+1:4 name action
3−1:6 glyph |=
4−1:9 name s
5−1:10 tight glyph =
6−1:11 tight glyph $?(
7−1:14 tight lit %go
8−1:18 lit %stop
9−1:23 tight glyph )
102:3 INDENT
32:3 INDENT
4+2:3 lit %go
5+3:3 NEWLINE
6+3:3 lit %stop
7+4:1 DEDENT
8+4:1 NEWLINE
9+4:1 glyph ++
10+4:4 name f
11+4:6 glyph |=
12+4:9 name s
13+4:10 tight glyph =
14+4:11 tight name action
15+5:3 INDENT
11−2:3 glyph ?-
16+5:3 glyph ?-
12−2:6 name s
17+5:6 name s
13−3:5 INDENT
18+6:5 INDENT
14−3:5 lit %go
19+6:5 lit %go
15−3:10 lit 1
20+6:10 lit 1
16−4:5 NEWLINE
21+7:5 NEWLINE
17−4:5 glyph !!
22+7:5 glyph !!
18−4:10 lit 2
23+7:10 lit 2
19−4:11 DEDENT
24+7:11 DEDENT
20−4:11 DEDENT
25+7:11 DEDENT
21−4:11 NEWLINE
26+7:11 NEWLINE
tests/golden/inline-pattern-crash-bad/tree.txt+1−1
@@ -1,3 +1,3 @@
1−/tests/golden/inline-pattern-crash-bad/source.jibb:4:5: expected a pattern, found `!!`
1+/tests/golden/inline-pattern-crash-bad/source.jibb:7:5: expected a pattern, found `!!`
2 !! 2
2 !! 2
3 ^
3 ^
tests/golden/inline-scry-case/about.txt+1−1
@@ -1,3 +1,3 @@
1source: the first tab ("Jibb — an Elm-architecture UI language for Urbit"), Agent APIs: "A case can name another scry path, as in `[%changes /updates (facts todos todo-update) scry=/todos]`, used only by pages."
1source: the first tab ("Jibb — an Elm-architecture UI language for Urbit"), Agent APIs: "A case can name another scry path, as in `[%changes /updates (facts todos todo-update) scry=/todos]`, used only by pages."
2−tests: a union case holding a path mold, a mold application and a faced path mold
2+tests: a single case below a definition, holding a path mold, a mold application and a faced path mold
3expect: parses
3expect: parses
tests/golden/inline-scry-case/source.jibb+1−1
@@ -1,2 +1,2 @@
1−+$ paths $?
1++$ paths
2 [%changes /updates (facts todos todo-update) scry=/todos]
2 [%changes /updates (facts todos todo-update) scry=/todos]
tests/golden/inline-scry-case/tokens.txt−1
@@ -1,6 +1,5 @@
11:1 glyph +$
11:1 glyph +$
21:4 name paths
21:4 name paths
3−1:10 glyph $?
42:3 INDENT
32:3 INDENT
52:3 glyph [
42:3 glyph [
62:4 tight lit %changes
52:4 tight lit %changes
tests/golden/inline-scry-case/tree.txt+5−6
@@ -1,8 +1,7 @@
1(module
1(module
2 (mold 1:1 paths
2 (mold 1:1 paths
3− (union 1:10
4− (cell 2:3
3+ (cell 2:3
5− (const 2:4 %changes)
4+ (const 2:4 %changes)
6− (path 2:13 /updates)
5+ (path 2:13 /updates)
7− (apply 2:22 facts (ref 2:29 todos) (ref 2:35 todo-update))
6+ (apply 2:22 facts (ref 2:29 todos) (ref 2:35 todo-update))
8− (face 2:48 scry (path 2:53 /todos))))))
7+ (face 2:48 scry (path 2:53 /todos)))))
tests/golden/inline-term-numeric/source.jibb+4−1
@@ -1,4 +1,7 @@
1−+$ code $?(%200 %404 %1.000)
1++$ code
2+ %200
3+ %404
4+ %1.000
2++ label |= c=code
5++ label |= c=code
3 ?- c
6 ?- c
4 %200 "ok"
7 %200 "ok"
tests/golden/inline-term-numeric/tokens.txt+29−27
@@ -1,29 +1,31 @@
11:1 glyph +$
11:1 glyph +$
21:4 name code
21:4 name code
3−1:9 glyph $?(
3+2:3 INDENT
4−1:12 tight lit %200
4+2:3 lit %200
5+3:3 NEWLINE
5−1:17 lit %404
6+3:3 lit %404
7+4:3 NEWLINE
6−1:22 lit %1.000
8+4:3 lit %1.000
7−1:28 tight glyph )
9+5:1 DEDENT
8−2:1 NEWLINE
10+5:1 NEWLINE
9−2:1 glyph ++
11+5:1 glyph ++
10−2:4 name label
12+5:4 name label
11−2:10 glyph |=
13+5:10 glyph |=
12−2:13 name c
14+5:13 name c
13−2:14 tight glyph =
15+5:14 tight glyph =
14−2:15 tight name code
16+5:15 tight name code
15−3:3 INDENT
17+6:3 INDENT
16−3:3 glyph ?-
18+6:3 glyph ?-
17−3:6 name c
19+6:6 name c
18−4:5 INDENT
20+7:5 INDENT
19−4:5 lit %200
21+7:5 lit %200
20−4:13 str "ok"
22+7:13 str "ok"
21−5:5 NEWLINE
23+8:5 NEWLINE
22−5:5 lit %404
24+8:5 lit %404
23−5:13 str "not found"
25+8:13 str "not found"
24−6:5 NEWLINE
26+9:5 NEWLINE
25−6:5 lit %1.000
27+9:5 lit %1.000
26−6:13 str "a thousand"
28+9:13 str "a thousand"
27−6:25 DEDENT
29+9:25 DEDENT
28−6:25 DEDENT
30+9:25 DEDENT
29−6:25 NEWLINE
31+9:25 NEWLINE
tests/golden/inline-term-numeric/tree.txt+10−10
@@ -1,12 +1,12 @@
1(module
1(module
2 (mold 1:1 code
2 (mold 1:1 code
3− (union 1:9 (const 1:12 %200) (const 1:17 %404) (const 1:22 %1.000)))
3+ (union 2:3 (const 2:3 %200) (const 3:3 %404) (const 4:3 %1.000)))
4− (value 2:1 label
4+ (value 5:1 label
5− (gate 2:10
5+ (gate 5:10
6− (face 2:13 c (ref 2:15 code))
6+ (face 5:13 c (ref 5:15 code))
7− (body 3:3
7+ (body 6:3
8− (branch 3:3
8+ (branch 6:3
9− (wing 3:6 c)
9+ (wing 6:6 c)
10− (arm 4:5 (lit 4:5 %200) (str 4:13 "ok"))
10+ (arm 7:5 (lit 7:5 %200) (str 7:13 "ok"))
11− (arm 5:5 (lit 5:5 %404) (str 5:13 "not found"))
11+ (arm 8:5 (lit 8:5 %404) (str 8:13 "not found"))
12− (arm 6:5 (lit 6:5 %1.000) (str 6:13 "a thousand")))))))
12+ (arm 9:5 (lit 9:5 %1.000) (str 9:13 "a thousand")))))))
tests/golden/inline-union-both-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: a mold on the definition line and cases below
3+expect: error at 2:3 — a `+$` takes one mold on its line or its cases below, not both
tests/golden/inline-union-both-bad/source.jibbnew file+3
@@ -0,0 +1,3 @@
1++$ x @t
2+ %a
3+ %b
tests/golden/inline-union-both-bad/tokens.txtnew file+9
@@ -0,0 +1,9 @@
1+1:1 glyph +$
2+1:4 name x
3+1:6 aura @t
4+2:3 INDENT
5+2:3 lit %a
6+3:3 NEWLINE
7+3:3 lit %b
8+3:5 DEDENT
9+3:5 NEWLINE
tests/golden/inline-union-both-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-union-both-bad/source.jibb:2:3: expected the end of the line, found a deeper line; a `+$` takes one mold on its line or its cases below, not both
2+ %a
3+ ^
tests/golden/inline-union-local/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: a local definition with cases at the start of a gate body
3+expect: parses
tests/golden/inline-union-local/source.jibbnew file+5
@@ -0,0 +1,5 @@
1+++ f |= n=@ud
2+ +$ local
3+ %a
4+ %b
5+ n
tests/golden/inline-union-local/tokens.txtnew file+18
@@ -0,0 +1,18 @@
1+1:1 glyph ++
2+1:4 name f
3+1:6 glyph |=
4+1:9 name n
5+1:10 tight glyph =
6+1:11 tight aura @ud
7+2:3 INDENT
8+2:3 glyph +$
9+2:6 name local
10+3:5 INDENT
11+3:5 lit %a
12+4:5 NEWLINE
13+4:5 lit %b
14+5:3 DEDENT
15+5:3 NEWLINE
16+5:3 name n
17+5:4 DEDENT
18+5:4 NEWLINE
tests/golden/inline-union-local/tree.txtnew file+8
@@ -0,0 +1,8 @@
1+(module
2+ (value 1:1 f
3+ (gate 1:6
4+ (face 1:9 n (aura 1:11 @ud))
5+ (body 2:3
6+ (mold 2:3 local
7+ (union 3:5 (const 3:5 %a) (const 4:5 %b)))
8+ (wing 5:3 n)))))
tests/golden/inline-union-one-case/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: one case below and the same mold on its definition line
3+expect: parses; both definitions contain a cell mold, with no union node
tests/golden/inline-union-one-case/source.jibbnew file+3
@@ -0,0 +1,3 @@
1++$ go
2+ [%go url=@t]
3++$ go-inline [%go url=@t]
tests/golden/inline-union-one-case/tokens.txtnew file+20
@@ -0,0 +1,20 @@
1+1:1 glyph +$
2+1:4 name go
3+2:3 INDENT
4+2:3 glyph [
5+2:4 tight lit %go
6+2:8 name url
7+2:11 tight glyph =
8+2:12 tight aura @t
9+2:14 tight glyph ]
10+3:1 DEDENT
11+3:1 NEWLINE
12+3:1 glyph +$
13+3:4 name go-inline
14+3:14 glyph [
15+3:15 tight lit %go
16+3:19 name url
17+3:22 tight glyph =
18+3:23 tight aura @t
19+3:25 tight glyph ]
20+3:26 NEWLINE
tests/golden/inline-union-one-case/tree.txtnew file+9
@@ -0,0 +1,9 @@
1+(module
2+ (mold 1:1 go
3+ (cell 2:3
4+ (const 2:4 %go)
5+ (face 2:8 url (aura 2:12 @t))))
6+ (mold 3:1 go-inline
7+ (cell 3:14
8+ (const 3:15 %go)
9+ (face 3:19 url (aura 3:23 @t)))))
tests/golden/inline-union-record-bad/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."; "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: record fields under a bare definition without an open bracket
3+expect: error at 2:7 — a record leaves its `[` open on the definition line
tests/golden/inline-union-record-bad/source.jibbnew file+3
@@ -0,0 +1,3 @@
1++$ x
2+ name=@t
3+ age=@ud
tests/golden/inline-union-record-bad/tokens.txtnew file+12
@@ -0,0 +1,12 @@
1+1:1 glyph +$
2+1:4 name x
3+2:3 INDENT
4+2:3 name name
5+2:7 tight glyph =
6+2:8 tight aura @t
7+3:3 NEWLINE
8+3:3 name age
9+3:6 tight glyph =
10+3:7 tight aura @ud
11+3:10 DEDENT
12+3:10 NEWLINE
tests/golden/inline-union-record-bad/tree.txtnew file+3
@@ -0,0 +1,3 @@
1+/tests/golden/inline-union-record-bad/source.jibb:2:7: expected the end of the line, found `=`; a `+$`'s lines below are its cases; a record's fields go in a [ left open on the `+$` line
2+ name=@t
3+ ^
tests/golden/inline-union-wide/about.txt+3−3
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "`$?` bucwut: a union, one case per line or `$?(%a %b)`; cases must differ as nouns."
1+source: Grammar tab, Runes, Left out on purpose: "`$?`, `$%`: a union is a `+$` with its cases below."
2−tests: the wide union
2+tests: `$?(` with cases on its line
3−expect: parses
3+expect: error at 1:7 — `$?` is left out
tests/golden/inline-union-wide/tokens.txt+3−7
@@ -1,7 +1,3 @@
1−1:1 glyph +$
1+/tests/golden/inline-union-wide/source.jibb:1:7: `$?` is left out: a union is a `+$` with its cases below
2−1:4 name x
2++$ x $?(%a %b)
3−1:6 glyph $?(
3+ ^
4−1:9 tight lit %a
5−1:12 lit %b
6−1:14 tight glyph )
7−1:15 NEWLINE
tests/golden/inline-union-wide/tree.txt+3−3
@@ -1,3 +1,3 @@
1−(module
1+/tests/golden/inline-union-wide/source.jibb:1:7: `$?` is left out: a union is a `+$` with its cases below
2− (mold 1:1 x
2++$ x $?(%a %b)
3− (union 1:6 (const 1:9 %a) (const 1:12 %b))))
3+ ^
tests/golden/inline-wide-form-rune-bad/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "Only `|=`, `$?` and `$-` have wide forms: `|=(sample expr)`, `$?(case case)`, `$-(mold mold)`. Their children are operands, so calls inside need parentheses."
1+source: Grammar tab, Runes: "Only `|=` and `$-` have wide forms: `|=(sample expr)` and `$-(mold mold)`. Their children are operands, so calls inside need parentheses."
2tests: a rune as the body of the wide gate
2tests: a rune as the body of the wide gate
3expect: error at 1:11 — the wide gate's body is an operand, and a rune is not one; it would need parentheses, |=(n (^- @ud n))
3expect: error at 1:11 — the wide gate's body is an operand, and a rune is not one; it would need parentheses, |=(n (^- @ud n))
tests/golden/inline-wide-forms/about.txt+2−2
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "Only `|=`, `$?` and `$-` have wide forms: `|=(sample expr)`, `$?(case case)`, `$-(mold mold)`."
1+source: Grammar tab, Runes: "Only `|=` and `$-` have wide forms: `|=(sample expr)` and `$-(mold mold)`."
2−tests: the three wide forms, written as the doc writes them
2+tests: the two wide forms, written as the doc writes them
3expect: parses; in x the bare name sample binds and expr is the body
3expect: parses; in x the bare name sample binds and expr is the body
tests/golden/inline-wide-forms/source.jibb−1
@@ -1,3 +1,2 @@
1++ x |=(sample expr)
1++ x |=(sample expr)
2−+$ y $?(case case)
3+$ z $-(mold mold)
2+$ z $-(mold mold)
tests/golden/inline-wide-forms/tokens.txt+5−12
@@ -6,16 +6,9 @@
61:20 tight glyph )
61:20 tight glyph )
72:1 NEWLINE
72:1 NEWLINE
82:1 glyph +$
82:1 glyph +$
9−2:4 name y
9+2:4 name z
10−2:6 glyph $?(
10+2:6 glyph $-(
11−2:9 tight name case
11+2:9 tight name mold
12−2:14 name case
12+2:14 name mold
132:18 tight glyph )
132:18 tight glyph )
14−3:1 NEWLINE
15−3:1 glyph +$
16−3:4 name z
17−3:6 glyph $-(
18−3:9 tight name mold
19−3:14 name mold
20−3:18 tight glyph )
21−3:19 NEWLINE
14+2:19 NEWLINE
tests/golden/inline-wide-forms/tree.txt+2−4
@@ -1,7 +1,5 @@
1(module
1(module
2 (value 1:1 x
2 (value 1:1 x
3 (gate-wide 1:6 (bind 1:9 sample) (wing 1:16 expr)))
3 (gate-wide 1:6 (bind 1:9 sample) (wing 1:16 expr)))
4− (mold 2:1 y
4+ (mold 2:1 z
5− (union 2:6 (ref 2:9 case) (ref 2:14 case)))
6− (mold 3:1 z
7− (fn 3:6 (ref 3:9 mold) (ref 3:14 mold))))
5+ (fn 2:6 (ref 2:9 mold) (ref 2:14 mold))))
tests/golden/inline-wide-union-call/about.txt+3−3
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "Their children are operands, so calls inside need parentheses."
1+source: Grammar tab, Runes: "`+$` **lusbuc**: defines a mold, likewise: on its line, or as cases on the lines below, one per line, where several cases make a union and one is just that mold. Molds may be recursive."
2−tests: a mold application written without parentheses inside the wide union
2+tests: a mold application without parentheses where one union case goes
3−expect: parses as a union of three cases, %a, list and @t, not of %a and (list @t)
3+expect: error at 3:8 — a union takes one case per line
tests/golden/inline-wide-union-call/source.jibb+3−1
@@ -1 +1,3 @@
1++$ x
2+ %a
1−+$ x $?(%a list @t)
3+ list @t
tests/golden/inline-wide-union-call/tokens.txt+7−6
@@ -1,8 +1,9 @@
11:1 glyph +$
11:1 glyph +$
21:4 name x
21:4 name x
3−1:6 glyph $?(
3+2:3 INDENT
4−1:9 tight lit %a
4+2:3 lit %a
5+3:3 NEWLINE
5−1:12 name list
6+3:3 name list
6−1:17 aura @t
7+3:8 aura @t
7−1:19 tight glyph )
8+3:10 DEDENT
8−1:20 NEWLINE
9+3:10 NEWLINE
tests/golden/inline-wide-union-call/tree.txt+3−3
@@ -1,3 +1,3 @@
1−(module
1+/tests/golden/inline-wide-union-call/source.jibb:3:8: expected the end of the line, found `@t`; a union takes one case per line
2− (mold 1:1 x
2+ list @t
3− (union 1:6 (const 1:9 %a) (ref 1:12 list) (aura 1:17 @t))))
3+ ^
tests/golden/lex-indent-ok-3/source.jibb+1−1
@@ -1,5 +1,5 @@
1 :: an indented comment before the first code line
1 :: an indented comment before the first code line
2−+$ msg $?
2++$ msg
3 :: a comment deeper than the cases
3 :: a comment deeper than the cases
4 %a
4 %a
5 :: a comment shallower than the cases
5 :: a comment shallower than the cases
tests/golden/lex-indent-ok-3/tokens.txt−1
@@ -1,6 +1,5 @@
12:1 glyph +$
12:1 glyph +$
22:4 name msg
22:4 name msg
3−2:8 glyph $?
44:3 INDENT
34:3 INDENT
54:3 lit %a
44:3 lit %a
66:3 NEWLINE
56:3 NEWLINE
tests/golden/lex-indent-ok-3/tree.txt+1−1
@@ -1,6 +1,6 @@
1(module
1(module
2 (mold 2:1 msg
2 (mold 2:1 msg
3− (union 2:8 (const 4:3 %a) (const 6:3 %b)))
3+ (union 4:3 (const 4:3 %a) (const 6:3 %b)))
4 (value 7:1 f
4 (value 7:1 f
5 (gate 7:6
5 (gate 7:6
6 (face 7:9 b (flag 7:11))
6 (face 7:9 b (flag 7:11))
tests/golden/lex-layout-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1source: Grammar tab, Lexical rules: "Layout tokens: a deeper line emits INDENT, the same depth NEWLINE, a shallower one a DEDENT per closed level, then NEWLINE."; the EBNF's comment: "Blank and comment-only lines emit nothing."
1source: Grammar tab, Lexical rules: "Layout tokens: a deeper line emits INDENT, the same depth NEWLINE, a shallower one a DEDENT per closed level, then NEWLINE."; the EBNF's comment: "Blank and comment-only lines emit nothing."
2tests: a deeper line where the grammar takes none: `++ x foo` is complete on its line
2tests: a deeper line where the grammar takes none: `++ x foo` is complete on its line
3−expect: error at 2:3 — line 2 is deeper, so it emits INDENT, but only a definition with nothing after its name, an open bracket, a rune's body, ?- arms or $? cases take a deeper line, and `++ x foo` is none of them
3+expect: error at 2:3 — line 2 is deeper, so it emits INDENT, but only a definition with nothing after its name, an open bracket, a rune's body or ?- arms take a deeper line, and `++ x foo` is none of them
tests/golden/lex-layout-bad-10/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Layout tokens: a deeper line emits INDENT, the same depth NEWLINE, a shallower one a DEDENT per closed level, then NEWLINE."; the EBNF: `definition = "+$" name ( mold | INDENT mold DEDENT ) | "++" name ( expr | body ) ;`
1+source: Grammar tab, Lexical rules: "Layout tokens: a deeper line emits INDENT, the same depth NEWLINE, a shallower one a DEDENT per closed level, then NEWLINE."; the EBNF: `definition = "+$" name [ generic ] ( mold | cases ) | "++" name ( expr | body ) ;`
2tests: `+$ x` with nothing on its line and no deeper line
2tests: `+$ x` with nothing on its line and no deeper line
3expect: error at 2:1 — a +$'s mold may go on a deeper line, so line 1 may end after the name; line 2 is at the same depth, so x gets no mold, and the error is at that line, which a deeper one would have fixed, as for `++ view` in lex-layout-bad-2
3expect: error at 2:1 — a +$'s mold may go on a deeper line, so line 1 may end after the name; line 2 is at the same depth, so x gets no mold, and the error is at that line, which a deeper one would have fixed, as for `++ view` in lex-layout-bad-2
tests/golden/lex-layout-bad-5/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; the EBNF: `definition = "+$" name ( mold | INDENT mold DEDENT ) | "++" name ( expr | body ) ;`
1+source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; the EBNF: `definition = "+$" name [ generic ] ( mold | cases ) | "++" name ( expr | body ) ;`
2tests: a value's name on the line below its `++`
2tests: a value's name on the line below its `++`
3expect: error at 1:3, the end of line 1 — the name sits on the `++`'s line, right after it in the EBNF, so no later line can supply it, deeper or not, and the text stops being valid where line 1 ends (library 2.0), not at the deeper line
3expect: error at 1:3, the end of line 1 — the name sits on the `++`'s line, right after it in the EBNF, so no later line can supply it, deeper or not, and the text stops being valid where line 1 ends (library 2.0), not at the deeper line
tests/golden/lex-layout-bad-6/about.txt+2−2
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; the EBNF: `definition = "+$" name ( mold | INDENT mold DEDENT ) | "++" name ( expr | body ) ;`
1+source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; the EBNF: `definition = "+$" name [ generic ] ( mold | cases ) | "++" name ( expr | body ) ;`
2tests: a mold's name on the line below its `+$`
2tests: a mold's name on the line below its `+$`
3−expect: error at 1:3, the end of line 1 — the name sits on the `+$`'s line; only the mold may go on a deeper line (`INDENT mold DEDENT`), so no later line can supply the name (library 2.0)
3+expect: error at 1:3, the end of line 1 — the name sits on the `+$`'s line; only the mold may go on a deeper line (`cases = INDENT mold { NEWLINE mold } DEDENT`), so no later line can supply the name (library 2.0)
tests/golden/lex-name-bad-6/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, the EBNF: `definition = "+$" name ( mold | INDENT mold DEDENT ) | "++" name ( expr | body ) ;` and `wing = name { "." name } ;`
1+source: Grammar tab, the EBNF: `definition = "+$" name [ generic ] ( mold | cases ) | "++" name ( expr | body ) ;` and `wing = name { "." name } ;`
2tests: a wing where a definition's name goes
2tests: a wing where a definition's name goes
3expect: error at 1:5 — a definition's name has no `.`; `a` alone could still be the name
3expect: error at 1:5 — a definition's name has no `.`; `a` alone could still be the name
tests/golden/lex-open-bracket-bad-12/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "Only `|=`, `$?` and `$-` have wide forms: `|=(sample expr)`, `$?(case case)`, `$-(mold mold)`. Their children are operands, so calls inside need parentheses."; the EBNF: `gate = "|=(" ( field | name ) operand ")" ;`
1+source: Grammar tab, Runes: "Only `|=` and `$-` have wide forms: `|=(sample expr)` and `$-(mold mold)`. Their children are operands, so calls inside need parentheses."; the EBNF: `gate = "|=(" ( field | name ) operand ")" ;`
2tests: a wide gate with its body on the line below
2tests: a wide gate with its body on the line below
3expect: error at 1:10, the end of line 1 — |=( is a wide form with no open form, so it closes on its line, and no later line can give it its body; the error names the body, as `|=(a)` does
3expect: error at 1:10, the end of line 1 — |=( is a wide form with no open form, so it closes on its line, and no later line can give it its body; the error names the body, as `|=(a)` does
tests/golden/lex-open-bracket-bad-15/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "Only `|=`, `$?` and `$-` have wide forms: `|=(sample expr)`, `$?(case case)`, `$-(mold mold)`. Their children are operands, so calls inside need parentheses."; the EBNF: `gate = "|=(" ( field | name ) operand ")" ;`
1+source: Grammar tab, Runes: "Only `|=` and `$-` have wide forms: `|=(sample expr)` and `$-(mold mold)`. Their children are operands, so calls inside need parentheses."; the EBNF: `gate = "|=(" ( field | name ) operand ")" ;`
2tests: a wide gate opened alone at the end of its line, its sample and body on the line below
2tests: a wide gate opened alone at the end of its line, its sample and body on the line below
3expect: error at 1:9, the end of line 1 — `|=(` is a wide form with no open form, so it closes on its line, and no later line can give it its sample; the error names the sample it needs first, as `|=()` does, and the `|=(a` of lex-open-bracket-bad-12 its body
3expect: error at 1:9, the end of line 1 — `|=(` is a wide form with no open form, so it closes on its line, and no later line can give it its sample; the error names the sample it needs first, as `|=()` does, and the `|=(a` of lex-open-bracket-bad-12 its body
tests/golden/lex-open-bracket-ok-5/about.txt+2−2
@@ -1,3 +1,3 @@
1source: Decisions, 2026-10-30: "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 `)`"; Grammar tab, Lexical rules: "A line may leave several brackets open: the deeper lines go to the last one, or to the body of the last rune, and the others close with it, so `(column ~ ~[` above its items needs no `)`."
1source: Decisions, 2026-10-30: "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 `)`"; Grammar tab, Lexical rules: "A line may leave several brackets open: the deeper lines go to the last one, or to the body of the last rune, and the others close with it, so `(column ~ ~[` above its items needs no `)`."
2−tests: molds' brackets left open together: an apply, a wide union and a gate's mold before a cell, and a cell before an apply
2+tests: molds' brackets left open together: an apply and a gate's mold before a cell, and a cell before an apply
3−expect: parses: v is (map @ud [a=@ b=@]), w is $?(%a [b=@]), f is $-(@ [b=@]) and g is [a=@ b=(list @t)]: the last bracket on line 1 takes the deeper lines and those before it close with it (Decisions), $?( and $-( too, though they have no open form of their own
3+expect: parses: v is (map @ud [a=@ b=@]), f is $-(@ [b=@]) and g is [a=@ b=(list @t)]: the last bracket on line 1 takes the deeper lines and those before it close with it (Decisions), $-( too, though it has no open form of its own
tests/golden/lex-open-bracket-ok-5/source.jibb−2
@@ -1,8 +1,6 @@
1+$ v (map @ud [
1+$ v (map @ud [
2 a=@
2 a=@
3 b=@
3 b=@
4−+$ w $?(%a [
5− b=@
6+$ f $-(@ [
4+$ f $-(@ [
7 b=@
5 b=@
8+$ g [a=@ b=(list
6+$ g [a=@ b=(list
tests/golden/lex-open-bracket-ok-5/tokens.txt+15−26
@@ -15,10 +15,10 @@
154:1 DEDENT
154:1 DEDENT
164:1 NEWLINE
164:1 NEWLINE
174:1 glyph +$
174:1 glyph +$
18−4:4 name w
18+4:4 name f
19−4:6 glyph $?(
19+4:6 glyph $-(
20−4:9 tight lit %a
20+4:9 tight aura @
21−4:12 glyph [
21+4:11 glyph [
225:3 INDENT
225:3 INDENT
235:3 name b
235:3 name b
245:4 tight glyph =
245:4 tight glyph =
@@ -26,27 +26,16 @@
266:1 DEDENT
266:1 DEDENT
276:1 NEWLINE
276:1 NEWLINE
286:1 glyph +$
286:1 glyph +$
29−6:4 name f
29+6:4 name g
30−6:6 glyph $-(
30+6:6 glyph [
31+6:7 tight name a
32+6:8 tight glyph =
316:9 tight aura @
336:9 tight aura @
34+6:11 name b
35+6:12 tight glyph =
32−6:11 glyph [
36+6:13 tight glyph (
37+6:14 tight name list
337:3 INDENT
387:3 INDENT
34−7:3 name b
35−7:4 tight glyph =
36−7:5 tight aura @
37−8:1 DEDENT
38−8:1 NEWLINE
39−8:1 glyph +$
40−8:4 name g
41−8:6 glyph [
42−8:7 tight name a
43−8:8 tight glyph =
44−8:9 tight aura @
45−8:11 name b
46−8:12 tight glyph =
47−8:13 tight glyph (
48−8:14 tight name list
49−9:3 INDENT
50−9:3 aura @t
39+7:3 aura @t
51−9:5 DEDENT
40+7:5 DEDENT
52−9:5 NEWLINE
41+7:5 NEWLINE
tests/golden/lex-open-bracket-ok-5/tree.txt+9−14
@@ -5,18 +5,13 @@
5 (cell 1:15
5 (cell 1:15
6 (face 2:3 a (aura 2:5 @))
6 (face 2:3 a (aura 2:5 @))
7 (face 3:3 b (aura 3:5 @)))))
7 (face 3:3 b (aura 3:5 @)))))
8− (mold 4:1 w
8+ (mold 4:1 f
9− (union 4:6
9+ (fn 4:6
10− (const 4:9 %a)
10+ (aura 4:9 @)
11− (cell 4:12
11+ (cell 4:11
12 (face 5:3 b (aura 5:5 @)))))
12 (face 5:3 b (aura 5:5 @)))))
13− (mold 6:1 f
13+ (mold 6:1 g
14− (fn 6:6
15− (aura 6:9 @)
16− (cell 6:11
17− (face 7:3 b (aura 7:5 @)))))
18− (mold 8:1 g
19− (cell 8:6
14+ (cell 6:6
20− (face 8:7 a (aura 8:9 @))
15+ (face 6:7 a (aura 6:9 @))
21− (face 8:11 b
16+ (face 6:11 b
22− (apply 8:13 list (aura 9:3 @t))))))
17+ (apply 6:13 list (aura 7:3 @t))))))
tests/golden/lex-open-bracket-ok-9/about.txt+3−3
@@ -1,3 +1,3 @@
1−source: Decisions, 2026-10-30: "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 `)`"; Grammar tab, Runes: "`$?` bucwut: a union, one case per line or `$?(%a %b)`; cases must differ as nouns."
1+source: 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"
2−tests: a mold's `(` left open before a `$?` whose cases are on the deeper lines, the `(` holding only its name before the `$?`, and then its name and a mold
2+tests: open mold applications with their arguments on deeper lines
3−expect: parses: v is (map $?(%a %b)) and w is (map @ud $?(%a %b)): the `$?`, the last rune on line 1, takes the deeper lines as its cases, and the `(` before it closes with it (Decisions), its name and the union making it whole; a mold's `(` needs nothing after its molds but its `)` (library section 3, What the EBNF leaves out)
3+expect: parses: v is (map %a %b) and w is (map @ud %a %b)
tests/golden/lex-open-bracket-ok-9/source.jibb+2−2
@@ -1,6 +1,6 @@
1−+$ v (map $?
1++$ v (map
2 %a
2 %a
3 %b
3 %b
4−+$ w (map @ud $?
4++$ w (map @ud
5 %a
5 %a
6 %b
6 %b
tests/golden/lex-open-bracket-ok-9/tokens.txt−2
@@ -2,7 +2,6 @@
21:4 name v
21:4 name v
31:6 glyph (
31:6 glyph (
41:7 tight name map
41:7 tight name map
5−1:11 glyph $?
62:3 INDENT
52:3 INDENT
72:3 lit %a
62:3 lit %a
83:3 NEWLINE
73:3 NEWLINE
@@ -14,7 +13,6 @@
144:6 glyph (
134:6 glyph (
154:7 tight name map
144:7 tight name map
164:11 aura @ud
154:11 aura @ud
17−4:15 glyph $?
185:3 INDENT
165:3 INDENT
195:3 lit %a
175:3 lit %a
206:3 NEWLINE
186:3 NEWLINE
tests/golden/lex-open-bracket-ok-9/tree.txt+2−5
@@ -1,8 +1,5 @@
1(module
1(module
2 (mold 1:1 v
2 (mold 1:1 v
3− (apply 1:6 map
4− (union 1:11 (const 2:3 %a) (const 3:3 %b))))
3+ (apply 1:6 map (const 2:3 %a) (const 3:3 %b)))
5 (mold 4:1 w
4 (mold 4:1 w
6− (apply 4:6 map
7− (aura 4:11 @ud)
8− (union 4:15 (const 5:3 %a) (const 6:3 %b)))))
5+ (apply 4:6 map (aura 4:11 @ud) (const 5:3 %a) (const 6:3 %b))))
tests/golden/lex-open-mold-bad-6/about.txt+3−3
@@ -1,3 +1,3 @@
1−source: 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"; the EBNF: mold's `"$?(" mold { mold } ")"`
1+source: Grammar tab, Runes, Left out on purpose: "`$?`, `$%`: a union is a `+$` with its cases below."
2−tests: a wide union left open at the end of its line
2+tests: `$?(` inside a field
3−expect: error at 1:11, the end of line 1 — only a mold's [ and ( open (Decisions): $?( closes on its line, and $? with its cases below covers long unions, so no later line can close it, and the error is at the line's end (library 2.0), where its ) could still have gone
3+expect: error at 1:12 — `$?` is left out
tests/golden/lex-open-mold-bad-6/source.jibb+1−2
@@ -1,2 +1 @@
1−+$ x $?(%a
1++$ x [dir=$?(%l %r)]
2− %b
tests/golden/lex-open-mold-bad-6/tokens.txt+3−8
@@ -1,8 +1,3 @@
1−1:1 glyph +$
1+/tests/golden/lex-open-mold-bad-6/source.jibb:1:12: `$?` is left out: a union is a `+$` with its cases below
2−1:4 name x
2++$ x [dir=$?(%l %r)]
3−1:6 glyph $?(
3+ ^
4−1:9 tight lit %a
5−2:3 INDENT
6−2:3 lit %b
7−2:5 DEDENT
8−2:5 NEWLINE
tests/golden/lex-open-mold-bad-6/tree.txt+3−3
@@ -1,3 +1,3 @@
1−/tests/golden/lex-open-mold-bad-6/source.jibb:1:11: expected `)` to close the `$?(` at 1:6, found the end of the line; this bracket closes on its line
1+/tests/golden/lex-open-mold-bad-6/source.jibb:1:12: `$?` is left out: a union is a `+$` with its cases below
2−+$ x $?(%a
2++$ x [dir=$?(%l %r)]
3− ^
3+ ^
tests/golden/lex-open-mold-ok-4/about.txt+2−2
@@ -1,3 +1,3 @@
1−source: 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"; the EBNF: mold's `"$?" INDENT mold { NEWLINE mold } DEDENT` and `"[" { field } flines`
1+source: 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"; the EBNF: `cases = INDENT mold { NEWLINE mold } DEDENT` and mold's `"[" { field } flines`
2−tests: a case of a $? with its cases below, left open after its tag
2+tests: a case of a +$ with its cases below, left open after its tag
3expect: parses: msg is the union of three cases, the first the cell [%add text=@t n=@ud], whose fields are on the lines below its own
3expect: parses: msg is the union of three cases, the first the cell [%add text=@t n=@ud], whose fields are on the lines below its own
tests/golden/lex-open-mold-ok-4/source.jibb+1−1
@@ -1,4 +1,4 @@
1−+$ msg $?
1++$ msg
2 [%add
2 [%add
3 text=@t
3 text=@t
4 n=@ud
4 n=@ud
tests/golden/lex-open-mold-ok-4/tokens.txt−1
@@ -1,6 +1,5 @@
11:1 glyph +$
11:1 glyph +$
21:4 name msg
21:4 name msg
3−1:8 glyph $?
42:3 INDENT
32:3 INDENT
52:3 glyph [
42:3 glyph [
62:4 tight lit %add
52:4 tight lit %add
tests/golden/lex-open-mold-ok-4/tree.txt+1−1
@@ -1,6 +1,6 @@
1(module
1(module
2 (mold 1:1 msg
2 (mold 1:1 msg
3− (union 1:8
3+ (union 2:3
4 (cell 2:3
4 (cell 2:3
5 (const 2:4 %add)
5 (const 2:4 %add)
6 (face 3:5 text (aura 3:10 @t))
6 (face 3:5 text (aura 3:10 @t))
tests/golden/lex-open-mold-ok-5/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: 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"; the EBNF: `definition = "+$" name ( mold | INDENT mold DEDENT ) | "++" name ( expr | body ) ;`
1+source: 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"; the EBNF: `definition = "+$" name [ generic ] ( mold | cases ) | "++" name ( expr | body ) ;`
2tests: a mold alone on the deeper line below its +$, left open
2tests: a mold alone on the deeper line below its +$, left open
3expect: parses: model's mold is a [ alone, which takes the lines deeper still, the cell [a=@ b=@]; dict's is (map @ud @t); x follows at the top level
3expect: parses: model's mold is a [ alone, which takes the lines deeper still, the cell [a=@ b=@]; dict's is (map @ud @t); x follows at the top level
tests/golden/lex-rune-layout-bad-10/about.txtdeleted−3
@@ -1,3 +0,0 @@
1−source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; "`|$` barbuc: a generic mold, `|$ [A] mold`."; the EBNF: mold's `"|$" "[" typevar { typevar } "]" mold`
2−tests: a generic mold's mold on the line below its type variables
3−expect: error at 1:12, the end of line 1 — the mold follows the `]` on the `|$`'s line, as in `+$ result |$ [V E] $?` with only the union's cases below, so no later line can supply it (library 2.0)
tests/golden/lex-rune-layout-bad-10/tree.txtdeleted−3
@@ -1,3 +0,0 @@
1−/tests/golden/lex-rune-layout-bad-10/source.jibb:1:12: expected a mold, found the end of the line
2−+$ x |$ [A]
3− ^
tests/golden/lex-rune-layout-bad-13/about.txt+3−3
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; "`$?` bucwut: a union, one case per line or `$?(%a %b)`; cases must differ as nouns."; the EBNF: mold's `"$?" INDENT mold { NEWLINE mold } DEDENT`
1+source: Grammar tab, Runes, Left out on purpose: "`$?`, `$%`: a union is a `+$` with its cases below."
2−tests: a union's `$?` with no cases below it
2+tests: `$?` with cases below
3−expect: error at 2:1 — `$?`'s cases go on deeper lines, so line 1 may end after it; line 2 is at the same depth, so the union gets no case, and the error is at that line, which a deeper one would have fixed
3+expect: error at 1:7 — `$?` is left out
tests/golden/lex-rune-layout-bad-13/source.jibb+2−1
@@ -1,2 +1,3 @@
1+$ x $?
1+$ x $?
2−++ y 1
2+ %a
3+ %b
tests/golden/lex-rune-layout-bad-13/tokens.txt+3−8
@@ -1,8 +1,3 @@
1−1:1 glyph +$
1+/tests/golden/lex-rune-layout-bad-13/source.jibb:1:7: `$?` is left out: a union is a `+$` with its cases below
2−1:4 name x
2++$ x $?
3−1:6 glyph $?
3+ ^
4−2:1 NEWLINE
5−2:1 glyph ++
6−2:4 name y
7−2:6 lit 1
8−2:7 NEWLINE
tests/golden/lex-rune-layout-bad-13/tree.txt+3−3
@@ -1,3 +1,3 @@
1−/tests/golden/lex-rune-layout-bad-13/source.jibb:2:1: expected `$?`'s cases on deeper lines, found a line at the same depth
1+/tests/golden/lex-rune-layout-bad-13/source.jibb:1:7: `$?` is left out: a union is a `+$` with its cases below
2−++ y 1
2++$ x $?
3−^
3+ ^
tests/golden/lex-rune-layout-bad-15/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; "`|$` barbuc: a generic mold, `|$ [A] mold`."; the EBNF: mold's `"|$" "[" typevar { typevar } "]" mold`
1+source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; "`|$` barbuc: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."; the EBNF: `generic = "|$" "[" typevar { typevar } "]"`
2tests: a generic mold's `[` of type variables left open at the end of its line
2tests: a generic mold's `[` of type variables left open at the end of its line
3expect: error at 1:11, the end of line 1 — `|$`'s `[` has only the closed form in the EBNF, so it closes on its line, and no later line can give it its `]` (library 2.0); the error names the closer it needs, as it holds a type variable
3expect: error at 1:11, the end of line 1 — `|$`'s `[` has only the closed form in the EBNF, so it closes on its line, and no later line can give it its `]` (library 2.0); the error names the closer it needs, as it holds a type variable
tests/golden/lex-rune-layout-bad-9/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; "`|$` barbuc: a generic mold, `|$ [A] mold`."; the EBNF: mold's `"|$" "[" typevar { typevar } "]" mold`
1+source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; "`|$` barbuc: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."; the EBNF: `generic = "|$" "[" typevar { typevar } "]"`
2tests: a generic mold's type variables and mold on the line below the `|$`
2tests: a generic mold's type variables and mold on the line below the `|$`
3expect: error at 1:8, the end of line 1 — the `[` and its type variables go on the `|$`'s line, as the EBNF has no INDENT in `|$`, so no later line can supply them (library 2.0)
3expect: error at 1:8, the end of line 1 — the `[` and its type variables go on the `|$`'s line, as the EBNF has no INDENT in `|$`, so no later line can supply them (library 2.0)
tests/golden/lex-rune-layout-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; the EBNF: `rune = "|=" field ( expr | body ) | "^-" mold ( expr | body ) | "~&" expr body | "?-" expr INDENT arm { NEWLINE arm } DEDENT ;`
1source: Grammar tab, Runes: "A rune's first children sit on its line, the last taking the rest of it; the others follow, indented."; the EBNF: `rune = "|=" field ( expr | body ) | "^-" mold ( expr | body ) | "~&" expr body | "?-" expr INDENT arm { NEWLINE arm } DEDENT ;`
2−tests: each rune's layout: a gate's body taking the rest of its line or below it; a cast's expression after its mold or below it; `~&` with its value on its line and its body below; `?-` with its subject on its line and its arms below, an arm's expression after its pattern or below it; a `+$` whose mold, and a `$?` whose cases, are on deeper lines
2+tests: each rune's layout: a gate's body taking the rest of its line or below it; a cast's expression after its mold or below it; `~&` with its value on its line and its body below; `?-` with its subject on its line and its arms below, an arm's expression after its pattern or below it; a `+$` whose mold, and a `+$` whose cases, are on deeper lines
3expect: parses: a's body is the call add n 1, the rest of its line
3expect: parses: a's body is the call add n 1, the rest of its line
tests/golden/lex-rune-layout-ok-1/source.jibb+2−3
@@ -15,6 +15,5 @@
15+$ g
15+$ g
16 [a=@ b=@]
16 [a=@ b=@]
17+$ h
17+$ h
18− $?
19− %a
18+ %a
20− %b
19+ %b
tests/golden/lex-rune-layout-ok-1/tokens.txt+5−8
@@ -90,11 +90,8 @@
9017:1 glyph +$
9017:1 glyph +$
9117:4 name h
9117:4 name h
9218:3 INDENT
9218:3 INDENT
93−18:3 glyph $?
94−19:5 INDENT
95−19:5 lit %a
93+18:3 lit %a
96−20:5 NEWLINE
94+19:3 NEWLINE
97−20:5 lit %b
95+19:3 lit %b
98−20:7 DEDENT
96+19:5 DEDENT
99−20:7 DEDENT
100−20:7 NEWLINE
97+19:5 NEWLINE
tests/golden/lex-rune-layout-ok-1/tree.txt+1−1
@@ -39,4 +39,4 @@
39 (face 16:4 a (aura 16:6 @))
39 (face 16:4 a (aura 16:6 @))
40 (face 16:8 b (aura 16:10 @))))
40 (face 16:8 b (aura 16:10 @))))
41 (mold 17:1 h
41 (mold 17:1 h
42− (union 18:3 (const 19:5 %a) (const 20:5 %b))))
42+ (union 18:3 (const 18:3 %a) (const 19:3 %b))))
tests/golden/lex-rune-layout-ok-2/about.txtnew file+3
@@ -0,0 +1,3 @@
1+source: Grammar tab, Runes: "`|$` **barbuc**: a generic mold, right after a `+$`'s name: `+$ result |$ [V E]`, then the mold on its line or the cases below."
2+tests: a generic mold with one mold on the line below its type variables
3+expect: parses; the generic body is (list A)
tests/golden/lex-rune-layout-bad-10/source.jibb → tests/golden/lex-rune-layout-ok-2/source.jibbrenamed

The content is the same.

tests/golden/lex-rune-layout-bad-10/tokens.txt → tests/golden/lex-rune-layout-ok-2/tokens.txtrenamed

The content is the same.

tests/golden/lex-rune-layout-ok-2/tree.txtnew file+4
@@ -0,0 +1,4 @@
1+(module
2+ (mold 1:1 x
3+ (generic 1:6 A
4+ (apply 2:3 list (tvar 2:9 A)))))
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 ( mold | INDENT mold DEDENT )`
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-tight-change-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: the doc's `m (note text)`: a `(` after a wing and a space
2tests: the doc's `m (note text)`: a `(` after a wing and a space
3expect: parses as a call: m applied to the group (note text), not a change
3expect: parses as a call: m applied to the group (note text), not a change
tests/golden/lex-tight-change-bad-2/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: a change written with a space before its `(`
2tests: a change written with a space before its `(`
3expect: error at 1:13 — after a space, `(` opens a group, not a change, and a group's items take no name=; the change is m(note=text)
3expect: error at 1:13 — after a space, `(` opens a group, not a change, and a group's items take no name=; the change is m(note=text)
tests/golden/lex-tight-change-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: the doc's `m(note=text)`, a change of two items holding a cell and a group, and a change of a two-name wing
2tests: the doc's `m(note=text)`, a change of two items holding a cell and a group, and a change of a two-name wing
3expect: parses: three changes
3expect: parses: three changes
tests/golden/lex-tight-ctor-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: `|= %got` with a space, as a call's argument
2tests: `|= %got` with a space, as a call's argument
3expect: error at 1:20 — inside a call, `|=` can only begin the constructor |=%got or the wide gate |=(…), both tight; a tall |= is a rune, and a rune can't be a call's operand
3expect: error at 1:20 — inside a call, `|=` can only begin the constructor |=%got or the wide gate |=(…), both tight; a tall |= is a rune, and a rune can't be a call's operand
tests/golden/lex-tight-ctor-bad-2/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: `|= %got` with a space, as a whole expression
2tests: `|= %got` with a space, as a whole expression
3expect: parses as a tall gate whose sample is the unfaced constant mold %got and whose body, below, is ~; not the constructor |=%got (unfaced samples parse, as in `++ init |= ~` of the Grammar's basket example)
3expect: parses as a tall gate whose sample is the unfaced constant mold %got and whose body, below, is ~; not the constructor |=%got (unfaced samples parse, as in `++ init |= ~` of the Grammar's basket example)
tests/golden/lex-tight-ctor-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: the doc's `|=%got`, alone, as a call's argument, and as list items
2tests: the doc's `|=%got`, alone, as a call's argument, and as list items
3expect: parses
3expect: parses
tests/golden/lex-tight-opener-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: `~ [a]`: the list opener written with a space
2tests: `~ [a]`: the list opener written with a space
3expect: parses as a call: ~ applied to the one-item cell [a] (the EBNF's tuple admits one item), not the list ~[a]
3expect: parses as a call: ~ applied to the one-item cell [a] (the EBNF's tuple admits one item), not the list ~[a]
tests/golden/lex-tight-opener-bad-2/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: `|= (`: the wide gate's opener written with a space, inside a call
2tests: `|= (`: the wide gate's opener written with a space, inside a call
3expect: error at 1:17 — inside a call, `|=` can only begin |=(…) or |=%term, both tight; the tall |= is a rune, and a rune can't be a call's operand
3expect: error at 1:17 — inside a call, `|=` can only begin |=(…) or |=%term, both tight; the tall |= is a rune, and a rune can't be a call's operand
tests/golden/lex-tight-opener-bad-3/about.txt+3−3
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Runes, Left out on purpose: "`$?`, `$%`: a union is a `+$` with its cases below."
2−tests: `$? (`: the wide union's opener written with a space
2+tests: `$?` followed by a space
3−expect: error at 1:9 — `$?` with a space is the tall union, whose cases go on deeper lines, one per line, so only a comment may follow it on its line; the wide union is $?(%a %b)
3+expect: error at 1:7 — `$?` is left out
tests/golden/lex-tight-opener-bad-3/tokens.txt+3−8
@@ -1,8 +1,3 @@
1−1:1 glyph +$
1+/tests/golden/lex-tight-opener-bad-3/source.jibb:1:7: `$?` is left out: a union is a `+$` with its cases below
2−1:4 name x
2++$ x $? (%a %b)
3−1:6 glyph $?
3+ ^
4−1:9 glyph (
5−1:10 tight lit %a
6−1:13 lit %b
7−1:15 tight glyph )
8−1:16 NEWLINE
tests/golden/lex-tight-opener-bad-3/tree.txt+2−2
@@ -1,3 +1,3 @@
1−/tests/golden/lex-tight-opener-bad-3/source.jibb:1:9: expected the end of the line, found `(`; `$?` takes its cases on deeper lines, one per line, or write $?(%a %b)
1+/tests/golden/lex-tight-opener-bad-3/source.jibb:1:7: `$?` is left out: a union is a `+$` with its cases below
2+$ x $? (%a %b)
2+$ x $? (%a %b)
3− ^
3+ ^
tests/golden/lex-tight-opener-bad-4/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: `$- (`: the gate mold's opener written with a space
2tests: `$- (`: the gate mold's opener written with a space
3expect: error at 1:8 — `$-` has only the wide form $-(sample product), so `(` must follow it at once
3expect: error at 1:8 — `$-` has only the wide form $-(sample product), so `(` must follow it at once
tests/golden/lex-tight-opener-ok-1/about.txt+2−2
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2−tests: the four openers, each tight: `~[`, `|=(`, `$?(` and `$-(`
2+tests: the three openers, each tight: `~[`, `|=(` and `$-(`
3expect: parses
3expect: parses
tests/golden/lex-tight-opener-ok-1/source.jibb−1
@@ -1,4 +1,3 @@
1++ a ~[1 2]
1++ a ~[1 2]
2++ b |=(n (add n 1))
2++ b |=(n (add n 1))
3−+$ c $?(%a %b)
4+$ d $-(@t @t)
3+$ d $-(@t @t)
tests/golden/lex-tight-opener-ok-1/tokens.txt+5−12
@@ -17,16 +17,9 @@
172:20 tight glyph )
172:20 tight glyph )
183:1 NEWLINE
183:1 NEWLINE
193:1 glyph +$
193:1 glyph +$
20−3:4 name c
20+3:4 name d
21−3:6 glyph $?(
21+3:6 glyph $-(
22−3:9 tight lit %a
22+3:9 tight aura @t
23−3:12 lit %b
23+3:12 aura @t
243:14 tight glyph )
243:14 tight glyph )
25−4:1 NEWLINE
26−4:1 glyph +$
27−4:4 name d
28−4:6 glyph $-(
29−4:9 tight aura @t
30−4:12 aura @t
31−4:14 tight glyph )
32−4:15 NEWLINE
25+3:15 NEWLINE
tests/golden/lex-tight-opener-ok-1/tree.txt+2−4
@@ -6,7 +6,5 @@
6 (bind 2:9 n)
6 (bind 2:9 n)
7 (group 2:11
7 (group 2:11
8 (call 2:12 (wing 2:12 add) (wing 2:16 n) (lit 2:18 1)))))
8 (call 2:12 (wing 2:12 add) (wing 2:16 n) (lit 2:18 1)))))
9− (mold 3:1 c
9+ (mold 3:1 d
10− (union 3:6 (const 3:9 %a) (const 3:12 %b)))
11− (mold 4:1 d
12− (fn 4:6 (aura 4:9 @t) (aura 4:12 @t))))
10+ (fn 3:6 (aura 3:9 @t) (aura 3:12 @t))))
tests/golden/lex-tight-pair-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: a pair written with spaces, `gap + %s2`
2tests: a pair written with spaces, `gap + %s2`
3expect: error at 1:12 — a pair takes no spaces, gap+%s2; after `gap ` the `+` starts no item
3expect: error at 1:12 — a pair takes no spaces, gap+%s2; after `gap ` the `+` starts no item
tests/golden/lex-tight-pair-bad-2/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: a pair whose operand is missing at the end of its line, with a definition below
2tests: a pair whose operand is missing at the end of its line, with a definition below
3expect: error at 1:8 — a pair takes its operand right after the `+`, and no later line can supply it, so the text stops being valid at the end of line 1
3expect: error at 1:8 — a pair takes its operand right after the `+`, and no later line can supply it, so the text stops being valid at the end of line 1
tests/golden/lex-tight-pair-bad-3/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: a space inside a pair, then a bad character later on the line
2tests: a space inside a pair, then a bad character later on the line
3expect: error at 1:8 — the space after `+` breaks the pair before the `%[` is reached
3expect: error at 1:8 — the space after `+` breaks the pair before the `%[` is reached
tests/golden/lex-tight-pair-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."; Literals, the Term-headed pair row: "`[%gap %s2]`, any operand after the `+`"
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."; Literals, the Term-headed pair row: "`[%gap %s2]`, any operand after the `+`"
2tests: the doc's `a+b`, then pairs whose operands are a term, a cell, a group, a unit, a list, an application path and a pair
2tests: the doc's `a+b`, then pairs whose operands are a term, a cell, a group, a unit, a list, an application path and a pair
3expect: parses: x is the pair a+b; y is a list of seven pairs, and nested+a+b nests to the right, as nested+(a+b)
3expect: parses: x is the pair a+b; y is a list of seven pairs, and nested+a+b nests to the right, as nested+(a+b)
tests/golden/lex-tight-qath-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: `% /blog`: an application path written with a space
2tests: `% /blog`: an application path written with a space
3expect: error at 1:7 — `%/` takes no space; `%` alone begins a term, a loobean or `%/`
3expect: error at 1:7 — `%/` takes no space; `%` alone begins a term, a loobean or `%/`
tests/golden/lex-tight-qath-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."; Literals, the Application path row: "`qath`, checked against routes and static files; no query or fragment"; the EBNF: `qath = "%/" [ asegment { "/" asegment } ] ;`
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."; Literals, the Application path row: "`qath`, checked against routes and static files; no query or fragment"; the EBNF: `qath = "%/" [ asegment { "/" asegment } ] ;`
2tests: the doc's `%/blog/(slug)`, the root `%/` with no segment, knots holding dots, an expression segment between knots, and an expression segment of one name
2tests: the doc's `%/blog/(slug)`, the root `%/` with no segment, knots holding dots, an expression segment between knots, and an expression segment of one name
3expect: parses
3expect: parses
tests/golden/lex-tight-unit-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: a unit written with a space, `` ` x ``
2tests: a unit written with a space, `` ` x ``
3expect: error at 1:7 — a unit takes no space: the operand follows the ` at once
3expect: error at 1:7 — a unit takes no space: the operand follows the ` at once
tests/golden/lex-tight-unit-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."; Literals, the Unit row: `` `x ``, "`(unit A)`"
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."; Literals, the Unit row: `` `x ``, "`(unit A)`"
2tests: units of a string, a cell, a unit, an application path, a group and null (the doc's `` `x `` is inline-unit)
2tests: units of a string, a cell, a unit, an application path, a group and null (the doc's `` `x `` is inline-unit)
3expect: parses as a list of six units; ``c is a unit of a unit
3expect: parses as a list of six units; ``c is a unit of a unit
tests/golden/lex-tight-wing-bad-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: a wing written with spaces, `title . p`
2tests: a wing written with spaces, `title . p`
3expect: error at 1:12 — a wing takes no spaces, title.p; after `title ` the `.` starts no item
3expect: error at 1:12 — a wing takes no spaces, title.p; after `title ` the `.` starts no item
tests/golden/lex-tight-wing-ok-1/about.txt+1−1
@@ -1,3 +1,3 @@
1−source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$?(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
1+source: Grammar tab, Lexical rules: "Tight forms: `a+b`, `a.b`, `` `x ``, `|=%got` and the openers `~[`, `|=(`, `$-(` take no spaces. A `(` right after a wing is a change: `m(note=text)` changes, `m (note text)` calls. `%/` starts an application path, `%/blog/(slug)`."
2tests: the doc's `a.b`, then wings of three names, as a call's argument, and in a mold
2tests: the doc's `a.b`, then wings of three names, as a call's argument, and in a mold
3expect: parses
3expect: parses
tests/lib/jibb.hoon+1389−1269
@@ -101,957 +101,1029 @@
101/* src-27 %jibb /tests/golden/inline-fold-mold/source/jibb
101/* src-27 %jibb /tests/golden/inline-fold-mold/source/jibb
102/* tok-27 %txt /tests/golden/inline-fold-mold/tokens/txt
102/* tok-27 %txt /tests/golden/inline-fold-mold/tokens/txt
103/* tre-27 %txt /tests/golden/inline-fold-mold/tree/txt
103/* tre-27 %txt /tests/golden/inline-fold-mold/tree/txt
104−/* src-28 %jibb /tests/golden/inline-gate-mold/source/jibb
104+/* src-28 %jibb /tests/golden/inline-gate-after-definition-bad/source/jibb
105−/* tok-28 %txt /tests/golden/inline-gate-mold/tokens/txt
105+/* tok-28 %txt /tests/golden/inline-gate-after-definition-bad/tokens/txt
106−/* tre-28 %txt /tests/golden/inline-gate-mold/tree/txt
106+/* tre-28 %txt /tests/golden/inline-gate-after-definition-bad/tree/txt
107−/* src-29 %jibb /tests/golden/inline-gate-sample-binds/source/jibb
107+/* src-29 %jibb /tests/golden/inline-gate-field-bad/source/jibb
108−/* tok-29 %txt /tests/golden/inline-gate-sample-binds/tokens/txt
108+/* tok-29 %txt /tests/golden/inline-gate-field-bad/tokens/txt
109−/* tre-29 %txt /tests/golden/inline-gate-sample-binds/tree/txt
109+/* tre-29 %txt /tests/golden/inline-gate-field-bad/tree/txt
110−/* src-30 %jibb /tests/golden/inline-gate-samples/source/jibb
110+/* src-30 %jibb /tests/golden/inline-gate-mold/source/jibb
111−/* tok-30 %txt /tests/golden/inline-gate-samples/tokens/txt
111+/* tok-30 %txt /tests/golden/inline-gate-mold/tokens/txt
112−/* tre-30 %txt /tests/golden/inline-gate-samples/tree/txt
112+/* tre-30 %txt /tests/golden/inline-gate-mold/tree/txt
113−/* src-31 %jibb /tests/golden/inline-gate-wide/source/jibb
113+/* src-31 %jibb /tests/golden/inline-gate-sample-binds/source/jibb
114−/* tok-31 %txt /tests/golden/inline-gate-wide/tokens/txt
114+/* tok-31 %txt /tests/golden/inline-gate-sample-binds/tokens/txt
115−/* tre-31 %txt /tests/golden/inline-gate-wide/tree/txt
115+/* tre-31 %txt /tests/golden/inline-gate-sample-binds/tree/txt
116−/* src-32 %jibb /tests/golden/inline-generic-mold/source/jibb
116+/* src-32 %jibb /tests/golden/inline-gate-samples/source/jibb
117−/* tok-32 %txt /tests/golden/inline-generic-mold/tokens/txt
117+/* tok-32 %txt /tests/golden/inline-gate-samples/tokens/txt
118−/* tre-32 %txt /tests/golden/inline-generic-mold/tree/txt
118+/* tre-32 %txt /tests/golden/inline-gate-samples/tree/txt
119−/* src-33 %jibb /tests/golden/inline-hex/source/jibb
119+/* src-33 %jibb /tests/golden/inline-gate-wide/source/jibb
120−/* tok-33 %txt /tests/golden/inline-hex/tokens/txt
120+/* tok-33 %txt /tests/golden/inline-gate-wide/tokens/txt
121−/* tre-33 %txt /tests/golden/inline-hex/tree/txt
121+/* tre-33 %txt /tests/golden/inline-gate-wide/tree/txt
122−/* src-34 %jibb /tests/golden/inline-import-mark-face-bad/source/jibb
122+/* src-34 %jibb /tests/golden/inline-generic-apply-bad/source/jibb
123−/* tok-34 %txt /tests/golden/inline-import-mark-face-bad/tokens/txt
123+/* tok-34 %txt /tests/golden/inline-generic-apply-bad/tokens/txt
124−/* tre-34 %txt /tests/golden/inline-import-mark-face-bad/tree/txt
124+/* tre-34 %txt /tests/golden/inline-generic-apply-bad/tree/txt
125−/* src-35 %jibb /tests/golden/inline-import-root-bad/source/jibb
125+/* src-35 %jibb /tests/golden/inline-generic-both-bad/source/jibb
126−/* tok-35 %txt /tests/golden/inline-import-root-bad/tokens/txt
126+/* tok-35 %txt /tests/golden/inline-generic-both-bad/tokens/txt
127−/* tre-35 %txt /tests/golden/inline-import-root-bad/tree/txt
127+/* tre-35 %txt /tests/golden/inline-generic-both-bad/tree/txt
128−/* src-36 %jibb /tests/golden/inline-imports-after-definition/source/jibb
128+/* src-36 %jibb /tests/golden/inline-generic-case-bad/source/jibb
129−/* tok-36 %txt /tests/golden/inline-imports-after-definition/tokens/txt
129+/* tok-36 %txt /tests/golden/inline-generic-case-bad/tokens/txt
130−/* tre-36 %txt /tests/golden/inline-imports-after-definition/tree/txt
130+/* tre-36 %txt /tests/golden/inline-generic-case-bad/tree/txt
131−/* src-37 %jibb /tests/golden/inline-island/source/jibb
131+/* src-37 %jibb /tests/golden/inline-generic-cast-bad/source/jibb
132−/* tok-37 %txt /tests/golden/inline-island/tokens/txt
132+/* tok-37 %txt /tests/golden/inline-generic-cast-bad/tokens/txt
133−/* tre-37 %txt /tests/golden/inline-island/tree/txt
133+/* tre-37 %txt /tests/golden/inline-generic-cast-bad/tree/txt
134−/* src-38 %jibb /tests/golden/inline-kinds/source/jibb
134+/* src-38 %jibb /tests/golden/inline-generic-empty-bad/source/jibb
135−/* tok-38 %txt /tests/golden/inline-kinds/tokens/txt
135+/* tok-38 %txt /tests/golden/inline-generic-empty-bad/tokens/txt
136−/* tre-38 %txt /tests/golden/inline-kinds/tree/txt
136+/* tre-38 %txt /tests/golden/inline-generic-empty-bad/tree/txt
137−/* src-39 %jibb /tests/golden/inline-knot/source/jibb
137+/* src-39 %jibb /tests/golden/inline-generic-field-bad/source/jibb
138−/* tok-39 %txt /tests/golden/inline-knot/tokens/txt
138+/* tok-39 %txt /tests/golden/inline-generic-field-bad/tokens/txt
139−/* tre-39 %txt /tests/golden/inline-knot/tree/txt
139+/* tre-39 %txt /tests/golden/inline-generic-field-bad/tree/txt
140−/* src-40 %jibb /tests/golden/inline-leftout-barcab/source/jibb
140+/* src-40 %jibb /tests/golden/inline-generic-mold/source/jibb
141−/* tok-40 %txt /tests/golden/inline-leftout-barcab/tokens/txt
141+/* tok-40 %txt /tests/golden/inline-generic-mold/tokens/txt
142−/* tre-40 %txt /tests/golden/inline-leftout-barcab/tree/txt
142+/* tre-40 %txt /tests/golden/inline-generic-mold/tree/txt
143−/* src-41 %jibb /tests/golden/inline-leftout-barcen/source/jibb
143+/* src-41 %jibb /tests/golden/inline-generic-prefix-bad/source/jibb
144−/* tok-41 %txt /tests/golden/inline-leftout-barcen/tokens/txt
144+/* tok-41 %txt /tests/golden/inline-generic-prefix-bad/tokens/txt
145−/* tre-41 %txt /tests/golden/inline-leftout-barcen/tree/txt
145+/* tre-41 %txt /tests/golden/inline-generic-prefix-bad/tree/txt
146−/* src-42 %jibb /tests/golden/inline-leftout-barcen-2/source/jibb
146+/* src-42 %jibb /tests/golden/inline-hex/source/jibb
147−/* tok-42 %txt /tests/golden/inline-leftout-barcen-2/tokens/txt
147+/* tok-42 %txt /tests/golden/inline-hex/tokens/txt
148−/* tre-42 %txt /tests/golden/inline-leftout-barcen-2/tree/txt
148+/* tre-42 %txt /tests/golden/inline-hex/tree/txt
149−/* src-43 %jibb /tests/golden/inline-leftout-barcen-3/source/jibb
149+/* src-43 %jibb /tests/golden/inline-hoon-union-apply-bad/source/jibb
150−/* tok-43 %txt /tests/golden/inline-leftout-barcen-3/tokens/txt
150+/* tok-43 %txt /tests/golden/inline-hoon-union-apply-bad/tokens/txt
151−/* tre-43 %txt /tests/golden/inline-leftout-barcen-3/tree/txt
151+/* tre-43 %txt /tests/golden/inline-hoon-union-apply-bad/tree/txt
152−/* src-44 %jibb /tests/golden/inline-leftout-barhep/source/jibb
152+/* src-44 %jibb /tests/golden/inline-hoon-union-cast-bad/source/jibb
153−/* tok-44 %txt /tests/golden/inline-leftout-barhep/tokens/txt
153+/* tok-44 %txt /tests/golden/inline-hoon-union-cast-bad/tokens/txt
154−/* tre-44 %txt /tests/golden/inline-leftout-barhep/tree/txt
154+/* tre-44 %txt /tests/golden/inline-hoon-union-cast-bad/tree/txt
155−/* src-45 %jibb /tests/golden/inline-leftout-bartar/source/jibb
155+/* src-45 %jibb /tests/golden/inline-hoon-union-definition-bad/source/jibb
156−/* tok-45 %txt /tests/golden/inline-leftout-bartar/tokens/txt
156+/* tok-45 %txt /tests/golden/inline-hoon-union-definition-bad/tokens/txt
157−/* tre-45 %txt /tests/golden/inline-leftout-bartar/tree/txt
157+/* tre-45 %txt /tests/golden/inline-hoon-union-definition-bad/tree/txt
158−/* src-46 %jibb /tests/golden/inline-leftout-buc-paren/source/jibb
158+/* src-46 %jibb /tests/golden/inline-hoon-union-field-bad/source/jibb
159−/* tok-46 %txt /tests/golden/inline-leftout-buc-paren/tokens/txt
159+/* tok-46 %txt /tests/golden/inline-hoon-union-field-bad/tokens/txt
160−/* tre-46 %txt /tests/golden/inline-leftout-buc-paren/tree/txt
160+/* tre-46 %txt /tests/golden/inline-hoon-union-field-bad/tree/txt
161−/* src-47 %jibb /tests/golden/inline-leftout-buc-paren-2/source/jibb
161+/* src-47 %jibb /tests/golden/inline-hoon-union-gate-bad/source/jibb
162−/* tok-47 %txt /tests/golden/inline-leftout-buc-paren-2/tokens/txt
162+/* tok-47 %txt /tests/golden/inline-hoon-union-gate-bad/tokens/txt
163−/* tre-47 %txt /tests/golden/inline-leftout-buc-paren-2/tree/txt
163+/* tre-47 %txt /tests/golden/inline-hoon-union-gate-bad/tree/txt
164−/* src-48 %jibb /tests/golden/inline-leftout-buc-paren-3/source/jibb
164+/* src-48 %jibb /tests/golden/inline-hoon-union-nested-sample-bad/source/jibb
165−/* tok-48 %txt /tests/golden/inline-leftout-buc-paren-3/tokens/txt
165+/* tok-48 %txt /tests/golden/inline-hoon-union-nested-sample-bad/tokens/txt
166−/* tre-48 %txt /tests/golden/inline-leftout-buc-paren-3/tree/txt
166+/* tre-48 %txt /tests/golden/inline-hoon-union-nested-sample-bad/tree/txt
167−/* src-49 %jibb /tests/golden/inline-leftout-buccen/source/jibb
167+/* src-49 %jibb /tests/golden/inline-hoon-union-open-apply-bad/source/jibb
168−/* tok-49 %txt /tests/golden/inline-leftout-buccen/tokens/txt
168+/* tok-49 %txt /tests/golden/inline-hoon-union-open-apply-bad/tokens/txt
169−/* tre-49 %txt /tests/golden/inline-leftout-buccen/tree/txt
169+/* tre-49 %txt /tests/golden/inline-hoon-union-open-apply-bad/tree/txt
170−/* src-50 %jibb /tests/golden/inline-leftout-cencol/source/jibb
170+/* src-50 %jibb /tests/golden/inline-hoon-union-open-field-bad/source/jibb
171−/* tok-50 %txt /tests/golden/inline-leftout-cencol/tokens/txt
171+/* tok-50 %txt /tests/golden/inline-hoon-union-open-field-bad/tokens/txt
172−/* tre-50 %txt /tests/golden/inline-leftout-cencol/tree/txt
172+/* tre-50 %txt /tests/golden/inline-hoon-union-open-field-bad/tree/txt
173−/* src-51 %jibb /tests/golden/inline-leftout-cenhep/source/jibb
173+/* src-51 %jibb /tests/golden/inline-hoon-union-sample-bad/source/jibb
174−/* tok-51 %txt /tests/golden/inline-leftout-cenhep/tokens/txt
174+/* tok-51 %txt /tests/golden/inline-hoon-union-sample-bad/tokens/txt
175−/* tre-51 %txt /tests/golden/inline-leftout-cenhep/tree/txt
175+/* tre-51 %txt /tests/golden/inline-hoon-union-sample-bad/tree/txt
176−/* src-52 %jibb /tests/golden/inline-leftout-centis/source/jibb
176+/* src-52 %jibb /tests/golden/inline-hoon-union-wide-sample-bad/source/jibb
177−/* tok-52 %txt /tests/golden/inline-leftout-centis/tokens/txt
177+/* tok-52 %txt /tests/golden/inline-hoon-union-wide-sample-bad/tokens/txt
178−/* tre-52 %txt /tests/golden/inline-leftout-centis/tree/txt
178+/* tre-52 %txt /tests/golden/inline-hoon-union-wide-sample-bad/tree/txt
179−/* src-53 %jibb /tests/golden/inline-leftout-colhep/source/jibb
179+/* src-53 %jibb /tests/golden/inline-import-mark-face-bad/source/jibb
180−/* tok-53 %txt /tests/golden/inline-leftout-colhep/tokens/txt
180+/* tok-53 %txt /tests/golden/inline-import-mark-face-bad/tokens/txt
181−/* tre-53 %txt /tests/golden/inline-leftout-colhep/tree/txt
181+/* tre-53 %txt /tests/golden/inline-import-mark-face-bad/tree/txt
182−/* src-54 %jibb /tests/golden/inline-leftout-colon-wing/source/jibb
182+/* src-54 %jibb /tests/golden/inline-import-root-bad/source/jibb
183−/* tok-54 %txt /tests/golden/inline-leftout-colon-wing/tokens/txt
183+/* tok-54 %txt /tests/golden/inline-import-root-bad/tokens/txt
184−/* tre-54 %txt /tests/golden/inline-leftout-colon-wing/tree/txt
184+/* tre-54 %txt /tests/golden/inline-import-root-bad/tree/txt
185−/* src-55 %jibb /tests/golden/inline-leftout-colsig/source/jibb
185+/* src-55 %jibb /tests/golden/inline-imports-after-definition/source/jibb
186−/* tok-55 %txt /tests/golden/inline-leftout-colsig/tokens/txt
186+/* tok-55 %txt /tests/golden/inline-imports-after-definition/tokens/txt
187−/* tre-55 %txt /tests/golden/inline-leftout-colsig/tree/txt
187+/* tre-55 %txt /tests/golden/inline-imports-after-definition/tree/txt
188−/* src-56 %jibb /tests/golden/inline-leftout-coltar/source/jibb
188+/* src-56 %jibb /tests/golden/inline-island/source/jibb
189−/* tok-56 %txt /tests/golden/inline-leftout-coltar/tokens/txt
189+/* tok-56 %txt /tests/golden/inline-island/tokens/txt
190−/* tre-56 %txt /tests/golden/inline-leftout-coltar/tree/txt
190+/* tre-56 %txt /tests/golden/inline-island/tree/txt
191−/* src-57 %jibb /tests/golden/inline-leftout-dottar/source/jibb
191+/* src-57 %jibb /tests/golden/inline-kinds/source/jibb
192−/* tok-57 %txt /tests/golden/inline-leftout-dottar/tokens/txt
192+/* tok-57 %txt /tests/golden/inline-kinds/tokens/txt
193−/* tre-57 %txt /tests/golden/inline-leftout-dottar/tree/txt
193+/* tre-57 %txt /tests/golden/inline-kinds/tree/txt
194−/* src-58 %jibb /tests/golden/inline-leftout-dottis/source/jibb
194+/* src-58 %jibb /tests/golden/inline-knot/source/jibb
195−/* tok-58 %txt /tests/golden/inline-leftout-dottis/tokens/txt
195+/* tok-58 %txt /tests/golden/inline-knot/tokens/txt
196−/* tre-58 %txt /tests/golden/inline-leftout-dottis/tree/txt
196+/* tre-58 %txt /tests/golden/inline-knot/tree/txt
197−/* src-59 %jibb /tests/golden/inline-leftout-faslus/source/jibb
197+/* src-59 %jibb /tests/golden/inline-leftout-barcab/source/jibb
198−/* tok-59 %txt /tests/golden/inline-leftout-faslus/tokens/txt
198+/* tok-59 %txt /tests/golden/inline-leftout-barcab/tokens/txt
199−/* tre-59 %txt /tests/golden/inline-leftout-faslus/tree/txt
199+/* tre-59 %txt /tests/golden/inline-leftout-barcab/tree/txt
200−/* src-60 %jibb /tests/golden/inline-leftout-hephep/source/jibb
200+/* src-60 %jibb /tests/golden/inline-leftout-barcen/source/jibb
201−/* tok-60 %txt /tests/golden/inline-leftout-hephep/tokens/txt
201+/* tok-60 %txt /tests/golden/inline-leftout-barcen/tokens/txt
202−/* tre-60 %txt /tests/golden/inline-leftout-hephep/tree/txt
202+/* tre-60 %txt /tests/golden/inline-leftout-barcen/tree/txt
203−/* src-61 %jibb /tests/golden/inline-leftout-kethep-wide/source/jibb
203+/* src-61 %jibb /tests/golden/inline-leftout-barcen-2/source/jibb
204−/* tok-61 %txt /tests/golden/inline-leftout-kethep-wide/tokens/txt
204+/* tok-61 %txt /tests/golden/inline-leftout-barcen-2/tokens/txt
205−/* tre-61 %txt /tests/golden/inline-leftout-kethep-wide/tree/txt
205+/* tre-61 %txt /tests/golden/inline-leftout-barcen-2/tree/txt
206−/* src-62 %jibb /tests/golden/inline-leftout-kettar/source/jibb
206+/* src-62 %jibb /tests/golden/inline-leftout-barcen-3/source/jibb
207−/* tok-62 %txt /tests/golden/inline-leftout-kettar/tokens/txt
207+/* tok-62 %txt /tests/golden/inline-leftout-barcen-3/tokens/txt
208−/* tre-62 %txt /tests/golden/inline-leftout-kettar/tree/txt
208+/* tre-62 %txt /tests/golden/inline-leftout-barcen-3/tree/txt
209−/* src-63 %jibb /tests/golden/inline-leftout-miccol/source/jibb
209+/* src-63 %jibb /tests/golden/inline-leftout-barhep/source/jibb
210−/* tok-63 %txt /tests/golden/inline-leftout-miccol/tokens/txt
210+/* tok-63 %txt /tests/golden/inline-leftout-barhep/tokens/txt
211−/* tre-63 %txt /tests/golden/inline-leftout-miccol/tree/txt
211+/* tre-63 %txt /tests/golden/inline-leftout-barhep/tree/txt
212−/* src-64 %jibb /tests/golden/inline-leftout-sail/source/jibb
212+/* src-64 %jibb /tests/golden/inline-leftout-bartar/source/jibb
213−/* tok-64 %txt /tests/golden/inline-leftout-sail/tokens/txt
213+/* tok-64 %txt /tests/golden/inline-leftout-bartar/tokens/txt
214−/* tre-64 %txt /tests/golden/inline-leftout-sail/tree/txt
214+/* tre-64 %txt /tests/golden/inline-leftout-bartar/tree/txt
215−/* src-65 %jibb /tests/golden/inline-leftout-sigbar/source/jibb
215+/* src-65 %jibb /tests/golden/inline-leftout-buc-alone/source/jibb
216−/* tok-65 %txt /tests/golden/inline-leftout-sigbar/tokens/txt
216+/* tok-65 %txt /tests/golden/inline-leftout-buc-alone/tokens/txt
217−/* tre-65 %txt /tests/golden/inline-leftout-sigbar/tree/txt
217+/* tre-65 %txt /tests/golden/inline-leftout-buc-alone/tree/txt
218−/* src-66 %jibb /tests/golden/inline-leftout-signed-float-auras/source/jibb
218+/* src-66 %jibb /tests/golden/inline-leftout-buc-paren/source/jibb
219−/* tok-66 %txt /tests/golden/inline-leftout-signed-float-auras/tokens/txt
219+/* tok-66 %txt /tests/golden/inline-leftout-buc-paren/tokens/txt
220−/* tre-66 %txt /tests/golden/inline-leftout-signed-float-auras/tree/txt
220+/* tre-66 %txt /tests/golden/inline-leftout-buc-paren/tree/txt
221−/* src-67 %jibb /tests/golden/inline-leftout-signed-float-auras-2/source/jibb
221+/* src-67 %jibb /tests/golden/inline-leftout-buc-paren-2/source/jibb
222−/* tok-67 %txt /tests/golden/inline-leftout-signed-float-auras-2/tokens/txt
222+/* tok-67 %txt /tests/golden/inline-leftout-buc-paren-2/tokens/txt
223−/* tre-67 %txt /tests/golden/inline-leftout-signed-float-auras-2/tree/txt
223+/* tre-67 %txt /tests/golden/inline-leftout-buc-paren-2/tree/txt
224−/* src-68 %jibb /tests/golden/inline-leftout-sigpam-wide/source/jibb
224+/* src-68 %jibb /tests/golden/inline-leftout-buc-paren-3/source/jibb
225−/* tok-68 %txt /tests/golden/inline-leftout-sigpam-wide/tokens/txt
225+/* tok-68 %txt /tests/golden/inline-leftout-buc-paren-3/tokens/txt
226−/* tre-68 %txt /tests/golden/inline-leftout-sigpam-wide/tree/txt
226+/* tre-68 %txt /tests/golden/inline-leftout-buc-paren-3/tree/txt
227−/* src-69 %jibb /tests/golden/inline-leftout-tis-paren/source/jibb
227+/* src-69 %jibb /tests/golden/inline-leftout-buccen/source/jibb
228−/* tok-69 %txt /tests/golden/inline-leftout-tis-paren/tokens/txt
228+/* tok-69 %txt /tests/golden/inline-leftout-buccen/tokens/txt
229−/* tre-69 %txt /tests/golden/inline-leftout-tis-paren/tree/txt
229+/* tre-69 %txt /tests/golden/inline-leftout-buccen/tree/txt
230−/* src-70 %jibb /tests/golden/inline-leftout-tisfas/source/jibb
230+/* src-70 %jibb /tests/golden/inline-leftout-cencol/source/jibb
231−/* tok-70 %txt /tests/golden/inline-leftout-tisfas/tokens/txt
231+/* tok-70 %txt /tests/golden/inline-leftout-cencol/tokens/txt
232−/* tre-70 %txt /tests/golden/inline-leftout-tisfas/tree/txt
232+/* tre-70 %txt /tests/golden/inline-leftout-cencol/tree/txt
233−/* src-71 %jibb /tests/golden/inline-leftout-tisgal/source/jibb
233+/* src-71 %jibb /tests/golden/inline-leftout-cenhep/source/jibb
234−/* tok-71 %txt /tests/golden/inline-leftout-tisgal/tokens/txt
234+/* tok-71 %txt /tests/golden/inline-leftout-cenhep/tokens/txt
235−/* tre-71 %txt /tests/golden/inline-leftout-tisgal/tree/txt
235+/* tre-71 %txt /tests/golden/inline-leftout-cenhep/tree/txt
236−/* src-72 %jibb /tests/golden/inline-leftout-tisgal-2/source/jibb
236+/* src-72 %jibb /tests/golden/inline-leftout-centis/source/jibb
237−/* tok-72 %txt /tests/golden/inline-leftout-tisgal-2/tokens/txt
237+/* tok-72 %txt /tests/golden/inline-leftout-centis/tokens/txt
238−/* tre-72 %txt /tests/golden/inline-leftout-tisgal-2/tree/txt
238+/* tre-72 %txt /tests/golden/inline-leftout-centis/tree/txt
239−/* src-73 %jibb /tests/golden/inline-leftout-tisgar/source/jibb
239+/* src-73 %jibb /tests/golden/inline-leftout-colhep/source/jibb
240−/* tok-73 %txt /tests/golden/inline-leftout-tisgar/tokens/txt
240+/* tok-73 %txt /tests/golden/inline-leftout-colhep/tokens/txt
241−/* tre-73 %txt /tests/golden/inline-leftout-tisgar/tree/txt
241+/* tre-73 %txt /tests/golden/inline-leftout-colhep/tree/txt
242−/* src-74 %jibb /tests/golden/inline-leftout-tislus/source/jibb
242+/* src-74 %jibb /tests/golden/inline-leftout-colon-wing/source/jibb
243−/* tok-74 %txt /tests/golden/inline-leftout-tislus/tokens/txt
243+/* tok-74 %txt /tests/golden/inline-leftout-colon-wing/tokens/txt
244−/* tre-74 %txt /tests/golden/inline-leftout-tislus/tree/txt
244+/* tre-74 %txt /tests/golden/inline-leftout-colon-wing/tree/txt
245−/* src-75 %jibb /tests/golden/inline-leftout-tistis/source/jibb
245+/* src-75 %jibb /tests/golden/inline-leftout-colsig/source/jibb
246−/* tok-75 %txt /tests/golden/inline-leftout-tistis/tokens/txt
246+/* tok-75 %txt /tests/golden/inline-leftout-colsig/tokens/txt
247−/* tre-75 %txt /tests/golden/inline-leftout-tistis/tree/txt
247+/* tre-75 %txt /tests/golden/inline-leftout-colsig/tree/txt
248−/* src-76 %jibb /tests/golden/inline-leftout-wutcol/source/jibb
248+/* src-76 %jibb /tests/golden/inline-leftout-coltar/source/jibb
249−/* tok-76 %txt /tests/golden/inline-leftout-wutcol/tokens/txt
249+/* tok-76 %txt /tests/golden/inline-leftout-coltar/tokens/txt
250−/* tre-76 %txt /tests/golden/inline-leftout-wutcol/tree/txt
250+/* tre-76 %txt /tests/golden/inline-leftout-coltar/tree/txt
251−/* src-77 %jibb /tests/golden/inline-leftout-wutcol-2/source/jibb
251+/* src-77 %jibb /tests/golden/inline-leftout-dottar/source/jibb
252−/* tok-77 %txt /tests/golden/inline-leftout-wutcol-2/tokens/txt
252+/* tok-77 %txt /tests/golden/inline-leftout-dottar/tokens/txt
253−/* tre-77 %txt /tests/golden/inline-leftout-wutcol-2/tree/txt
253+/* tre-77 %txt /tests/golden/inline-leftout-dottar/tree/txt
254−/* src-78 %jibb /tests/golden/inline-leftout-wuthep-wide/source/jibb
254+/* src-78 %jibb /tests/golden/inline-leftout-dottis/source/jibb
255−/* tok-78 %txt /tests/golden/inline-leftout-wuthep-wide/tokens/txt
255+/* tok-78 %txt /tests/golden/inline-leftout-dottis/tokens/txt
256−/* tre-78 %txt /tests/golden/inline-leftout-wuthep-wide/tree/txt
256+/* tre-78 %txt /tests/golden/inline-leftout-dottis/tree/txt
257−/* src-79 %jibb /tests/golden/inline-leftout-wutlus/source/jibb
257+/* src-79 %jibb /tests/golden/inline-leftout-faslus/source/jibb
258−/* tok-79 %txt /tests/golden/inline-leftout-wutlus/tokens/txt
258+/* tok-79 %txt /tests/golden/inline-leftout-faslus/tokens/txt
259−/* tre-79 %txt /tests/golden/inline-leftout-wutlus/tree/txt
259+/* tre-79 %txt /tests/golden/inline-leftout-faslus/tree/txt
260−/* src-80 %jibb /tests/golden/inline-leftout-wutsig/source/jibb
260+/* src-80 %jibb /tests/golden/inline-leftout-hephep/source/jibb
261−/* tok-80 %txt /tests/golden/inline-leftout-wutsig/tokens/txt
261+/* tok-80 %txt /tests/golden/inline-leftout-hephep/tokens/txt
262−/* tre-80 %txt /tests/golden/inline-leftout-wutsig/tree/txt
262+/* tre-80 %txt /tests/golden/inline-leftout-hephep/tree/txt
263−/* src-81 %jibb /tests/golden/inline-leftout-wutzap/source/jibb
263+/* src-81 %jibb /tests/golden/inline-leftout-kethep-wide/source/jibb
264−/* tok-81 %txt /tests/golden/inline-leftout-wutzap/tokens/txt
264+/* tok-81 %txt /tests/golden/inline-leftout-kethep-wide/tokens/txt
265−/* tre-81 %txt /tests/golden/inline-leftout-wutzap/tree/txt
265+/* tre-81 %txt /tests/golden/inline-leftout-kethep-wide/tree/txt
266−/* src-82 %jibb /tests/golden/inline-leftout-zap-not/source/jibb
266+/* src-82 %jibb /tests/golden/inline-leftout-kettar/source/jibb
267−/* tok-82 %txt /tests/golden/inline-leftout-zap-not/tokens/txt
267+/* tok-82 %txt /tests/golden/inline-leftout-kettar/tokens/txt
268−/* tre-82 %txt /tests/golden/inline-leftout-zap-not/tree/txt
268+/* tre-82 %txt /tests/golden/inline-leftout-kettar/tree/txt
269−/* src-83 %jibb /tests/golden/inline-leftout-zap-not-2/source/jibb
269+/* src-83 %jibb /tests/golden/inline-leftout-miccol/source/jibb
270−/* tok-83 %txt /tests/golden/inline-leftout-zap-not-2/tokens/txt
270+/* tok-83 %txt /tests/golden/inline-leftout-miccol/tokens/txt
271−/* tre-83 %txt /tests/golden/inline-leftout-zap-not-2/tree/txt
271+/* tre-83 %txt /tests/golden/inline-leftout-miccol/tree/txt
272−/* src-84 %jibb /tests/golden/inline-leftout-zapgar/source/jibb
272+/* src-84 %jibb /tests/golden/inline-leftout-sail/source/jibb
273−/* tok-84 %txt /tests/golden/inline-leftout-zapgar/tokens/txt
273+/* tok-84 %txt /tests/golden/inline-leftout-sail/tokens/txt
274−/* tre-84 %txt /tests/golden/inline-leftout-zapgar/tree/txt
274+/* tre-84 %txt /tests/golden/inline-leftout-sail/tree/txt
275−/* src-85 %jibb /tests/golden/inline-list/source/jibb
275+/* src-85 %jibb /tests/golden/inline-leftout-sigbar/source/jibb
276−/* tok-85 %txt /tests/golden/inline-list/tokens/txt
276+/* tok-85 %txt /tests/golden/inline-leftout-sigbar/tokens/txt
277−/* tre-85 %txt /tests/golden/inline-list/tree/txt
277+/* tre-85 %txt /tests/golden/inline-leftout-sigbar/tree/txt
278−/* src-86 %jibb /tests/golden/inline-list-parens/source/jibb
278+/* src-86 %jibb /tests/golden/inline-leftout-signed-float-auras/source/jibb
279−/* tok-86 %txt /tests/golden/inline-list-parens/tokens/txt
279+/* tok-86 %txt /tests/golden/inline-leftout-signed-float-auras/tokens/txt
280−/* tre-86 %txt /tests/golden/inline-list-parens/tree/txt
280+/* tre-86 %txt /tests/golden/inline-leftout-signed-float-auras/tree/txt
281−/* src-87 %jibb /tests/golden/inline-literal-defaults/source/jibb
281+/* src-87 %jibb /tests/golden/inline-leftout-signed-float-auras-2/source/jibb
282−/* tok-87 %txt /tests/golden/inline-literal-defaults/tokens/txt
282+/* tok-87 %txt /tests/golden/inline-leftout-signed-float-auras-2/tokens/txt
283−/* tre-87 %txt /tests/golden/inline-literal-defaults/tree/txt
283+/* tre-87 %txt /tests/golden/inline-leftout-signed-float-auras-2/tree/txt
284−/* src-88 %jibb /tests/golden/inline-load-slug/source/jibb
284+/* src-88 %jibb /tests/golden/inline-leftout-sigpam-wide/source/jibb
285−/* tok-88 %txt /tests/golden/inline-load-slug/tokens/txt
285+/* tok-88 %txt /tests/golden/inline-leftout-sigpam-wide/tokens/txt
286−/* tre-88 %txt /tests/golden/inline-load-slug/tree/txt
286+/* tre-88 %txt /tests/golden/inline-leftout-sigpam-wide/tree/txt
287−/* src-89 %jibb /tests/golden/inline-local-names/source/jibb
287+/* src-89 %jibb /tests/golden/inline-leftout-tis-paren/source/jibb
288−/* tok-89 %txt /tests/golden/inline-local-names/tokens/txt
288+/* tok-89 %txt /tests/golden/inline-leftout-tis-paren/tokens/txt
289−/* tre-89 %txt /tests/golden/inline-local-names/tree/txt
289+/* tre-89 %txt /tests/golden/inline-leftout-tis-paren/tree/txt
290−/* src-90 %jibb /tests/golden/inline-local-names-bodies/source/jibb
290+/* src-90 %jibb /tests/golden/inline-leftout-tisfas/source/jibb
291−/* tok-90 %txt /tests/golden/inline-local-names-bodies/tokens/txt
291+/* tok-90 %txt /tests/golden/inline-leftout-tisfas/tokens/txt
292−/* tre-90 %txt /tests/golden/inline-local-names-bodies/tree/txt
292+/* tre-90 %txt /tests/golden/inline-leftout-tisfas/tree/txt
293−/* src-91 %jibb /tests/golden/inline-loobean/source/jibb
293+/* src-91 %jibb /tests/golden/inline-leftout-tisgal/source/jibb
294−/* tok-91 %txt /tests/golden/inline-loobean/tokens/txt
294+/* tok-91 %txt /tests/golden/inline-leftout-tisgal/tokens/txt
295−/* tre-91 %txt /tests/golden/inline-loobean/tree/txt
295+/* tre-91 %txt /tests/golden/inline-leftout-tisgal/tree/txt
296−/* src-92 %jibb /tests/golden/inline-mark-digit/source/jibb
296+/* src-92 %jibb /tests/golden/inline-leftout-tisgal-2/source/jibb
297−/* tok-92 %txt /tests/golden/inline-mark-digit/tokens/txt
297+/* tok-92 %txt /tests/golden/inline-leftout-tisgal-2/tokens/txt
298−/* tre-92 %txt /tests/golden/inline-mark-digit/tree/txt
298+/* tre-92 %txt /tests/golden/inline-leftout-tisgal-2/tree/txt
299−/* src-93 %jibb /tests/golden/inline-module-definitions/source/jibb
299+/* src-93 %jibb /tests/golden/inline-leftout-tisgar/source/jibb
300−/* tok-93 %txt /tests/golden/inline-module-definitions/tokens/txt
300+/* tok-93 %txt /tests/golden/inline-leftout-tisgar/tokens/txt
301−/* tre-93 %txt /tests/golden/inline-module-definitions/tree/txt
301+/* tre-93 %txt /tests/golden/inline-leftout-tisgar/tree/txt
302−/* src-94 %jibb /tests/golden/inline-mold-add/source/jibb
302+/* src-94 %jibb /tests/golden/inline-leftout-tislus/source/jibb
303−/* tok-94 %txt /tests/golden/inline-mold-add/tokens/txt
303+/* tok-94 %txt /tests/golden/inline-leftout-tislus/tokens/txt
304−/* tre-94 %txt /tests/golden/inline-mold-add/tree/txt
304+/* tre-94 %txt /tests/golden/inline-leftout-tislus/tree/txt
305−/* src-95 %jibb /tests/golden/inline-mold-any-empty/source/jibb
305+/* src-95 %jibb /tests/golden/inline-leftout-tistis/source/jibb
306−/* tok-95 %txt /tests/golden/inline-mold-any-empty/tokens/txt
306+/* tok-95 %txt /tests/golden/inline-leftout-tistis/tokens/txt
307−/* tre-95 %txt /tests/golden/inline-mold-any-empty/tree/txt
307+/* tre-95 %txt /tests/golden/inline-leftout-tistis/tree/txt
308−/* src-96 %jibb /tests/golden/inline-mold-atoms/source/jibb
308+/* src-96 %jibb /tests/golden/inline-leftout-wutcol/source/jibb
309−/* tok-96 %txt /tests/golden/inline-mold-atoms/tokens/txt
309+/* tok-96 %txt /tests/golden/inline-leftout-wutcol/tokens/txt
310−/* tre-96 %txt /tests/golden/inline-mold-atoms/tree/txt
310+/* tre-96 %txt /tests/golden/inline-leftout-wutcol/tree/txt
311−/* src-97 %jibb /tests/golden/inline-mold-constants/source/jibb
311+/* src-97 %jibb /tests/golden/inline-leftout-wutcol-2/source/jibb
312−/* tok-97 %txt /tests/golden/inline-mold-constants/tokens/txt
312+/* tok-97 %txt /tests/golden/inline-leftout-wutcol-2/tokens/txt
313−/* tre-97 %txt /tests/golden/inline-mold-constants/tree/txt
313+/* tre-97 %txt /tests/golden/inline-leftout-wutcol-2/tree/txt
314−/* src-98 %jibb /tests/golden/inline-mold-containers/source/jibb
314+/* src-98 %jibb /tests/golden/inline-leftout-wuthep-wide/source/jibb
315−/* tok-98 %txt /tests/golden/inline-mold-containers/tokens/txt
315+/* tok-98 %txt /tests/golden/inline-leftout-wuthep-wide/tokens/txt
316−/* tre-98 %txt /tests/golden/inline-mold-containers/tree/txt
316+/* tre-98 %txt /tests/golden/inline-leftout-wuthep-wide/tree/txt
317−/* src-99 %jibb /tests/golden/inline-mold-gate/source/jibb
317+/* src-99 %jibb /tests/golden/inline-leftout-wutlus/source/jibb
318−/* tok-99 %txt /tests/golden/inline-mold-gate/tokens/txt
318+/* tok-99 %txt /tests/golden/inline-leftout-wutlus/tokens/txt
319−/* tre-99 %txt /tests/golden/inline-mold-gate/tree/txt
319+/* tre-99 %txt /tests/golden/inline-leftout-wutlus/tree/txt
320−/* src-100 %jibb /tests/golden/inline-mold-generic/source/jibb
320+/* src-100 %jibb /tests/golden/inline-leftout-wutsig/source/jibb
321−/* tok-100 %txt /tests/golden/inline-mold-generic/tokens/txt
321+/* tok-100 %txt /tests/golden/inline-leftout-wutsig/tokens/txt
322−/* tre-100 %txt /tests/golden/inline-mold-generic/tree/txt
322+/* tre-100 %txt /tests/golden/inline-leftout-wutsig/tree/txt
323−/* src-101 %jibb /tests/golden/inline-mold-opaque/source/jibb
323+/* src-101 %jibb /tests/golden/inline-leftout-wutzap/source/jibb
324−/* tok-101 %txt /tests/golden/inline-mold-opaque/tokens/txt
324+/* tok-101 %txt /tests/golden/inline-leftout-wutzap/tokens/txt
325−/* tre-101 %txt /tests/golden/inline-mold-opaque/tree/txt
325+/* tre-101 %txt /tests/golden/inline-leftout-wutzap/tree/txt
326−/* src-102 %jibb /tests/golden/inline-mold-paths/source/jibb
326+/* src-102 %jibb /tests/golden/inline-leftout-zap-not/source/jibb
327−/* tok-102 %txt /tests/golden/inline-mold-paths/tokens/txt
327+/* tok-102 %txt /tests/golden/inline-leftout-zap-not/tokens/txt
328−/* tre-102 %txt /tests/golden/inline-mold-paths/tree/txt
328+/* tre-102 %txt /tests/golden/inline-leftout-zap-not/tree/txt
329−/* src-103 %jibb /tests/golden/inline-mold-records/source/jibb
329+/* src-103 %jibb /tests/golden/inline-leftout-zap-not-2/source/jibb
330−/* tok-103 %txt /tests/golden/inline-mold-records/tokens/txt
330+/* tok-103 %txt /tests/golden/inline-leftout-zap-not-2/tokens/txt
331−/* tre-103 %txt /tests/golden/inline-mold-records/tree/txt
331+/* tre-103 %txt /tests/golden/inline-leftout-zap-not-2/tree/txt
332−/* src-104 %jibb /tests/golden/inline-namespaces/source/jibb
332+/* src-104 %jibb /tests/golden/inline-leftout-zapgar/source/jibb
333−/* tok-104 %txt /tests/golden/inline-namespaces/tokens/txt
333+/* tok-104 %txt /tests/golden/inline-leftout-zapgar/tokens/txt
334−/* tre-104 %txt /tests/golden/inline-namespaces/tree/txt
334+/* tre-104 %txt /tests/golden/inline-leftout-zapgar/tree/txt
335−/* src-105 %jibb /tests/golden/inline-no-operators/source/jibb
335+/* src-105 %jibb /tests/golden/inline-list/source/jibb
336−/* tok-105 %txt /tests/golden/inline-no-operators/tokens/txt
336+/* tok-105 %txt /tests/golden/inline-list/tokens/txt
337−/* tre-105 %txt /tests/golden/inline-no-operators/tree/txt
337+/* tre-105 %txt /tests/golden/inline-list/tree/txt
338−/* src-106 %jibb /tests/golden/inline-no-subs/source/jibb
338+/* src-106 %jibb /tests/golden/inline-list-parens/source/jibb
339−/* tok-106 %txt /tests/golden/inline-no-subs/tokens/txt
339+/* tok-106 %txt /tests/golden/inline-list-parens/tokens/txt
340−/* tre-106 %txt /tests/golden/inline-no-subs/tree/txt
340+/* tre-106 %txt /tests/golden/inline-list-parens/tree/txt
341−/* src-107 %jibb /tests/golden/inline-null/source/jibb
341+/* src-107 %jibb /tests/golden/inline-literal-defaults/source/jibb
342−/* tok-107 %txt /tests/golden/inline-null/tokens/txt
342+/* tok-107 %txt /tests/golden/inline-literal-defaults/tokens/txt
343−/* tre-107 %txt /tests/golden/inline-null/tree/txt
343+/* tre-107 %txt /tests/golden/inline-literal-defaults/tree/txt
344−/* src-108 %jibb /tests/golden/inline-pair/source/jibb
344+/* src-108 %jibb /tests/golden/inline-load-slug/source/jibb
345−/* tok-108 %txt /tests/golden/inline-pair/tokens/txt
345+/* tok-108 %txt /tests/golden/inline-load-slug/tokens/txt
346−/* tre-108 %txt /tests/golden/inline-pair/tree/txt
346+/* tre-108 %txt /tests/golden/inline-load-slug/tree/txt
347−/* src-109 %jibb /tests/golden/inline-pairs-two-items/source/jibb
347+/* src-109 %jibb /tests/golden/inline-local-names/source/jibb
348−/* tok-109 %txt /tests/golden/inline-pairs-two-items/tokens/txt
348+/* tok-109 %txt /tests/golden/inline-local-names/tokens/txt
349−/* tre-109 %txt /tests/golden/inline-pairs-two-items/tree/txt
349+/* tre-109 %txt /tests/golden/inline-local-names/tree/txt
350−/* src-110 %jibb /tests/golden/inline-path/source/jibb
350+/* src-110 %jibb /tests/golden/inline-local-names-bodies/source/jibb
351−/* tok-110 %txt /tests/golden/inline-path/tokens/txt
351+/* tok-110 %txt /tests/golden/inline-local-names-bodies/tokens/txt
352−/* tre-110 %txt /tests/golden/inline-path/tree/txt
352+/* tre-110 %txt /tests/golden/inline-local-names-bodies/tree/txt
353−/* src-111 %jibb /tests/golden/inline-pattern-any/source/jibb
353+/* src-111 %jibb /tests/golden/inline-loobean/source/jibb
354−/* tok-111 %txt /tests/golden/inline-pattern-any/tokens/txt
354+/* tok-111 %txt /tests/golden/inline-loobean/tokens/txt
355−/* tre-111 %txt /tests/golden/inline-pattern-any/tree/txt
355+/* tre-111 %txt /tests/golden/inline-loobean/tree/txt
356−/* src-112 %jibb /tests/golden/inline-pattern-cell/source/jibb
356+/* src-112 %jibb /tests/golden/inline-mark-digit/source/jibb
357−/* tok-112 %txt /tests/golden/inline-pattern-cell/tokens/txt
357+/* tok-112 %txt /tests/golden/inline-mark-digit/tokens/txt
358−/* tre-112 %txt /tests/golden/inline-pattern-cell/tree/txt
358+/* tre-112 %txt /tests/golden/inline-mark-digit/tree/txt
359−/* src-113 %jibb /tests/golden/inline-pattern-cell-open-bad/source/jibb
359+/* src-113 %jibb /tests/golden/inline-module-definitions/source/jibb
360−/* tok-113 %txt /tests/golden/inline-pattern-cell-open-bad/tokens/txt
360+/* tok-113 %txt /tests/golden/inline-module-definitions/tokens/txt
361−/* tre-113 %txt /tests/golden/inline-pattern-cell-open-bad/tree/txt
361+/* tre-113 %txt /tests/golden/inline-module-definitions/tree/txt
362−/* src-114 %jibb /tests/golden/inline-pattern-crash-arm/source/jibb
362+/* src-114 %jibb /tests/golden/inline-mold-add/source/jibb
363−/* tok-114 %txt /tests/golden/inline-pattern-crash-arm/tokens/txt
363+/* tok-114 %txt /tests/golden/inline-mold-add/tokens/txt
364−/* tre-114 %txt /tests/golden/inline-pattern-crash-arm/tree/txt
364+/* tre-114 %txt /tests/golden/inline-mold-add/tree/txt
365−/* src-115 %jibb /tests/golden/inline-pattern-crash-bad/source/jibb
365+/* src-115 %jibb /tests/golden/inline-mold-any-empty/source/jibb
366−/* tok-115 %txt /tests/golden/inline-pattern-crash-bad/tokens/txt
366+/* tok-115 %txt /tests/golden/inline-mold-any-empty/tokens/txt
367−/* tre-115 %txt /tests/golden/inline-pattern-crash-bad/tree/txt
367+/* tre-115 %txt /tests/golden/inline-mold-any-empty/tree/txt
368−/* src-116 %jibb /tests/golden/inline-pattern-date-bad/source/jibb
368+/* src-116 %jibb /tests/golden/inline-mold-atoms/source/jibb
369−/* tok-116 %txt /tests/golden/inline-pattern-date-bad/tokens/txt
369+/* tok-116 %txt /tests/golden/inline-mold-atoms/tokens/txt
370−/* tre-116 %txt /tests/golden/inline-pattern-date-bad/tree/txt
370+/* tre-116 %txt /tests/golden/inline-mold-atoms/tree/txt
371−/* src-117 %jibb /tests/golden/inline-pattern-duration-bad/source/jibb
371+/* src-117 %jibb /tests/golden/inline-mold-constants/source/jibb
372−/* tok-117 %txt /tests/golden/inline-pattern-duration-bad/tokens/txt
372+/* tok-117 %txt /tests/golden/inline-mold-constants/tokens/txt
373−/* tre-117 %txt /tests/golden/inline-pattern-duration-bad/tree/txt
373+/* tre-117 %txt /tests/golden/inline-mold-constants/tree/txt
374−/* src-118 %jibb /tests/golden/inline-pattern-eq/source/jibb
374+/* src-118 %jibb /tests/golden/inline-mold-containers/source/jibb
375−/* tok-118 %txt /tests/golden/inline-pattern-eq/tokens/txt
375+/* tok-118 %txt /tests/golden/inline-mold-containers/tokens/txt
376−/* tre-118 %txt /tests/golden/inline-pattern-eq/tree/txt
376+/* tre-118 %txt /tests/golden/inline-mold-containers/tree/txt
377−/* src-119 %jibb /tests/golden/inline-pattern-face-bad/source/jibb
377+/* src-119 %jibb /tests/golden/inline-mold-gate/source/jibb
378−/* tok-119 %txt /tests/golden/inline-pattern-face-bad/tokens/txt
378+/* tok-119 %txt /tests/golden/inline-mold-gate/tokens/txt
379−/* tre-119 %txt /tests/golden/inline-pattern-face-bad/tree/txt
379+/* tre-119 %txt /tests/golden/inline-mold-gate/tree/txt
380−/* src-120 %jibb /tests/golden/inline-pattern-head-tag/source/jibb
380+/* src-120 %jibb /tests/golden/inline-mold-generic/source/jibb
381−/* tok-120 %txt /tests/golden/inline-pattern-head-tag/tokens/txt
381+/* tok-120 %txt /tests/golden/inline-mold-generic/tokens/txt
382−/* tre-120 %txt /tests/golden/inline-pattern-head-tag/tree/txt
382+/* tre-120 %txt /tests/golden/inline-mold-generic/tree/txt
383−/* src-121 %jibb /tests/golden/inline-pattern-interpolated-bad/source/jibb
383+/* src-121 %jibb /tests/golden/inline-mold-opaque/source/jibb
384−/* tok-121 %txt /tests/golden/inline-pattern-interpolated-bad/tokens/txt
384+/* tok-121 %txt /tests/golden/inline-mold-opaque/tokens/txt
385−/* tre-121 %txt /tests/golden/inline-pattern-interpolated-bad/tree/txt
385+/* tre-121 %txt /tests/golden/inline-mold-opaque/tree/txt
386−/* src-122 %jibb /tests/golden/inline-pattern-list-bad/source/jibb
386+/* src-122 %jibb /tests/golden/inline-mold-paths/source/jibb
387−/* tok-122 %txt /tests/golden/inline-pattern-list-bad/tokens/txt
387+/* tok-122 %txt /tests/golden/inline-mold-paths/tokens/txt
388−/* tre-122 %txt /tests/golden/inline-pattern-list-bad/tree/txt
388+/* tre-122 %txt /tests/golden/inline-mold-paths/tree/txt
389−/* src-123 %jibb /tests/golden/inline-pattern-literals/source/jibb
389+/* src-123 %jibb /tests/golden/inline-mold-records/source/jibb
390−/* tok-123 %txt /tests/golden/inline-pattern-literals/tokens/txt
390+/* tok-123 %txt /tests/golden/inline-mold-records/tokens/txt
391−/* tre-123 %txt /tests/golden/inline-pattern-literals/tree/txt
391+/* tre-123 %txt /tests/golden/inline-mold-records/tree/txt
392−/* src-124 %jibb /tests/golden/inline-pattern-loobean/source/jibb
392+/* src-124 %jibb /tests/golden/inline-namespaces/source/jibb
393−/* tok-124 %txt /tests/golden/inline-pattern-loobean/tokens/txt
393+/* tok-124 %txt /tests/golden/inline-namespaces/tokens/txt
394−/* tre-124 %txt /tests/golden/inline-pattern-loobean/tree/txt
394+/* tre-124 %txt /tests/golden/inline-namespaces/tree/txt
395−/* src-125 %jibb /tests/golden/inline-pattern-move-any/source/jibb
395+/* src-125 %jibb /tests/golden/inline-no-operators/source/jibb
396−/* tok-125 %txt /tests/golden/inline-pattern-move-any/tokens/txt
396+/* tok-125 %txt /tests/golden/inline-no-operators/tokens/txt
397−/* tre-125 %txt /tests/golden/inline-pattern-move-any/tree/txt
397+/* tre-125 %txt /tests/golden/inline-no-operators/tree/txt
398−/* src-126 %jibb /tests/golden/inline-pattern-name/source/jibb
398+/* src-126 %jibb /tests/golden/inline-no-subs/source/jibb
399−/* tok-126 %txt /tests/golden/inline-pattern-name/tokens/txt
399+/* tok-126 %txt /tests/golden/inline-no-subs/tokens/txt
400−/* tre-126 %txt /tests/golden/inline-pattern-name/tree/txt
400+/* tre-126 %txt /tests/golden/inline-no-subs/tree/txt
401−/* src-127 %jibb /tests/golden/inline-pattern-null/source/jibb
401+/* src-127 %jibb /tests/golden/inline-null/source/jibb
402−/* tok-127 %txt /tests/golden/inline-pattern-null/tokens/txt
402+/* tok-127 %txt /tests/golden/inline-null/tokens/txt
403−/* tre-127 %txt /tests/golden/inline-pattern-null/tree/txt
403+/* tre-127 %txt /tests/golden/inline-null/tree/txt
404−/* src-128 %jibb /tests/golden/inline-pattern-pair-bad/source/jibb
404+/* src-128 %jibb /tests/golden/inline-pair/source/jibb
405−/* tok-128 %txt /tests/golden/inline-pattern-pair-bad/tokens/txt
405+/* tok-128 %txt /tests/golden/inline-pair/tokens/txt
406−/* tre-128 %txt /tests/golden/inline-pattern-pair-bad/tree/txt
406+/* tre-128 %txt /tests/golden/inline-pair/tree/txt
407−/* src-129 %jibb /tests/golden/inline-pattern-tail-tag/source/jibb
407+/* src-129 %jibb /tests/golden/inline-pairs-two-items/source/jibb
408−/* tok-129 %txt /tests/golden/inline-pattern-tail-tag/tokens/txt
408+/* tok-129 %txt /tests/golden/inline-pairs-two-items/tokens/txt
409−/* tre-129 %txt /tests/golden/inline-pattern-tail-tag/tree/txt
409+/* tre-129 %txt /tests/golden/inline-pairs-two-items/tree/txt
410−/* src-130 %jibb /tests/golden/inline-pattern-term/source/jibb
410+/* src-130 %jibb /tests/golden/inline-path/source/jibb
411−/* tok-130 %txt /tests/golden/inline-pattern-term/tokens/txt
411+/* tok-130 %txt /tests/golden/inline-path/tokens/txt
412−/* tre-130 %txt /tests/golden/inline-pattern-term/tree/txt
412+/* tre-130 %txt /tests/golden/inline-path/tree/txt
413−/* src-131 %jibb /tests/golden/inline-pattern-two-tags/source/jibb
413+/* src-131 %jibb /tests/golden/inline-pattern-any/source/jibb
414−/* tok-131 %txt /tests/golden/inline-pattern-two-tags/tokens/txt
414+/* tok-131 %txt /tests/golden/inline-pattern-any/tokens/txt
415−/* tre-131 %txt /tests/golden/inline-pattern-two-tags/tree/txt
415+/* tre-131 %txt /tests/golden/inline-pattern-any/tree/txt
416−/* src-132 %jibb /tests/golden/inline-pattern-unit/source/jibb
416+/* src-132 %jibb /tests/golden/inline-pattern-cell/source/jibb
417−/* tok-132 %txt /tests/golden/inline-pattern-unit/tokens/txt
417+/* tok-132 %txt /tests/golden/inline-pattern-cell/tokens/txt
418−/* tre-132 %txt /tests/golden/inline-pattern-unit/tree/txt
418+/* tre-132 %txt /tests/golden/inline-pattern-cell/tree/txt
419−/* src-133 %jibb /tests/golden/inline-qath/source/jibb
419+/* src-133 %jibb /tests/golden/inline-pattern-cell-open-bad/source/jibb
420−/* tok-133 %txt /tests/golden/inline-qath/tokens/txt
420+/* tok-133 %txt /tests/golden/inline-pattern-cell-open-bad/tokens/txt
421−/* tre-133 %txt /tests/golden/inline-qath/tree/txt
421+/* tre-133 %txt /tests/golden/inline-pattern-cell-open-bad/tree/txt
422−/* src-134 %jibb /tests/golden/inline-requests/source/jibb
422+/* src-134 %jibb /tests/golden/inline-pattern-crash-arm/source/jibb
423−/* tok-134 %txt /tests/golden/inline-requests/tokens/txt
423+/* tok-134 %txt /tests/golden/inline-pattern-crash-arm/tokens/txt
424−/* tre-134 %txt /tests/golden/inline-requests/tree/txt
424+/* tre-134 %txt /tests/golden/inline-pattern-crash-arm/tree/txt
425−/* src-135 %jibb /tests/golden/inline-scry-case/source/jibb
425+/* src-135 %jibb /tests/golden/inline-pattern-crash-bad/source/jibb
426−/* tok-135 %txt /tests/golden/inline-scry-case/tokens/txt
426+/* tok-135 %txt /tests/golden/inline-pattern-crash-bad/tokens/txt
427−/* tre-135 %txt /tests/golden/inline-scry-case/tree/txt
427+/* tre-135 %txt /tests/golden/inline-pattern-crash-bad/tree/txt
428−/* src-136 %jibb /tests/golden/inline-self-reference/source/jibb
428+/* src-136 %jibb /tests/golden/inline-pattern-date-bad/source/jibb
429−/* tok-136 %txt /tests/golden/inline-self-reference/tokens/txt
429+/* tok-136 %txt /tests/golden/inline-pattern-date-bad/tokens/txt
430−/* tre-136 %txt /tests/golden/inline-self-reference/tree/txt
430+/* tre-136 %txt /tests/golden/inline-pattern-date-bad/tree/txt
431−/* src-137 %jibb /tests/golden/inline-ship/source/jibb
431+/* src-137 %jibb /tests/golden/inline-pattern-duration-bad/source/jibb
432−/* tok-137 %txt /tests/golden/inline-ship/tokens/txt
432+/* tok-137 %txt /tests/golden/inline-pattern-duration-bad/tokens/txt
433−/* tre-137 %txt /tests/golden/inline-ship/tree/txt
433+/* tre-137 %txt /tests/golden/inline-pattern-duration-bad/tree/txt
434−/* src-138 %jibb /tests/golden/inline-static-image/source/jibb
434+/* src-138 %jibb /tests/golden/inline-pattern-eq/source/jibb
435−/* tok-138 %txt /tests/golden/inline-static-image/tokens/txt
435+/* tok-138 %txt /tests/golden/inline-pattern-eq/tokens/txt
436−/* tre-138 %txt /tests/golden/inline-static-image/tree/txt
436+/* tre-138 %txt /tests/golden/inline-pattern-eq/tree/txt
437−/* src-139 %jibb /tests/golden/inline-string/source/jibb
437+/* src-139 %jibb /tests/golden/inline-pattern-face-bad/source/jibb
438−/* tok-139 %txt /tests/golden/inline-string/tokens/txt
438+/* tok-139 %txt /tests/golden/inline-pattern-face-bad/tokens/txt
439−/* tre-139 %txt /tests/golden/inline-string/tree/txt
439+/* tre-139 %txt /tests/golden/inline-pattern-face-bad/tree/txt
440−/* src-140 %jibb /tests/golden/inline-tag-shape/source/jibb
440+/* src-140 %jibb /tests/golden/inline-pattern-head-tag/source/jibb
441−/* tok-140 %txt /tests/golden/inline-tag-shape/tokens/txt
441+/* tok-140 %txt /tests/golden/inline-pattern-head-tag/tokens/txt
442−/* tre-140 %txt /tests/golden/inline-tag-shape/tree/txt
442+/* tre-140 %txt /tests/golden/inline-pattern-head-tag/tree/txt
443−/* src-141 %jibb /tests/golden/inline-term/source/jibb
443+/* src-141 %jibb /tests/golden/inline-pattern-interpolated-bad/source/jibb
444−/* tok-141 %txt /tests/golden/inline-term/tokens/txt
444+/* tok-141 %txt /tests/golden/inline-pattern-interpolated-bad/tokens/txt
445−/* tre-141 %txt /tests/golden/inline-term/tree/txt
445+/* tre-141 %txt /tests/golden/inline-pattern-interpolated-bad/tree/txt
446−/* src-142 %jibb /tests/golden/inline-term-numeric/source/jibb
446+/* src-142 %jibb /tests/golden/inline-pattern-list-bad/source/jibb
447−/* tok-142 %txt /tests/golden/inline-term-numeric/tokens/txt
447+/* tok-142 %txt /tests/golden/inline-pattern-list-bad/tokens/txt
448−/* tre-142 %txt /tests/golden/inline-term-numeric/tree/txt
448+/* tre-142 %txt /tests/golden/inline-pattern-list-bad/tree/txt
449−/* src-143 %jibb /tests/golden/inline-text-items/source/jibb
449+/* src-143 %jibb /tests/golden/inline-pattern-literals/source/jibb
450−/* tok-143 %txt /tests/golden/inline-text-items/tokens/txt
450+/* tok-143 %txt /tests/golden/inline-pattern-literals/tokens/txt
451−/* tre-143 %txt /tests/golden/inline-text-items/tree/txt
451+/* tre-143 %txt /tests/golden/inline-pattern-literals/tree/txt
452−/* src-144 %jibb /tests/golden/inline-union-wide/source/jibb
452+/* src-144 %jibb /tests/golden/inline-pattern-loobean/source/jibb
453−/* tok-144 %txt /tests/golden/inline-union-wide/tokens/txt
453+/* tok-144 %txt /tests/golden/inline-pattern-loobean/tokens/txt
454−/* tre-144 %txt /tests/golden/inline-union-wide/tree/txt
454+/* tre-144 %txt /tests/golden/inline-pattern-loobean/tree/txt
455−/* src-145 %jibb /tests/golden/inline-unit/source/jibb
455+/* src-145 %jibb /tests/golden/inline-pattern-move-any/source/jibb
456−/* tok-145 %txt /tests/golden/inline-unit/tokens/txt
456+/* tok-145 %txt /tests/golden/inline-pattern-move-any/tokens/txt
457−/* tre-145 %txt /tests/golden/inline-unit/tree/txt
457+/* tre-145 %txt /tests/golden/inline-pattern-move-any/tree/txt
458−/* src-146 %jibb /tests/golden/inline-wide-form-rune-bad/source/jibb
458+/* src-146 %jibb /tests/golden/inline-pattern-name/source/jibb
459−/* tok-146 %txt /tests/golden/inline-wide-form-rune-bad/tokens/txt
459+/* tok-146 %txt /tests/golden/inline-pattern-name/tokens/txt
460−/* tre-146 %txt /tests/golden/inline-wide-form-rune-bad/tree/txt
460+/* tre-146 %txt /tests/golden/inline-pattern-name/tree/txt
461−/* src-147 %jibb /tests/golden/inline-wide-forms/source/jibb
461+/* src-147 %jibb /tests/golden/inline-pattern-null/source/jibb
462−/* tok-147 %txt /tests/golden/inline-wide-forms/tokens/txt
462+/* tok-147 %txt /tests/golden/inline-pattern-null/tokens/txt
463−/* tre-147 %txt /tests/golden/inline-wide-forms/tree/txt
463+/* tre-147 %txt /tests/golden/inline-pattern-null/tree/txt
464−/* src-148 %jibb /tests/golden/inline-wide-union-call/source/jibb
464+/* src-148 %jibb /tests/golden/inline-pattern-pair-bad/source/jibb
465−/* tok-148 %txt /tests/golden/inline-wide-union-call/tokens/txt
465+/* tok-148 %txt /tests/golden/inline-pattern-pair-bad/tokens/txt
466−/* tre-148 %txt /tests/golden/inline-wide-union-call/tree/txt
466+/* tre-148 %txt /tests/golden/inline-pattern-pair-bad/tree/txt
467−/* src-149 %jibb /tests/golden/inline-wings/source/jibb
467+/* src-149 %jibb /tests/golden/inline-pattern-tail-tag/source/jibb
468−/* tok-149 %txt /tests/golden/inline-wings/tokens/txt
468+/* tok-149 %txt /tests/golden/inline-pattern-tail-tag/tokens/txt
469−/* tre-149 %txt /tests/golden/inline-wings/tree/txt
469+/* tre-149 %txt /tests/golden/inline-pattern-tail-tag/tree/txt
470−/* src-150 %jibb /tests/golden/lex-base32-bad-1/source/jibb
470+/* src-150 %jibb /tests/golden/inline-pattern-term/source/jibb
471−/* tok-150 %txt /tests/golden/lex-base32-bad-1/tokens/txt
471+/* tok-150 %txt /tests/golden/inline-pattern-term/tokens/txt
472−/* tre-150 %txt /tests/golden/lex-base32-bad-1/tree/txt
472+/* tre-150 %txt /tests/golden/inline-pattern-term/tree/txt
473−/* src-151 %jibb /tests/golden/lex-base32-ok-1/source/jibb
473+/* src-151 %jibb /tests/golden/inline-pattern-two-tags/source/jibb
474−/* tok-151 %txt /tests/golden/lex-base32-ok-1/tokens/txt
474+/* tok-151 %txt /tests/golden/inline-pattern-two-tags/tokens/txt
475−/* tre-151 %txt /tests/golden/lex-base32-ok-1/tree/txt
475+/* tre-151 %txt /tests/golden/inline-pattern-two-tags/tree/txt
476−/* src-152 %jibb /tests/golden/lex-blob-bad-1/source/jibb
476+/* src-152 %jibb /tests/golden/inline-pattern-unit/source/jibb
477−/* tok-152 %txt /tests/golden/lex-blob-bad-1/tokens/txt
477+/* tok-152 %txt /tests/golden/inline-pattern-unit/tokens/txt
478−/* tre-152 %txt /tests/golden/lex-blob-bad-1/tree/txt
478+/* tre-152 %txt /tests/golden/inline-pattern-unit/tree/txt
479−/* src-153 %jibb /tests/golden/lex-call-open-bad-1/source/jibb
479+/* src-153 %jibb /tests/golden/inline-qath/source/jibb
480−/* tok-153 %txt /tests/golden/lex-call-open-bad-1/tokens/txt
480+/* tok-153 %txt /tests/golden/inline-qath/tokens/txt
481−/* tre-153 %txt /tests/golden/lex-call-open-bad-1/tree/txt
481+/* tre-153 %txt /tests/golden/inline-qath/tree/txt
482−/* src-154 %jibb /tests/golden/lex-call-open-bad-2/source/jibb
482+/* src-154 %jibb /tests/golden/inline-requests/source/jibb
483−/* tok-154 %txt /tests/golden/lex-call-open-bad-2/tokens/txt
483+/* tok-154 %txt /tests/golden/inline-requests/tokens/txt
484−/* tre-154 %txt /tests/golden/lex-call-open-bad-2/tree/txt
484+/* tre-154 %txt /tests/golden/inline-requests/tree/txt
485−/* src-155 %jibb /tests/golden/lex-call-open-bad-4/source/jibb
485+/* src-155 %jibb /tests/golden/inline-scry-case/source/jibb
486−/* tok-155 %txt /tests/golden/lex-call-open-bad-4/tokens/txt
486+/* tok-155 %txt /tests/golden/inline-scry-case/tokens/txt
487−/* tre-155 %txt /tests/golden/lex-call-open-bad-4/tree/txt
487+/* tre-155 %txt /tests/golden/inline-scry-case/tree/txt
488−/* src-156 %jibb /tests/golden/lex-call-open-ok-1/source/jibb
488+/* src-156 %jibb /tests/golden/inline-self-reference/source/jibb
489−/* tok-156 %txt /tests/golden/lex-call-open-ok-1/tokens/txt
489+/* tok-156 %txt /tests/golden/inline-self-reference/tokens/txt
490−/* tre-156 %txt /tests/golden/lex-call-open-ok-1/tree/txt
490+/* tre-156 %txt /tests/golden/inline-self-reference/tree/txt
491−/* src-157 %jibb /tests/golden/lex-call-open-ok-2/source/jibb
491+/* src-157 %jibb /tests/golden/inline-ship/source/jibb
492−/* tok-157 %txt /tests/golden/lex-call-open-ok-2/tokens/txt
492+/* tok-157 %txt /tests/golden/inline-ship/tokens/txt
493−/* tre-157 %txt /tests/golden/lex-call-open-ok-2/tree/txt
493+/* tre-157 %txt /tests/golden/inline-ship/tree/txt
494−/* src-158 %jibb /tests/golden/lex-cell-bad-1/source/jibb
494+/* src-158 %jibb /tests/golden/inline-static-image/source/jibb
495−/* tok-158 %txt /tests/golden/lex-cell-bad-1/tokens/txt
495+/* tok-158 %txt /tests/golden/inline-static-image/tokens/txt
496−/* tre-158 %txt /tests/golden/lex-cell-bad-1/tree/txt
496+/* tre-158 %txt /tests/golden/inline-static-image/tree/txt
497−/* src-159 %jibb /tests/golden/lex-cell-ok-1/source/jibb
497+/* src-159 %jibb /tests/golden/inline-string/source/jibb
498−/* tok-159 %txt /tests/golden/lex-cell-ok-1/tokens/txt
498+/* tok-159 %txt /tests/golden/inline-string/tokens/txt
499−/* tre-159 %txt /tests/golden/lex-cell-ok-1/tree/txt
499+/* tre-159 %txt /tests/golden/inline-string/tree/txt
500−/* src-160 %jibb /tests/golden/lex-closer-bad-1/source/jibb
500+/* src-160 %jibb /tests/golden/inline-tag-shape/source/jibb
501−/* tok-160 %txt /tests/golden/lex-closer-bad-1/tokens/txt
501+/* tok-160 %txt /tests/golden/inline-tag-shape/tokens/txt
502−/* tre-160 %txt /tests/golden/lex-closer-bad-1/tree/txt
502+/* tre-160 %txt /tests/golden/inline-tag-shape/tree/txt
503−/* src-161 %jibb /tests/golden/lex-closer-bad-2/source/jibb
503+/* src-161 %jibb /tests/golden/inline-term/source/jibb
504−/* tok-161 %txt /tests/golden/lex-closer-bad-2/tokens/txt
504+/* tok-161 %txt /tests/golden/inline-term/tokens/txt
505−/* tre-161 %txt /tests/golden/lex-closer-bad-2/tree/txt
505+/* tre-161 %txt /tests/golden/inline-term/tree/txt
506−/* src-162 %jibb /tests/golden/lex-closer-bad-3/source/jibb
506+/* src-162 %jibb /tests/golden/inline-term-numeric/source/jibb
507−/* tok-162 %txt /tests/golden/lex-closer-bad-3/tokens/txt
507+/* tok-162 %txt /tests/golden/inline-term-numeric/tokens/txt
508−/* tre-162 %txt /tests/golden/lex-closer-bad-3/tree/txt
508+/* tre-162 %txt /tests/golden/inline-term-numeric/tree/txt
509−/* src-163 %jibb /tests/golden/lex-closer-bad-4/source/jibb
509+/* src-163 %jibb /tests/golden/inline-text-items/source/jibb
510−/* tok-163 %txt /tests/golden/lex-closer-bad-4/tokens/txt
510+/* tok-163 %txt /tests/golden/inline-text-items/tokens/txt
511−/* tre-163 %txt /tests/golden/lex-closer-bad-4/tree/txt
511+/* tre-163 %txt /tests/golden/inline-text-items/tree/txt
512−/* src-164 %jibb /tests/golden/lex-codepoint-bad-1/source/jibb
512+/* src-164 %jibb /tests/golden/inline-union-both-bad/source/jibb
513−/* tok-164 %txt /tests/golden/lex-codepoint-bad-1/tokens/txt
513+/* tok-164 %txt /tests/golden/inline-union-both-bad/tokens/txt
514−/* tre-164 %txt /tests/golden/lex-codepoint-bad-1/tree/txt
514+/* tre-164 %txt /tests/golden/inline-union-both-bad/tree/txt
515−/* src-165 %jibb /tests/golden/lex-comment-bad-1/source/jibb
515+/* src-165 %jibb /tests/golden/inline-union-local/source/jibb
516−/* tok-165 %txt /tests/golden/lex-comment-bad-1/tokens/txt
516+/* tok-165 %txt /tests/golden/inline-union-local/tokens/txt
517−/* tre-165 %txt /tests/golden/lex-comment-bad-1/tree/txt
517+/* tre-165 %txt /tests/golden/inline-union-local/tree/txt
518−/* src-166 %jibb /tests/golden/lex-comment-ok-1/source/jibb
518+/* src-166 %jibb /tests/golden/inline-union-one-case/source/jibb
519−/* tok-166 %txt /tests/golden/lex-comment-ok-1/tokens/txt
519+/* tok-166 %txt /tests/golden/inline-union-one-case/tokens/txt
520−/* tre-166 %txt /tests/golden/lex-comment-ok-1/tree/txt
520+/* tre-166 %txt /tests/golden/inline-union-one-case/tree/txt
521−/* src-167 %jibb /tests/golden/lex-comment-ok-2/source/jibb
521+/* src-167 %jibb /tests/golden/inline-union-record-bad/source/jibb
522−/* tok-167 %txt /tests/golden/lex-comment-ok-2/tokens/txt
522+/* tok-167 %txt /tests/golden/inline-union-record-bad/tokens/txt
523−/* tre-167 %txt /tests/golden/lex-comment-ok-2/tree/txt
523+/* tre-167 %txt /tests/golden/inline-union-record-bad/tree/txt
524−/* src-168 %jibb /tests/golden/lex-comment-ok-3/source/jibb
524+/* src-168 %jibb /tests/golden/inline-union-wide/source/jibb
525−/* tok-168 %txt /tests/golden/lex-comment-ok-3/tokens/txt
525+/* tok-168 %txt /tests/golden/inline-union-wide/tokens/txt
526−/* tre-168 %txt /tests/golden/lex-comment-ok-3/tree/txt
526+/* tre-168 %txt /tests/golden/inline-union-wide/tree/txt
527−/* src-169 %jibb /tests/golden/lex-date-bad-1/source/jibb
527+/* src-169 %jibb /tests/golden/inline-unit/source/jibb
528−/* tok-169 %txt /tests/golden/lex-date-bad-1/tokens/txt
528+/* tok-169 %txt /tests/golden/inline-unit/tokens/txt
529−/* tre-169 %txt /tests/golden/lex-date-bad-1/tree/txt
529+/* tre-169 %txt /tests/golden/inline-unit/tree/txt
530−/* src-170 %jibb /tests/golden/lex-date-bad-2/source/jibb
530+/* src-170 %jibb /tests/golden/inline-wide-form-rune-bad/source/jibb
531−/* tok-170 %txt /tests/golden/lex-date-bad-2/tokens/txt
531+/* tok-170 %txt /tests/golden/inline-wide-form-rune-bad/tokens/txt
532−/* tre-170 %txt /tests/golden/lex-date-bad-2/tree/txt
532+/* tre-170 %txt /tests/golden/inline-wide-form-rune-bad/tree/txt
533−/* src-171 %jibb /tests/golden/lex-date-bad-3/source/jibb
533+/* src-171 %jibb /tests/golden/inline-wide-forms/source/jibb
534−/* tok-171 %txt /tests/golden/lex-date-bad-3/tokens/txt
534+/* tok-171 %txt /tests/golden/inline-wide-forms/tokens/txt
535−/* tre-171 %txt /tests/golden/lex-date-bad-3/tree/txt
535+/* tre-171 %txt /tests/golden/inline-wide-forms/tree/txt
536−/* src-172 %jibb /tests/golden/lex-date-ok-1/source/jibb
536+/* src-172 %jibb /tests/golden/inline-wide-union-call/source/jibb
537−/* tok-172 %txt /tests/golden/lex-date-ok-1/tokens/txt
537+/* tok-172 %txt /tests/golden/inline-wide-union-call/tokens/txt
538−/* tre-172 %txt /tests/golden/lex-date-ok-1/tree/txt
538+/* tre-172 %txt /tests/golden/inline-wide-union-call/tree/txt
539−/* src-173 %jibb /tests/golden/lex-date-ok-2/source/jibb
539+/* src-173 %jibb /tests/golden/inline-wings/source/jibb
540−/* tok-173 %txt /tests/golden/lex-date-ok-2/tokens/txt
540+/* tok-173 %txt /tests/golden/inline-wings/tokens/txt
541−/* tre-173 %txt /tests/golden/lex-date-ok-2/tree/txt
541+/* tre-173 %txt /tests/golden/inline-wings/tree/txt
542−/* src-174 %jibb /tests/golden/lex-decimal-bad-1/source/jibb
542+/* src-174 %jibb /tests/golden/lex-base32-bad-1/source/jibb
543−/* tok-174 %txt /tests/golden/lex-decimal-bad-1/tokens/txt
543+/* tok-174 %txt /tests/golden/lex-base32-bad-1/tokens/txt
544−/* tre-174 %txt /tests/golden/lex-decimal-bad-1/tree/txt
544+/* tre-174 %txt /tests/golden/lex-base32-bad-1/tree/txt
545−/* src-175 %jibb /tests/golden/lex-decimal-bad-2/source/jibb
545+/* src-175 %jibb /tests/golden/lex-base32-ok-1/source/jibb
546−/* tok-175 %txt /tests/golden/lex-decimal-bad-2/tokens/txt
546+/* tok-175 %txt /tests/golden/lex-base32-ok-1/tokens/txt
547−/* tre-175 %txt /tests/golden/lex-decimal-bad-2/tree/txt
547+/* tre-175 %txt /tests/golden/lex-base32-ok-1/tree/txt
548−/* src-176 %jibb /tests/golden/lex-decimal-ok-1/source/jibb
548+/* src-176 %jibb /tests/golden/lex-blob-bad-1/source/jibb
549−/* tok-176 %txt /tests/golden/lex-decimal-ok-1/tokens/txt
549+/* tok-176 %txt /tests/golden/lex-blob-bad-1/tokens/txt
550−/* tre-176 %txt /tests/golden/lex-decimal-ok-1/tree/txt
550+/* tre-176 %txt /tests/golden/lex-blob-bad-1/tree/txt
551−/* src-177 %jibb /tests/golden/lex-duration-bad-1/source/jibb
551+/* src-177 %jibb /tests/golden/lex-call-open-bad-1/source/jibb
552−/* tok-177 %txt /tests/golden/lex-duration-bad-1/tokens/txt
552+/* tok-177 %txt /tests/golden/lex-call-open-bad-1/tokens/txt
553−/* tre-177 %txt /tests/golden/lex-duration-bad-1/tree/txt
553+/* tre-177 %txt /tests/golden/lex-call-open-bad-1/tree/txt
554−/* src-178 %jibb /tests/golden/lex-duration-bad-2/source/jibb
554+/* src-178 %jibb /tests/golden/lex-call-open-bad-2/source/jibb
555−/* tok-178 %txt /tests/golden/lex-duration-bad-2/tokens/txt
555+/* tok-178 %txt /tests/golden/lex-call-open-bad-2/tokens/txt
556−/* tre-178 %txt /tests/golden/lex-duration-bad-2/tree/txt
556+/* tre-178 %txt /tests/golden/lex-call-open-bad-2/tree/txt
557−/* src-179 %jibb /tests/golden/lex-duration-ok-1/source/jibb
557+/* src-179 %jibb /tests/golden/lex-call-open-bad-4/source/jibb
558−/* tok-179 %txt /tests/golden/lex-duration-ok-1/tokens/txt
558+/* tok-179 %txt /tests/golden/lex-call-open-bad-4/tokens/txt
559−/* tre-179 %txt /tests/golden/lex-duration-ok-1/tree/txt
559+/* tre-179 %txt /tests/golden/lex-call-open-bad-4/tree/txt
560−/* src-180 %jibb /tests/golden/lex-hex-bad-1/source/jibb
560+/* src-180 %jibb /tests/golden/lex-call-open-ok-1/source/jibb
561−/* tok-180 %txt /tests/golden/lex-hex-bad-1/tokens/txt
561+/* tok-180 %txt /tests/golden/lex-call-open-ok-1/tokens/txt
562−/* tre-180 %txt /tests/golden/lex-hex-bad-1/tree/txt
562+/* tre-180 %txt /tests/golden/lex-call-open-ok-1/tree/txt
563−/* src-181 %jibb /tests/golden/lex-hex-ok-1/source/jibb
563+/* src-181 %jibb /tests/golden/lex-call-open-ok-2/source/jibb
564−/* tok-181 %txt /tests/golden/lex-hex-ok-1/tokens/txt
564+/* tok-181 %txt /tests/golden/lex-call-open-ok-2/tokens/txt
565−/* tre-181 %txt /tests/golden/lex-hex-ok-1/tree/txt
565+/* tre-181 %txt /tests/golden/lex-call-open-ok-2/tree/txt
566−/* src-182 %jibb /tests/golden/lex-indent-bad-1/source/jibb
566+/* src-182 %jibb /tests/golden/lex-cell-bad-1/source/jibb
567−/* tok-182 %txt /tests/golden/lex-indent-bad-1/tokens/txt
567+/* tok-182 %txt /tests/golden/lex-cell-bad-1/tokens/txt
568−/* tre-182 %txt /tests/golden/lex-indent-bad-1/tree/txt
568+/* tre-182 %txt /tests/golden/lex-cell-bad-1/tree/txt
569−/* src-183 %jibb /tests/golden/lex-indent-bad-2/source/jibb
569+/* src-183 %jibb /tests/golden/lex-cell-ok-1/source/jibb
570−/* tok-183 %txt /tests/golden/lex-indent-bad-2/tokens/txt
570+/* tok-183 %txt /tests/golden/lex-cell-ok-1/tokens/txt
571−/* tre-183 %txt /tests/golden/lex-indent-bad-2/tree/txt
571+/* tre-183 %txt /tests/golden/lex-cell-ok-1/tree/txt
572−/* src-184 %jibb /tests/golden/lex-indent-bad-3/source/jibb
572+/* src-184 %jibb /tests/golden/lex-closer-bad-1/source/jibb
573−/* tok-184 %txt /tests/golden/lex-indent-bad-3/tokens/txt
573+/* tok-184 %txt /tests/golden/lex-closer-bad-1/tokens/txt
574−/* tre-184 %txt /tests/golden/lex-indent-bad-3/tree/txt
574+/* tre-184 %txt /tests/golden/lex-closer-bad-1/tree/txt
575−/* src-185 %jibb /tests/golden/lex-indent-ok-1/source/jibb
575+/* src-185 %jibb /tests/golden/lex-closer-bad-2/source/jibb
576−/* tok-185 %txt /tests/golden/lex-indent-ok-1/tokens/txt
576+/* tok-185 %txt /tests/golden/lex-closer-bad-2/tokens/txt
577−/* tre-185 %txt /tests/golden/lex-indent-ok-1/tree/txt
577+/* tre-185 %txt /tests/golden/lex-closer-bad-2/tree/txt
578−/* src-186 %jibb /tests/golden/lex-indent-ok-2/source/jibb
578+/* src-186 %jibb /tests/golden/lex-closer-bad-3/source/jibb
579−/* tok-186 %txt /tests/golden/lex-indent-ok-2/tokens/txt
579+/* tok-186 %txt /tests/golden/lex-closer-bad-3/tokens/txt
580−/* tre-186 %txt /tests/golden/lex-indent-ok-2/tree/txt
580+/* tre-186 %txt /tests/golden/lex-closer-bad-3/tree/txt
581−/* src-187 %jibb /tests/golden/lex-indent-ok-3/source/jibb
581+/* src-187 %jibb /tests/golden/lex-closer-bad-4/source/jibb
582−/* tok-187 %txt /tests/golden/lex-indent-ok-3/tokens/txt
582+/* tok-187 %txt /tests/golden/lex-closer-bad-4/tokens/txt
583−/* tre-187 %txt /tests/golden/lex-indent-ok-3/tree/txt
583+/* tre-187 %txt /tests/golden/lex-closer-bad-4/tree/txt
584−/* src-188 %jibb /tests/golden/lex-interp-bad-1/source/jibb
584+/* src-188 %jibb /tests/golden/lex-codepoint-bad-1/source/jibb
585−/* tok-188 %txt /tests/golden/lex-interp-bad-1/tokens/txt
585+/* tok-188 %txt /tests/golden/lex-codepoint-bad-1/tokens/txt
586−/* tre-188 %txt /tests/golden/lex-interp-bad-1/tree/txt
586+/* tre-188 %txt /tests/golden/lex-codepoint-bad-1/tree/txt
587−/* src-189 %jibb /tests/golden/lex-interp-bad-2/source/jibb
587+/* src-189 %jibb /tests/golden/lex-comment-bad-1/source/jibb
588−/* tok-189 %txt /tests/golden/lex-interp-bad-2/tokens/txt
588+/* tok-189 %txt /tests/golden/lex-comment-bad-1/tokens/txt
589−/* tre-189 %txt /tests/golden/lex-interp-bad-2/tree/txt
589+/* tre-189 %txt /tests/golden/lex-comment-bad-1/tree/txt
590−/* src-190 %jibb /tests/golden/lex-interp-bad-3/source/jibb
590+/* src-190 %jibb /tests/golden/lex-comment-ok-1/source/jibb
591−/* tok-190 %txt /tests/golden/lex-interp-bad-3/tokens/txt
591+/* tok-190 %txt /tests/golden/lex-comment-ok-1/tokens/txt
592−/* tre-190 %txt /tests/golden/lex-interp-bad-3/tree/txt
592+/* tre-190 %txt /tests/golden/lex-comment-ok-1/tree/txt
593−/* src-191 %jibb /tests/golden/lex-interp-bad-5/source/jibb
593+/* src-191 %jibb /tests/golden/lex-comment-ok-2/source/jibb
594−/* tok-191 %txt /tests/golden/lex-interp-bad-5/tokens/txt
594+/* tok-191 %txt /tests/golden/lex-comment-ok-2/tokens/txt
595−/* tre-191 %txt /tests/golden/lex-interp-bad-5/tree/txt
595+/* tre-191 %txt /tests/golden/lex-comment-ok-2/tree/txt
596−/* src-192 %jibb /tests/golden/lex-interp-bad-6/source/jibb
596+/* src-192 %jibb /tests/golden/lex-comment-ok-3/source/jibb
597−/* tok-192 %txt /tests/golden/lex-interp-bad-6/tokens/txt
597+/* tok-192 %txt /tests/golden/lex-comment-ok-3/tokens/txt
598−/* tre-192 %txt /tests/golden/lex-interp-bad-6/tree/txt
598+/* tre-192 %txt /tests/golden/lex-comment-ok-3/tree/txt
599−/* src-193 %jibb /tests/golden/lex-interp-ok-1/source/jibb
599+/* src-193 %jibb /tests/golden/lex-date-bad-1/source/jibb
600−/* tok-193 %txt /tests/golden/lex-interp-ok-1/tokens/txt
600+/* tok-193 %txt /tests/golden/lex-date-bad-1/tokens/txt
601−/* tre-193 %txt /tests/golden/lex-interp-ok-1/tree/txt
601+/* tre-193 %txt /tests/golden/lex-date-bad-1/tree/txt
602−/* src-194 %jibb /tests/golden/lex-interp-ok-2/source/jibb
602+/* src-194 %jibb /tests/golden/lex-date-bad-2/source/jibb
603−/* tok-194 %txt /tests/golden/lex-interp-ok-2/tokens/txt
603+/* tok-194 %txt /tests/golden/lex-date-bad-2/tokens/txt
604−/* tre-194 %txt /tests/golden/lex-interp-ok-2/tree/txt
604+/* tre-194 %txt /tests/golden/lex-date-bad-2/tree/txt
605−/* src-195 %jibb /tests/golden/lex-interp-ok-3/source/jibb
605+/* src-195 %jibb /tests/golden/lex-date-bad-3/source/jibb
606−/* tok-195 %txt /tests/golden/lex-interp-ok-3/tokens/txt
606+/* tok-195 %txt /tests/golden/lex-date-bad-3/tokens/txt
607−/* tre-195 %txt /tests/golden/lex-interp-ok-3/tree/txt
607+/* tre-195 %txt /tests/golden/lex-date-bad-3/tree/txt
608−/* src-196 %jibb /tests/golden/lex-knot-bad-1/source/jibb
608+/* src-196 %jibb /tests/golden/lex-date-ok-1/source/jibb
609−/* tok-196 %txt /tests/golden/lex-knot-bad-1/tokens/txt
609+/* tok-196 %txt /tests/golden/lex-date-ok-1/tokens/txt
610−/* tre-196 %txt /tests/golden/lex-knot-bad-1/tree/txt
610+/* tre-196 %txt /tests/golden/lex-date-ok-1/tree/txt
611−/* src-197 %jibb /tests/golden/lex-knot-ok-1/source/jibb
611+/* src-197 %jibb /tests/golden/lex-date-ok-2/source/jibb
612−/* tok-197 %txt /tests/golden/lex-knot-ok-1/tokens/txt
612+/* tok-197 %txt /tests/golden/lex-date-ok-2/tokens/txt
613−/* tre-197 %txt /tests/golden/lex-knot-ok-1/tree/txt
613+/* tre-197 %txt /tests/golden/lex-date-ok-2/tree/txt
614−/* src-198 %jibb /tests/golden/lex-layout-bad-1/source/jibb
614+/* src-198 %jibb /tests/golden/lex-decimal-bad-1/source/jibb
615−/* tok-198 %txt /tests/golden/lex-layout-bad-1/tokens/txt
615+/* tok-198 %txt /tests/golden/lex-decimal-bad-1/tokens/txt
616−/* tre-198 %txt /tests/golden/lex-layout-bad-1/tree/txt
616+/* tre-198 %txt /tests/golden/lex-decimal-bad-1/tree/txt
617−/* src-199 %jibb /tests/golden/lex-layout-bad-10/source/jibb
617+/* src-199 %jibb /tests/golden/lex-decimal-bad-2/source/jibb
618−/* tok-199 %txt /tests/golden/lex-layout-bad-10/tokens/txt
618+/* tok-199 %txt /tests/golden/lex-decimal-bad-2/tokens/txt
619−/* tre-199 %txt /tests/golden/lex-layout-bad-10/tree/txt
619+/* tre-199 %txt /tests/golden/lex-decimal-bad-2/tree/txt
620−/* src-200 %jibb /tests/golden/lex-layout-bad-2/source/jibb
620+/* src-200 %jibb /tests/golden/lex-decimal-ok-1/source/jibb
621−/* tok-200 %txt /tests/golden/lex-layout-bad-2/tokens/txt
621+/* tok-200 %txt /tests/golden/lex-decimal-ok-1/tokens/txt
622−/* tre-200 %txt /tests/golden/lex-layout-bad-2/tree/txt
622+/* tre-200 %txt /tests/golden/lex-decimal-ok-1/tree/txt
623−/* src-201 %jibb /tests/golden/lex-layout-bad-3/source/jibb
623+/* src-201 %jibb /tests/golden/lex-duration-bad-1/source/jibb
624−/* tok-201 %txt /tests/golden/lex-layout-bad-3/tokens/txt
624+/* tok-201 %txt /tests/golden/lex-duration-bad-1/tokens/txt
625−/* tre-201 %txt /tests/golden/lex-layout-bad-3/tree/txt
625+/* tre-201 %txt /tests/golden/lex-duration-bad-1/tree/txt
626−/* src-202 %jibb /tests/golden/lex-layout-bad-4/source/jibb
626+/* src-202 %jibb /tests/golden/lex-duration-bad-2/source/jibb
627−/* tok-202 %txt /tests/golden/lex-layout-bad-4/tokens/txt
627+/* tok-202 %txt /tests/golden/lex-duration-bad-2/tokens/txt
628−/* tre-202 %txt /tests/golden/lex-layout-bad-4/tree/txt
628+/* tre-202 %txt /tests/golden/lex-duration-bad-2/tree/txt
629−/* src-203 %jibb /tests/golden/lex-layout-bad-5/source/jibb
629+/* src-203 %jibb /tests/golden/lex-duration-ok-1/source/jibb
630−/* tok-203 %txt /tests/golden/lex-layout-bad-5/tokens/txt
630+/* tok-203 %txt /tests/golden/lex-duration-ok-1/tokens/txt
631−/* tre-203 %txt /tests/golden/lex-layout-bad-5/tree/txt
631+/* tre-203 %txt /tests/golden/lex-duration-ok-1/tree/txt
632−/* src-204 %jibb /tests/golden/lex-layout-bad-6/source/jibb
632+/* src-204 %jibb /tests/golden/lex-hex-bad-1/source/jibb
633−/* tok-204 %txt /tests/golden/lex-layout-bad-6/tokens/txt
633+/* tok-204 %txt /tests/golden/lex-hex-bad-1/tokens/txt
634−/* tre-204 %txt /tests/golden/lex-layout-bad-6/tree/txt
634+/* tre-204 %txt /tests/golden/lex-hex-bad-1/tree/txt
635−/* src-205 %jibb /tests/golden/lex-layout-bad-7/source/jibb
635+/* src-205 %jibb /tests/golden/lex-hex-ok-1/source/jibb
636−/* tok-205 %txt /tests/golden/lex-layout-bad-7/tokens/txt
636+/* tok-205 %txt /tests/golden/lex-hex-ok-1/tokens/txt
637−/* tre-205 %txt /tests/golden/lex-layout-bad-7/tree/txt
637+/* tre-205 %txt /tests/golden/lex-hex-ok-1/tree/txt
638−/* src-206 %jibb /tests/golden/lex-layout-bad-8/source/jibb
638+/* src-206 %jibb /tests/golden/lex-indent-bad-1/source/jibb
639−/* tok-206 %txt /tests/golden/lex-layout-bad-8/tokens/txt
639+/* tok-206 %txt /tests/golden/lex-indent-bad-1/tokens/txt
640−/* tre-206 %txt /tests/golden/lex-layout-bad-8/tree/txt
640+/* tre-206 %txt /tests/golden/lex-indent-bad-1/tree/txt
641−/* src-207 %jibb /tests/golden/lex-layout-bad-9/source/jibb
641+/* src-207 %jibb /tests/golden/lex-indent-bad-2/source/jibb
642−/* tok-207 %txt /tests/golden/lex-layout-bad-9/tokens/txt
642+/* tok-207 %txt /tests/golden/lex-indent-bad-2/tokens/txt
643−/* tre-207 %txt /tests/golden/lex-layout-bad-9/tree/txt
643+/* tre-207 %txt /tests/golden/lex-indent-bad-2/tree/txt
644−/* src-208 %jibb /tests/golden/lex-layout-ok-1/source/jibb
644+/* src-208 %jibb /tests/golden/lex-indent-bad-3/source/jibb
645−/* tok-208 %txt /tests/golden/lex-layout-ok-1/tokens/txt
645+/* tok-208 %txt /tests/golden/lex-indent-bad-3/tokens/txt
646−/* tre-208 %txt /tests/golden/lex-layout-ok-1/tree/txt
646+/* tre-208 %txt /tests/golden/lex-indent-bad-3/tree/txt
647−/* src-209 %jibb /tests/golden/lex-list-bad-1/source/jibb
647+/* src-209 %jibb /tests/golden/lex-indent-ok-1/source/jibb
648−/* tok-209 %txt /tests/golden/lex-list-bad-1/tokens/txt
648+/* tok-209 %txt /tests/golden/lex-indent-ok-1/tokens/txt
649−/* tre-209 %txt /tests/golden/lex-list-bad-1/tree/txt
649+/* tre-209 %txt /tests/golden/lex-indent-ok-1/tree/txt
650−/* src-210 %jibb /tests/golden/lex-list-ok-1/source/jibb
650+/* src-210 %jibb /tests/golden/lex-indent-ok-2/source/jibb
651−/* tok-210 %txt /tests/golden/lex-list-ok-1/tokens/txt
651+/* tok-210 %txt /tests/golden/lex-indent-ok-2/tokens/txt
652−/* tre-210 %txt /tests/golden/lex-list-ok-1/tree/txt
652+/* tre-210 %txt /tests/golden/lex-indent-ok-2/tree/txt
653−/* src-211 %jibb /tests/golden/lex-loobean-bad-1/source/jibb
653+/* src-211 %jibb /tests/golden/lex-indent-ok-3/source/jibb
654−/* tok-211 %txt /tests/golden/lex-loobean-bad-1/tokens/txt
654+/* tok-211 %txt /tests/golden/lex-indent-ok-3/tokens/txt
655−/* tre-211 %txt /tests/golden/lex-loobean-bad-1/tree/txt
655+/* tre-211 %txt /tests/golden/lex-indent-ok-3/tree/txt
656−/* src-212 %jibb /tests/golden/lex-loobean-ok-1/source/jibb
656+/* src-212 %jibb /tests/golden/lex-interp-bad-1/source/jibb
657−/* tok-212 %txt /tests/golden/lex-loobean-ok-1/tokens/txt
657+/* tok-212 %txt /tests/golden/lex-interp-bad-1/tokens/txt
658−/* tre-212 %txt /tests/golden/lex-loobean-ok-1/tree/txt
658+/* tre-212 %txt /tests/golden/lex-interp-bad-1/tree/txt
659−/* src-213 %jibb /tests/golden/lex-name-bad-1/source/jibb
659+/* src-213 %jibb /tests/golden/lex-interp-bad-2/source/jibb
660−/* tok-213 %txt /tests/golden/lex-name-bad-1/tokens/txt
660+/* tok-213 %txt /tests/golden/lex-interp-bad-2/tokens/txt
661−/* tre-213 %txt /tests/golden/lex-name-bad-1/tree/txt
661+/* tre-213 %txt /tests/golden/lex-interp-bad-2/tree/txt
662−/* src-214 %jibb /tests/golden/lex-name-bad-2/source/jibb
662+/* src-214 %jibb /tests/golden/lex-interp-bad-3/source/jibb
663−/* tok-214 %txt /tests/golden/lex-name-bad-2/tokens/txt
663+/* tok-214 %txt /tests/golden/lex-interp-bad-3/tokens/txt
664−/* tre-214 %txt /tests/golden/lex-name-bad-2/tree/txt
664+/* tre-214 %txt /tests/golden/lex-interp-bad-3/tree/txt
665−/* src-215 %jibb /tests/golden/lex-name-bad-3/source/jibb
665+/* src-215 %jibb /tests/golden/lex-interp-bad-5/source/jibb
666−/* tok-215 %txt /tests/golden/lex-name-bad-3/tokens/txt
666+/* tok-215 %txt /tests/golden/lex-interp-bad-5/tokens/txt
667−/* tre-215 %txt /tests/golden/lex-name-bad-3/tree/txt
667+/* tre-215 %txt /tests/golden/lex-interp-bad-5/tree/txt
668−/* src-216 %jibb /tests/golden/lex-name-bad-4/source/jibb
668+/* src-216 %jibb /tests/golden/lex-interp-bad-6/source/jibb
669−/* tok-216 %txt /tests/golden/lex-name-bad-4/tokens/txt
669+/* tok-216 %txt /tests/golden/lex-interp-bad-6/tokens/txt
670−/* tre-216 %txt /tests/golden/lex-name-bad-4/tree/txt
670+/* tre-216 %txt /tests/golden/lex-interp-bad-6/tree/txt
671−/* src-217 %jibb /tests/golden/lex-name-bad-5/source/jibb
671+/* src-217 %jibb /tests/golden/lex-interp-ok-1/source/jibb
672−/* tok-217 %txt /tests/golden/lex-name-bad-5/tokens/txt
672+/* tok-217 %txt /tests/golden/lex-interp-ok-1/tokens/txt
673−/* tre-217 %txt /tests/golden/lex-name-bad-5/tree/txt
673+/* tre-217 %txt /tests/golden/lex-interp-ok-1/tree/txt
674−/* src-218 %jibb /tests/golden/lex-name-bad-6/source/jibb
674+/* src-218 %jibb /tests/golden/lex-interp-ok-2/source/jibb
675−/* tok-218 %txt /tests/golden/lex-name-bad-6/tokens/txt
675+/* tok-218 %txt /tests/golden/lex-interp-ok-2/tokens/txt
676−/* tre-218 %txt /tests/golden/lex-name-bad-6/tree/txt
676+/* tre-218 %txt /tests/golden/lex-interp-ok-2/tree/txt
677−/* src-219 %jibb /tests/golden/lex-name-ok-1/source/jibb
677+/* src-219 %jibb /tests/golden/lex-interp-ok-3/source/jibb
678−/* tok-219 %txt /tests/golden/lex-name-ok-1/tokens/txt
678+/* tok-219 %txt /tests/golden/lex-interp-ok-3/tokens/txt
679−/* tre-219 %txt /tests/golden/lex-name-ok-1/tree/txt
679+/* tre-219 %txt /tests/golden/lex-interp-ok-3/tree/txt
680−/* src-220 %jibb /tests/golden/lex-null-bad-1/source/jibb
680+/* src-220 %jibb /tests/golden/lex-knot-bad-1/source/jibb
681−/* tok-220 %txt /tests/golden/lex-null-bad-1/tokens/txt
681+/* tok-220 %txt /tests/golden/lex-knot-bad-1/tokens/txt
682−/* tre-220 %txt /tests/golden/lex-null-bad-1/tree/txt
682+/* tre-220 %txt /tests/golden/lex-knot-bad-1/tree/txt
683−/* src-221 %jibb /tests/golden/lex-null-bad-2/source/jibb
683+/* src-221 %jibb /tests/golden/lex-knot-ok-1/source/jibb
684−/* tok-221 %txt /tests/golden/lex-null-bad-2/tokens/txt
684+/* tok-221 %txt /tests/golden/lex-knot-ok-1/tokens/txt
685−/* tre-221 %txt /tests/golden/lex-null-bad-2/tree/txt
685+/* tre-221 %txt /tests/golden/lex-knot-ok-1/tree/txt
686−/* src-222 %jibb /tests/golden/lex-null-ok-1/source/jibb
686+/* src-222 %jibb /tests/golden/lex-layout-bad-1/source/jibb
687−/* tok-222 %txt /tests/golden/lex-null-ok-1/tokens/txt
687+/* tok-222 %txt /tests/golden/lex-layout-bad-1/tokens/txt
688−/* tre-222 %txt /tests/golden/lex-null-ok-1/tree/txt
688+/* tre-222 %txt /tests/golden/lex-layout-bad-1/tree/txt
689−/* src-223 %jibb /tests/golden/lex-open-bracket-bad-1/source/jibb
689+/* src-223 %jibb /tests/golden/lex-layout-bad-10/source/jibb
690−/* tok-223 %txt /tests/golden/lex-open-bracket-bad-1/tokens/txt
690+/* tok-223 %txt /tests/golden/lex-layout-bad-10/tokens/txt
691−/* tre-223 %txt /tests/golden/lex-open-bracket-bad-1/tree/txt
691+/* tre-223 %txt /tests/golden/lex-layout-bad-10/tree/txt
692−/* src-224 %jibb /tests/golden/lex-open-bracket-bad-10/source/jibb
692+/* src-224 %jibb /tests/golden/lex-layout-bad-2/source/jibb
693−/* tok-224 %txt /tests/golden/lex-open-bracket-bad-10/tokens/txt
693+/* tok-224 %txt /tests/golden/lex-layout-bad-2/tokens/txt
694−/* tre-224 %txt /tests/golden/lex-open-bracket-bad-10/tree/txt
694+/* tre-224 %txt /tests/golden/lex-layout-bad-2/tree/txt
695−/* src-225 %jibb /tests/golden/lex-open-bracket-bad-11/source/jibb
695+/* src-225 %jibb /tests/golden/lex-layout-bad-3/source/jibb
696−/* tok-225 %txt /tests/golden/lex-open-bracket-bad-11/tokens/txt
696+/* tok-225 %txt /tests/golden/lex-layout-bad-3/tokens/txt
697−/* tre-225 %txt /tests/golden/lex-open-bracket-bad-11/tree/txt
697+/* tre-225 %txt /tests/golden/lex-layout-bad-3/tree/txt
698−/* src-226 %jibb /tests/golden/lex-open-bracket-bad-12/source/jibb
698+/* src-226 %jibb /tests/golden/lex-layout-bad-4/source/jibb
699−/* tok-226 %txt /tests/golden/lex-open-bracket-bad-12/tokens/txt
699+/* tok-226 %txt /tests/golden/lex-layout-bad-4/tokens/txt
700−/* tre-226 %txt /tests/golden/lex-open-bracket-bad-12/tree/txt
700+/* tre-226 %txt /tests/golden/lex-layout-bad-4/tree/txt
701−/* src-227 %jibb /tests/golden/lex-open-bracket-bad-13/source/jibb
701+/* src-227 %jibb /tests/golden/lex-layout-bad-5/source/jibb
702−/* tok-227 %txt /tests/golden/lex-open-bracket-bad-13/tokens/txt
702+/* tok-227 %txt /tests/golden/lex-layout-bad-5/tokens/txt
703−/* tre-227 %txt /tests/golden/lex-open-bracket-bad-13/tree/txt
703+/* tre-227 %txt /tests/golden/lex-layout-bad-5/tree/txt
704−/* src-228 %jibb /tests/golden/lex-open-bracket-bad-14/source/jibb
704+/* src-228 %jibb /tests/golden/lex-layout-bad-6/source/jibb
705−/* tok-228 %txt /tests/golden/lex-open-bracket-bad-14/tokens/txt
705+/* tok-228 %txt /tests/golden/lex-layout-bad-6/tokens/txt
706−/* tre-228 %txt /tests/golden/lex-open-bracket-bad-14/tree/txt
706+/* tre-228 %txt /tests/golden/lex-layout-bad-6/tree/txt
707−/* src-229 %jibb /tests/golden/lex-open-bracket-bad-15/source/jibb
707+/* src-229 %jibb /tests/golden/lex-layout-bad-7/source/jibb
708−/* tok-229 %txt /tests/golden/lex-open-bracket-bad-15/tokens/txt
708+/* tok-229 %txt /tests/golden/lex-layout-bad-7/tokens/txt
709−/* tre-229 %txt /tests/golden/lex-open-bracket-bad-15/tree/txt
709+/* tre-229 %txt /tests/golden/lex-layout-bad-7/tree/txt
710−/* src-230 %jibb /tests/golden/lex-open-bracket-bad-16/source/jibb
710+/* src-230 %jibb /tests/golden/lex-layout-bad-8/source/jibb
711−/* tok-230 %txt /tests/golden/lex-open-bracket-bad-16/tokens/txt
711+/* tok-230 %txt /tests/golden/lex-layout-bad-8/tokens/txt
712−/* tre-230 %txt /tests/golden/lex-open-bracket-bad-16/tree/txt
712+/* tre-230 %txt /tests/golden/lex-layout-bad-8/tree/txt
713−/* src-231 %jibb /tests/golden/lex-open-bracket-bad-2/source/jibb
713+/* src-231 %jibb /tests/golden/lex-layout-bad-9/source/jibb
714−/* tok-231 %txt /tests/golden/lex-open-bracket-bad-2/tokens/txt
714+/* tok-231 %txt /tests/golden/lex-layout-bad-9/tokens/txt
715−/* tre-231 %txt /tests/golden/lex-open-bracket-bad-2/tree/txt
715+/* tre-231 %txt /tests/golden/lex-layout-bad-9/tree/txt
716−/* src-232 %jibb /tests/golden/lex-open-bracket-bad-3/source/jibb
716+/* src-232 %jibb /tests/golden/lex-layout-ok-1/source/jibb
717−/* tok-232 %txt /tests/golden/lex-open-bracket-bad-3/tokens/txt
717+/* tok-232 %txt /tests/golden/lex-layout-ok-1/tokens/txt
718−/* tre-232 %txt /tests/golden/lex-open-bracket-bad-3/tree/txt
718+/* tre-232 %txt /tests/golden/lex-layout-ok-1/tree/txt
719−/* src-233 %jibb /tests/golden/lex-open-bracket-bad-5/source/jibb
719+/* src-233 %jibb /tests/golden/lex-list-bad-1/source/jibb
720−/* tok-233 %txt /tests/golden/lex-open-bracket-bad-5/tokens/txt
720+/* tok-233 %txt /tests/golden/lex-list-bad-1/tokens/txt
721−/* tre-233 %txt /tests/golden/lex-open-bracket-bad-5/tree/txt
721+/* tre-233 %txt /tests/golden/lex-list-bad-1/tree/txt
722−/* src-234 %jibb /tests/golden/lex-open-bracket-bad-6/source/jibb
722+/* src-234 %jibb /tests/golden/lex-list-ok-1/source/jibb
723−/* tok-234 %txt /tests/golden/lex-open-bracket-bad-6/tokens/txt
723+/* tok-234 %txt /tests/golden/lex-list-ok-1/tokens/txt
724−/* tre-234 %txt /tests/golden/lex-open-bracket-bad-6/tree/txt
724+/* tre-234 %txt /tests/golden/lex-list-ok-1/tree/txt
725−/* src-235 %jibb /tests/golden/lex-open-bracket-bad-7/source/jibb
725+/* src-235 %jibb /tests/golden/lex-loobean-bad-1/source/jibb
726−/* tok-235 %txt /tests/golden/lex-open-bracket-bad-7/tokens/txt
726+/* tok-235 %txt /tests/golden/lex-loobean-bad-1/tokens/txt
727−/* tre-235 %txt /tests/golden/lex-open-bracket-bad-7/tree/txt
727+/* tre-235 %txt /tests/golden/lex-loobean-bad-1/tree/txt
728−/* src-236 %jibb /tests/golden/lex-open-bracket-bad-8/source/jibb
728+/* src-236 %jibb /tests/golden/lex-loobean-ok-1/source/jibb
729−/* tok-236 %txt /tests/golden/lex-open-bracket-bad-8/tokens/txt
729+/* tok-236 %txt /tests/golden/lex-loobean-ok-1/tokens/txt
730−/* tre-236 %txt /tests/golden/lex-open-bracket-bad-8/tree/txt
730+/* tre-236 %txt /tests/golden/lex-loobean-ok-1/tree/txt
731−/* src-237 %jibb /tests/golden/lex-open-bracket-bad-9/source/jibb
731+/* src-237 %jibb /tests/golden/lex-name-bad-1/source/jibb
732−/* tok-237 %txt /tests/golden/lex-open-bracket-bad-9/tokens/txt
732+/* tok-237 %txt /tests/golden/lex-name-bad-1/tokens/txt
733−/* tre-237 %txt /tests/golden/lex-open-bracket-bad-9/tree/txt
733+/* tre-237 %txt /tests/golden/lex-name-bad-1/tree/txt
734−/* src-238 %jibb /tests/golden/lex-open-bracket-ok-1/source/jibb
734+/* src-238 %jibb /tests/golden/lex-name-bad-2/source/jibb
735−/* tok-238 %txt /tests/golden/lex-open-bracket-ok-1/tokens/txt
735+/* tok-238 %txt /tests/golden/lex-name-bad-2/tokens/txt
736−/* tre-238 %txt /tests/golden/lex-open-bracket-ok-1/tree/txt
736+/* tre-238 %txt /tests/golden/lex-name-bad-2/tree/txt
737−/* src-239 %jibb /tests/golden/lex-open-bracket-ok-2/source/jibb
737+/* src-239 %jibb /tests/golden/lex-name-bad-3/source/jibb
738−/* tok-239 %txt /tests/golden/lex-open-bracket-ok-2/tokens/txt
738+/* tok-239 %txt /tests/golden/lex-name-bad-3/tokens/txt
739−/* tre-239 %txt /tests/golden/lex-open-bracket-ok-2/tree/txt
739+/* tre-239 %txt /tests/golden/lex-name-bad-3/tree/txt
740−/* src-240 %jibb /tests/golden/lex-open-bracket-ok-3/source/jibb
740+/* src-240 %jibb /tests/golden/lex-name-bad-4/source/jibb
741−/* tok-240 %txt /tests/golden/lex-open-bracket-ok-3/tokens/txt
741+/* tok-240 %txt /tests/golden/lex-name-bad-4/tokens/txt
742−/* tre-240 %txt /tests/golden/lex-open-bracket-ok-3/tree/txt
742+/* tre-240 %txt /tests/golden/lex-name-bad-4/tree/txt
743−/* src-241 %jibb /tests/golden/lex-open-bracket-ok-4/source/jibb
743+/* src-241 %jibb /tests/golden/lex-name-bad-5/source/jibb
744−/* tok-241 %txt /tests/golden/lex-open-bracket-ok-4/tokens/txt
744+/* tok-241 %txt /tests/golden/lex-name-bad-5/tokens/txt
745−/* tre-241 %txt /tests/golden/lex-open-bracket-ok-4/tree/txt
745+/* tre-241 %txt /tests/golden/lex-name-bad-5/tree/txt
746−/* src-242 %jibb /tests/golden/lex-open-bracket-ok-5/source/jibb
746+/* src-242 %jibb /tests/golden/lex-name-bad-6/source/jibb
747−/* tok-242 %txt /tests/golden/lex-open-bracket-ok-5/tokens/txt
747+/* tok-242 %txt /tests/golden/lex-name-bad-6/tokens/txt
748−/* tre-242 %txt /tests/golden/lex-open-bracket-ok-5/tree/txt
748+/* tre-242 %txt /tests/golden/lex-name-bad-6/tree/txt
749−/* src-243 %jibb /tests/golden/lex-open-bracket-ok-6/source/jibb
749+/* src-243 %jibb /tests/golden/lex-name-ok-1/source/jibb
750−/* tok-243 %txt /tests/golden/lex-open-bracket-ok-6/tokens/txt
750+/* tok-243 %txt /tests/golden/lex-name-ok-1/tokens/txt
751−/* tre-243 %txt /tests/golden/lex-open-bracket-ok-6/tree/txt
751+/* tre-243 %txt /tests/golden/lex-name-ok-1/tree/txt
752−/* src-244 %jibb /tests/golden/lex-open-bracket-ok-7/source/jibb
752+/* src-244 %jibb /tests/golden/lex-null-bad-1/source/jibb
753−/* tok-244 %txt /tests/golden/lex-open-bracket-ok-7/tokens/txt
753+/* tok-244 %txt /tests/golden/lex-null-bad-1/tokens/txt
754−/* tre-244 %txt /tests/golden/lex-open-bracket-ok-7/tree/txt
754+/* tre-244 %txt /tests/golden/lex-null-bad-1/tree/txt
755−/* src-245 %jibb /tests/golden/lex-open-bracket-ok-8/source/jibb
755+/* src-245 %jibb /tests/golden/lex-null-bad-2/source/jibb
756−/* tok-245 %txt /tests/golden/lex-open-bracket-ok-8/tokens/txt
756+/* tok-245 %txt /tests/golden/lex-null-bad-2/tokens/txt
757−/* tre-245 %txt /tests/golden/lex-open-bracket-ok-8/tree/txt
757+/* tre-245 %txt /tests/golden/lex-null-bad-2/tree/txt
758−/* src-246 %jibb /tests/golden/lex-open-bracket-ok-9/source/jibb
758+/* src-246 %jibb /tests/golden/lex-null-ok-1/source/jibb
759−/* tok-246 %txt /tests/golden/lex-open-bracket-ok-9/tokens/txt
759+/* tok-246 %txt /tests/golden/lex-null-ok-1/tokens/txt
760−/* tre-246 %txt /tests/golden/lex-open-bracket-ok-9/tree/txt
760+/* tre-246 %txt /tests/golden/lex-null-ok-1/tree/txt
761−/* src-247 %jibb /tests/golden/lex-open-mold-bad-1/source/jibb
761+/* src-247 %jibb /tests/golden/lex-open-bracket-bad-1/source/jibb
762−/* tok-247 %txt /tests/golden/lex-open-mold-bad-1/tokens/txt
762+/* tok-247 %txt /tests/golden/lex-open-bracket-bad-1/tokens/txt
763−/* tre-247 %txt /tests/golden/lex-open-mold-bad-1/tree/txt
763+/* tre-247 %txt /tests/golden/lex-open-bracket-bad-1/tree/txt
764−/* src-248 %jibb /tests/golden/lex-open-mold-bad-10/source/jibb
764+/* src-248 %jibb /tests/golden/lex-open-bracket-bad-10/source/jibb
765−/* tok-248 %txt /tests/golden/lex-open-mold-bad-10/tokens/txt
765+/* tok-248 %txt /tests/golden/lex-open-bracket-bad-10/tokens/txt
766−/* tre-248 %txt /tests/golden/lex-open-mold-bad-10/tree/txt
766+/* tre-248 %txt /tests/golden/lex-open-bracket-bad-10/tree/txt
767−/* src-249 %jibb /tests/golden/lex-open-mold-bad-11/source/jibb
767+/* src-249 %jibb /tests/golden/lex-open-bracket-bad-11/source/jibb
768−/* tok-249 %txt /tests/golden/lex-open-mold-bad-11/tokens/txt
768+/* tok-249 %txt /tests/golden/lex-open-bracket-bad-11/tokens/txt
769−/* tre-249 %txt /tests/golden/lex-open-mold-bad-11/tree/txt
769+/* tre-249 %txt /tests/golden/lex-open-bracket-bad-11/tree/txt
770−/* src-250 %jibb /tests/golden/lex-open-mold-bad-12/source/jibb
770+/* src-250 %jibb /tests/golden/lex-open-bracket-bad-12/source/jibb
771−/* tok-250 %txt /tests/golden/lex-open-mold-bad-12/tokens/txt
771+/* tok-250 %txt /tests/golden/lex-open-bracket-bad-12/tokens/txt
772−/* tre-250 %txt /tests/golden/lex-open-mold-bad-12/tree/txt
772+/* tre-250 %txt /tests/golden/lex-open-bracket-bad-12/tree/txt
773−/* src-251 %jibb /tests/golden/lex-open-mold-bad-13/source/jibb
773+/* src-251 %jibb /tests/golden/lex-open-bracket-bad-13/source/jibb
774−/* tok-251 %txt /tests/golden/lex-open-mold-bad-13/tokens/txt
774+/* tok-251 %txt /tests/golden/lex-open-bracket-bad-13/tokens/txt
775−/* tre-251 %txt /tests/golden/lex-open-mold-bad-13/tree/txt
775+/* tre-251 %txt /tests/golden/lex-open-bracket-bad-13/tree/txt
776−/* src-252 %jibb /tests/golden/lex-open-mold-bad-14/source/jibb
776+/* src-252 %jibb /tests/golden/lex-open-bracket-bad-14/source/jibb
777−/* tok-252 %txt /tests/golden/lex-open-mold-bad-14/tokens/txt
777+/* tok-252 %txt /tests/golden/lex-open-bracket-bad-14/tokens/txt
778−/* tre-252 %txt /tests/golden/lex-open-mold-bad-14/tree/txt
778+/* tre-252 %txt /tests/golden/lex-open-bracket-bad-14/tree/txt
779−/* src-253 %jibb /tests/golden/lex-open-mold-bad-15/source/jibb
779+/* src-253 %jibb /tests/golden/lex-open-bracket-bad-15/source/jibb
780−/* tok-253 %txt /tests/golden/lex-open-mold-bad-15/tokens/txt
780+/* tok-253 %txt /tests/golden/lex-open-bracket-bad-15/tokens/txt
781−/* tre-253 %txt /tests/golden/lex-open-mold-bad-15/tree/txt
781+/* tre-253 %txt /tests/golden/lex-open-bracket-bad-15/tree/txt
782−/* src-254 %jibb /tests/golden/lex-open-mold-bad-16/source/jibb
782+/* src-254 %jibb /tests/golden/lex-open-bracket-bad-16/source/jibb
783−/* tok-254 %txt /tests/golden/lex-open-mold-bad-16/tokens/txt
783+/* tok-254 %txt /tests/golden/lex-open-bracket-bad-16/tokens/txt
784−/* tre-254 %txt /tests/golden/lex-open-mold-bad-16/tree/txt
784+/* tre-254 %txt /tests/golden/lex-open-bracket-bad-16/tree/txt
785−/* src-255 %jibb /tests/golden/lex-open-mold-bad-2/source/jibb
785+/* src-255 %jibb /tests/golden/lex-open-bracket-bad-2/source/jibb
786−/* tok-255 %txt /tests/golden/lex-open-mold-bad-2/tokens/txt
786+/* tok-255 %txt /tests/golden/lex-open-bracket-bad-2/tokens/txt
787−/* tre-255 %txt /tests/golden/lex-open-mold-bad-2/tree/txt
787+/* tre-255 %txt /tests/golden/lex-open-bracket-bad-2/tree/txt
788−/* src-256 %jibb /tests/golden/lex-open-mold-bad-3/source/jibb
788+/* src-256 %jibb /tests/golden/lex-open-bracket-bad-3/source/jibb
789−/* tok-256 %txt /tests/golden/lex-open-mold-bad-3/tokens/txt
789+/* tok-256 %txt /tests/golden/lex-open-bracket-bad-3/tokens/txt
790−/* tre-256 %txt /tests/golden/lex-open-mold-bad-3/tree/txt
790+/* tre-256 %txt /tests/golden/lex-open-bracket-bad-3/tree/txt
791−/* src-257 %jibb /tests/golden/lex-open-mold-bad-4/source/jibb
791+/* src-257 %jibb /tests/golden/lex-open-bracket-bad-5/source/jibb
792−/* tok-257 %txt /tests/golden/lex-open-mold-bad-4/tokens/txt
792+/* tok-257 %txt /tests/golden/lex-open-bracket-bad-5/tokens/txt
793−/* tre-257 %txt /tests/golden/lex-open-mold-bad-4/tree/txt
793+/* tre-257 %txt /tests/golden/lex-open-bracket-bad-5/tree/txt
794−/* src-258 %jibb /tests/golden/lex-open-mold-bad-5/source/jibb
794+/* src-258 %jibb /tests/golden/lex-open-bracket-bad-6/source/jibb
795−/* tok-258 %txt /tests/golden/lex-open-mold-bad-5/tokens/txt
795+/* tok-258 %txt /tests/golden/lex-open-bracket-bad-6/tokens/txt
796−/* tre-258 %txt /tests/golden/lex-open-mold-bad-5/tree/txt
796+/* tre-258 %txt /tests/golden/lex-open-bracket-bad-6/tree/txt
797−/* src-259 %jibb /tests/golden/lex-open-mold-bad-6/source/jibb
797+/* src-259 %jibb /tests/golden/lex-open-bracket-bad-7/source/jibb
798−/* tok-259 %txt /tests/golden/lex-open-mold-bad-6/tokens/txt
798+/* tok-259 %txt /tests/golden/lex-open-bracket-bad-7/tokens/txt
799−/* tre-259 %txt /tests/golden/lex-open-mold-bad-6/tree/txt
799+/* tre-259 %txt /tests/golden/lex-open-bracket-bad-7/tree/txt
800−/* src-260 %jibb /tests/golden/lex-open-mold-bad-7/source/jibb
800+/* src-260 %jibb /tests/golden/lex-open-bracket-bad-8/source/jibb
801−/* tok-260 %txt /tests/golden/lex-open-mold-bad-7/tokens/txt
801+/* tok-260 %txt /tests/golden/lex-open-bracket-bad-8/tokens/txt
802−/* tre-260 %txt /tests/golden/lex-open-mold-bad-7/tree/txt
802+/* tre-260 %txt /tests/golden/lex-open-bracket-bad-8/tree/txt
803−/* src-261 %jibb /tests/golden/lex-open-mold-bad-8/source/jibb
803+/* src-261 %jibb /tests/golden/lex-open-bracket-bad-9/source/jibb
804−/* tok-261 %txt /tests/golden/lex-open-mold-bad-8/tokens/txt
804+/* tok-261 %txt /tests/golden/lex-open-bracket-bad-9/tokens/txt
805−/* tre-261 %txt /tests/golden/lex-open-mold-bad-8/tree/txt
805+/* tre-261 %txt /tests/golden/lex-open-bracket-bad-9/tree/txt
806−/* src-262 %jibb /tests/golden/lex-open-mold-bad-9/source/jibb
806+/* src-262 %jibb /tests/golden/lex-open-bracket-ok-1/source/jibb
807−/* tok-262 %txt /tests/golden/lex-open-mold-bad-9/tokens/txt
807+/* tok-262 %txt /tests/golden/lex-open-bracket-ok-1/tokens/txt
808−/* tre-262 %txt /tests/golden/lex-open-mold-bad-9/tree/txt
808+/* tre-262 %txt /tests/golden/lex-open-bracket-ok-1/tree/txt
809−/* src-263 %jibb /tests/golden/lex-open-mold-ok-1/source/jibb
809+/* src-263 %jibb /tests/golden/lex-open-bracket-ok-2/source/jibb
810−/* tok-263 %txt /tests/golden/lex-open-mold-ok-1/tokens/txt
810+/* tok-263 %txt /tests/golden/lex-open-bracket-ok-2/tokens/txt
811−/* tre-263 %txt /tests/golden/lex-open-mold-ok-1/tree/txt
811+/* tre-263 %txt /tests/golden/lex-open-bracket-ok-2/tree/txt
812−/* src-264 %jibb /tests/golden/lex-open-mold-ok-2/source/jibb
812+/* src-264 %jibb /tests/golden/lex-open-bracket-ok-3/source/jibb
813−/* tok-264 %txt /tests/golden/lex-open-mold-ok-2/tokens/txt
813+/* tok-264 %txt /tests/golden/lex-open-bracket-ok-3/tokens/txt
814−/* tre-264 %txt /tests/golden/lex-open-mold-ok-2/tree/txt
814+/* tre-264 %txt /tests/golden/lex-open-bracket-ok-3/tree/txt
815−/* src-265 %jibb /tests/golden/lex-open-mold-ok-3/source/jibb
815+/* src-265 %jibb /tests/golden/lex-open-bracket-ok-4/source/jibb
816−/* tok-265 %txt /tests/golden/lex-open-mold-ok-3/tokens/txt
816+/* tok-265 %txt /tests/golden/lex-open-bracket-ok-4/tokens/txt
817−/* tre-265 %txt /tests/golden/lex-open-mold-ok-3/tree/txt
817+/* tre-265 %txt /tests/golden/lex-open-bracket-ok-4/tree/txt
818−/* src-266 %jibb /tests/golden/lex-open-mold-ok-4/source/jibb
818+/* src-266 %jibb /tests/golden/lex-open-bracket-ok-5/source/jibb
819−/* tok-266 %txt /tests/golden/lex-open-mold-ok-4/tokens/txt
819+/* tok-266 %txt /tests/golden/lex-open-bracket-ok-5/tokens/txt
820−/* tre-266 %txt /tests/golden/lex-open-mold-ok-4/tree/txt
820+/* tre-266 %txt /tests/golden/lex-open-bracket-ok-5/tree/txt
821−/* src-267 %jibb /tests/golden/lex-open-mold-ok-5/source/jibb
821+/* src-267 %jibb /tests/golden/lex-open-bracket-ok-6/source/jibb
822−/* tok-267 %txt /tests/golden/lex-open-mold-ok-5/tokens/txt
822+/* tok-267 %txt /tests/golden/lex-open-bracket-ok-6/tokens/txt
823−/* tre-267 %txt /tests/golden/lex-open-mold-ok-5/tree/txt
823+/* tre-267 %txt /tests/golden/lex-open-bracket-ok-6/tree/txt
824−/* src-268 %jibb /tests/golden/lex-open-mold-ok-6/source/jibb
824+/* src-268 %jibb /tests/golden/lex-open-bracket-ok-7/source/jibb
825−/* tok-268 %txt /tests/golden/lex-open-mold-ok-6/tokens/txt
825+/* tok-268 %txt /tests/golden/lex-open-bracket-ok-7/tokens/txt
826−/* tre-268 %txt /tests/golden/lex-open-mold-ok-6/tree/txt
826+/* tre-268 %txt /tests/golden/lex-open-bracket-ok-7/tree/txt
827−/* src-269 %jibb /tests/golden/lex-pair-binding-bad-1/source/jibb
827+/* src-269 %jibb /tests/golden/lex-open-bracket-ok-8/source/jibb
828−/* tok-269 %txt /tests/golden/lex-pair-binding-bad-1/tokens/txt
828+/* tok-269 %txt /tests/golden/lex-open-bracket-ok-8/tokens/txt
829−/* tre-269 %txt /tests/golden/lex-pair-binding-bad-1/tree/txt
829+/* tre-269 %txt /tests/golden/lex-open-bracket-ok-8/tree/txt
830−/* src-270 %jibb /tests/golden/lex-pair-binding-ok-1/source/jibb
830+/* src-270 %jibb /tests/golden/lex-open-bracket-ok-9/source/jibb
831−/* tok-270 %txt /tests/golden/lex-pair-binding-ok-1/tokens/txt
831+/* tok-270 %txt /tests/golden/lex-open-bracket-ok-9/tokens/txt
832−/* tre-270 %txt /tests/golden/lex-pair-binding-ok-1/tree/txt
832+/* tre-270 %txt /tests/golden/lex-open-bracket-ok-9/tree/txt
833−/* src-271 %jibb /tests/golden/lex-path-bad-1/source/jibb
833+/* src-271 %jibb /tests/golden/lex-open-mold-bad-1/source/jibb
834−/* tok-271 %txt /tests/golden/lex-path-bad-1/tokens/txt
834+/* tok-271 %txt /tests/golden/lex-open-mold-bad-1/tokens/txt
835−/* tre-271 %txt /tests/golden/lex-path-bad-1/tree/txt
835+/* tre-271 %txt /tests/golden/lex-open-mold-bad-1/tree/txt
836−/* src-272 %jibb /tests/golden/lex-path-ok-1/source/jibb
836+/* src-272 %jibb /tests/golden/lex-open-mold-bad-10/source/jibb
837−/* tok-272 %txt /tests/golden/lex-path-ok-1/tokens/txt
837+/* tok-272 %txt /tests/golden/lex-open-mold-bad-10/tokens/txt
838−/* tre-272 %txt /tests/golden/lex-path-ok-1/tree/txt
838+/* tre-272 %txt /tests/golden/lex-open-mold-bad-10/tree/txt
839−/* src-273 %jibb /tests/golden/lex-rune-layout-bad-1/source/jibb
839+/* src-273 %jibb /tests/golden/lex-open-mold-bad-11/source/jibb
840−/* tok-273 %txt /tests/golden/lex-rune-layout-bad-1/tokens/txt
840+/* tok-273 %txt /tests/golden/lex-open-mold-bad-11/tokens/txt
841−/* tre-273 %txt /tests/golden/lex-rune-layout-bad-1/tree/txt
841+/* tre-273 %txt /tests/golden/lex-open-mold-bad-11/tree/txt
842−/* src-274 %jibb /tests/golden/lex-rune-layout-bad-10/source/jibb
842+/* src-274 %jibb /tests/golden/lex-open-mold-bad-12/source/jibb
843−/* tok-274 %txt /tests/golden/lex-rune-layout-bad-10/tokens/txt
843+/* tok-274 %txt /tests/golden/lex-open-mold-bad-12/tokens/txt
844−/* tre-274 %txt /tests/golden/lex-rune-layout-bad-10/tree/txt
844+/* tre-274 %txt /tests/golden/lex-open-mold-bad-12/tree/txt
845−/* src-275 %jibb /tests/golden/lex-rune-layout-bad-11/source/jibb
845+/* src-275 %jibb /tests/golden/lex-open-mold-bad-13/source/jibb
846−/* tok-275 %txt /tests/golden/lex-rune-layout-bad-11/tokens/txt
846+/* tok-275 %txt /tests/golden/lex-open-mold-bad-13/tokens/txt
847−/* tre-275 %txt /tests/golden/lex-rune-layout-bad-11/tree/txt
847+/* tre-275 %txt /tests/golden/lex-open-mold-bad-13/tree/txt
848−/* src-276 %jibb /tests/golden/lex-rune-layout-bad-12/source/jibb
848+/* src-276 %jibb /tests/golden/lex-open-mold-bad-14/source/jibb
849−/* tok-276 %txt /tests/golden/lex-rune-layout-bad-12/tokens/txt
849+/* tok-276 %txt /tests/golden/lex-open-mold-bad-14/tokens/txt
850−/* tre-276 %txt /tests/golden/lex-rune-layout-bad-12/tree/txt
850+/* tre-276 %txt /tests/golden/lex-open-mold-bad-14/tree/txt
851−/* src-277 %jibb /tests/golden/lex-rune-layout-bad-13/source/jibb
851+/* src-277 %jibb /tests/golden/lex-open-mold-bad-15/source/jibb
852−/* tok-277 %txt /tests/golden/lex-rune-layout-bad-13/tokens/txt
852+/* tok-277 %txt /tests/golden/lex-open-mold-bad-15/tokens/txt
853−/* tre-277 %txt /tests/golden/lex-rune-layout-bad-13/tree/txt
853+/* tre-277 %txt /tests/golden/lex-open-mold-bad-15/tree/txt
854−/* src-278 %jibb /tests/golden/lex-rune-layout-bad-14/source/jibb
854+/* src-278 %jibb /tests/golden/lex-open-mold-bad-16/source/jibb
855−/* tok-278 %txt /tests/golden/lex-rune-layout-bad-14/tokens/txt
855+/* tok-278 %txt /tests/golden/lex-open-mold-bad-16/tokens/txt
856−/* tre-278 %txt /tests/golden/lex-rune-layout-bad-14/tree/txt
856+/* tre-278 %txt /tests/golden/lex-open-mold-bad-16/tree/txt
857−/* src-279 %jibb /tests/golden/lex-rune-layout-bad-15/source/jibb
857+/* src-279 %jibb /tests/golden/lex-open-mold-bad-2/source/jibb
858−/* tok-279 %txt /tests/golden/lex-rune-layout-bad-15/tokens/txt
858+/* tok-279 %txt /tests/golden/lex-open-mold-bad-2/tokens/txt
859−/* tre-279 %txt /tests/golden/lex-rune-layout-bad-15/tree/txt
859+/* tre-279 %txt /tests/golden/lex-open-mold-bad-2/tree/txt
860−/* src-280 %jibb /tests/golden/lex-rune-layout-bad-2/source/jibb
860+/* src-280 %jibb /tests/golden/lex-open-mold-bad-3/source/jibb
861−/* tok-280 %txt /tests/golden/lex-rune-layout-bad-2/tokens/txt
861+/* tok-280 %txt /tests/golden/lex-open-mold-bad-3/tokens/txt
862−/* tre-280 %txt /tests/golden/lex-rune-layout-bad-2/tree/txt
862+/* tre-280 %txt /tests/golden/lex-open-mold-bad-3/tree/txt
863−/* src-281 %jibb /tests/golden/lex-rune-layout-bad-3/source/jibb
863+/* src-281 %jibb /tests/golden/lex-open-mold-bad-4/source/jibb
864−/* tok-281 %txt /tests/golden/lex-rune-layout-bad-3/tokens/txt
864+/* tok-281 %txt /tests/golden/lex-open-mold-bad-4/tokens/txt
865−/* tre-281 %txt /tests/golden/lex-rune-layout-bad-3/tree/txt
865+/* tre-281 %txt /tests/golden/lex-open-mold-bad-4/tree/txt
866−/* src-282 %jibb /tests/golden/lex-rune-layout-bad-4/source/jibb
866+/* src-282 %jibb /tests/golden/lex-open-mold-bad-5/source/jibb
867−/* tok-282 %txt /tests/golden/lex-rune-layout-bad-4/tokens/txt
867+/* tok-282 %txt /tests/golden/lex-open-mold-bad-5/tokens/txt
868−/* tre-282 %txt /tests/golden/lex-rune-layout-bad-4/tree/txt
868+/* tre-282 %txt /tests/golden/lex-open-mold-bad-5/tree/txt
869−/* src-283 %jibb /tests/golden/lex-rune-layout-bad-5/source/jibb
869+/* src-283 %jibb /tests/golden/lex-open-mold-bad-6/source/jibb
870−/* tok-283 %txt /tests/golden/lex-rune-layout-bad-5/tokens/txt
870+/* tok-283 %txt /tests/golden/lex-open-mold-bad-6/tokens/txt
871−/* tre-283 %txt /tests/golden/lex-rune-layout-bad-5/tree/txt
871+/* tre-283 %txt /tests/golden/lex-open-mold-bad-6/tree/txt
872−/* src-284 %jibb /tests/golden/lex-rune-layout-bad-6/source/jibb
872+/* src-284 %jibb /tests/golden/lex-open-mold-bad-7/source/jibb
873−/* tok-284 %txt /tests/golden/lex-rune-layout-bad-6/tokens/txt
873+/* tok-284 %txt /tests/golden/lex-open-mold-bad-7/tokens/txt
874−/* tre-284 %txt /tests/golden/lex-rune-layout-bad-6/tree/txt
874+/* tre-284 %txt /tests/golden/lex-open-mold-bad-7/tree/txt
875−/* src-285 %jibb /tests/golden/lex-rune-layout-bad-7/source/jibb
875+/* src-285 %jibb /tests/golden/lex-open-mold-bad-8/source/jibb
876−/* tok-285 %txt /tests/golden/lex-rune-layout-bad-7/tokens/txt
876+/* tok-285 %txt /tests/golden/lex-open-mold-bad-8/tokens/txt
877−/* tre-285 %txt /tests/golden/lex-rune-layout-bad-7/tree/txt
877+/* tre-285 %txt /tests/golden/lex-open-mold-bad-8/tree/txt
878−/* src-286 %jibb /tests/golden/lex-rune-layout-bad-8/source/jibb
878+/* src-286 %jibb /tests/golden/lex-open-mold-bad-9/source/jibb
879−/* tok-286 %txt /tests/golden/lex-rune-layout-bad-8/tokens/txt
879+/* tok-286 %txt /tests/golden/lex-open-mold-bad-9/tokens/txt
880−/* tre-286 %txt /tests/golden/lex-rune-layout-bad-8/tree/txt
880+/* tre-286 %txt /tests/golden/lex-open-mold-bad-9/tree/txt
881−/* src-287 %jibb /tests/golden/lex-rune-layout-bad-9/source/jibb
881+/* src-287 %jibb /tests/golden/lex-open-mold-ok-1/source/jibb
882−/* tok-287 %txt /tests/golden/lex-rune-layout-bad-9/tokens/txt
882+/* tok-287 %txt /tests/golden/lex-open-mold-ok-1/tokens/txt
883−/* tre-287 %txt /tests/golden/lex-rune-layout-bad-9/tree/txt
883+/* tre-287 %txt /tests/golden/lex-open-mold-ok-1/tree/txt
884−/* src-288 %jibb /tests/golden/lex-rune-layout-ok-1/source/jibb
884+/* src-288 %jibb /tests/golden/lex-open-mold-ok-2/source/jibb
885−/* tok-288 %txt /tests/golden/lex-rune-layout-ok-1/tokens/txt
885+/* tok-288 %txt /tests/golden/lex-open-mold-ok-2/tokens/txt
886−/* tre-288 %txt /tests/golden/lex-rune-layout-ok-1/tree/txt
886+/* tre-288 %txt /tests/golden/lex-open-mold-ok-2/tree/txt
887−/* src-289 %jibb /tests/golden/lex-ship-bad-1/source/jibb
887+/* src-289 %jibb /tests/golden/lex-open-mold-ok-3/source/jibb
888−/* tok-289 %txt /tests/golden/lex-ship-bad-1/tokens/txt
888+/* tok-289 %txt /tests/golden/lex-open-mold-ok-3/tokens/txt
889−/* tre-289 %txt /tests/golden/lex-ship-bad-1/tree/txt
889+/* tre-289 %txt /tests/golden/lex-open-mold-ok-3/tree/txt
890−/* src-290 %jibb /tests/golden/lex-ship-ok-1/source/jibb
890+/* src-290 %jibb /tests/golden/lex-open-mold-ok-4/source/jibb
891−/* tok-290 %txt /tests/golden/lex-ship-ok-1/tokens/txt
891+/* tok-290 %txt /tests/golden/lex-open-mold-ok-4/tokens/txt
892−/* tre-290 %txt /tests/golden/lex-ship-ok-1/tree/txt
892+/* tre-290 %txt /tests/golden/lex-open-mold-ok-4/tree/txt
893−/* src-291 %jibb /tests/golden/lex-spacing-bad-1/source/jibb
893+/* src-291 %jibb /tests/golden/lex-open-mold-ok-5/source/jibb
894−/* tok-291 %txt /tests/golden/lex-spacing-bad-1/tokens/txt
894+/* tok-291 %txt /tests/golden/lex-open-mold-ok-5/tokens/txt
895−/* tre-291 %txt /tests/golden/lex-spacing-bad-1/tree/txt
895+/* tre-291 %txt /tests/golden/lex-open-mold-ok-5/tree/txt
896−/* src-292 %jibb /tests/golden/lex-spacing-bad-2/source/jibb
896+/* src-292 %jibb /tests/golden/lex-open-mold-ok-6/source/jibb
897−/* tok-292 %txt /tests/golden/lex-spacing-bad-2/tokens/txt
897+/* tok-292 %txt /tests/golden/lex-open-mold-ok-6/tokens/txt
898−/* tre-292 %txt /tests/golden/lex-spacing-bad-2/tree/txt
898+/* tre-292 %txt /tests/golden/lex-open-mold-ok-6/tree/txt
899−/* src-293 %jibb /tests/golden/lex-spacing-ok-1/source/jibb
899+/* src-293 %jibb /tests/golden/lex-pair-binding-bad-1/source/jibb
900−/* tok-293 %txt /tests/golden/lex-spacing-ok-1/tokens/txt
900+/* tok-293 %txt /tests/golden/lex-pair-binding-bad-1/tokens/txt
901−/* tre-293 %txt /tests/golden/lex-spacing-ok-1/tree/txt
901+/* tre-293 %txt /tests/golden/lex-pair-binding-bad-1/tree/txt
902−/* src-294 %jibb /tests/golden/lex-spacing-ok-2/source/jibb
902+/* src-294 %jibb /tests/golden/lex-pair-binding-ok-1/source/jibb
903−/* tok-294 %txt /tests/golden/lex-spacing-ok-2/tokens/txt
903+/* tok-294 %txt /tests/golden/lex-pair-binding-ok-1/tokens/txt
904−/* tre-294 %txt /tests/golden/lex-spacing-ok-2/tree/txt
904+/* tre-294 %txt /tests/golden/lex-pair-binding-ok-1/tree/txt
905−/* src-295 %jibb /tests/golden/lex-spacing-ok-3/source/jibb
905+/* src-295 %jibb /tests/golden/lex-path-bad-1/source/jibb
906−/* tok-295 %txt /tests/golden/lex-spacing-ok-3/tokens/txt
906+/* tok-295 %txt /tests/golden/lex-path-bad-1/tokens/txt
907−/* tre-295 %txt /tests/golden/lex-spacing-ok-3/tree/txt
907+/* tre-295 %txt /tests/golden/lex-path-bad-1/tree/txt
908−/* src-296 %jibb /tests/golden/lex-string-bad-1/source/jibb
908+/* src-296 %jibb /tests/golden/lex-path-ok-1/source/jibb
909−/* tok-296 %txt /tests/golden/lex-string-bad-1/tokens/txt
909+/* tok-296 %txt /tests/golden/lex-path-ok-1/tokens/txt
910−/* tre-296 %txt /tests/golden/lex-string-bad-1/tree/txt
910+/* tre-296 %txt /tests/golden/lex-path-ok-1/tree/txt
911−/* src-297 %jibb /tests/golden/lex-string-bad-2/source/jibb
911+/* src-297 %jibb /tests/golden/lex-rune-layout-bad-1/source/jibb
912−/* tok-297 %txt /tests/golden/lex-string-bad-2/tokens/txt
912+/* tok-297 %txt /tests/golden/lex-rune-layout-bad-1/tokens/txt
913−/* tre-297 %txt /tests/golden/lex-string-bad-2/tree/txt
913+/* tre-297 %txt /tests/golden/lex-rune-layout-bad-1/tree/txt
914−/* src-298 %jibb /tests/golden/lex-string-ok-1/source/jibb
914+/* src-298 %jibb /tests/golden/lex-rune-layout-bad-11/source/jibb
915−/* tok-298 %txt /tests/golden/lex-string-ok-1/tokens/txt
915+/* tok-298 %txt /tests/golden/lex-rune-layout-bad-11/tokens/txt
916−/* tre-298 %txt /tests/golden/lex-string-ok-1/tree/txt
916+/* tre-298 %txt /tests/golden/lex-rune-layout-bad-11/tree/txt
917−/* src-299 %jibb /tests/golden/lex-term-bad-1/source/jibb
917+/* src-299 %jibb /tests/golden/lex-rune-layout-bad-12/source/jibb
918−/* tok-299 %txt /tests/golden/lex-term-bad-1/tokens/txt
918+/* tok-299 %txt /tests/golden/lex-rune-layout-bad-12/tokens/txt
919−/* tre-299 %txt /tests/golden/lex-term-bad-1/tree/txt
919+/* tre-299 %txt /tests/golden/lex-rune-layout-bad-12/tree/txt
920−/* src-300 %jibb /tests/golden/lex-term-bad-10/source/jibb
920+/* src-300 %jibb /tests/golden/lex-rune-layout-bad-13/source/jibb
921−/* tok-300 %txt /tests/golden/lex-term-bad-10/tokens/txt
921+/* tok-300 %txt /tests/golden/lex-rune-layout-bad-13/tokens/txt
922−/* tre-300 %txt /tests/golden/lex-term-bad-10/tree/txt
922+/* tre-300 %txt /tests/golden/lex-rune-layout-bad-13/tree/txt
923−/* src-301 %jibb /tests/golden/lex-term-bad-11/source/jibb
923+/* src-301 %jibb /tests/golden/lex-rune-layout-bad-14/source/jibb
924−/* tok-301 %txt /tests/golden/lex-term-bad-11/tokens/txt
924+/* tok-301 %txt /tests/golden/lex-rune-layout-bad-14/tokens/txt
925−/* tre-301 %txt /tests/golden/lex-term-bad-11/tree/txt
925+/* tre-301 %txt /tests/golden/lex-rune-layout-bad-14/tree/txt
926−/* src-302 %jibb /tests/golden/lex-term-bad-12/source/jibb
926+/* src-302 %jibb /tests/golden/lex-rune-layout-bad-15/source/jibb
927−/* tok-302 %txt /tests/golden/lex-term-bad-12/tokens/txt
927+/* tok-302 %txt /tests/golden/lex-rune-layout-bad-15/tokens/txt
928−/* tre-302 %txt /tests/golden/lex-term-bad-12/tree/txt
928+/* tre-302 %txt /tests/golden/lex-rune-layout-bad-15/tree/txt
929−/* src-303 %jibb /tests/golden/lex-term-bad-13/source/jibb
929+/* src-303 %jibb /tests/golden/lex-rune-layout-bad-2/source/jibb
930−/* tok-303 %txt /tests/golden/lex-term-bad-13/tokens/txt
930+/* tok-303 %txt /tests/golden/lex-rune-layout-bad-2/tokens/txt
931−/* tre-303 %txt /tests/golden/lex-term-bad-13/tree/txt
931+/* tre-303 %txt /tests/golden/lex-rune-layout-bad-2/tree/txt
932−/* src-304 %jibb /tests/golden/lex-term-bad-14/source/jibb
932+/* src-304 %jibb /tests/golden/lex-rune-layout-bad-3/source/jibb
933−/* tok-304 %txt /tests/golden/lex-term-bad-14/tokens/txt
933+/* tok-304 %txt /tests/golden/lex-rune-layout-bad-3/tokens/txt
934−/* tre-304 %txt /tests/golden/lex-term-bad-14/tree/txt
934+/* tre-304 %txt /tests/golden/lex-rune-layout-bad-3/tree/txt
935−/* src-305 %jibb /tests/golden/lex-term-bad-15/source/jibb
935+/* src-305 %jibb /tests/golden/lex-rune-layout-bad-4/source/jibb
936−/* tok-305 %txt /tests/golden/lex-term-bad-15/tokens/txt
936+/* tok-305 %txt /tests/golden/lex-rune-layout-bad-4/tokens/txt
937−/* tre-305 %txt /tests/golden/lex-term-bad-15/tree/txt
937+/* tre-305 %txt /tests/golden/lex-rune-layout-bad-4/tree/txt
938−/* src-306 %jibb /tests/golden/lex-term-bad-2/source/jibb
938+/* src-306 %jibb /tests/golden/lex-rune-layout-bad-5/source/jibb
939−/* tok-306 %txt /tests/golden/lex-term-bad-2/tokens/txt
939+/* tok-306 %txt /tests/golden/lex-rune-layout-bad-5/tokens/txt
940−/* tre-306 %txt /tests/golden/lex-term-bad-2/tree/txt
940+/* tre-306 %txt /tests/golden/lex-rune-layout-bad-5/tree/txt
941−/* src-307 %jibb /tests/golden/lex-term-bad-3/source/jibb
941+/* src-307 %jibb /tests/golden/lex-rune-layout-bad-6/source/jibb
942−/* tok-307 %txt /tests/golden/lex-term-bad-3/tokens/txt
942+/* tok-307 %txt /tests/golden/lex-rune-layout-bad-6/tokens/txt
943−/* tre-307 %txt /tests/golden/lex-term-bad-3/tree/txt
943+/* tre-307 %txt /tests/golden/lex-rune-layout-bad-6/tree/txt
944−/* src-308 %jibb /tests/golden/lex-term-bad-4/source/jibb
944+/* src-308 %jibb /tests/golden/lex-rune-layout-bad-7/source/jibb
945−/* tok-308 %txt /tests/golden/lex-term-bad-4/tokens/txt
945+/* tok-308 %txt /tests/golden/lex-rune-layout-bad-7/tokens/txt
946−/* tre-308 %txt /tests/golden/lex-term-bad-4/tree/txt
946+/* tre-308 %txt /tests/golden/lex-rune-layout-bad-7/tree/txt
947−/* src-309 %jibb /tests/golden/lex-term-bad-5/source/jibb
947+/* src-309 %jibb /tests/golden/lex-rune-layout-bad-8/source/jibb
948−/* tok-309 %txt /tests/golden/lex-term-bad-5/tokens/txt
948+/* tok-309 %txt /tests/golden/lex-rune-layout-bad-8/tokens/txt
949−/* tre-309 %txt /tests/golden/lex-term-bad-5/tree/txt
949+/* tre-309 %txt /tests/golden/lex-rune-layout-bad-8/tree/txt
950−/* src-310 %jibb /tests/golden/lex-term-bad-6/source/jibb
950+/* src-310 %jibb /tests/golden/lex-rune-layout-bad-9/source/jibb
951−/* tok-310 %txt /tests/golden/lex-term-bad-6/tokens/txt
951+/* tok-310 %txt /tests/golden/lex-rune-layout-bad-9/tokens/txt
952−/* tre-310 %txt /tests/golden/lex-term-bad-6/tree/txt
952+/* tre-310 %txt /tests/golden/lex-rune-layout-bad-9/tree/txt
953−/* src-311 %jibb /tests/golden/lex-term-bad-7/source/jibb
953+/* src-311 %jibb /tests/golden/lex-rune-layout-ok-1/source/jibb
954−/* tok-311 %txt /tests/golden/lex-term-bad-7/tokens/txt
954+/* tok-311 %txt /tests/golden/lex-rune-layout-ok-1/tokens/txt
955−/* tre-311 %txt /tests/golden/lex-term-bad-7/tree/txt
955+/* tre-311 %txt /tests/golden/lex-rune-layout-ok-1/tree/txt
956−/* src-312 %jibb /tests/golden/lex-term-bad-8/source/jibb
956+/* src-312 %jibb /tests/golden/lex-rune-layout-ok-2/source/jibb
957−/* tok-312 %txt /tests/golden/lex-term-bad-8/tokens/txt
957+/* tok-312 %txt /tests/golden/lex-rune-layout-ok-2/tokens/txt
958−/* tre-312 %txt /tests/golden/lex-term-bad-8/tree/txt
958+/* tre-312 %txt /tests/golden/lex-rune-layout-ok-2/tree/txt
959−/* src-313 %jibb /tests/golden/lex-term-bad-9/source/jibb
959+/* src-313 %jibb /tests/golden/lex-ship-bad-1/source/jibb
960−/* tok-313 %txt /tests/golden/lex-term-bad-9/tokens/txt
960+/* tok-313 %txt /tests/golden/lex-ship-bad-1/tokens/txt
961−/* tre-313 %txt /tests/golden/lex-term-bad-9/tree/txt
961+/* tre-313 %txt /tests/golden/lex-ship-bad-1/tree/txt
962−/* src-314 %jibb /tests/golden/lex-term-ok-1/source/jibb
962+/* src-314 %jibb /tests/golden/lex-ship-ok-1/source/jibb
963−/* tok-314 %txt /tests/golden/lex-term-ok-1/tokens/txt
963+/* tok-314 %txt /tests/golden/lex-ship-ok-1/tokens/txt
964−/* tre-314 %txt /tests/golden/lex-term-ok-1/tree/txt
964+/* tre-314 %txt /tests/golden/lex-ship-ok-1/tree/txt
965−/* src-315 %jibb /tests/golden/lex-tight-change-bad-1/source/jibb
965+/* src-315 %jibb /tests/golden/lex-spacing-bad-1/source/jibb
966−/* tok-315 %txt /tests/golden/lex-tight-change-bad-1/tokens/txt
966+/* tok-315 %txt /tests/golden/lex-spacing-bad-1/tokens/txt
967−/* tre-315 %txt /tests/golden/lex-tight-change-bad-1/tree/txt
967+/* tre-315 %txt /tests/golden/lex-spacing-bad-1/tree/txt
968−/* src-316 %jibb /tests/golden/lex-tight-change-bad-2/source/jibb
968+/* src-316 %jibb /tests/golden/lex-spacing-bad-2/source/jibb
969−/* tok-316 %txt /tests/golden/lex-tight-change-bad-2/tokens/txt
969+/* tok-316 %txt /tests/golden/lex-spacing-bad-2/tokens/txt
970−/* tre-316 %txt /tests/golden/lex-tight-change-bad-2/tree/txt
970+/* tre-316 %txt /tests/golden/lex-spacing-bad-2/tree/txt
971−/* src-317 %jibb /tests/golden/lex-tight-change-bad-3/source/jibb
971+/* src-317 %jibb /tests/golden/lex-spacing-ok-1/source/jibb
972−/* tok-317 %txt /tests/golden/lex-tight-change-bad-3/tokens/txt
972+/* tok-317 %txt /tests/golden/lex-spacing-ok-1/tokens/txt
973−/* tre-317 %txt /tests/golden/lex-tight-change-bad-3/tree/txt
973+/* tre-317 %txt /tests/golden/lex-spacing-ok-1/tree/txt
974−/* src-318 %jibb /tests/golden/lex-tight-change-bad-4/source/jibb
974+/* src-318 %jibb /tests/golden/lex-spacing-ok-2/source/jibb
975−/* tok-318 %txt /tests/golden/lex-tight-change-bad-4/tokens/txt
975+/* tok-318 %txt /tests/golden/lex-spacing-ok-2/tokens/txt
976−/* tre-318 %txt /tests/golden/lex-tight-change-bad-4/tree/txt
976+/* tre-318 %txt /tests/golden/lex-spacing-ok-2/tree/txt
977−/* src-319 %jibb /tests/golden/lex-tight-change-bad-5/source/jibb
977+/* src-319 %jibb /tests/golden/lex-spacing-ok-3/source/jibb
978−/* tok-319 %txt /tests/golden/lex-tight-change-bad-5/tokens/txt
978+/* tok-319 %txt /tests/golden/lex-spacing-ok-3/tokens/txt
979−/* tre-319 %txt /tests/golden/lex-tight-change-bad-5/tree/txt
979+/* tre-319 %txt /tests/golden/lex-spacing-ok-3/tree/txt
980−/* src-320 %jibb /tests/golden/lex-tight-change-bad-6/source/jibb
980+/* src-320 %jibb /tests/golden/lex-string-bad-1/source/jibb
981−/* tok-320 %txt /tests/golden/lex-tight-change-bad-6/tokens/txt
981+/* tok-320 %txt /tests/golden/lex-string-bad-1/tokens/txt
982−/* tre-320 %txt /tests/golden/lex-tight-change-bad-6/tree/txt
982+/* tre-320 %txt /tests/golden/lex-string-bad-1/tree/txt
983−/* src-321 %jibb /tests/golden/lex-tight-change-bad-7/source/jibb
983+/* src-321 %jibb /tests/golden/lex-string-bad-2/source/jibb
984−/* tok-321 %txt /tests/golden/lex-tight-change-bad-7/tokens/txt
984+/* tok-321 %txt /tests/golden/lex-string-bad-2/tokens/txt
985−/* tre-321 %txt /tests/golden/lex-tight-change-bad-7/tree/txt
985+/* tre-321 %txt /tests/golden/lex-string-bad-2/tree/txt
986−/* src-322 %jibb /tests/golden/lex-tight-change-bad-8/source/jibb
986+/* src-322 %jibb /tests/golden/lex-string-ok-1/source/jibb
987−/* tok-322 %txt /tests/golden/lex-tight-change-bad-8/tokens/txt
987+/* tok-322 %txt /tests/golden/lex-string-ok-1/tokens/txt
988−/* tre-322 %txt /tests/golden/lex-tight-change-bad-8/tree/txt
988+/* tre-322 %txt /tests/golden/lex-string-ok-1/tree/txt
989−/* src-323 %jibb /tests/golden/lex-tight-change-bad-9/source/jibb
989+/* src-323 %jibb /tests/golden/lex-term-bad-1/source/jibb
990−/* tok-323 %txt /tests/golden/lex-tight-change-bad-9/tokens/txt
990+/* tok-323 %txt /tests/golden/lex-term-bad-1/tokens/txt
991−/* tre-323 %txt /tests/golden/lex-tight-change-bad-9/tree/txt
991+/* tre-323 %txt /tests/golden/lex-term-bad-1/tree/txt
992−/* src-324 %jibb /tests/golden/lex-tight-change-ok-1/source/jibb
992+/* src-324 %jibb /tests/golden/lex-term-bad-10/source/jibb
993−/* tok-324 %txt /tests/golden/lex-tight-change-ok-1/tokens/txt
993+/* tok-324 %txt /tests/golden/lex-term-bad-10/tokens/txt
994−/* tre-324 %txt /tests/golden/lex-tight-change-ok-1/tree/txt
994+/* tre-324 %txt /tests/golden/lex-term-bad-10/tree/txt
995−/* src-325 %jibb /tests/golden/lex-tight-ctor-bad-1/source/jibb
995+/* src-325 %jibb /tests/golden/lex-term-bad-11/source/jibb
996−/* tok-325 %txt /tests/golden/lex-tight-ctor-bad-1/tokens/txt
996+/* tok-325 %txt /tests/golden/lex-term-bad-11/tokens/txt
997−/* tre-325 %txt /tests/golden/lex-tight-ctor-bad-1/tree/txt
997+/* tre-325 %txt /tests/golden/lex-term-bad-11/tree/txt
998−/* src-326 %jibb /tests/golden/lex-tight-ctor-bad-2/source/jibb
998+/* src-326 %jibb /tests/golden/lex-term-bad-12/source/jibb
999−/* tok-326 %txt /tests/golden/lex-tight-ctor-bad-2/tokens/txt
999+/* tok-326 %txt /tests/golden/lex-term-bad-12/tokens/txt
1000−/* tre-326 %txt /tests/golden/lex-tight-ctor-bad-2/tree/txt
1000+/* tre-326 %txt /tests/golden/lex-term-bad-12/tree/txt
1001−/* src-327 %jibb /tests/golden/lex-tight-ctor-ok-1/source/jibb
1001+/* src-327 %jibb /tests/golden/lex-term-bad-13/source/jibb
1002−/* tok-327 %txt /tests/golden/lex-tight-ctor-ok-1/tokens/txt
1002+/* tok-327 %txt /tests/golden/lex-term-bad-13/tokens/txt
1003−/* tre-327 %txt /tests/golden/lex-tight-ctor-ok-1/tree/txt
1003+/* tre-327 %txt /tests/golden/lex-term-bad-13/tree/txt
1004−/* src-328 %jibb /tests/golden/lex-tight-opener-bad-1/source/jibb
1004+/* src-328 %jibb /tests/golden/lex-term-bad-14/source/jibb
1005−/* tok-328 %txt /tests/golden/lex-tight-opener-bad-1/tokens/txt
1005+/* tok-328 %txt /tests/golden/lex-term-bad-14/tokens/txt
1006−/* tre-328 %txt /tests/golden/lex-tight-opener-bad-1/tree/txt
1006+/* tre-328 %txt /tests/golden/lex-term-bad-14/tree/txt
1007−/* src-329 %jibb /tests/golden/lex-tight-opener-bad-2/source/jibb
1007+/* src-329 %jibb /tests/golden/lex-term-bad-15/source/jibb
1008−/* tok-329 %txt /tests/golden/lex-tight-opener-bad-2/tokens/txt
1008+/* tok-329 %txt /tests/golden/lex-term-bad-15/tokens/txt
1009−/* tre-329 %txt /tests/golden/lex-tight-opener-bad-2/tree/txt
1009+/* tre-329 %txt /tests/golden/lex-term-bad-15/tree/txt
1010−/* src-330 %jibb /tests/golden/lex-tight-opener-bad-3/source/jibb
1010+/* src-330 %jibb /tests/golden/lex-term-bad-2/source/jibb
1011−/* tok-330 %txt /tests/golden/lex-tight-opener-bad-3/tokens/txt
1011+/* tok-330 %txt /tests/golden/lex-term-bad-2/tokens/txt
1012−/* tre-330 %txt /tests/golden/lex-tight-opener-bad-3/tree/txt
1012+/* tre-330 %txt /tests/golden/lex-term-bad-2/tree/txt
1013−/* src-331 %jibb /tests/golden/lex-tight-opener-bad-4/source/jibb
1013+/* src-331 %jibb /tests/golden/lex-term-bad-3/source/jibb
1014−/* tok-331 %txt /tests/golden/lex-tight-opener-bad-4/tokens/txt
1014+/* tok-331 %txt /tests/golden/lex-term-bad-3/tokens/txt
1015−/* tre-331 %txt /tests/golden/lex-tight-opener-bad-4/tree/txt
1015+/* tre-331 %txt /tests/golden/lex-term-bad-3/tree/txt
1016−/* src-332 %jibb /tests/golden/lex-tight-opener-ok-1/source/jibb
1016+/* src-332 %jibb /tests/golden/lex-term-bad-4/source/jibb
1017−/* tok-332 %txt /tests/golden/lex-tight-opener-ok-1/tokens/txt
1017+/* tok-332 %txt /tests/golden/lex-term-bad-4/tokens/txt
1018−/* tre-332 %txt /tests/golden/lex-tight-opener-ok-1/tree/txt
1018+/* tre-332 %txt /tests/golden/lex-term-bad-4/tree/txt
1019−/* src-333 %jibb /tests/golden/lex-tight-pair-bad-1/source/jibb
1019+/* src-333 %jibb /tests/golden/lex-term-bad-5/source/jibb
1020−/* tok-333 %txt /tests/golden/lex-tight-pair-bad-1/tokens/txt
1020+/* tok-333 %txt /tests/golden/lex-term-bad-5/tokens/txt
1021−/* tre-333 %txt /tests/golden/lex-tight-pair-bad-1/tree/txt
1021+/* tre-333 %txt /tests/golden/lex-term-bad-5/tree/txt
1022−/* src-334 %jibb /tests/golden/lex-tight-pair-bad-2/source/jibb
1022+/* src-334 %jibb /tests/golden/lex-term-bad-6/source/jibb
1023−/* tok-334 %txt /tests/golden/lex-tight-pair-bad-2/tokens/txt
1023+/* tok-334 %txt /tests/golden/lex-term-bad-6/tokens/txt
1024−/* tre-334 %txt /tests/golden/lex-tight-pair-bad-2/tree/txt
1024+/* tre-334 %txt /tests/golden/lex-term-bad-6/tree/txt
1025−/* src-335 %jibb /tests/golden/lex-tight-pair-bad-3/source/jibb
1025+/* src-335 %jibb /tests/golden/lex-term-bad-7/source/jibb
1026−/* tok-335 %txt /tests/golden/lex-tight-pair-bad-3/tokens/txt
1026+/* tok-335 %txt /tests/golden/lex-term-bad-7/tokens/txt
1027−/* tre-335 %txt /tests/golden/lex-tight-pair-bad-3/tree/txt
1027+/* tre-335 %txt /tests/golden/lex-term-bad-7/tree/txt
1028−/* src-336 %jibb /tests/golden/lex-tight-pair-ok-1/source/jibb
1028+/* src-336 %jibb /tests/golden/lex-term-bad-8/source/jibb
1029−/* tok-336 %txt /tests/golden/lex-tight-pair-ok-1/tokens/txt
1029+/* tok-336 %txt /tests/golden/lex-term-bad-8/tokens/txt
1030−/* tre-336 %txt /tests/golden/lex-tight-pair-ok-1/tree/txt
1030+/* tre-336 %txt /tests/golden/lex-term-bad-8/tree/txt
1031−/* src-337 %jibb /tests/golden/lex-tight-qath-bad-1/source/jibb
1031+/* src-337 %jibb /tests/golden/lex-term-bad-9/source/jibb
1032−/* tok-337 %txt /tests/golden/lex-tight-qath-bad-1/tokens/txt
1032+/* tok-337 %txt /tests/golden/lex-term-bad-9/tokens/txt
1033−/* tre-337 %txt /tests/golden/lex-tight-qath-bad-1/tree/txt
1033+/* tre-337 %txt /tests/golden/lex-term-bad-9/tree/txt
1034−/* src-338 %jibb /tests/golden/lex-tight-qath-bad-2/source/jibb
1034+/* src-338 %jibb /tests/golden/lex-term-ok-1/source/jibb
1035−/* tok-338 %txt /tests/golden/lex-tight-qath-bad-2/tokens/txt
1035+/* tok-338 %txt /tests/golden/lex-term-ok-1/tokens/txt
1036−/* tre-338 %txt /tests/golden/lex-tight-qath-bad-2/tree/txt
1036+/* tre-338 %txt /tests/golden/lex-term-ok-1/tree/txt
1037−/* src-339 %jibb /tests/golden/lex-tight-qath-bad-3/source/jibb
1037+/* src-339 %jibb /tests/golden/lex-tight-change-bad-1/source/jibb
1038−/* tok-339 %txt /tests/golden/lex-tight-qath-bad-3/tokens/txt
1038+/* tok-339 %txt /tests/golden/lex-tight-change-bad-1/tokens/txt
1039−/* tre-339 %txt /tests/golden/lex-tight-qath-bad-3/tree/txt
1039+/* tre-339 %txt /tests/golden/lex-tight-change-bad-1/tree/txt
1040−/* src-340 %jibb /tests/golden/lex-tight-qath-ok-1/source/jibb
1040+/* src-340 %jibb /tests/golden/lex-tight-change-bad-2/source/jibb
1041−/* tok-340 %txt /tests/golden/lex-tight-qath-ok-1/tokens/txt
1041+/* tok-340 %txt /tests/golden/lex-tight-change-bad-2/tokens/txt
1042−/* tre-340 %txt /tests/golden/lex-tight-qath-ok-1/tree/txt
1042+/* tre-340 %txt /tests/golden/lex-tight-change-bad-2/tree/txt
1043−/* src-341 %jibb /tests/golden/lex-tight-unit-bad-1/source/jibb
1043+/* src-341 %jibb /tests/golden/lex-tight-change-bad-3/source/jibb
1044−/* tok-341 %txt /tests/golden/lex-tight-unit-bad-1/tokens/txt
1044+/* tok-341 %txt /tests/golden/lex-tight-change-bad-3/tokens/txt
1045−/* tre-341 %txt /tests/golden/lex-tight-unit-bad-1/tree/txt
1045+/* tre-341 %txt /tests/golden/lex-tight-change-bad-3/tree/txt
1046−/* src-342 %jibb /tests/golden/lex-tight-unit-ok-1/source/jibb
1046+/* src-342 %jibb /tests/golden/lex-tight-change-bad-4/source/jibb
1047−/* tok-342 %txt /tests/golden/lex-tight-unit-ok-1/tokens/txt
1047+/* tok-342 %txt /tests/golden/lex-tight-change-bad-4/tokens/txt
1048−/* tre-342 %txt /tests/golden/lex-tight-unit-ok-1/tree/txt
1048+/* tre-342 %txt /tests/golden/lex-tight-change-bad-4/tree/txt
1049−/* src-343 %jibb /tests/golden/lex-tight-wing-bad-1/source/jibb
1049+/* src-343 %jibb /tests/golden/lex-tight-change-bad-5/source/jibb
1050−/* tok-343 %txt /tests/golden/lex-tight-wing-bad-1/tokens/txt
1050+/* tok-343 %txt /tests/golden/lex-tight-change-bad-5/tokens/txt
1051−/* tre-343 %txt /tests/golden/lex-tight-wing-bad-1/tree/txt
1051+/* tre-343 %txt /tests/golden/lex-tight-change-bad-5/tree/txt
1052−/* src-344 %jibb /tests/golden/lex-tight-wing-ok-1/source/jibb
1052+/* src-344 %jibb /tests/golden/lex-tight-change-bad-6/source/jibb
1053−/* tok-344 %txt /tests/golden/lex-tight-wing-ok-1/tokens/txt
1053+/* tok-344 %txt /tests/golden/lex-tight-change-bad-6/tokens/txt
1054−/* tre-344 %txt /tests/golden/lex-tight-wing-ok-1/tree/txt
1054+/* tre-344 %txt /tests/golden/lex-tight-change-bad-6/tree/txt
1055+/* src-345 %jibb /tests/golden/lex-tight-change-bad-7/source/jibb
1056+/* tok-345 %txt /tests/golden/lex-tight-change-bad-7/tokens/txt
1057+/* tre-345 %txt /tests/golden/lex-tight-change-bad-7/tree/txt
1058+/* src-346 %jibb /tests/golden/lex-tight-change-bad-8/source/jibb
1059+/* tok-346 %txt /tests/golden/lex-tight-change-bad-8/tokens/txt
1060+/* tre-346 %txt /tests/golden/lex-tight-change-bad-8/tree/txt
1061+/* src-347 %jibb /tests/golden/lex-tight-change-bad-9/source/jibb
1062+/* tok-347 %txt /tests/golden/lex-tight-change-bad-9/tokens/txt
1063+/* tre-347 %txt /tests/golden/lex-tight-change-bad-9/tree/txt
1064+/* src-348 %jibb /tests/golden/lex-tight-change-ok-1/source/jibb
1065+/* tok-348 %txt /tests/golden/lex-tight-change-ok-1/tokens/txt
1066+/* tre-348 %txt /tests/golden/lex-tight-change-ok-1/tree/txt
1067+/* src-349 %jibb /tests/golden/lex-tight-ctor-bad-1/source/jibb
1068+/* tok-349 %txt /tests/golden/lex-tight-ctor-bad-1/tokens/txt
1069+/* tre-349 %txt /tests/golden/lex-tight-ctor-bad-1/tree/txt
1070+/* src-350 %jibb /tests/golden/lex-tight-ctor-bad-2/source/jibb
1071+/* tok-350 %txt /tests/golden/lex-tight-ctor-bad-2/tokens/txt
1072+/* tre-350 %txt /tests/golden/lex-tight-ctor-bad-2/tree/txt
1073+/* src-351 %jibb /tests/golden/lex-tight-ctor-ok-1/source/jibb
1074+/* tok-351 %txt /tests/golden/lex-tight-ctor-ok-1/tokens/txt
1075+/* tre-351 %txt /tests/golden/lex-tight-ctor-ok-1/tree/txt
1076+/* src-352 %jibb /tests/golden/lex-tight-opener-bad-1/source/jibb
1077+/* tok-352 %txt /tests/golden/lex-tight-opener-bad-1/tokens/txt
1078+/* tre-352 %txt /tests/golden/lex-tight-opener-bad-1/tree/txt
1079+/* src-353 %jibb /tests/golden/lex-tight-opener-bad-2/source/jibb
1080+/* tok-353 %txt /tests/golden/lex-tight-opener-bad-2/tokens/txt
1081+/* tre-353 %txt /tests/golden/lex-tight-opener-bad-2/tree/txt
1082+/* src-354 %jibb /tests/golden/lex-tight-opener-bad-3/source/jibb
1083+/* tok-354 %txt /tests/golden/lex-tight-opener-bad-3/tokens/txt
1084+/* tre-354 %txt /tests/golden/lex-tight-opener-bad-3/tree/txt
1085+/* src-355 %jibb /tests/golden/lex-tight-opener-bad-4/source/jibb
1086+/* tok-355 %txt /tests/golden/lex-tight-opener-bad-4/tokens/txt
1087+/* tre-355 %txt /tests/golden/lex-tight-opener-bad-4/tree/txt
1088+/* src-356 %jibb /tests/golden/lex-tight-opener-ok-1/source/jibb
1089+/* tok-356 %txt /tests/golden/lex-tight-opener-ok-1/tokens/txt
1090+/* tre-356 %txt /tests/golden/lex-tight-opener-ok-1/tree/txt
1091+/* src-357 %jibb /tests/golden/lex-tight-pair-bad-1/source/jibb
1092+/* tok-357 %txt /tests/golden/lex-tight-pair-bad-1/tokens/txt
1093+/* tre-357 %txt /tests/golden/lex-tight-pair-bad-1/tree/txt
1094+/* src-358 %jibb /tests/golden/lex-tight-pair-bad-2/source/jibb
1095+/* tok-358 %txt /tests/golden/lex-tight-pair-bad-2/tokens/txt
1096+/* tre-358 %txt /tests/golden/lex-tight-pair-bad-2/tree/txt
1097+/* src-359 %jibb /tests/golden/lex-tight-pair-bad-3/source/jibb
1098+/* tok-359 %txt /tests/golden/lex-tight-pair-bad-3/tokens/txt
1099+/* tre-359 %txt /tests/golden/lex-tight-pair-bad-3/tree/txt
1100+/* src-360 %jibb /tests/golden/lex-tight-pair-ok-1/source/jibb
1101+/* tok-360 %txt /tests/golden/lex-tight-pair-ok-1/tokens/txt
1102+/* tre-360 %txt /tests/golden/lex-tight-pair-ok-1/tree/txt
1103+/* src-361 %jibb /tests/golden/lex-tight-qath-bad-1/source/jibb
1104+/* tok-361 %txt /tests/golden/lex-tight-qath-bad-1/tokens/txt
1105+/* tre-361 %txt /tests/golden/lex-tight-qath-bad-1/tree/txt
1106+/* src-362 %jibb /tests/golden/lex-tight-qath-bad-2/source/jibb
1107+/* tok-362 %txt /tests/golden/lex-tight-qath-bad-2/tokens/txt
1108+/* tre-362 %txt /tests/golden/lex-tight-qath-bad-2/tree/txt
1109+/* src-363 %jibb /tests/golden/lex-tight-qath-bad-3/source/jibb
1110+/* tok-363 %txt /tests/golden/lex-tight-qath-bad-3/tokens/txt
1111+/* tre-363 %txt /tests/golden/lex-tight-qath-bad-3/tree/txt
1112+/* src-364 %jibb /tests/golden/lex-tight-qath-ok-1/source/jibb
1113+/* tok-364 %txt /tests/golden/lex-tight-qath-ok-1/tokens/txt
1114+/* tre-364 %txt /tests/golden/lex-tight-qath-ok-1/tree/txt
1115+/* src-365 %jibb /tests/golden/lex-tight-unit-bad-1/source/jibb
1116+/* tok-365 %txt /tests/golden/lex-tight-unit-bad-1/tokens/txt
1117+/* tre-365 %txt /tests/golden/lex-tight-unit-bad-1/tree/txt
1118+/* src-366 %jibb /tests/golden/lex-tight-unit-ok-1/source/jibb
1119+/* tok-366 %txt /tests/golden/lex-tight-unit-ok-1/tokens/txt
1120+/* tre-366 %txt /tests/golden/lex-tight-unit-ok-1/tree/txt
1121+/* src-367 %jibb /tests/golden/lex-tight-wing-bad-1/source/jibb
1122+/* tok-367 %txt /tests/golden/lex-tight-wing-bad-1/tokens/txt
1123+/* tre-367 %txt /tests/golden/lex-tight-wing-bad-1/tree/txt
1124+/* src-368 %jibb /tests/golden/lex-tight-wing-ok-1/source/jibb
1125+/* tok-368 %txt /tests/golden/lex-tight-wing-ok-1/tokens/txt
1126+/* tre-368 %txt /tests/golden/lex-tight-wing-ok-1/tree/txt
1055|%
1127|%
1056:: one arm per case
1128:: one arm per case
1057::
1129::
@@ -1109,640 +1181,688 @@
1109 (check ~.inline-duration src-26 `tok-26 `tre-26)
1181 (check ~.inline-duration src-26 `tok-26 `tre-26)
1110++ test-inline-fold-mold
1182++ test-inline-fold-mold
1111 (check ~.inline-fold-mold src-27 `tok-27 `tre-27)
1183 (check ~.inline-fold-mold src-27 `tok-27 `tre-27)
1184+++ test-inline-gate-after-definition-bad
1185+ (check ~.inline-gate-after-definition-bad src-28 `tok-28 `tre-28)
1186+++ test-inline-gate-field-bad
1187+ (check ~.inline-gate-field-bad src-29 `tok-29 `tre-29)
1112++ test-inline-gate-mold
1188++ test-inline-gate-mold
1113− (check ~.inline-gate-mold src-28 `tok-28 `tre-28)
1189+ (check ~.inline-gate-mold src-30 `tok-30 `tre-30)
1114++ test-inline-gate-sample-binds
1190++ test-inline-gate-sample-binds
1115− (check ~.inline-gate-sample-binds src-29 `tok-29 `tre-29)
1191+ (check ~.inline-gate-sample-binds src-31 `tok-31 `tre-31)
1116++ test-inline-gate-samples
1192++ test-inline-gate-samples
1117− (check ~.inline-gate-samples src-30 `tok-30 `tre-30)
1193+ (check ~.inline-gate-samples src-32 `tok-32 `tre-32)
1118++ test-inline-gate-wide
1194++ test-inline-gate-wide
1119− (check ~.inline-gate-wide src-31 `tok-31 `tre-31)
1195+ (check ~.inline-gate-wide src-33 `tok-33 `tre-33)
1196+++ test-inline-generic-apply-bad
1197+ (check ~.inline-generic-apply-bad src-34 `tok-34 `tre-34)
1198+++ test-inline-generic-both-bad
1199+ (check ~.inline-generic-both-bad src-35 `tok-35 `tre-35)
1200+++ test-inline-generic-case-bad
1201+ (check ~.inline-generic-case-bad src-36 `tok-36 `tre-36)
1202+++ test-inline-generic-cast-bad
1203+ (check ~.inline-generic-cast-bad src-37 `tok-37 `tre-37)
1204+++ test-inline-generic-empty-bad
1205+ (check ~.inline-generic-empty-bad src-38 `tok-38 `tre-38)
1206+++ test-inline-generic-field-bad
1207+ (check ~.inline-generic-field-bad src-39 `tok-39 `tre-39)
1120++ test-inline-generic-mold
1208++ test-inline-generic-mold
1121− (check ~.inline-generic-mold src-32 `tok-32 `tre-32)
1209+ (check ~.inline-generic-mold src-40 `tok-40 `tre-40)
1210+++ test-inline-generic-prefix-bad
1211+ (check ~.inline-generic-prefix-bad src-41 `tok-41 `tre-41)
1122++ test-inline-hex
1212++ test-inline-hex
1123− (check ~.inline-hex src-33 `tok-33 `tre-33)
1213+ (check ~.inline-hex src-42 `tok-42 `tre-42)
1214+++ test-inline-hoon-union-apply-bad
1215+ (check ~.inline-hoon-union-apply-bad src-43 `tok-43 `tre-43)
1216+++ test-inline-hoon-union-cast-bad
1217+ (check ~.inline-hoon-union-cast-bad src-44 `tok-44 `tre-44)
1218+++ test-inline-hoon-union-definition-bad
1219+ (check ~.inline-hoon-union-definition-bad src-45 `tok-45 `tre-45)
1220+++ test-inline-hoon-union-field-bad
1221+ (check ~.inline-hoon-union-field-bad src-46 `tok-46 `tre-46)
1222+++ test-inline-hoon-union-gate-bad
1223+ (check ~.inline-hoon-union-gate-bad src-47 `tok-47 `tre-47)
1224+++ test-inline-hoon-union-nested-sample-bad
1225+ (check ~.inline-hoon-union-nested-sample-bad src-48 `tok-48 `tre-48)
1226+++ test-inline-hoon-union-open-apply-bad
1227+ (check ~.inline-hoon-union-open-apply-bad src-49 `tok-49 `tre-49)
1228+++ test-inline-hoon-union-open-field-bad
1229+ (check ~.inline-hoon-union-open-field-bad src-50 `tok-50 `tre-50)
1230+++ test-inline-hoon-union-sample-bad
1231+ (check ~.inline-hoon-union-sample-bad src-51 `tok-51 `tre-51)
1232+++ test-inline-hoon-union-wide-sample-bad
1233+ (check ~.inline-hoon-union-wide-sample-bad src-52 `tok-52 `tre-52)
1124++ test-inline-import-mark-face-bad
1234++ test-inline-import-mark-face-bad
1125− (check ~.inline-import-mark-face-bad src-34 `tok-34 `tre-34)
1235+ (check ~.inline-import-mark-face-bad src-53 `tok-53 `tre-53)
1126++ test-inline-import-root-bad
1236++ test-inline-import-root-bad
1127− (check ~.inline-import-root-bad src-35 `tok-35 `tre-35)
1237+ (check ~.inline-import-root-bad src-54 `tok-54 `tre-54)
1128++ test-inline-imports-after-definition
1238++ test-inline-imports-after-definition
1129− (check ~.inline-imports-after-definition src-36 `tok-36 `tre-36)
1239+ (check ~.inline-imports-after-definition src-55 `tok-55 `tre-55)
1130++ test-inline-island
1240++ test-inline-island
1131− (check ~.inline-island src-37 `tok-37 `tre-37)
1241+ (check ~.inline-island src-56 `tok-56 `tre-56)
1132++ test-inline-kinds
1242++ test-inline-kinds
1133− (check ~.inline-kinds src-38 `tok-38 `tre-38)
1243+ (check ~.inline-kinds src-57 `tok-57 `tre-57)
1134++ test-inline-knot
1244++ test-inline-knot
1135− (check ~.inline-knot src-39 `tok-39 `tre-39)
1245+ (check ~.inline-knot src-58 `tok-58 `tre-58)
1136++ test-inline-leftout-barcab
1246++ test-inline-leftout-barcab
1137− (check ~.inline-leftout-barcab src-40 `tok-40 `tre-40)
1247+ (check ~.inline-leftout-barcab src-59 `tok-59 `tre-59)
1138++ test-inline-leftout-barcen
1248++ test-inline-leftout-barcen
1139− (check ~.inline-leftout-barcen src-41 `tok-41 `tre-41)
1249+ (check ~.inline-leftout-barcen src-60 `tok-60 `tre-60)
1140++ test-inline-leftout-barcen-2
1250++ test-inline-leftout-barcen-2
1141− (check ~.inline-leftout-barcen-2 src-42 `tok-42 `tre-42)
1251+ (check ~.inline-leftout-barcen-2 src-61 `tok-61 `tre-61)
1142++ test-inline-leftout-barcen-3
1252++ test-inline-leftout-barcen-3
1143− (check ~.inline-leftout-barcen-3 src-43 `tok-43 `tre-43)
1253+ (check ~.inline-leftout-barcen-3 src-62 `tok-62 `tre-62)
1144++ test-inline-leftout-barhep
1254++ test-inline-leftout-barhep
1145− (check ~.inline-leftout-barhep src-44 `tok-44 `tre-44)
1255+ (check ~.inline-leftout-barhep src-63 `tok-63 `tre-63)
1146++ test-inline-leftout-bartar
1256++ test-inline-leftout-bartar
1147− (check ~.inline-leftout-bartar src-45 `tok-45 `tre-45)
1257+ (check ~.inline-leftout-bartar src-64 `tok-64 `tre-64)
1258+++ test-inline-leftout-buc-alone
1259+ (check ~.inline-leftout-buc-alone src-65 `tok-65 `tre-65)
1148++ test-inline-leftout-buc-paren
1260++ test-inline-leftout-buc-paren
1149− (check ~.inline-leftout-buc-paren src-46 `tok-46 `tre-46)
1261+ (check ~.inline-leftout-buc-paren src-66 `tok-66 `tre-66)
1150++ test-inline-leftout-buc-paren-2
1262++ test-inline-leftout-buc-paren-2
1151− (check ~.inline-leftout-buc-paren-2 src-47 `tok-47 `tre-47)
1263+ (check ~.inline-leftout-buc-paren-2 src-67 `tok-67 `tre-67)
1152++ test-inline-leftout-buc-paren-3
1264++ test-inline-leftout-buc-paren-3
1153− (check ~.inline-leftout-buc-paren-3 src-48 `tok-48 `tre-48)
1265+ (check ~.inline-leftout-buc-paren-3 src-68 `tok-68 `tre-68)
1154++ test-inline-leftout-buccen
1266++ test-inline-leftout-buccen
1155− (check ~.inline-leftout-buccen src-49 `tok-49 `tre-49)
1267+ (check ~.inline-leftout-buccen src-69 `tok-69 `tre-69)
1156++ test-inline-leftout-cencol
1268++ test-inline-leftout-cencol
1157− (check ~.inline-leftout-cencol src-50 `tok-50 `tre-50)
1269+ (check ~.inline-leftout-cencol src-70 `tok-70 `tre-70)
1158++ test-inline-leftout-cenhep
1270++ test-inline-leftout-cenhep
1159− (check ~.inline-leftout-cenhep src-51 `tok-51 `tre-51)
1271+ (check ~.inline-leftout-cenhep src-71 `tok-71 `tre-71)
1160++ test-inline-leftout-centis
1272++ test-inline-leftout-centis
1161− (check ~.inline-leftout-centis src-52 `tok-52 `tre-52)
1273+ (check ~.inline-leftout-centis src-72 `tok-72 `tre-72)
1162++ test-inline-leftout-colhep
1274++ test-inline-leftout-colhep
1163− (check ~.inline-leftout-colhep src-53 `tok-53 `tre-53)
1275+ (check ~.inline-leftout-colhep src-73 `tok-73 `tre-73)
1164++ test-inline-leftout-colon-wing
1276++ test-inline-leftout-colon-wing
1165− (check ~.inline-leftout-colon-wing src-54 `tok-54 `tre-54)
1277+ (check ~.inline-leftout-colon-wing src-74 `tok-74 `tre-74)
1166++ test-inline-leftout-colsig
1278++ test-inline-leftout-colsig
1167− (check ~.inline-leftout-colsig src-55 `tok-55 `tre-55)
1279+ (check ~.inline-leftout-colsig src-75 `tok-75 `tre-75)
1168++ test-inline-leftout-coltar
1280++ test-inline-leftout-coltar
1169− (check ~.inline-leftout-coltar src-56 `tok-56 `tre-56)
1281+ (check ~.inline-leftout-coltar src-76 `tok-76 `tre-76)
1170++ test-inline-leftout-dottar
1282++ test-inline-leftout-dottar
1171− (check ~.inline-leftout-dottar src-57 `tok-57 `tre-57)
1283+ (check ~.inline-leftout-dottar src-77 `tok-77 `tre-77)
1172++ test-inline-leftout-dottis
1284++ test-inline-leftout-dottis
1173− (check ~.inline-leftout-dottis src-58 `tok-58 `tre-58)
1285+ (check ~.inline-leftout-dottis src-78 `tok-78 `tre-78)
1174++ test-inline-leftout-faslus
1286++ test-inline-leftout-faslus
1175− (check ~.inline-leftout-faslus src-59 `tok-59 `tre-59)
1287+ (check ~.inline-leftout-faslus src-79 `tok-79 `tre-79)
1176++ test-inline-leftout-hephep
1288++ test-inline-leftout-hephep
1177− (check ~.inline-leftout-hephep src-60 `tok-60 `tre-60)
1289+ (check ~.inline-leftout-hephep src-80 `tok-80 `tre-80)
1178++ test-inline-leftout-kethep-wide
1290++ test-inline-leftout-kethep-wide
1179− (check ~.inline-leftout-kethep-wide src-61 `tok-61 `tre-61)
1291+ (check ~.inline-leftout-kethep-wide src-81 `tok-81 `tre-81)
1180++ test-inline-leftout-kettar
1292++ test-inline-leftout-kettar
1181− (check ~.inline-leftout-kettar src-62 `tok-62 `tre-62)
1293+ (check ~.inline-leftout-kettar src-82 `tok-82 `tre-82)
1182++ test-inline-leftout-miccol
1294++ test-inline-leftout-miccol
1183− (check ~.inline-leftout-miccol src-63 `tok-63 `tre-63)
1295+ (check ~.inline-leftout-miccol src-83 `tok-83 `tre-83)
1184++ test-inline-leftout-sail
1296++ test-inline-leftout-sail
1185− (check ~.inline-leftout-sail src-64 `tok-64 `tre-64)
1297+ (check ~.inline-leftout-sail src-84 `tok-84 `tre-84)
1186++ test-inline-leftout-sigbar
1298++ test-inline-leftout-sigbar
1187− (check ~.inline-leftout-sigbar src-65 `tok-65 `tre-65)
1299+ (check ~.inline-leftout-sigbar src-85 `tok-85 `tre-85)
1188++ test-inline-leftout-signed-float-auras
1300++ test-inline-leftout-signed-float-auras
1189− (check ~.inline-leftout-signed-float-auras src-66 `tok-66 `tre-66)
1301+ (check ~.inline-leftout-signed-float-auras src-86 `tok-86 `tre-86)
1190++ test-inline-leftout-signed-float-auras-2
1302++ test-inline-leftout-signed-float-auras-2
1191− (check ~.inline-leftout-signed-float-auras-2 src-67 `tok-67 `tre-67)
1303+ (check ~.inline-leftout-signed-float-auras-2 src-87 `tok-87 `tre-87)
1192++ test-inline-leftout-sigpam-wide
1304++ test-inline-leftout-sigpam-wide
1193− (check ~.inline-leftout-sigpam-wide src-68 `tok-68 `tre-68)
1305+ (check ~.inline-leftout-sigpam-wide src-88 `tok-88 `tre-88)
1194++ test-inline-leftout-tis-paren
1306++ test-inline-leftout-tis-paren
1195− (check ~.inline-leftout-tis-paren src-69 `tok-69 `tre-69)
1307+ (check ~.inline-leftout-tis-paren src-89 `tok-89 `tre-89)
1196++ test-inline-leftout-tisfas
1308++ test-inline-leftout-tisfas
1197− (check ~.inline-leftout-tisfas src-70 `tok-70 `tre-70)
1309+ (check ~.inline-leftout-tisfas src-90 `tok-90 `tre-90)
1198++ test-inline-leftout-tisgal
1310++ test-inline-leftout-tisgal
1199− (check ~.inline-leftout-tisgal src-71 `tok-71 `tre-71)
1311+ (check ~.inline-leftout-tisgal src-91 `tok-91 `tre-91)
1200++ test-inline-leftout-tisgal-2
1312++ test-inline-leftout-tisgal-2
1201− (check ~.inline-leftout-tisgal-2 src-72 `tok-72 `tre-72)
1313+ (check ~.inline-leftout-tisgal-2 src-92 `tok-92 `tre-92)
1202++ test-inline-leftout-tisgar
1314++ test-inline-leftout-tisgar
1203− (check ~.inline-leftout-tisgar src-73 `tok-73 `tre-73)
1315+ (check ~.inline-leftout-tisgar src-93 `tok-93 `tre-93)
1204++ test-inline-leftout-tislus
1316++ test-inline-leftout-tislus
1205− (check ~.inline-leftout-tislus src-74 `tok-74 `tre-74)
1317+ (check ~.inline-leftout-tislus src-94 `tok-94 `tre-94)
1206++ test-inline-leftout-tistis
1318++ test-inline-leftout-tistis
1207− (check ~.inline-leftout-tistis src-75 `tok-75 `tre-75)
1319+ (check ~.inline-leftout-tistis src-95 `tok-95 `tre-95)
1208++ test-inline-leftout-wutcol
1320++ test-inline-leftout-wutcol
1209− (check ~.inline-leftout-wutcol src-76 `tok-76 `tre-76)
1321+ (check ~.inline-leftout-wutcol src-96 `tok-96 `tre-96)
1210++ test-inline-leftout-wutcol-2
1322++ test-inline-leftout-wutcol-2
1211− (check ~.inline-leftout-wutcol-2 src-77 `tok-77 `tre-77)
1323+ (check ~.inline-leftout-wutcol-2 src-97 `tok-97 `tre-97)
1212++ test-inline-leftout-wuthep-wide
1324++ test-inline-leftout-wuthep-wide
1213− (check ~.inline-leftout-wuthep-wide src-78 `tok-78 `tre-78)
1325+ (check ~.inline-leftout-wuthep-wide src-98 `tok-98 `tre-98)
1214++ test-inline-leftout-wutlus
1326++ test-inline-leftout-wutlus
1215− (check ~.inline-leftout-wutlus src-79 `tok-79 `tre-79)
1327+ (check ~.inline-leftout-wutlus src-99 `tok-99 `tre-99)
1216++ test-inline-leftout-wutsig
1328++ test-inline-leftout-wutsig
1217− (check ~.inline-leftout-wutsig src-80 `tok-80 `tre-80)
1329+ (check ~.inline-leftout-wutsig src-100 `tok-100 `tre-100)
1218++ test-inline-leftout-wutzap
1330++ test-inline-leftout-wutzap
1219− (check ~.inline-leftout-wutzap src-81 `tok-81 `tre-81)
1331+ (check ~.inline-leftout-wutzap src-101 `tok-101 `tre-101)
1220++ test-inline-leftout-zap-not
1332++ test-inline-leftout-zap-not
1221− (check ~.inline-leftout-zap-not src-82 `tok-82 `tre-82)
1333+ (check ~.inline-leftout-zap-not src-102 `tok-102 `tre-102)
1222++ test-inline-leftout-zap-not-2
1334++ test-inline-leftout-zap-not-2
1223− (check ~.inline-leftout-zap-not-2 src-83 `tok-83 `tre-83)
1335+ (check ~.inline-leftout-zap-not-2 src-103 `tok-103 `tre-103)
1224++ test-inline-leftout-zapgar
1336++ test-inline-leftout-zapgar
1225− (check ~.inline-leftout-zapgar src-84 `tok-84 `tre-84)
1337+ (check ~.inline-leftout-zapgar src-104 `tok-104 `tre-104)
1226++ test-inline-list
1338++ test-inline-list
1227− (check ~.inline-list src-85 `tok-85 `tre-85)
1339+ (check ~.inline-list src-105 `tok-105 `tre-105)
1228++ test-inline-list-parens
1340++ test-inline-list-parens
1229− (check ~.inline-list-parens src-86 `tok-86 `tre-86)
1341+ (check ~.inline-list-parens src-106 `tok-106 `tre-106)
1230++ test-inline-literal-defaults
1342++ test-inline-literal-defaults
1231− (check ~.inline-literal-defaults src-87 `tok-87 `tre-87)
1343+ (check ~.inline-literal-defaults src-107 `tok-107 `tre-107)
1232++ test-inline-load-slug
1344++ test-inline-load-slug
1233− (check ~.inline-load-slug src-88 `tok-88 `tre-88)
1345+ (check ~.inline-load-slug src-108 `tok-108 `tre-108)
1234++ test-inline-local-names
1346++ test-inline-local-names
1235− (check ~.inline-local-names src-89 `tok-89 `tre-89)
1347+ (check ~.inline-local-names src-109 `tok-109 `tre-109)
1236++ test-inline-local-names-bodies
1348++ test-inline-local-names-bodies
1237− (check ~.inline-local-names-bodies src-90 `tok-90 `tre-90)
1349+ (check ~.inline-local-names-bodies src-110 `tok-110 `tre-110)
1238++ test-inline-loobean
1350++ test-inline-loobean
1239− (check ~.inline-loobean src-91 `tok-91 `tre-91)
1351+ (check ~.inline-loobean src-111 `tok-111 `tre-111)
1240++ test-inline-mark-digit
1352++ test-inline-mark-digit
1241− (check ~.inline-mark-digit src-92 `tok-92 `tre-92)
1353+ (check ~.inline-mark-digit src-112 `tok-112 `tre-112)
1242++ test-inline-module-definitions
1354++ test-inline-module-definitions
1243− (check ~.inline-module-definitions src-93 `tok-93 `tre-93)
1355+ (check ~.inline-module-definitions src-113 `tok-113 `tre-113)
1244++ test-inline-mold-add
1356++ test-inline-mold-add
1245− (check ~.inline-mold-add src-94 `tok-94 `tre-94)
1357+ (check ~.inline-mold-add src-114 `tok-114 `tre-114)
1246++ test-inline-mold-any-empty
1358++ test-inline-mold-any-empty
1247− (check ~.inline-mold-any-empty src-95 `tok-95 `tre-95)
1359+ (check ~.inline-mold-any-empty src-115 `tok-115 `tre-115)
1248++ test-inline-mold-atoms
1360++ test-inline-mold-atoms
1249− (check ~.inline-mold-atoms src-96 `tok-96 `tre-96)
1361+ (check ~.inline-mold-atoms src-116 `tok-116 `tre-116)
1250++ test-inline-mold-constants
1362++ test-inline-mold-constants
1251− (check ~.inline-mold-constants src-97 `tok-97 `tre-97)
1363+ (check ~.inline-mold-constants src-117 `tok-117 `tre-117)
1252++ test-inline-mold-containers
1364++ test-inline-mold-containers
1253− (check ~.inline-mold-containers src-98 `tok-98 `tre-98)
1365+ (check ~.inline-mold-containers src-118 `tok-118 `tre-118)
1254++ test-inline-mold-gate
1366++ test-inline-mold-gate
1255− (check ~.inline-mold-gate src-99 `tok-99 `tre-99)
1367+ (check ~.inline-mold-gate src-119 `tok-119 `tre-119)
1256++ test-inline-mold-generic
1368++ test-inline-mold-generic
1257− (check ~.inline-mold-generic src-100 `tok-100 `tre-100)
1369+ (check ~.inline-mold-generic src-120 `tok-120 `tre-120)
1258++ test-inline-mold-opaque
1370++ test-inline-mold-opaque
1259− (check ~.inline-mold-opaque src-101 `tok-101 `tre-101)
1371+ (check ~.inline-mold-opaque src-121 `tok-121 `tre-121)
1260++ test-inline-mold-paths
1372++ test-inline-mold-paths
1261− (check ~.inline-mold-paths src-102 `tok-102 `tre-102)
1373+ (check ~.inline-mold-paths src-122 `tok-122 `tre-122)
1262++ test-inline-mold-records
1374++ test-inline-mold-records
1263− (check ~.inline-mold-records src-103 `tok-103 `tre-103)
1375+ (check ~.inline-mold-records src-123 `tok-123 `tre-123)
1264++ test-inline-namespaces
1376++ test-inline-namespaces
1265− (check ~.inline-namespaces src-104 `tok-104 `tre-104)
1377+ (check ~.inline-namespaces src-124 `tok-124 `tre-124)
1266++ test-inline-no-operators
1378++ test-inline-no-operators
1267− (check ~.inline-no-operators src-105 `tok-105 `tre-105)
1379+ (check ~.inline-no-operators src-125 `tok-125 `tre-125)
1268++ test-inline-no-subs
1380++ test-inline-no-subs
1269− (check ~.inline-no-subs src-106 `tok-106 `tre-106)
1381+ (check ~.inline-no-subs src-126 `tok-126 `tre-126)
1270++ test-inline-null
1382++ test-inline-null
1271− (check ~.inline-null src-107 `tok-107 `tre-107)
1383+ (check ~.inline-null src-127 `tok-127 `tre-127)
1272++ test-inline-pair
1384++ test-inline-pair
1273− (check ~.inline-pair src-108 `tok-108 `tre-108)
1385+ (check ~.inline-pair src-128 `tok-128 `tre-128)
1274++ test-inline-pairs-two-items
1386++ test-inline-pairs-two-items
1275− (check ~.inline-pairs-two-items src-109 `tok-109 `tre-109)
1387+ (check ~.inline-pairs-two-items src-129 `tok-129 `tre-129)
1276++ test-inline-path
1388++ test-inline-path
1277− (check ~.inline-path src-110 `tok-110 `tre-110)
1389+ (check ~.inline-path src-130 `tok-130 `tre-130)
1278++ test-inline-pattern-any
1390++ test-inline-pattern-any
1279− (check ~.inline-pattern-any src-111 `tok-111 `tre-111)
1391+ (check ~.inline-pattern-any src-131 `tok-131 `tre-131)
1280++ test-inline-pattern-cell
1392++ test-inline-pattern-cell
1281− (check ~.inline-pattern-cell src-112 `tok-112 `tre-112)
1393+ (check ~.inline-pattern-cell src-132 `tok-132 `tre-132)
1282++ test-inline-pattern-cell-open-bad
1394++ test-inline-pattern-cell-open-bad
1283− (check ~.inline-pattern-cell-open-bad src-113 `tok-113 `tre-113)
1395+ (check ~.inline-pattern-cell-open-bad src-133 `tok-133 `tre-133)
1284++ test-inline-pattern-crash-arm
1396++ test-inline-pattern-crash-arm
1285− (check ~.inline-pattern-crash-arm src-114 `tok-114 `tre-114)
1397+ (check ~.inline-pattern-crash-arm src-134 `tok-134 `tre-134)
1286++ test-inline-pattern-crash-bad
1398++ test-inline-pattern-crash-bad
1287− (check ~.inline-pattern-crash-bad src-115 `tok-115 `tre-115)
1399+ (check ~.inline-pattern-crash-bad src-135 `tok-135 `tre-135)
1288++ test-inline-pattern-date-bad
1400++ test-inline-pattern-date-bad
1289− (check ~.inline-pattern-date-bad src-116 `tok-116 `tre-116)
1401+ (check ~.inline-pattern-date-bad src-136 `tok-136 `tre-136)
1290++ test-inline-pattern-duration-bad
1402++ test-inline-pattern-duration-bad
1291− (check ~.inline-pattern-duration-bad src-117 `tok-117 `tre-117)
1403+ (check ~.inline-pattern-duration-bad src-137 `tok-137 `tre-137)
1292++ test-inline-pattern-eq
1404++ test-inline-pattern-eq
1293− (check ~.inline-pattern-eq src-118 `tok-118 `tre-118)
1405+ (check ~.inline-pattern-eq src-138 `tok-138 `tre-138)
1294++ test-inline-pattern-face-bad
1406++ test-inline-pattern-face-bad
1295− (check ~.inline-pattern-face-bad src-119 `tok-119 `tre-119)
1407+ (check ~.inline-pattern-face-bad src-139 `tok-139 `tre-139)
1296++ test-inline-pattern-head-tag
1408++ test-inline-pattern-head-tag
1297− (check ~.inline-pattern-head-tag src-120 `tok-120 `tre-120)
1409+ (check ~.inline-pattern-head-tag src-140 `tok-140 `tre-140)
1298++ test-inline-pattern-interpolated-bad
1410++ test-inline-pattern-interpolated-bad
1299− (check ~.inline-pattern-interpolated-bad src-121 `tok-121 `tre-121)
1411+ (check ~.inline-pattern-interpolated-bad src-141 `tok-141 `tre-141)
1300++ test-inline-pattern-list-bad
1412++ test-inline-pattern-list-bad
1301− (check ~.inline-pattern-list-bad src-122 `tok-122 `tre-122)
1413+ (check ~.inline-pattern-list-bad src-142 `tok-142 `tre-142)
1302++ test-inline-pattern-literals
1414++ test-inline-pattern-literals
1303− (check ~.inline-pattern-literals src-123 `tok-123 `tre-123)
1415+ (check ~.inline-pattern-literals src-143 `tok-143 `tre-143)
1304++ test-inline-pattern-loobean
1416++ test-inline-pattern-loobean
1305− (check ~.inline-pattern-loobean src-124 `tok-124 `tre-124)
1417+ (check ~.inline-pattern-loobean src-144 `tok-144 `tre-144)
1306++ test-inline-pattern-move-any
1418++ test-inline-pattern-move-any
1307− (check ~.inline-pattern-move-any src-125 `tok-125 `tre-125)
1419+ (check ~.inline-pattern-move-any src-145 `tok-145 `tre-145)
1308++ test-inline-pattern-name
1420++ test-inline-pattern-name
1309− (check ~.inline-pattern-name src-126 `tok-126 `tre-126)
1421+ (check ~.inline-pattern-name src-146 `tok-146 `tre-146)
1310++ test-inline-pattern-null
1422++ test-inline-pattern-null
1311− (check ~.inline-pattern-null src-127 `tok-127 `tre-127)
1423+ (check ~.inline-pattern-null src-147 `tok-147 `tre-147)
1312++ test-inline-pattern-pair-bad
1424++ test-inline-pattern-pair-bad
1313− (check ~.inline-pattern-pair-bad src-128 `tok-128 `tre-128)
1425+ (check ~.inline-pattern-pair-bad src-148 `tok-148 `tre-148)
1314++ test-inline-pattern-tail-tag
1426++ test-inline-pattern-tail-tag
1315− (check ~.inline-pattern-tail-tag src-129 `tok-129 `tre-129)
1427+ (check ~.inline-pattern-tail-tag src-149 `tok-149 `tre-149)
1316++ test-inline-pattern-term
1428++ test-inline-pattern-term
1317− (check ~.inline-pattern-term src-130 `tok-130 `tre-130)
1429+ (check ~.inline-pattern-term src-150 `tok-150 `tre-150)
1318++ test-inline-pattern-two-tags
1430++ test-inline-pattern-two-tags
1319− (check ~.inline-pattern-two-tags src-131 `tok-131 `tre-131)
1431+ (check ~.inline-pattern-two-tags src-151 `tok-151 `tre-151)
1320++ test-inline-pattern-unit
1432++ test-inline-pattern-unit
1321− (check ~.inline-pattern-unit src-132 `tok-132 `tre-132)
1433+ (check ~.inline-pattern-unit src-152 `tok-152 `tre-152)
1322++ test-inline-qath
1434++ test-inline-qath
1323− (check ~.inline-qath src-133 `tok-133 `tre-133)
1435+ (check ~.inline-qath src-153 `tok-153 `tre-153)
1324++ test-inline-requests
1436++ test-inline-requests
1325− (check ~.inline-requests src-134 `tok-134 `tre-134)
1437+ (check ~.inline-requests src-154 `tok-154 `tre-154)
1326++ test-inline-scry-case
1438++ test-inline-scry-case
1327− (check ~.inline-scry-case src-135 `tok-135 `tre-135)
1439+ (check ~.inline-scry-case src-155 `tok-155 `tre-155)
1328++ test-inline-self-reference
1440++ test-inline-self-reference
1329− (check ~.inline-self-reference src-136 `tok-136 `tre-136)
1441+ (check ~.inline-self-reference src-156 `tok-156 `tre-156)
1330++ test-inline-ship
1442++ test-inline-ship
1331− (check ~.inline-ship src-137 `tok-137 `tre-137)
1443+ (check ~.inline-ship src-157 `tok-157 `tre-157)
1332++ test-inline-static-image
1444++ test-inline-static-image
1333− (check ~.inline-static-image src-138 `tok-138 `tre-138)
1445+ (check ~.inline-static-image src-158 `tok-158 `tre-158)
1334++ test-inline-string
1446++ test-inline-string
1335− (check ~.inline-string src-139 `tok-139 `tre-139)
1447+ (check ~.inline-string src-159 `tok-159 `tre-159)
1336++ test-inline-tag-shape
1448++ test-inline-tag-shape
1337− (check ~.inline-tag-shape src-140 `tok-140 `tre-140)
1449+ (check ~.inline-tag-shape src-160 `tok-160 `tre-160)
1338++ test-inline-term
1450++ test-inline-term
1339− (check ~.inline-term src-141 `tok-141 `tre-141)
1451+ (check ~.inline-term src-161 `tok-161 `tre-161)
1340++ test-inline-term-numeric
1452++ test-inline-term-numeric
1341− (check ~.inline-term-numeric src-142 `tok-142 `tre-142)
1453+ (check ~.inline-term-numeric src-162 `tok-162 `tre-162)
1342++ test-inline-text-items
1454++ test-inline-text-items
1343− (check ~.inline-text-items src-143 `tok-143 `tre-143)
1455+ (check ~.inline-text-items src-163 `tok-163 `tre-163)
1456+++ test-inline-union-both-bad
1457+ (check ~.inline-union-both-bad src-164 `tok-164 `tre-164)
1458+++ test-inline-union-local
1459+ (check ~.inline-union-local src-165 `tok-165 `tre-165)
1460+++ test-inline-union-one-case
1461+ (check ~.inline-union-one-case src-166 `tok-166 `tre-166)
1462+++ test-inline-union-record-bad
1463+ (check ~.inline-union-record-bad src-167 `tok-167 `tre-167)
1344++ test-inline-union-wide
1464++ test-inline-union-wide
1345− (check ~.inline-union-wide src-144 `tok-144 `tre-144)
1465+ (check ~.inline-union-wide src-168 `tok-168 `tre-168)
1346++ test-inline-unit
1466++ test-inline-unit
1347− (check ~.inline-unit src-145 `tok-145 `tre-145)
1467+ (check ~.inline-unit src-169 `tok-169 `tre-169)
1348++ test-inline-wide-form-rune-bad
1468++ test-inline-wide-form-rune-bad
1349− (check ~.inline-wide-form-rune-bad src-146 `tok-146 `tre-146)
1469+ (check ~.inline-wide-form-rune-bad src-170 `tok-170 `tre-170)
1350++ test-inline-wide-forms
1470++ test-inline-wide-forms
1351− (check ~.inline-wide-forms src-147 `tok-147 `tre-147)
1471+ (check ~.inline-wide-forms src-171 `tok-171 `tre-171)
1352++ test-inline-wide-union-call
1472++ test-inline-wide-union-call
1353− (check ~.inline-wide-union-call src-148 `tok-148 `tre-148)
1473+ (check ~.inline-wide-union-call src-172 `tok-172 `tre-172)
1354++ test-inline-wings
1474++ test-inline-wings
1355− (check ~.inline-wings src-149 `tok-149 `tre-149)
1475+ (check ~.inline-wings src-173 `tok-173 `tre-173)
1356++ test-lex-base32-bad-1
1476++ test-lex-base32-bad-1
1357− (check ~.lex-base32-bad-1 src-150 `tok-150 `tre-150)
1477+ (check ~.lex-base32-bad-1 src-174 `tok-174 `tre-174)
1358++ test-lex-base32-ok-1
1478++ test-lex-base32-ok-1
1359− (check ~.lex-base32-ok-1 src-151 `tok-151 `tre-151)
1479+ (check ~.lex-base32-ok-1 src-175 `tok-175 `tre-175)
1360++ test-lex-blob-bad-1
1480++ test-lex-blob-bad-1
1361− (check ~.lex-blob-bad-1 src-152 `tok-152 `tre-152)
1481+ (check ~.lex-blob-bad-1 src-176 `tok-176 `tre-176)
1362++ test-lex-call-open-bad-1
1482++ test-lex-call-open-bad-1
1363− (check ~.lex-call-open-bad-1 src-153 `tok-153 `tre-153)
1483+ (check ~.lex-call-open-bad-1 src-177 `tok-177 `tre-177)
1364++ test-lex-call-open-bad-2
1484++ test-lex-call-open-bad-2
1365− (check ~.lex-call-open-bad-2 src-154 `tok-154 `tre-154)
1485+ (check ~.lex-call-open-bad-2 src-178 `tok-178 `tre-178)
1366++ test-lex-call-open-bad-4
1486++ test-lex-call-open-bad-4
1367− (check ~.lex-call-open-bad-4 src-155 `tok-155 `tre-155)
1487+ (check ~.lex-call-open-bad-4 src-179 `tok-179 `tre-179)
1368++ test-lex-call-open-ok-1
1488++ test-lex-call-open-ok-1
1369− (check ~.lex-call-open-ok-1 src-156 `tok-156 `tre-156)
1489+ (check ~.lex-call-open-ok-1 src-180 `tok-180 `tre-180)
1370++ test-lex-call-open-ok-2
1490++ test-lex-call-open-ok-2
1371− (check ~.lex-call-open-ok-2 src-157 `tok-157 `tre-157)
1491+ (check ~.lex-call-open-ok-2 src-181 `tok-181 `tre-181)
1372++ test-lex-cell-bad-1
1492++ test-lex-cell-bad-1
1373− (check ~.lex-cell-bad-1 src-158 `tok-158 `tre-158)
1493+ (check ~.lex-cell-bad-1 src-182 `tok-182 `tre-182)
1374++ test-lex-cell-ok-1
1494++ test-lex-cell-ok-1
1375− (check ~.lex-cell-ok-1 src-159 `tok-159 `tre-159)
1495+ (check ~.lex-cell-ok-1 src-183 `tok-183 `tre-183)
1376++ test-lex-closer-bad-1
1496++ test-lex-closer-bad-1
1377− (check ~.lex-closer-bad-1 src-160 `tok-160 `tre-160)
1497+ (check ~.lex-closer-bad-1 src-184 `tok-184 `tre-184)
1378++ test-lex-closer-bad-2
1498++ test-lex-closer-bad-2
1379− (check ~.lex-closer-bad-2 src-161 `tok-161 `tre-161)
1499+ (check ~.lex-closer-bad-2 src-185 `tok-185 `tre-185)
1380++ test-lex-closer-bad-3
1500++ test-lex-closer-bad-3
1381− (check ~.lex-closer-bad-3 src-162 `tok-162 `tre-162)
1501+ (check ~.lex-closer-bad-3 src-186 `tok-186 `tre-186)
1382++ test-lex-closer-bad-4
1502++ test-lex-closer-bad-4
1383− (check ~.lex-closer-bad-4 src-163 `tok-163 `tre-163)
1503+ (check ~.lex-closer-bad-4 src-187 `tok-187 `tre-187)
1384++ test-lex-codepoint-bad-1
1504++ test-lex-codepoint-bad-1
1385− (check ~.lex-codepoint-bad-1 src-164 `tok-164 `tre-164)
1505+ (check ~.lex-codepoint-bad-1 src-188 `tok-188 `tre-188)
1386++ test-lex-comment-bad-1
1506++ test-lex-comment-bad-1
1387− (check ~.lex-comment-bad-1 src-165 `tok-165 `tre-165)
1507+ (check ~.lex-comment-bad-1 src-189 `tok-189 `tre-189)
1388++ test-lex-comment-ok-1
1508++ test-lex-comment-ok-1
1389− (check ~.lex-comment-ok-1 src-166 `tok-166 `tre-166)
1509+ (check ~.lex-comment-ok-1 src-190 `tok-190 `tre-190)
1390++ test-lex-comment-ok-2
1510++ test-lex-comment-ok-2
1391− (check ~.lex-comment-ok-2 src-167 `tok-167 `tre-167)
1511+ (check ~.lex-comment-ok-2 src-191 `tok-191 `tre-191)
1392++ test-lex-comment-ok-3
1512++ test-lex-comment-ok-3
1393− (check ~.lex-comment-ok-3 src-168 `tok-168 `tre-168)
1513+ (check ~.lex-comment-ok-3 src-192 `tok-192 `tre-192)
1394++ test-lex-date-bad-1
1514++ test-lex-date-bad-1
1395− (check ~.lex-date-bad-1 src-169 `tok-169 `tre-169)
1515+ (check ~.lex-date-bad-1 src-193 `tok-193 `tre-193)
1396++ test-lex-date-bad-2
1516++ test-lex-date-bad-2
1397− (check ~.lex-date-bad-2 src-170 `tok-170 `tre-170)
1517+ (check ~.lex-date-bad-2 src-194 `tok-194 `tre-194)
1398++ test-lex-date-bad-3
1518++ test-lex-date-bad-3
1399− (check ~.lex-date-bad-3 src-171 `tok-171 `tre-171)
1519+ (check ~.lex-date-bad-3 src-195 `tok-195 `tre-195)
1400++ test-lex-date-ok-1
1520++ test-lex-date-ok-1
1401− (check ~.lex-date-ok-1 src-172 `tok-172 `tre-172)
1521+ (check ~.lex-date-ok-1 src-196 `tok-196 `tre-196)
1402++ test-lex-date-ok-2
1522++ test-lex-date-ok-2
1403− (check ~.lex-date-ok-2 src-173 `tok-173 `tre-173)
1523+ (check ~.lex-date-ok-2 src-197 `tok-197 `tre-197)
1404++ test-lex-decimal-bad-1
1524++ test-lex-decimal-bad-1
1405− (check ~.lex-decimal-bad-1 src-174 `tok-174 `tre-174)
1525+ (check ~.lex-decimal-bad-1 src-198 `tok-198 `tre-198)
1406++ test-lex-decimal-bad-2
1526++ test-lex-decimal-bad-2
1407− (check ~.lex-decimal-bad-2 src-175 `tok-175 `tre-175)
1527+ (check ~.lex-decimal-bad-2 src-199 `tok-199 `tre-199)
1408++ test-lex-decimal-ok-1
1528++ test-lex-decimal-ok-1
1409− (check ~.lex-decimal-ok-1 src-176 `tok-176 `tre-176)
1529+ (check ~.lex-decimal-ok-1 src-200 `tok-200 `tre-200)
1410++ test-lex-duration-bad-1
1530++ test-lex-duration-bad-1
1411− (check ~.lex-duration-bad-1 src-177 `tok-177 `tre-177)
1531+ (check ~.lex-duration-bad-1 src-201 `tok-201 `tre-201)
1412++ test-lex-duration-bad-2
1532++ test-lex-duration-bad-2
1413− (check ~.lex-duration-bad-2 src-178 `tok-178 `tre-178)
1533+ (check ~.lex-duration-bad-2 src-202 `tok-202 `tre-202)
1414++ test-lex-duration-ok-1
1534++ test-lex-duration-ok-1
1415− (check ~.lex-duration-ok-1 src-179 `tok-179 `tre-179)
1535+ (check ~.lex-duration-ok-1 src-203 `tok-203 `tre-203)
1416++ test-lex-hex-bad-1
1536++ test-lex-hex-bad-1
1417− (check ~.lex-hex-bad-1 src-180 `tok-180 `tre-180)
1537+ (check ~.lex-hex-bad-1 src-204 `tok-204 `tre-204)
1418++ test-lex-hex-ok-1
1538++ test-lex-hex-ok-1
1419− (check ~.lex-hex-ok-1 src-181 `tok-181 `tre-181)
1539+ (check ~.lex-hex-ok-1 src-205 `tok-205 `tre-205)
1420++ test-lex-indent-bad-1
1540++ test-lex-indent-bad-1
1421− (check ~.lex-indent-bad-1 src-182 `tok-182 `tre-182)
1541+ (check ~.lex-indent-bad-1 src-206 `tok-206 `tre-206)
1422++ test-lex-indent-bad-2
1542++ test-lex-indent-bad-2
1423− (check ~.lex-indent-bad-2 src-183 `tok-183 `tre-183)
1543+ (check ~.lex-indent-bad-2 src-207 `tok-207 `tre-207)
1424++ test-lex-indent-bad-3
1544++ test-lex-indent-bad-3
1425− (check ~.lex-indent-bad-3 src-184 `tok-184 `tre-184)
1545+ (check ~.lex-indent-bad-3 src-208 `tok-208 `tre-208)
1426++ test-lex-indent-ok-1
1546++ test-lex-indent-ok-1
1427− (check ~.lex-indent-ok-1 src-185 `tok-185 `tre-185)
1547+ (check ~.lex-indent-ok-1 src-209 `tok-209 `tre-209)
1428++ test-lex-indent-ok-2
1548++ test-lex-indent-ok-2
1429− (check ~.lex-indent-ok-2 src-186 `tok-186 `tre-186)
1549+ (check ~.lex-indent-ok-2 src-210 `tok-210 `tre-210)
1430++ test-lex-indent-ok-3
1550++ test-lex-indent-ok-3
1431− (check ~.lex-indent-ok-3 src-187 `tok-187 `tre-187)
1551+ (check ~.lex-indent-ok-3 src-211 `tok-211 `tre-211)
1432++ test-lex-interp-bad-1
1552++ test-lex-interp-bad-1
1433− (check ~.lex-interp-bad-1 src-188 `tok-188 `tre-188)
1553+ (check ~.lex-interp-bad-1 src-212 `tok-212 `tre-212)
1434++ test-lex-interp-bad-2
1554++ test-lex-interp-bad-2
1435− (check ~.lex-interp-bad-2 src-189 `tok-189 `tre-189)
1555+ (check ~.lex-interp-bad-2 src-213 `tok-213 `tre-213)
1436++ test-lex-interp-bad-3
1556++ test-lex-interp-bad-3
1437− (check ~.lex-interp-bad-3 src-190 `tok-190 `tre-190)
1557+ (check ~.lex-interp-bad-3 src-214 `tok-214 `tre-214)
1438++ test-lex-interp-bad-5
1558++ test-lex-interp-bad-5
1439− (check ~.lex-interp-bad-5 src-191 `tok-191 `tre-191)
1559+ (check ~.lex-interp-bad-5 src-215 `tok-215 `tre-215)
1440++ test-lex-interp-bad-6
1560++ test-lex-interp-bad-6
1441− (check ~.lex-interp-bad-6 src-192 `tok-192 `tre-192)
1561+ (check ~.lex-interp-bad-6 src-216 `tok-216 `tre-216)
1442++ test-lex-interp-ok-1
1562++ test-lex-interp-ok-1
1443− (check ~.lex-interp-ok-1 src-193 `tok-193 `tre-193)
1563+ (check ~.lex-interp-ok-1 src-217 `tok-217 `tre-217)
1444++ test-lex-interp-ok-2
1564++ test-lex-interp-ok-2
1445− (check ~.lex-interp-ok-2 src-194 `tok-194 `tre-194)
1565+ (check ~.lex-interp-ok-2 src-218 `tok-218 `tre-218)
1446++ test-lex-interp-ok-3
1566++ test-lex-interp-ok-3
1447− (check ~.lex-interp-ok-3 src-195 `tok-195 `tre-195)
1567+ (check ~.lex-interp-ok-3 src-219 `tok-219 `tre-219)
1448++ test-lex-knot-bad-1
1568++ test-lex-knot-bad-1
1449− (check ~.lex-knot-bad-1 src-196 `tok-196 `tre-196)
1569+ (check ~.lex-knot-bad-1 src-220 `tok-220 `tre-220)
1450++ test-lex-knot-ok-1
1570++ test-lex-knot-ok-1
1451− (check ~.lex-knot-ok-1 src-197 `tok-197 `tre-197)
1571+ (check ~.lex-knot-ok-1 src-221 `tok-221 `tre-221)
1452++ test-lex-layout-bad-1
1572++ test-lex-layout-bad-1
1453− (check ~.lex-layout-bad-1 src-198 `tok-198 `tre-198)
1573+ (check ~.lex-layout-bad-1 src-222 `tok-222 `tre-222)
1454++ test-lex-layout-bad-10
1574++ test-lex-layout-bad-10
1455− (check ~.lex-layout-bad-10 src-199 `tok-199 `tre-199)
1575+ (check ~.lex-layout-bad-10 src-223 `tok-223 `tre-223)
1456++ test-lex-layout-bad-2
1576++ test-lex-layout-bad-2
1457− (check ~.lex-layout-bad-2 src-200 `tok-200 `tre-200)
1577+ (check ~.lex-layout-bad-2 src-224 `tok-224 `tre-224)
1458++ test-lex-layout-bad-3
1578++ test-lex-layout-bad-3
1459− (check ~.lex-layout-bad-3 src-201 `tok-201 `tre-201)
1579+ (check ~.lex-layout-bad-3 src-225 `tok-225 `tre-225)
1460++ test-lex-layout-bad-4
1580++ test-lex-layout-bad-4
1461− (check ~.lex-layout-bad-4 src-202 `tok-202 `tre-202)
1581+ (check ~.lex-layout-bad-4 src-226 `tok-226 `tre-226)
1462++ test-lex-layout-bad-5
1582++ test-lex-layout-bad-5
1463− (check ~.lex-layout-bad-5 src-203 `tok-203 `tre-203)
1583+ (check ~.lex-layout-bad-5 src-227 `tok-227 `tre-227)
1464++ test-lex-layout-bad-6
1584++ test-lex-layout-bad-6
1465− (check ~.lex-layout-bad-6 src-204 `tok-204 `tre-204)
1585+ (check ~.lex-layout-bad-6 src-228 `tok-228 `tre-228)
1466++ test-lex-layout-bad-7
1586++ test-lex-layout-bad-7
1467− (check ~.lex-layout-bad-7 src-205 `tok-205 `tre-205)
1587+ (check ~.lex-layout-bad-7 src-229 `tok-229 `tre-229)
1468++ test-lex-layout-bad-8
1588++ test-lex-layout-bad-8
1469− (check ~.lex-layout-bad-8 src-206 `tok-206 `tre-206)
1589+ (check ~.lex-layout-bad-8 src-230 `tok-230 `tre-230)
1470++ test-lex-layout-bad-9
1590++ test-lex-layout-bad-9
1471− (check ~.lex-layout-bad-9 src-207 `tok-207 `tre-207)
1591+ (check ~.lex-layout-bad-9 src-231 `tok-231 `tre-231)
1472++ test-lex-layout-ok-1
1592++ test-lex-layout-ok-1
1473− (check ~.lex-layout-ok-1 src-208 `tok-208 `tre-208)
1593+ (check ~.lex-layout-ok-1 src-232 `tok-232 `tre-232)
1474++ test-lex-list-bad-1
1594++ test-lex-list-bad-1
1475− (check ~.lex-list-bad-1 src-209 `tok-209 `tre-209)
1595+ (check ~.lex-list-bad-1 src-233 `tok-233 `tre-233)
1476++ test-lex-list-ok-1
1596++ test-lex-list-ok-1
1477− (check ~.lex-list-ok-1 src-210 `tok-210 `tre-210)
1597+ (check ~.lex-list-ok-1 src-234 `tok-234 `tre-234)
1478++ test-lex-loobean-bad-1
1598++ test-lex-loobean-bad-1
1479− (check ~.lex-loobean-bad-1 src-211 `tok-211 `tre-211)
1599+ (check ~.lex-loobean-bad-1 src-235 `tok-235 `tre-235)
1480++ test-lex-loobean-ok-1
1600++ test-lex-loobean-ok-1
1481− (check ~.lex-loobean-ok-1 src-212 `tok-212 `tre-212)
1601+ (check ~.lex-loobean-ok-1 src-236 `tok-236 `tre-236)
1482++ test-lex-name-bad-1
1602++ test-lex-name-bad-1
1483− (check ~.lex-name-bad-1 src-213 `tok-213 `tre-213)
1603+ (check ~.lex-name-bad-1 src-237 `tok-237 `tre-237)
1484++ test-lex-name-bad-2
1604++ test-lex-name-bad-2
1485− (check ~.lex-name-bad-2 src-214 `tok-214 `tre-214)
1605+ (check ~.lex-name-bad-2 src-238 `tok-238 `tre-238)
1486++ test-lex-name-bad-3
1606++ test-lex-name-bad-3
1487− (check ~.lex-name-bad-3 src-215 `tok-215 `tre-215)
1607+ (check ~.lex-name-bad-3 src-239 `tok-239 `tre-239)
1488++ test-lex-name-bad-4
1608++ test-lex-name-bad-4
1489− (check ~.lex-name-bad-4 src-216 `tok-216 `tre-216)
1609+ (check ~.lex-name-bad-4 src-240 `tok-240 `tre-240)
1490++ test-lex-name-bad-5
1610++ test-lex-name-bad-5
1491− (check ~.lex-name-bad-5 src-217 `tok-217 `tre-217)
1611+ (check ~.lex-name-bad-5 src-241 `tok-241 `tre-241)
1492++ test-lex-name-bad-6
1612++ test-lex-name-bad-6
1493− (check ~.lex-name-bad-6 src-218 `tok-218 `tre-218)
1613+ (check ~.lex-name-bad-6 src-242 `tok-242 `tre-242)
1494++ test-lex-name-ok-1
1614++ test-lex-name-ok-1
1495− (check ~.lex-name-ok-1 src-219 `tok-219 `tre-219)
1615+ (check ~.lex-name-ok-1 src-243 `tok-243 `tre-243)
1496++ test-lex-null-bad-1
1616++ test-lex-null-bad-1
1497− (check ~.lex-null-bad-1 src-220 `tok-220 `tre-220)
1617+ (check ~.lex-null-bad-1 src-244 `tok-244 `tre-244)
1498++ test-lex-null-bad-2
1618++ test-lex-null-bad-2
1499− (check ~.lex-null-bad-2 src-221 `tok-221 `tre-221)
1619+ (check ~.lex-null-bad-2 src-245 `tok-245 `tre-245)
1500++ test-lex-null-ok-1
1620++ test-lex-null-ok-1
1501− (check ~.lex-null-ok-1 src-222 `tok-222 `tre-222)
1621+ (check ~.lex-null-ok-1 src-246 `tok-246 `tre-246)
1502++ test-lex-open-bracket-bad-1
1622++ test-lex-open-bracket-bad-1
1503− (check ~.lex-open-bracket-bad-1 src-223 `tok-223 `tre-223)
1623+ (check ~.lex-open-bracket-bad-1 src-247 `tok-247 `tre-247)
1504++ test-lex-open-bracket-bad-10
1624++ test-lex-open-bracket-bad-10
1505− (check ~.lex-open-bracket-bad-10 src-224 `tok-224 `tre-224)
1625+ (check ~.lex-open-bracket-bad-10 src-248 `tok-248 `tre-248)
1506++ test-lex-open-bracket-bad-11
1626++ test-lex-open-bracket-bad-11
1507− (check ~.lex-open-bracket-bad-11 src-225 `tok-225 `tre-225)
1627+ (check ~.lex-open-bracket-bad-11 src-249 `tok-249 `tre-249)
1508++ test-lex-open-bracket-bad-12
1628++ test-lex-open-bracket-bad-12
1509− (check ~.lex-open-bracket-bad-12 src-226 `tok-226 `tre-226)
1629+ (check ~.lex-open-bracket-bad-12 src-250 `tok-250 `tre-250)
1510++ test-lex-open-bracket-bad-13
1630++ test-lex-open-bracket-bad-13
1511− (check ~.lex-open-bracket-bad-13 src-227 `tok-227 `tre-227)
1631+ (check ~.lex-open-bracket-bad-13 src-251 `tok-251 `tre-251)
1512++ test-lex-open-bracket-bad-14
1632++ test-lex-open-bracket-bad-14
1513− (check ~.lex-open-bracket-bad-14 src-228 `tok-228 `tre-228)
1633+ (check ~.lex-open-bracket-bad-14 src-252 `tok-252 `tre-252)
1514++ test-lex-open-bracket-bad-15
1634++ test-lex-open-bracket-bad-15
1515− (check ~.lex-open-bracket-bad-15 src-229 `tok-229 `tre-229)
1635+ (check ~.lex-open-bracket-bad-15 src-253 `tok-253 `tre-253)
1516++ test-lex-open-bracket-bad-16
1636++ test-lex-open-bracket-bad-16
1517− (check ~.lex-open-bracket-bad-16 src-230 `tok-230 `tre-230)
1637+ (check ~.lex-open-bracket-bad-16 src-254 `tok-254 `tre-254)
1518++ test-lex-open-bracket-bad-2
1638++ test-lex-open-bracket-bad-2
1519− (check ~.lex-open-bracket-bad-2 src-231 `tok-231 `tre-231)
1639+ (check ~.lex-open-bracket-bad-2 src-255 `tok-255 `tre-255)
1520++ test-lex-open-bracket-bad-3
1640++ test-lex-open-bracket-bad-3
1521− (check ~.lex-open-bracket-bad-3 src-232 `tok-232 `tre-232)
1641+ (check ~.lex-open-bracket-bad-3 src-256 `tok-256 `tre-256)
1522++ test-lex-open-bracket-bad-5
1642++ test-lex-open-bracket-bad-5
1523− (check ~.lex-open-bracket-bad-5 src-233 `tok-233 `tre-233)
1643+ (check ~.lex-open-bracket-bad-5 src-257 `tok-257 `tre-257)
1524++ test-lex-open-bracket-bad-6
1644++ test-lex-open-bracket-bad-6
1525− (check ~.lex-open-bracket-bad-6 src-234 `tok-234 `tre-234)
1645+ (check ~.lex-open-bracket-bad-6 src-258 `tok-258 `tre-258)
1526++ test-lex-open-bracket-bad-7
1646++ test-lex-open-bracket-bad-7
1527− (check ~.lex-open-bracket-bad-7 src-235 `tok-235 `tre-235)
1647+ (check ~.lex-open-bracket-bad-7 src-259 `tok-259 `tre-259)
1528++ test-lex-open-bracket-bad-8
1648++ test-lex-open-bracket-bad-8
1529− (check ~.lex-open-bracket-bad-8 src-236 `tok-236 `tre-236)
1649+ (check ~.lex-open-bracket-bad-8 src-260 `tok-260 `tre-260)
1530++ test-lex-open-bracket-bad-9
1650++ test-lex-open-bracket-bad-9
1531− (check ~.lex-open-bracket-bad-9 src-237 `tok-237 `tre-237)
1651+ (check ~.lex-open-bracket-bad-9 src-261 `tok-261 `tre-261)
1532++ test-lex-open-bracket-ok-1
1652++ test-lex-open-bracket-ok-1
1533− (check ~.lex-open-bracket-ok-1 src-238 `tok-238 `tre-238)
1653+ (check ~.lex-open-bracket-ok-1 src-262 `tok-262 `tre-262)
1534++ test-lex-open-bracket-ok-2
1654++ test-lex-open-bracket-ok-2
1535− (check ~.lex-open-bracket-ok-2 src-239 `tok-239 `tre-239)
1655+ (check ~.lex-open-bracket-ok-2 src-263 `tok-263 `tre-263)
1536++ test-lex-open-bracket-ok-3
1656++ test-lex-open-bracket-ok-3
1537− (check ~.lex-open-bracket-ok-3 src-240 `tok-240 `tre-240)
1657+ (check ~.lex-open-bracket-ok-3 src-264 `tok-264 `tre-264)
1538++ test-lex-open-bracket-ok-4
1658++ test-lex-open-bracket-ok-4
1539− (check ~.lex-open-bracket-ok-4 src-241 `tok-241 `tre-241)
1659+ (check ~.lex-open-bracket-ok-4 src-265 `tok-265 `tre-265)
1540++ test-lex-open-bracket-ok-5
1660++ test-lex-open-bracket-ok-5
1541− (check ~.lex-open-bracket-ok-5 src-242 `tok-242 `tre-242)
1661+ (check ~.lex-open-bracket-ok-5 src-266 `tok-266 `tre-266)
1542++ test-lex-open-bracket-ok-6
1662++ test-lex-open-bracket-ok-6
1543− (check ~.lex-open-bracket-ok-6 src-243 `tok-243 `tre-243)
1663+ (check ~.lex-open-bracket-ok-6 src-267 `tok-267 `tre-267)
1544++ test-lex-open-bracket-ok-7
1664++ test-lex-open-bracket-ok-7
1545− (check ~.lex-open-bracket-ok-7 src-244 `tok-244 `tre-244)
1665+ (check ~.lex-open-bracket-ok-7 src-268 `tok-268 `tre-268)
1546++ test-lex-open-bracket-ok-8
1666++ test-lex-open-bracket-ok-8
1547− (check ~.lex-open-bracket-ok-8 src-245 `tok-245 `tre-245)
1667+ (check ~.lex-open-bracket-ok-8 src-269 `tok-269 `tre-269)
1548++ test-lex-open-bracket-ok-9
1668++ test-lex-open-bracket-ok-9
1549− (check ~.lex-open-bracket-ok-9 src-246 `tok-246 `tre-246)
1669+ (check ~.lex-open-bracket-ok-9 src-270 `tok-270 `tre-270)
1550++ test-lex-open-mold-bad-1
1670++ test-lex-open-mold-bad-1
1551− (check ~.lex-open-mold-bad-1 src-247 `tok-247 `tre-247)
1671+ (check ~.lex-open-mold-bad-1 src-271 `tok-271 `tre-271)
1552++ test-lex-open-mold-bad-10
1672++ test-lex-open-mold-bad-10
1553− (check ~.lex-open-mold-bad-10 src-248 `tok-248 `tre-248)
1673+ (check ~.lex-open-mold-bad-10 src-272 `tok-272 `tre-272)
1554++ test-lex-open-mold-bad-11
1674++ test-lex-open-mold-bad-11
1555− (check ~.lex-open-mold-bad-11 src-249 `tok-249 `tre-249)
1675+ (check ~.lex-open-mold-bad-11 src-273 `tok-273 `tre-273)
1556++ test-lex-open-mold-bad-12
1676++ test-lex-open-mold-bad-12
1557− (check ~.lex-open-mold-bad-12 src-250 `tok-250 `tre-250)
1677+ (check ~.lex-open-mold-bad-12 src-274 `tok-274 `tre-274)
1558++ test-lex-open-mold-bad-13
1678++ test-lex-open-mold-bad-13
1559− (check ~.lex-open-mold-bad-13 src-251 `tok-251 `tre-251)
1679+ (check ~.lex-open-mold-bad-13 src-275 `tok-275 `tre-275)
1560++ test-lex-open-mold-bad-14
1680++ test-lex-open-mold-bad-14
1561− (check ~.lex-open-mold-bad-14 src-252 `tok-252 `tre-252)
1681+ (check ~.lex-open-mold-bad-14 src-276 `tok-276 `tre-276)
1562++ test-lex-open-mold-bad-15
1682++ test-lex-open-mold-bad-15
1563− (check ~.lex-open-mold-bad-15 src-253 `tok-253 `tre-253)
1683+ (check ~.lex-open-mold-bad-15 src-277 `tok-277 `tre-277)
1564++ test-lex-open-mold-bad-16
1684++ test-lex-open-mold-bad-16
1565− (check ~.lex-open-mold-bad-16 src-254 `tok-254 `tre-254)
1685+ (check ~.lex-open-mold-bad-16 src-278 `tok-278 `tre-278)
1566++ test-lex-open-mold-bad-2
1686++ test-lex-open-mold-bad-2
1567− (check ~.lex-open-mold-bad-2 src-255 `tok-255 `tre-255)
1687+ (check ~.lex-open-mold-bad-2 src-279 `tok-279 `tre-279)
1568++ test-lex-open-mold-bad-3
1688++ test-lex-open-mold-bad-3
1569− (check ~.lex-open-mold-bad-3 src-256 `tok-256 `tre-256)
1689+ (check ~.lex-open-mold-bad-3 src-280 `tok-280 `tre-280)
1570++ test-lex-open-mold-bad-4
1690++ test-lex-open-mold-bad-4
1571− (check ~.lex-open-mold-bad-4 src-257 `tok-257 `tre-257)
1691+ (check ~.lex-open-mold-bad-4 src-281 `tok-281 `tre-281)
1572++ test-lex-open-mold-bad-5
1692++ test-lex-open-mold-bad-5
1573− (check ~.lex-open-mold-bad-5 src-258 `tok-258 `tre-258)
1693+ (check ~.lex-open-mold-bad-5 src-282 `tok-282 `tre-282)
1574++ test-lex-open-mold-bad-6
1694++ test-lex-open-mold-bad-6
1575− (check ~.lex-open-mold-bad-6 src-259 `tok-259 `tre-259)
1695+ (check ~.lex-open-mold-bad-6 src-283 `tok-283 `tre-283)
1576++ test-lex-open-mold-bad-7
1696++ test-lex-open-mold-bad-7
1577− (check ~.lex-open-mold-bad-7 src-260 `tok-260 `tre-260)
1697+ (check ~.lex-open-mold-bad-7 src-284 `tok-284 `tre-284)
1578++ test-lex-open-mold-bad-8
1698++ test-lex-open-mold-bad-8
1579− (check ~.lex-open-mold-bad-8 src-261 `tok-261 `tre-261)
1699+ (check ~.lex-open-mold-bad-8 src-285 `tok-285 `tre-285)
1580++ test-lex-open-mold-bad-9
1700++ test-lex-open-mold-bad-9
1581− (check ~.lex-open-mold-bad-9 src-262 `tok-262 `tre-262)
1701+ (check ~.lex-open-mold-bad-9 src-286 `tok-286 `tre-286)
1582++ test-lex-open-mold-ok-1
1702++ test-lex-open-mold-ok-1
1583− (check ~.lex-open-mold-ok-1 src-263 `tok-263 `tre-263)
1703+ (check ~.lex-open-mold-ok-1 src-287 `tok-287 `tre-287)
1584++ test-lex-open-mold-ok-2
1704++ test-lex-open-mold-ok-2
1585− (check ~.lex-open-mold-ok-2 src-264 `tok-264 `tre-264)
1705+ (check ~.lex-open-mold-ok-2 src-288 `tok-288 `tre-288)
1586++ test-lex-open-mold-ok-3
1706++ test-lex-open-mold-ok-3
1587− (check ~.lex-open-mold-ok-3 src-265 `tok-265 `tre-265)
1707+ (check ~.lex-open-mold-ok-3 src-289 `tok-289 `tre-289)
1588++ test-lex-open-mold-ok-4
1708++ test-lex-open-mold-ok-4
1589− (check ~.lex-open-mold-ok-4 src-266 `tok-266 `tre-266)
1709+ (check ~.lex-open-mold-ok-4 src-290 `tok-290 `tre-290)
1590++ test-lex-open-mold-ok-5
1710++ test-lex-open-mold-ok-5
1591− (check ~.lex-open-mold-ok-5 src-267 `tok-267 `tre-267)
1711+ (check ~.lex-open-mold-ok-5 src-291 `tok-291 `tre-291)
1592++ test-lex-open-mold-ok-6
1712++ test-lex-open-mold-ok-6
1593− (check ~.lex-open-mold-ok-6 src-268 `tok-268 `tre-268)
1713+ (check ~.lex-open-mold-ok-6 src-292 `tok-292 `tre-292)
1594++ test-lex-pair-binding-bad-1
1714++ test-lex-pair-binding-bad-1
1595− (check ~.lex-pair-binding-bad-1 src-269 `tok-269 `tre-269)
1715+ (check ~.lex-pair-binding-bad-1 src-293 `tok-293 `tre-293)
1596++ test-lex-pair-binding-ok-1
1716++ test-lex-pair-binding-ok-1
1597− (check ~.lex-pair-binding-ok-1 src-270 `tok-270 `tre-270)
1717+ (check ~.lex-pair-binding-ok-1 src-294 `tok-294 `tre-294)
1598++ test-lex-path-bad-1
1718++ test-lex-path-bad-1
1599− (check ~.lex-path-bad-1 src-271 `tok-271 `tre-271)
1719+ (check ~.lex-path-bad-1 src-295 `tok-295 `tre-295)
1600++ test-lex-path-ok-1
1720++ test-lex-path-ok-1
1601− (check ~.lex-path-ok-1 src-272 `tok-272 `tre-272)
1721+ (check ~.lex-path-ok-1 src-296 `tok-296 `tre-296)
1602++ test-lex-rune-layout-bad-1
1722++ test-lex-rune-layout-bad-1
1603− (check ~.lex-rune-layout-bad-1 src-273 `tok-273 `tre-273)
1723+ (check ~.lex-rune-layout-bad-1 src-297 `tok-297 `tre-297)
1604−++ test-lex-rune-layout-bad-10
1605− (check ~.lex-rune-layout-bad-10 src-274 `tok-274 `tre-274)
1606++ test-lex-rune-layout-bad-11
1724++ test-lex-rune-layout-bad-11
1607− (check ~.lex-rune-layout-bad-11 src-275 `tok-275 `tre-275)
1725+ (check ~.lex-rune-layout-bad-11 src-298 `tok-298 `tre-298)
1608++ test-lex-rune-layout-bad-12
1726++ test-lex-rune-layout-bad-12
1609− (check ~.lex-rune-layout-bad-12 src-276 `tok-276 `tre-276)
1727+ (check ~.lex-rune-layout-bad-12 src-299 `tok-299 `tre-299)
1610++ test-lex-rune-layout-bad-13
1728++ test-lex-rune-layout-bad-13
1611− (check ~.lex-rune-layout-bad-13 src-277 `tok-277 `tre-277)
1729+ (check ~.lex-rune-layout-bad-13 src-300 `tok-300 `tre-300)
1612++ test-lex-rune-layout-bad-14
1730++ test-lex-rune-layout-bad-14
1613− (check ~.lex-rune-layout-bad-14 src-278 `tok-278 `tre-278)
1731+ (check ~.lex-rune-layout-bad-14 src-301 `tok-301 `tre-301)
1614++ test-lex-rune-layout-bad-15
1732++ test-lex-rune-layout-bad-15
1615− (check ~.lex-rune-layout-bad-15 src-279 `tok-279 `tre-279)
1733+ (check ~.lex-rune-layout-bad-15 src-302 `tok-302 `tre-302)
1616++ test-lex-rune-layout-bad-2
1734++ test-lex-rune-layout-bad-2
1617− (check ~.lex-rune-layout-bad-2 src-280 `tok-280 `tre-280)
1735+ (check ~.lex-rune-layout-bad-2 src-303 `tok-303 `tre-303)
1618++ test-lex-rune-layout-bad-3
1736++ test-lex-rune-layout-bad-3
1619− (check ~.lex-rune-layout-bad-3 src-281 `tok-281 `tre-281)
1737+ (check ~.lex-rune-layout-bad-3 src-304 `tok-304 `tre-304)
1620++ test-lex-rune-layout-bad-4
1738++ test-lex-rune-layout-bad-4
1621− (check ~.lex-rune-layout-bad-4 src-282 `tok-282 `tre-282)
1739+ (check ~.lex-rune-layout-bad-4 src-305 `tok-305 `tre-305)
1622++ test-lex-rune-layout-bad-5
1740++ test-lex-rune-layout-bad-5
1623− (check ~.lex-rune-layout-bad-5 src-283 `tok-283 `tre-283)
1741+ (check ~.lex-rune-layout-bad-5 src-306 `tok-306 `tre-306)
1624++ test-lex-rune-layout-bad-6
1742++ test-lex-rune-layout-bad-6
1625− (check ~.lex-rune-layout-bad-6 src-284 `tok-284 `tre-284)
1743+ (check ~.lex-rune-layout-bad-6 src-307 `tok-307 `tre-307)
1626++ test-lex-rune-layout-bad-7
1744++ test-lex-rune-layout-bad-7
1627− (check ~.lex-rune-layout-bad-7 src-285 `tok-285 `tre-285)
1745+ (check ~.lex-rune-layout-bad-7 src-308 `tok-308 `tre-308)
1628++ test-lex-rune-layout-bad-8
1746++ test-lex-rune-layout-bad-8
1629− (check ~.lex-rune-layout-bad-8 src-286 `tok-286 `tre-286)
1747+ (check ~.lex-rune-layout-bad-8 src-309 `tok-309 `tre-309)
1630++ test-lex-rune-layout-bad-9
1748++ test-lex-rune-layout-bad-9
1631− (check ~.lex-rune-layout-bad-9 src-287 `tok-287 `tre-287)
1749+ (check ~.lex-rune-layout-bad-9 src-310 `tok-310 `tre-310)
1632++ test-lex-rune-layout-ok-1
1750++ test-lex-rune-layout-ok-1
1633− (check ~.lex-rune-layout-ok-1 src-288 `tok-288 `tre-288)
1751+ (check ~.lex-rune-layout-ok-1 src-311 `tok-311 `tre-311)
1752+++ test-lex-rune-layout-ok-2
1753+ (check ~.lex-rune-layout-ok-2 src-312 `tok-312 `tre-312)
1634++ test-lex-ship-bad-1
1754++ test-lex-ship-bad-1
1635− (check ~.lex-ship-bad-1 src-289 `tok-289 `tre-289)
1755+ (check ~.lex-ship-bad-1 src-313 `tok-313 `tre-313)
1636++ test-lex-ship-ok-1
1756++ test-lex-ship-ok-1
1637− (check ~.lex-ship-ok-1 src-290 `tok-290 `tre-290)
1757+ (check ~.lex-ship-ok-1 src-314 `tok-314 `tre-314)
1638++ test-lex-spacing-bad-1
1758++ test-lex-spacing-bad-1
1639− (check ~.lex-spacing-bad-1 src-291 `tok-291 `tre-291)
1759+ (check ~.lex-spacing-bad-1 src-315 `tok-315 `tre-315)
1640++ test-lex-spacing-bad-2
1760++ test-lex-spacing-bad-2
1641− (check ~.lex-spacing-bad-2 src-292 `tok-292 `tre-292)
1761+ (check ~.lex-spacing-bad-2 src-316 `tok-316 `tre-316)
1642++ test-lex-spacing-ok-1
1762++ test-lex-spacing-ok-1
1643− (check ~.lex-spacing-ok-1 src-293 `tok-293 `tre-293)
1763+ (check ~.lex-spacing-ok-1 src-317 `tok-317 `tre-317)
1644++ test-lex-spacing-ok-2
1764++ test-lex-spacing-ok-2
1645− (check ~.lex-spacing-ok-2 src-294 `tok-294 `tre-294)
1765+ (check ~.lex-spacing-ok-2 src-318 `tok-318 `tre-318)
1646++ test-lex-spacing-ok-3
1766++ test-lex-spacing-ok-3
1647− (check ~.lex-spacing-ok-3 src-295 `tok-295 `tre-295)
1767+ (check ~.lex-spacing-ok-3 src-319 `tok-319 `tre-319)
1648++ test-lex-string-bad-1
1768++ test-lex-string-bad-1
1649− (check ~.lex-string-bad-1 src-296 `tok-296 `tre-296)
1769+ (check ~.lex-string-bad-1 src-320 `tok-320 `tre-320)
1650++ test-lex-string-bad-2
1770++ test-lex-string-bad-2
1651− (check ~.lex-string-bad-2 src-297 `tok-297 `tre-297)
1771+ (check ~.lex-string-bad-2 src-321 `tok-321 `tre-321)
1652++ test-lex-string-ok-1
1772++ test-lex-string-ok-1
1653− (check ~.lex-string-ok-1 src-298 `tok-298 `tre-298)
1773+ (check ~.lex-string-ok-1 src-322 `tok-322 `tre-322)
1654++ test-lex-term-bad-1
1774++ test-lex-term-bad-1
1655− (check ~.lex-term-bad-1 src-299 `tok-299 `tre-299)
1775+ (check ~.lex-term-bad-1 src-323 `tok-323 `tre-323)
1656++ test-lex-term-bad-10
1776++ test-lex-term-bad-10
1657− (check ~.lex-term-bad-10 src-300 `tok-300 `tre-300)
1777+ (check ~.lex-term-bad-10 src-324 `tok-324 `tre-324)
1658++ test-lex-term-bad-11
1778++ test-lex-term-bad-11
1659− (check ~.lex-term-bad-11 src-301 `tok-301 `tre-301)
1779+ (check ~.lex-term-bad-11 src-325 `tok-325 `tre-325)
1660++ test-lex-term-bad-12
1780++ test-lex-term-bad-12
1661− (check ~.lex-term-bad-12 src-302 `tok-302 `tre-302)
1781+ (check ~.lex-term-bad-12 src-326 `tok-326 `tre-326)
1662++ test-lex-term-bad-13
1782++ test-lex-term-bad-13
1663− (check ~.lex-term-bad-13 src-303 `tok-303 `tre-303)
1783+ (check ~.lex-term-bad-13 src-327 `tok-327 `tre-327)
1664++ test-lex-term-bad-14
1784++ test-lex-term-bad-14
1665− (check ~.lex-term-bad-14 src-304 `tok-304 `tre-304)
1785+ (check ~.lex-term-bad-14 src-328 `tok-328 `tre-328)
1666++ test-lex-term-bad-15
1786++ test-lex-term-bad-15
1667− (check ~.lex-term-bad-15 src-305 `tok-305 `tre-305)
1787+ (check ~.lex-term-bad-15 src-329 `tok-329 `tre-329)
1668++ test-lex-term-bad-2
1788++ test-lex-term-bad-2
1669− (check ~.lex-term-bad-2 src-306 `tok-306 `tre-306)
1789+ (check ~.lex-term-bad-2 src-330 `tok-330 `tre-330)
1670++ test-lex-term-bad-3
1790++ test-lex-term-bad-3
1671− (check ~.lex-term-bad-3 src-307 `tok-307 `tre-307)
1791+ (check ~.lex-term-bad-3 src-331 `tok-331 `tre-331)
1672++ test-lex-term-bad-4
1792++ test-lex-term-bad-4
1673− (check ~.lex-term-bad-4 src-308 `tok-308 `tre-308)
1793+ (check ~.lex-term-bad-4 src-332 `tok-332 `tre-332)
1674++ test-lex-term-bad-5
1794++ test-lex-term-bad-5
1675− (check ~.lex-term-bad-5 src-309 `tok-309 `tre-309)
1795+ (check ~.lex-term-bad-5 src-333 `tok-333 `tre-333)
1676++ test-lex-term-bad-6
1796++ test-lex-term-bad-6
1677− (check ~.lex-term-bad-6 src-310 `tok-310 `tre-310)
1797+ (check ~.lex-term-bad-6 src-334 `tok-334 `tre-334)
1678++ test-lex-term-bad-7
1798++ test-lex-term-bad-7
1679− (check ~.lex-term-bad-7 src-311 `tok-311 `tre-311)
1799+ (check ~.lex-term-bad-7 src-335 `tok-335 `tre-335)
1680++ test-lex-term-bad-8
1800++ test-lex-term-bad-8
1681− (check ~.lex-term-bad-8 src-312 `tok-312 `tre-312)
1801+ (check ~.lex-term-bad-8 src-336 `tok-336 `tre-336)
1682++ test-lex-term-bad-9
1802++ test-lex-term-bad-9
1683− (check ~.lex-term-bad-9 src-313 `tok-313 `tre-313)
1803+ (check ~.lex-term-bad-9 src-337 `tok-337 `tre-337)
1684++ test-lex-term-ok-1
1804++ test-lex-term-ok-1
1685− (check ~.lex-term-ok-1 src-314 `tok-314 `tre-314)
1805+ (check ~.lex-term-ok-1 src-338 `tok-338 `tre-338)
1686++ test-lex-tight-change-bad-1
1806++ test-lex-tight-change-bad-1
1687− (check ~.lex-tight-change-bad-1 src-315 `tok-315 `tre-315)
1807+ (check ~.lex-tight-change-bad-1 src-339 `tok-339 `tre-339)
1688++ test-lex-tight-change-bad-2
1808++ test-lex-tight-change-bad-2
1689− (check ~.lex-tight-change-bad-2 src-316 `tok-316 `tre-316)
1809+ (check ~.lex-tight-change-bad-2 src-340 `tok-340 `tre-340)
1690++ test-lex-tight-change-bad-3
1810++ test-lex-tight-change-bad-3
1691− (check ~.lex-tight-change-bad-3 src-317 `tok-317 `tre-317)
1811+ (check ~.lex-tight-change-bad-3 src-341 `tok-341 `tre-341)
1692++ test-lex-tight-change-bad-4
1812++ test-lex-tight-change-bad-4
1693− (check ~.lex-tight-change-bad-4 src-318 `tok-318 `tre-318)
1813+ (check ~.lex-tight-change-bad-4 src-342 `tok-342 `tre-342)
1694++ test-lex-tight-change-bad-5
1814++ test-lex-tight-change-bad-5
1695− (check ~.lex-tight-change-bad-5 src-319 `tok-319 `tre-319)
1815+ (check ~.lex-tight-change-bad-5 src-343 `tok-343 `tre-343)
1696++ test-lex-tight-change-bad-6
1816++ test-lex-tight-change-bad-6
1697− (check ~.lex-tight-change-bad-6 src-320 `tok-320 `tre-320)
1817+ (check ~.lex-tight-change-bad-6 src-344 `tok-344 `tre-344)
1698++ test-lex-tight-change-bad-7
1818++ test-lex-tight-change-bad-7
1699− (check ~.lex-tight-change-bad-7 src-321 `tok-321 `tre-321)
1819+ (check ~.lex-tight-change-bad-7 src-345 `tok-345 `tre-345)
1700++ test-lex-tight-change-bad-8
1820++ test-lex-tight-change-bad-8
1701− (check ~.lex-tight-change-bad-8 src-322 `tok-322 `tre-322)
1821+ (check ~.lex-tight-change-bad-8 src-346 `tok-346 `tre-346)
1702++ test-lex-tight-change-bad-9
1822++ test-lex-tight-change-bad-9
1703− (check ~.lex-tight-change-bad-9 src-323 `tok-323 `tre-323)
1823+ (check ~.lex-tight-change-bad-9 src-347 `tok-347 `tre-347)
1704++ test-lex-tight-change-ok-1
1824++ test-lex-tight-change-ok-1
1705− (check ~.lex-tight-change-ok-1 src-324 `tok-324 `tre-324)
1825+ (check ~.lex-tight-change-ok-1 src-348 `tok-348 `tre-348)
1706++ test-lex-tight-ctor-bad-1
1826++ test-lex-tight-ctor-bad-1
1707− (check ~.lex-tight-ctor-bad-1 src-325 `tok-325 `tre-325)
1827+ (check ~.lex-tight-ctor-bad-1 src-349 `tok-349 `tre-349)
1708++ test-lex-tight-ctor-bad-2
1828++ test-lex-tight-ctor-bad-2
1709− (check ~.lex-tight-ctor-bad-2 src-326 `tok-326 `tre-326)
1829+ (check ~.lex-tight-ctor-bad-2 src-350 `tok-350 `tre-350)
1710++ test-lex-tight-ctor-ok-1
1830++ test-lex-tight-ctor-ok-1
1711− (check ~.lex-tight-ctor-ok-1 src-327 `tok-327 `tre-327)
1831+ (check ~.lex-tight-ctor-ok-1 src-351 `tok-351 `tre-351)
1712++ test-lex-tight-opener-bad-1
1832++ test-lex-tight-opener-bad-1
1713− (check ~.lex-tight-opener-bad-1 src-328 `tok-328 `tre-328)
1833+ (check ~.lex-tight-opener-bad-1 src-352 `tok-352 `tre-352)
1714++ test-lex-tight-opener-bad-2
1834++ test-lex-tight-opener-bad-2
1715− (check ~.lex-tight-opener-bad-2 src-329 `tok-329 `tre-329)
1835+ (check ~.lex-tight-opener-bad-2 src-353 `tok-353 `tre-353)
1716++ test-lex-tight-opener-bad-3
1836++ test-lex-tight-opener-bad-3
1717− (check ~.lex-tight-opener-bad-3 src-330 `tok-330 `tre-330)
1837+ (check ~.lex-tight-opener-bad-3 src-354 `tok-354 `tre-354)
1718++ test-lex-tight-opener-bad-4
1838++ test-lex-tight-opener-bad-4
1719− (check ~.lex-tight-opener-bad-4 src-331 `tok-331 `tre-331)
1839+ (check ~.lex-tight-opener-bad-4 src-355 `tok-355 `tre-355)
1720++ test-lex-tight-opener-ok-1
1840++ test-lex-tight-opener-ok-1
1721− (check ~.lex-tight-opener-ok-1 src-332 `tok-332 `tre-332)
1841+ (check ~.lex-tight-opener-ok-1 src-356 `tok-356 `tre-356)
1722++ test-lex-tight-pair-bad-1
1842++ test-lex-tight-pair-bad-1
1723− (check ~.lex-tight-pair-bad-1 src-333 `tok-333 `tre-333)
1843+ (check ~.lex-tight-pair-bad-1 src-357 `tok-357 `tre-357)
1724++ test-lex-tight-pair-bad-2
1844++ test-lex-tight-pair-bad-2
1725− (check ~.lex-tight-pair-bad-2 src-334 `tok-334 `tre-334)
1845+ (check ~.lex-tight-pair-bad-2 src-358 `tok-358 `tre-358)
1726++ test-lex-tight-pair-bad-3
1846++ test-lex-tight-pair-bad-3
1727− (check ~.lex-tight-pair-bad-3 src-335 `tok-335 `tre-335)
1847+ (check ~.lex-tight-pair-bad-3 src-359 `tok-359 `tre-359)
1728++ test-lex-tight-pair-ok-1
1848++ test-lex-tight-pair-ok-1
1729− (check ~.lex-tight-pair-ok-1 src-336 `tok-336 `tre-336)
1849+ (check ~.lex-tight-pair-ok-1 src-360 `tok-360 `tre-360)
1730++ test-lex-tight-qath-bad-1
1850++ test-lex-tight-qath-bad-1
1731− (check ~.lex-tight-qath-bad-1 src-337 `tok-337 `tre-337)
1851+ (check ~.lex-tight-qath-bad-1 src-361 `tok-361 `tre-361)
1732++ test-lex-tight-qath-bad-2
1852++ test-lex-tight-qath-bad-2
1733− (check ~.lex-tight-qath-bad-2 src-338 `tok-338 `tre-338)
1853+ (check ~.lex-tight-qath-bad-2 src-362 `tok-362 `tre-362)
1734++ test-lex-tight-qath-bad-3
1854++ test-lex-tight-qath-bad-3
1735− (check ~.lex-tight-qath-bad-3 src-339 `tok-339 `tre-339)
1855+ (check ~.lex-tight-qath-bad-3 src-363 `tok-363 `tre-363)
1736++ test-lex-tight-qath-ok-1
1856++ test-lex-tight-qath-ok-1
1737− (check ~.lex-tight-qath-ok-1 src-340 `tok-340 `tre-340)
1857+ (check ~.lex-tight-qath-ok-1 src-364 `tok-364 `tre-364)
1738++ test-lex-tight-unit-bad-1
1858++ test-lex-tight-unit-bad-1
1739− (check ~.lex-tight-unit-bad-1 src-341 `tok-341 `tre-341)
1859+ (check ~.lex-tight-unit-bad-1 src-365 `tok-365 `tre-365)
1740++ test-lex-tight-unit-ok-1
1860++ test-lex-tight-unit-ok-1
1741− (check ~.lex-tight-unit-ok-1 src-342 `tok-342 `tre-342)
1861+ (check ~.lex-tight-unit-ok-1 src-366 `tok-366 `tre-366)
1742++ test-lex-tight-wing-bad-1
1862++ test-lex-tight-wing-bad-1
1743− (check ~.lex-tight-wing-bad-1 src-343 `tok-343 `tre-343)
1863+ (check ~.lex-tight-wing-bad-1 src-367 `tok-367 `tre-367)
1744++ test-lex-tight-wing-ok-1
1864++ test-lex-tight-wing-ok-1
1745− (check ~.lex-tight-wing-ok-1 src-344 `tok-344 `tre-344)
1865+ (check ~.lex-tight-wing-ok-1 src-368 `tok-368 `tre-368)
1746::
1866::
1747:: +check: run golden:jibb on a case and compare both outputs
1867:: +check: run golden:jibb on a case and compare both outputs
1748::
1868::
tools/ship+1−1
@@ -1657,7 +1657,7 @@ MERGE_BASE = b"""\
1657++ main (program init update view subs)
1657++ main (program init update view subs)
1658
1658
1659+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
1659+$ model [todos=(list item.todo) draft=@t error=(unit @t)]
1660−+$ msg $?
1660++$ msg
1661 [%typed text=@t]
1661 [%typed text=@t]
1662 %submit
1662 %submit
1663 [%toggled id=@ud]
1663 [%toggled id=@ud]