on master help sign in
Prove source-backed generic union case tags
b93a94biko
README.md+1−1
@@ -42,7 +42,7 @@ tools/hoon '(golden /a/b/jibb (crip "++ main view"))'
42tools/hoon --raw --cord src=tests/golden/foo/source.jibb 'tree:(golden /a/b/jibb src)'
42tools/hoon --raw --cord src=tests/golden/foo/source.jibb 'tree:(golden /a/b/jibb src)'
43```
43```
44
44
45−`tools/testdata/selftest` tests both tools against a stub library, and `tools/doc-blocks` against Markdown it writes. `tools/importer-test` compares the partial Hoon importer's fixture projections against their golden file. `tools/type-import-test`, `tools/type-import-overlap-test`, `tools/type-import-structural-test`, `tools/type-generic-recursion-test`, `tools/type-generic-construction-test`, `tools/type-generic-pattern-test`, `tools/type-deferred-test`, `tools/type-deferred-resolver-test`, `tools/type-empty-test`, `tools/type-cell-branch-test`, `tools/type-tlon-test`, `tools/type-mark-test`, `tools/type-poke-test` and `tools/type-api-paths-test` check importer/checker, prelude and partial API path analysis boundaries under eval; the ship suite runs the same fixtures.
45+`tools/testdata/selftest` tests both tools against a stub library, and `tools/doc-blocks` against Markdown it writes. `tools/importer-test` compares the partial Hoon importer's fixture projections against their golden file. `tools/type-import-test`, `tools/type-import-overlap-test`, `tools/type-import-structural-test`, `tools/type-union-source-test`, `tools/type-generic-recursion-test`, `tools/type-generic-construction-test`, `tools/type-generic-pattern-test`, `tools/type-deferred-test`, `tools/type-deferred-resolver-test`, `tools/type-empty-test`, `tools/type-cell-branch-test`, `tools/type-tlon-test`, `tools/type-mark-test`, `tools/type-poke-test` and `tools/type-api-paths-test` check importer/checker, prelude and partial API path analysis boundaries under eval; the ship suite runs the same fixtures.
46
46
47### The doc's examples
47### The doc's examples
48
48
docs/compiler.md+2
@@ -66,6 +66,8 @@ Before the empty-capital optimization below, single sequential eval runs includi
66
66
67Restricted-number promotion only applies to written capital variables. If none are present, it returns immediately instead of traversing the environment. In one startup-inclusive pair of runs on 2,000 independent gates, output was byte-identical and user CPU fell from 71.67 to 38.26 seconds; wall time was 72.80 versus 51.66 seconds while other checks were running. This does not establish a bound for dependent modules or a complete-checker benchmark.
67Restricted-number promotion only applies to written capital variables. If none are present, it returns immediately instead of traversing the environment. In one startup-inclusive pair of runs on 2,000 independent gates, output was byte-identical and user CPU fell from 71.67 to 38.26 seconds; wall time was 72.80 versus 51.66 seconds while other checks were running. This does not establish a bound for dependent modules or a complete-checker benchmark.
68
68
69+A bounded source proof can also establish distinct literal heads when a union case is a one-hop application of a uniquely resolved local generic mold. It compares literal runtime nouns and checks the original mold normally before publishing an interface. The same source proof improves the partial report, which still says the mold is not checked. The new proof declines nested or qualified applications, opaque references, recursive-index states, holes and deferred obligations; other valid unions can remain unsupported. A 256-node source budget and a separate 256-entry inherited-state budget apply per attempt. They do not bound the existing pairwise union pass, parsing, atom or name sizes, or downstream checking. Prepared interfaces and inference state remain trusted inputs. `tools/type-union-source-test` and the shared ship guard exercise source resolution, reporting, rollback and these bounds.
70+
69A single-arm cell pattern can bind two or more positions, with its last binder capturing the remaining tail. Duplicate and shadowed names are rejected. A definite non-cell spine fails; an intermediate union or collection that might contain a cell remains unsupported. For a known non-union cell, a separate one-arm rule also accepts structured patterns, including nested literal and wildcard positions, when the existing coverage proof establishes the whole pattern. It binds payloads with their original types and checks result context; unknown, partially covered, union or recursive spines stay unsupported.
71A single-arm cell pattern can bind two or more positions, with its last binder capturing the remaining tail. Duplicate and shadowed names are rejected. A definite non-cell spine fails; an intermediate union or collection that might contain a cell remains unsupported. For a known non-union cell, a separate one-arm rule also accepts structured patterns, including nested literal and wildcard positions, when the existing coverage proof establishes the whole pattern. It binds payloads with their original types and checks result context; unknown, partially covered, union or recursive spines stay unsupported.
70
72
71String interpolation infers its pieces in order and preserves substitutions and pending constraints. A piece with a known atom aura, unrestricted `@`, or a tape `(list @tD)` is accepted; an isolated decimal literal takes its normal `@ud` default. A known cell reports that it needs a printer, and an explicitly generic atom asks for an aura at its use site. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported in this fragment.
73String interpolation infers its pieces in order and preserves substitutions and pending constraints. A piece with a known atom aura, unrestricted `@`, or a tape `(list @tD)` is accepted; an isolated decimal literal takes its normal `@ud` default. A known cell reports that it needs a printer, and an explicitly generic atom asks for an aura at its use site. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported in this fragment.
docs/development.md+5
@@ -14,6 +14,8 @@ From the plan's Setup and ground rules, and from @iko:
14- **Push straight to `master`.** @iko reviews work in the project's chat, not in pull requests, so there are none. Run the checks below first.
14- **Push straight to `master`.** @iko reviews work in the project's chat, not in pull requests, so there are none. Run the checks below first.
15- **Keep docs/ current**: [status.md](status.md) when a milestone moves, [open-questions.md](open-questions.md) when a question is settled or found.
15- **Keep docs/ current**: [status.md](status.md) when a milestone moves, [open-questions.md](open-questions.md) when a question is settled or found.
16
16
17+The source-backed generic-union guard can be run under eval with `tools/type-union-source-test`; its `test-union-source` arm is also assembled for the fake ship. It checks a bounded partial inference slice, not general union completeness.
18+
17## Setting up a machine
19## Setting up a machine
18
20
19The tools need Python 3 and `urbit` (vere) on `PATH`; the ship tools also need a fake `~zod` and click. Everything so far ran with vere 4.6 on Linux.
21The tools need Python 3 and `urbit` (vere) on `PATH`; the ship tools also need a fake `~zod` and click. Everything so far ran with vere 4.6 on Linux.
@@ -64,6 +66,7 @@ git clone https://github.com/urbit/tools /root/src/tools
64| `tools/type-import-test` | Composes the Hoon importer with the partial checker and compares `tests/type-import/expected.txt` under eval |
66| `tools/type-import-test` | Composes the Hoon importer with the partial checker and compares `tests/type-import/expected.txt` under eval |
65| `tools/type-import-overlap-test` | Checks source-aware Hoon union overlap, provenance and proof-budget controls under eval; the same fixture runs on the ship |
67| `tools/type-import-overlap-test` | Checks source-aware Hoon union overlap, provenance and proof-budget controls under eval; the same fixture runs on the ship |
66| `tools/type-import-structural-test` | Checks multi-case and nested Hoon union overlap witnesses under eval and on the ship |
68| `tools/type-import-structural-test` | Checks multi-case and nested Hoon union overlap witnesses under eval and on the ship |
69+| `tools/type-union-source-test` | Checks bounded local generic-alias disjointness and state guards under eval and on the ship |
67| `tools/type-tlon-test` | Runs the real Tlon presence source through the importer and partial checker, comparing `tests/type-tlon/expected.txt` under eval |
70| `tools/type-tlon-test` | Runs the real Tlon presence source through the importer and partial checker, comparing `tests/type-tlon/expected.txt` under eval |
68| `tools/type-import-diagnostic-test` | Compares the structured reader diagnostic bridge report under eval |
71| `tools/type-import-diagnostic-test` | Compares the structured reader diagnostic bridge report under eval |
69| `tools/type-mark-test` | Checks the partial checker’s mark import boundary against `tests/type-mark/expected.txt` under eval |
72| `tools/type-mark-test` | Checks the partial checker’s mark import boundary against `tests/type-mark/expected.txt` under eval |
@@ -115,6 +118,7 @@ tools/type-import-default-test # default-wrapped source proofs match
115tools/type-import-test # importer/checker bridge golden report matches
118tools/type-import-test # importer/checker bridge golden report matches
116tools/type-import-overlap-test # source-aware Hoon overlap and provenance controls
119tools/type-import-overlap-test # source-aware Hoon overlap and provenance controls
117tools/type-import-structural-test # nested and multi-case Hoon overlap controls
120tools/type-import-structural-test # nested and multi-case Hoon overlap controls
121+tools/type-union-source-test # local generic-alias union guards
118tools/type-tlon-test # real Tlon importer/checker report matches
122tools/type-tlon-test # real Tlon importer/checker report matches
119tools/type-import-diagnostic-test # direct structured reader diagnostics match
123tools/type-import-diagnostic-test # direct structured reader diagnostics match
120tools/type-mark-test # mark/checker bridge golden report matches
124tools/type-mark-test # mark/checker bridge golden report matches
@@ -151,6 +155,7 @@ tools/hoon check-spans-test # prints <<>>
151tools/hoon itype-unify-test # type-unification controls pass
155tools/hoon itype-unify-test # type-unification controls pass
152tools/hoon -f tools/testdata/zing-hoon-reference.hoon # Hoon translation agrees on four inputs
156tools/hoon -f tools/testdata/zing-hoon-reference.hoon # Hoon translation agrees on four inputs
153tools/hoon -f tools/testdata/lead-late-hoon-reference.hoon # Hoon translation agrees on selected inputs
157tools/hoon -f tools/testdata/lead-late-hoon-reference.hoon # Hoon translation agrees on selected inputs
158+tools/hoon -f tools/testdata/succ-hoon-reference.hoon # Hoon translation agrees on selected inputs
154tools/testdata/selftest # 22 checks, 0 failed
159tools/testdata/selftest # 22 checks, 0 failed
155tools/doc-blocks docs/spec # every jibb block has its case
160tools/doc-blocks docs/spec # every jibb block has its case
156tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
161tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
docs/prelude-inventory.md+1−1
@@ -99,7 +99,7 @@ The current prelude writes `snoc`, `lure`, `flop`, `join`, `lent`, `zing`, `levy
99
99
100`aftr`, `cork`, `corl`, `cury`, `curr`, `fore`, `head`, `same`, `succ`, `tail`, `test`, `lead`, `late`.
100`aftr`, `cork`, `corl`, `cury`, `curr`, `fore`, `head`, `same`, `succ`, `tail`, `test`, `lead`, `late`.
101
101
102−The source-backed `cork` and `corl` compose gates forward and backward, respectively; `cury` and `curr` bind the first and second item of an unfaced pair. `lead` and `late` are curried pair constructors: `((lead a) b)` returns `[a b]`, and `((late a) b)` returns `[b a]`. Their arguments may have independent types, including gate values, and neither constructor invokes a gate. The partial checker infers their polymorphic types. A Hoon translation agrees with Hoon’s helpers on selected inputs, but this is not Jibb execution; lowering and jet recognition remain to be validated by a backend.
102+The source-backed `cork` and `corl` compose gates forward and backward, respectively; `cury` and `curr` bind the first and second item of an unfaced pair. `succ` increments an atom through `add`; the partial checker infers a shared atom type excluding loobeans. A Hoon translation agrees with Hoon on ten selected inputs; Jibb execution and jet recognition remain unverified. `lead` and `late` are curried pair constructors: `((lead a) b)` returns `[a b]`, and `((late a) b)` returns `[b a]`. Their arguments may have independent types, including gate values, and neither constructor invokes a gate. The partial checker infers their polymorphic types. A Hoon translation agrees with Hoon’s helpers on selected inputs, but this is not Jibb execution; lowering and jet recognition remain to be validated by a backend.
103
103
104## 2o
104## 2o
105
105
docs/status.md+11−5
@@ -27,6 +27,8 @@ The internal prelude also defines `qath` as a transparent recursive knot sequenc
27
27
28The checker also recognizes a limited source-proven generic recursive tree in an import-free defining module. Its nominal identity retains the defining path, mold name and type arguments, including across supported imports and aliases. With a known expected type it can construct supported tagged cases by checking one source-proven layer at a time. Flat matches with explicit tags or nonbinding catch-alls also work for these source-proven trees, as does a missing-case diagnostic for a supported single-arm match. At most 128 arms are screened per attempt; whole-case binders and nested patterns remain unsupported. Broader pattern matching, general structural fits and gate-free proof remain unsupported; this is not yet the prelude's `element` implementation or island checking. The source index uses fixed-shape checks during mold collection. Each construction or supported pattern attempt has 256 unfolding steps and at most 4,096 face and substitution visits per scan; pattern subject recognition and view validation can each scan separately. Parsing, other inference and retries remain outside those limits. A single startup-inclusive comparison of 1,000 ordinary gates produced identical reports and used 29.12 seconds of user CPU before the shared-resolver refactor and 28.55 seconds after it, with other work running; it is not a general performance bound.
28The checker also recognizes a limited source-proven generic recursive tree in an import-free defining module. Its nominal identity retains the defining path, mold name and type arguments, including across supported imports and aliases. With a known expected type it can construct supported tagged cases by checking one source-proven layer at a time. Flat matches with explicit tags or nonbinding catch-alls also work for these source-proven trees, as does a missing-case diagnostic for a supported single-arm match. At most 128 arms are screened per attempt; whole-case binders and nested patterns remain unsupported. Broader pattern matching, general structural fits and gate-free proof remain unsupported; this is not yet the prelude's `element` implementation or island checking. The source index uses fixed-shape checks during mold collection. Each construction or supported pattern attempt has 256 unfolding steps and at most 4,096 face and substitution visits per scan; pattern subject recognition and view validation can each scan separately. Parsing, other inference and retries remain outside those limits. A single startup-inclusive comparison of 1,000 ordinary gates produced identical reports and used 29.12 seconds of user CPU before the shared-resolver refactor and 28.55 seconds after it, with other work running; it is not a general performance bound.
29
29
30+A bounded local source proof recognizes a narrow class of generic-alias union cases with different literal heads, then applies the ordinary mold checks. Nested or qualified aliases and several open states remain unsupported; the partial report states that the mold itself has not been checked. `tools/type-union-source-test` exercises the source and state bounds and failure paths under eval and on the ship.
31+
30The checker can experimentally discharge a narrowly scoped direct-constructor constraint while resolving an import-free library without a prepared prelude. It preserves independent generalized schemes and publishes only after all source molds, values, and recorded constraints close. API/store paths, `main`, imports, prepared preludes, recursive groups, open constraints, projection actions, and `%grec` in the constraint graph remain unsupported by this route. The fallback also declines source shapes outside its bounded direct-call screen. It does not yet typecheck the unchanged todo island or establish watchability.
32The checker can experimentally discharge a narrowly scoped direct-constructor constraint while resolving an import-free library without a prepared prelude. It preserves independent generalized schemes and publishes only after all source molds, values, and recorded constraints close. API/store paths, `main`, imports, prepared preludes, recursive groups, open constraints, projection actions, and `%grec` in the constraint graph remain unsupported by this route. The fallback also declines source shapes outside its bounded direct-call screen. It does not yet typecheck the unchanged todo island or establish watchability.
31
33
32Closed cell context can now flow through a bounded loobean branch while preserving the inferred value faces and original failed-inference behavior. Open or structurally uncertain substitutions and nested retry shapes remain unsupported. This does not by itself provide the missing text and UI prelude definitions, cross-definition context, island-kind checks, or watchability evidence needed by the unchanged todo island.
34Closed cell context can now flow through a bounded loobean branch while preserving the inferred value faces and original failed-inference behavior. Open or structurally uncertain substitutions and nested retry shapes remain unsupported. This does not by itself provide the missing text and UI prelude definitions, cross-definition context, island-kind checks, or watchability evidence needed by the unchanged todo island.
@@ -53,6 +55,8 @@ The repository spec records the subsequent type-system and prelude decisions, in
53
55
54The shared prelude interface reserves every name present in the supplied vendored source and makes only supported inferred entries available, including `list`, `unit`, `same`, `fall`, `need`, `bond`, `lure`, `weld`, `snoc`, `turn` and `lent`. The validated standard `list` mold is injected when the prelude’s own gates are inferred; `weld` and `turn` have ordinary explicit result casts. An absent or altered `list` is not injected, and an altered declaration cannot leak through direct or transitive mold aliases. The same validated template is available when prelude mold aliases are prepared, so supported direct and transitive aliases can use it. Unsupported entries such as most list helpers remain reserved but unavailable; backend validation of the helpers remains outstanding. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. The source-only `+prepare-prelude` rejects empty, malformed, conflicting or import-bearing source; `+prepare-prelude-with-internal` also accepts the supported private internal import. Prepared values are trusted and must come unchanged from the matching preparation arm. When canonical public list or unit templates are missing or altered, independently inferred private molds remain available, while molds that depend on those templates do not. The module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship. The source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
56The shared prelude interface reserves every name present in the supplied vendored source and makes only supported inferred entries available, including `list`, `unit`, `same`, `fall`, `need`, `bond`, `lure`, `weld`, `snoc`, `turn` and `lent`. The validated standard `list` mold is injected when the prelude’s own gates are inferred; `weld` and `turn` have ordinary explicit result casts. An absent or altered `list` is not injected, and an altered declaration cannot leak through direct or transitive mold aliases. The same validated template is available when prelude mold aliases are prepared, so supported direct and transitive aliases can use it. Unsupported entries such as most list helpers remain reserved but unavailable; backend validation of the helpers remains outstanding. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. The source-only `+prepare-prelude` rejects empty, malformed, conflicting or import-bearing source; `+prepare-prelude-with-internal` also accepts the supported private internal import. Prepared values are trusted and must come unchanged from the matching preparation arm. When canonical public list or unit templates are missing or altered, independently inferred private molds remain available, while molds that depend on those templates do not. The module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship. The source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
55
57
58+The prelude has a Jibb-written `succ` gate that increments through `add`; partial inference retains its arithmetic atom constraint. A Hoon translation agrees with Hoon on ten selected inputs. Jibb execution and jet recognition remain unverified.
59+
56The prelude has Jibb-written curried `lead` and `late` pair constructors, inferred with independent argument types including gate values. Their focused golden passes under eval and on the ship, and a Hoon-reference comparison covers operand order. Jibb backend execution remains unverified.
60The prelude has Jibb-written curried `lead` and `late` pair constructors, inferred with independent argument types including gate values. Their focused golden passes under eval and on the ship, and a Hoon-reference comparison covers operand order. Jibb backend execution remains unverified.
57
61
58The prelude also has a Jibb-written `zing` that concatenates homogeneous lists via `weld`. Its focused golden infers empty, nested text, ship, generic and gate-element lists and reports a non-list error; the same golden passes on the ship. A Hoon translation agrees with Hoon `zing` on selected finite inputs, not on Jibb execution. Hoon’s raw helper additionally accepts heterogeneous noun lists, which the Jibb signature does not express. Backend lowering and jet recognition remain unverified.
62The prelude also has a Jibb-written `zing` that concatenates homogeneous lists via `weld`. Its focused golden infers empty, nested text, ship, generic and gate-element lists and reports a non-list error; the same golden passes on the ship. A Hoon translation agrees with Hoon `zing` on selected finite inputs, not on Jibb execution. Hoon’s raw helper additionally accepts heterogeneous noun lists, which the Jibb signature does not express. Backend lowering and jet recognition remain unverified.
@@ -85,8 +89,8 @@ What the plan asks for, and where it is:
85
89
86Besides the plan's list:
90Besides the plan's list:
87
91
88−- 656 golden cases: 436 that parse and 220 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
92+- 658 golden cases: 438 that parse and 220 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
89−- The 656-case corpus passed under `urbit eval` in 166.9 s while other checks were running. The fake ship passed all 697 tests, including the source-overlap, structural-overlap, generic-recursion, generic-construction, generic-pattern, deferred-inference, empty-mold and cell-branch fixtures, importer, importer/checker and mark/checker bridges, module scope, unification, hole, qath, ask, default-wrapper importer, projection, arithmetic, generic-alias, positional-face, API-evidence, request, closed-gate, todo API, constructor, sub, nested-union, gate-free and direct-gate guards and the unchanged todo report. Desk sync took 233.8 s while other checks were running. The importer golden compares 221 projections; `tools/clay-fixtures` builds the example Hoon fixtures through Clay, checks a recursive Ford import's origin, and passes Clay-built types through the Clay-built importer and partial checker.
93+- The 658-case corpus passed under `urbit eval` in 115.2 s while other checks were running. The fake ship passed all 700 tests, including the source-overlap, structural-overlap, generic-union source, generic-recursion, generic-construction, generic-pattern, deferred-inference, empty-mold and cell-branch fixtures, importer, importer/checker and mark/checker bridges, module scope, unification, hole, qath, ask, default-wrapper importer, projection, arithmetic, generic-alias, positional-face, API-evidence, request, closed-gate, todo API, constructor, sub, nested-union, gate-free and direct-gate guards and the unchanged todo report. Desk sync took 108.8 s while other checks were running. The importer golden compares 221 projections; `tools/clay-fixtures` builds the example Hoon fixtures through Clay, checks a recursive Ford import's origin, and passes Clay-built types through the Clay-built importer and partial checker.
90- `tools/testdata/selftest` (22 checks), `tools/testdata/ship-selftest` and `tools/testdata/clay-fixtures-selftest` test the tools themselves; the last checks temporary Clay fixture cleanup and signal handling without a ship.
94- `tools/testdata/selftest` (22 checks), `tools/testdata/ship-selftest` and `tools/testdata/clay-fixtures-selftest` test the tools themselves; the last checks temporary Clay fixture cleanup and signal handling without a ship.
91- 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.
95- 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.
92- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
96- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
@@ -195,19 +199,21 @@ Besides the plan's list:
195| 30b0a9e | 2026-10-31 | Match source-proven recursive tree cases |
199| 30b0a9e | 2026-10-31 | Match source-proven recursive tree cases |
196| 72d85ab | 2026-10-31 | Add bounded deferred inference and expand runtime equality coverage |
200| 72d85ab | 2026-10-31 | Add bounded deferred inference and expand runtime equality coverage |
197| 22f3788 | 2026-10-31 | Check empty molds and propagate closed cell context into branches |
201| 22f3788 | 2026-10-31 | Check empty molds and propagate closed cell context into branches |
198−| This change | 2026-10-31 | Keep deferred fits stable under later substitutions |
202+| 341bcb4 | 2026-10-31 | Keep deferred fits stable under later substitutions |
203+| This change | 2026-10-31 | Prove local generic-alias union tags and add successor |
199
204
200## Checking it
205## Checking it
201
206
202On a machine set up as [development.md](development.md) says:
207On a machine set up as [development.md](development.md) says:
203
208
204```
209```
205−tools/golden # 656 cases under urbit eval
210+tools/golden # 658 cases under urbit eval
206tools/importer-test # the Hoon importer fixture projection
211tools/importer-test # the Hoon importer fixture projection
207tools/type-import-default-test # default-wrapped source proof golden
212tools/type-import-default-test # default-wrapped source proof golden
208tools/type-import-test # the importer/checker bridge fixture
213tools/type-import-test # the importer/checker bridge fixture
209tools/type-import-overlap-test # source-aware Hoon overlap and provenance fixture
214tools/type-import-overlap-test # source-aware Hoon overlap and provenance fixture
210tools/type-import-structural-test # structural overlap and multi-case source fixture
215tools/type-import-structural-test # structural overlap and multi-case source fixture
216+tools/type-union-source-test # local generic-alias union guards
211tools/type-tlon-test # the real Tlon reader/checker fixture
217tools/type-tlon-test # the real Tlon reader/checker fixture
212tools/type-mark-test # the mark/checker bridge fixture
218tools/type-mark-test # the mark/checker bridge fixture
213tools/type-poke-test # the source-backed poke/API fixture
219tools/type-poke-test # the source-backed poke/API fixture
@@ -233,7 +239,7 @@ tools/testdata/selftest # the tools themselves
233tools/doc-blocks docs/spec # the doc's examples are golden cases
239tools/doc-blocks docs/spec # the doc's examples are golden cases
234tools/ship start
240tools/ship start
235tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
241tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
236−tools/ship test # the same 656 cases as -test arms on the ship
242+tools/ship test # the same 658 cases as -test arms on the ship
237tools/testdata/ship-selftest
243tools/testdata/ship-selftest
238tools/testdata/clay-fixtures-selftest # scratch fixture cleanup without a ship
244tools/testdata/clay-fixtures-selftest # scratch fixture cleanup without a ship
239tools/ship check-commit # |commit stores .jibb files
245tools/ship check-commit # |commit stores .jibb files
jibb-dev/lib/jibb.hoon+173−2
@@ -6844,7 +6844,11 @@
6844 `[[%const lit.sh] state]
6844 `[[%const lit.sh] state]
6845 %union
6845 %union
6846 =/ pairs=(list upair) (union-pairs cases.sh molds.state)
6846 =/ pairs=(list upair) (union-pairs cases.sh molds.state)
6847+ ?: (lien pairs |=(p=upair =(%overlap relation.p))) ~
6848+ =/ source-proof=?
6847− ?. (levy pairs |=(p=upair =(%disjoint relation.p))) ~
6849+ ?: (levy pairs |=(p=upair =(%disjoint relation.p))) &
6850+ &((union-source-state-safe state 256) (union-source-distinct-tags cases.sh molds.state 256))
6851+ ?. source-proof ~
6848 =/ cs=(unit [types=(list itype) state=istate]) (infer-shape-args cases.sh state)
6852 =/ cs=(unit [types=(list itype) state=istate]) (infer-shape-args cases.sh state)
6849 ?~ cs ~
6853 ?~ cs ~
6850 `[[%union types.u.cs ~ ~ ~] state.u.cs]
6854 `[[%union types.u.cs ~ ~ ~] state.u.cs]
@@ -10525,6 +10529,171 @@
10525 %overlap
10529 %overlap
10526 %unknown
10530 %unknown
10527::
10531::
10532+:: A source-only fallback for literal-tagged cells and one-hop local
10533+:: generic applications. It screens all work before ordinary inference.
10534+++ union-simple-shape-budget
10535+ |= [s=shape fuel=@ud vars=(unit (list @t))]
10536+ ^- (unit @ud)
10537+ ?: =(0 fuel) ~
10538+ =. fuel (dec fuel)
10539+ ?- -.s
10540+ ?(%aura %noun %void %flag) `fuel
10541+ %tvar
10542+ ?~ vars `fuel
10543+ ?:((lien u.vars |=(n=@t =(n name.s))) `fuel ~)
10544+ %const
10545+ ?. |(=(%term form.lit.s) =(%null form.lit.s) =(%loobean form.lit.s)) ~
10546+ ?: &(=(%loobean form.lit.s) !|(=(0 val.lit.s) =(1 val.lit.s))) ~
10547+ `fuel
10548+ %cell (union-simple-fields-budget fields.s fuel vars)
10549+ %fn
10550+ =/ left=(unit @ud) $(s sample.s, fuel fuel)
10551+ ?~ left ~
10552+ $(s product.s, fuel u.left)
10553+ * ~
10554+ ==
10555+++ union-simple-fields-budget
10556+ |= [fields=(list field) fuel=@ud vars=(unit (list @t))]
10557+ ^- (unit @ud)
10558+ ?~ fields `fuel
10559+ ?: =(0 fuel) ~
10560+ =/ field-shape=shape
10561+ ?- -.i.fields
10562+ %bare shape.i.fields
10563+ %face shape.i.fields
10564+ %pun [%ref at.i.fields ~[name.i.fields]]
10565+ ==
10566+ =/ head=(unit @ud) (union-simple-shape-budget field-shape (dec fuel) vars)
10567+ ?~ head ~
10568+ $(fields t.fields, fuel u.head)
10569+++ union-source-find
10570+ |= [n=term molds=imolds fuel=@ud]
10571+ ^- (unit [body=shape left=@ud])
10572+ =/ found=(unit shape) ~
10573+ |-
10574+ ?~ molds
10575+ ?~ found ~
10576+ `[u.found fuel]
10577+ ?: =(0 fuel) ~
10578+ ?: =(n name.i.molds)
10579+ ?^ found ~
10580+ $(molds t.molds, fuel (dec fuel), found `body.i.molds)
10581+ $(molds t.molds, fuel (dec fuel))
10582+++ union-source-args-budget
10583+ |= [vars=(list @t) args=(list shape) fuel=@ud]
10584+ ^- (unit @ud)
10585+ =/ seen=(set @t) *(set @t)
10586+ |-
10587+ ?~ vars ?~(args `fuel ~)
10588+ ?~ args ~
10589+ ?: =(0 fuel) ~
10590+ ?: (~(has in:..zuse seen) i.vars) ~
10591+ =/ arg=(unit @ud) (union-simple-shape-budget i.args (dec fuel) ~)
10592+ ?~ arg ~
10593+ $(vars t.vars, args t.args, fuel u.arg, seen (~(put in:..zuse seen) i.vars))
10594+++ union-source-cell-tag
10595+ |= s=shape
10596+ ^- (unit @)
10597+ ?. ?=(%cell -.s) ~
10598+ ?~ fields.s ~
10599+ ?~ t.fields.s ~
10600+ ?. ?=(%bare -.i.fields.s) ~
10601+ =/ head=shape shape.i.fields.s
10602+ ?. ?=(%const -.head) ~
10603+ ?. |(=(%term form.lit.head) =(%null form.lit.head) =(%loobean form.lit.head)) ~
10604+ ?: &(=(%loobean form.lit.head) !|(=(0 val.lit.head) =(1 val.lit.head))) ~
10605+ `val.lit.head
10606+++ union-source-case-tag
10607+ |= [s=shape molds=imolds fuel=@ud]
10608+ ^- (unit [tag=@ left=@ud])
10609+ ?: ?=(%cell -.s)
10610+ =/ tag=(unit @) (union-source-cell-tag s)
10611+ ?~ tag ~
10612+ =/ left=(unit @ud) (union-simple-shape-budget s fuel ~)
10613+ ?~ left ~
10614+ `[u.tag u.left]
10615+ ?. ?=(%apply -.s) ~
10616+ ?. ?=([@ ~] ref.s) ~
10617+ ?: =(0 fuel) ~
10618+ =/ found=(unit [body=shape left=@ud]) (union-source-find i.ref.s molds (dec fuel))
10619+ ?~ found ~
10620+ ?. ?=(%generic -.body.u.found) ~
10621+ ?~ vars.body.u.found ~
10622+ =/ tag=(unit @) (union-source-cell-tag body.body.u.found)
10623+ ?~ tag ~
10624+ =/ args=(unit @ud) (union-source-args-budget vars.body.u.found args.s left.u.found)
10625+ ?~ args ~
10626+ =/ left=(unit @ud) (union-simple-shape-budget body.body.u.found u.args `vars.body.u.found)
10627+ ?~ left ~
10628+ `[u.tag u.left]
10629+++ union-source-distinct-tags
10630+ |= [cases=(list shape) molds=imolds fuel=@ud]
10631+ ^- ?
10632+ =/ seen=(set @) *(set @)
10633+ =/ has-application=? |
10634+ |-
10635+ ?~ cases has-application
10636+ ?: =(0 fuel) |
10637+ =/ item=(unit [tag=@ left=@ud]) (union-source-case-tag i.cases molds (dec fuel))
10638+ ?~ item |
10639+ ?: (~(has in:..zuse seen) tag.u.item) |
10640+ $(cases t.cases, fuel left.u.item, seen (~(put in:..zuse seen) tag.u.item), has-application |(has-application ?=(%apply -.i.cases)))
10641+::
10642+:: This inference-only screen bounds inherited work that the small source
10643+:: slice may consult. It does not authenticate a caller-created state.
10644+++ union-state-leaf
10645+ |= t=itype
10646+ ^- ?
10647+ ?=(?(%var %avar %rvar %nvar %rnvar %atom %any-atom %flag %noun %empty %const) -.t)
10648+++ union-state-params-budget
10649+ |= [params=iparams fuel=@ud]
10650+ ^- (unit @ud)
10651+ ?~ params `fuel
10652+ ?: =(0 fuel) ~
10653+ ?. (union-state-leaf typ.i.params) ~
10654+ $(params t.params, fuel (dec fuel))
10655+++ union-state-sub-budget
10656+ |= [sub=isub fuel=@ud]
10657+ ^- (unit @ud)
10658+ ?~ sub `fuel
10659+ ?: =(0 fuel) ~
10660+ ?. (union-state-leaf val.i.sub) ~
10661+ $(sub t.sub, fuel (dec fuel))
10662+++ union-state-caps-budget
10663+ |= [caps=icaps fuel=@ud]
10664+ ^- (unit @ud)
10665+ ?~ caps `fuel
10666+ ?: =(0 fuel) ~
10667+ $(caps t.caps, fuel (dec fuel))
10668+++ union-state-active-budget
10669+ |= [active=(list term) fuel=@ud]
10670+ ^- (unit @ud)
10671+ ?~ active `fuel
10672+ ?: =(0 fuel) ~
10673+ $(active t.active, fuel (dec fuel))
10674+++ union-state-tags-budget
10675+ |= [tags=(list ipending) fuel=@ud]
10676+ ^- (unit @ud)
10677+ ?~ tags `fuel
10678+ ?: =(0 fuel) ~
10679+ $(tags t.tags, fuel (dec fuel))
10680+++ union-source-state-safe
10681+ |= [state=istate fuel=@ud]
10682+ ^- ?
10683+ ?^ grec-index.state |
10684+ ?^ holes.state |
10685+ ?^ defer.state |
10686+ ?^ obligations.state |
10687+ =/ params=(unit @ud) (union-state-params-budget params.state fuel)
10688+ ?~ params |
10689+ =/ sub=(unit @ud) (union-state-sub-budget sub.state u.params)
10690+ ?~ sub |
10691+ =/ caps=(unit @ud) (union-state-caps-budget caps.state u.sub)
10692+ ?~ caps |
10693+ =/ active=(unit @ud) (union-state-active-budget active.state u.caps)
10694+ ?~ active |
10695+ ?=(^ (union-state-tags-budget tags.state u.active))
10696+::
10528++ union-pairs
10697++ union-pairs
10529 |= [cases=(list shape) molds=imolds]
10698 |= [cases=(list shape) molds=imolds]
10530 ^- (list upair)
10699 ^- (list upair)
@@ -10685,7 +10854,9 @@
10685 =/ second=@t (show-error src [file line.beg.second.p col.beg.second.p "overlapping case"])
10854 =/ second=@t (show-error src [file line.beg.second.p col.beg.second.p "overlapping case"])
10686 (of-wain:format ~[summary first second])
10855 (of-wain:format ~[summary first second])
10687 ?: (lien pairs |=(p=upair =(%unknown relation.p)))
10856 ?: (lien pairs |=(p=upair =(%unknown relation.p)))
10857+ ?. (union-source-distinct-tags cases.sh molds 256)
10688− (crip "+$ {(trip name.d)}: case disjointness unresolved; mold not checked")
10858+ (crip "+$ {(trip name.d)}: case disjointness unresolved; mold not checked")
10859+ (crip "+$ {(trip name.d)}: cases proven disjoint; mold not checked")
10689 (crip "+$ {(trip name.d)}: cases proven disjoint; mold not checked")
10860 (crip "+$ {(trip name.d)}: cases proven disjoint; mold not checked")
10690::
10861::
10691:: +show-inference-diagnostic: a partial report with both source sites
10862:: +show-inference-diagnostic: a partial report with both source sites
jibb-dev/lib/jibb/prelude.jibb+2
@@ -371,3 +371,5 @@
371
371
372++ lead |= first=A |= second=B [first second]
372++ lead |= first=A |= second=B [first second]
373++ late |= second=B |= first=A [first second]
373++ late |= second=B |= first=A [first second]
374+
375+++ succ |= x=A (add x 1)
tests/golden/types-prelude-succ/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Overview, Prelude: “Hoon's standard library regrouped, written in Jibb”; Decisions, Loobean arithmetic: “Arithmetic rejects loobean operands”.
2+tests: The source-backed successor preserves a shared atom aura, accepts decimal and hexadecimal atoms, infers a generic arithmetic constraint and rejects a loobean. This is a partial inference report; Jibb execution and jet recognition remain unverified.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-prelude-succ/modules.txtnew file+1
@@ -0,0 +1 @@
1+# no module fixtures
tests/golden/types-prelude-succ/source.jibbnew file+4
@@ -0,0 +1,4 @@
1+++ n (succ 1)
2+++ hx (succ 0x1f)
3+++ generic |= x=A (succ x)
4+++ bad (succ %.y)
tests/golden/types-prelude-succ/tokens.txtnew file+32
@@ -0,0 +1,32 @@
1+1:1 glyph ++
2+1:4 name n
3+1:6 glyph (
4+1:7 tight name succ
5+1:12 lit 1
6+1:13 tight glyph )
7+2:1 NEWLINE
8+2:1 glyph ++
9+2:4 name hx
10+2:7 glyph (
11+2:8 tight name succ
12+2:13 lit 0x1f
13+2:17 tight glyph )
14+3:1 NEWLINE
15+3:1 glyph ++
16+3:4 name generic
17+3:12 glyph |=
18+3:15 name x
19+3:16 tight glyph =
20+3:17 tight tvar A
21+3:19 glyph (
22+3:20 tight name succ
23+3:25 name x
24+3:26 tight glyph )
25+4:1 NEWLINE
26+4:1 glyph ++
27+4:4 name bad
28+4:8 glyph (
29+4:9 tight name succ
30+4:14 lit %.y
31+4:17 tight glyph )
32+4:18 NEWLINE
tests/golden/types-prelude-succ/tree.txtnew file+15
@@ -0,0 +1,15 @@
1+(module
2+ (value 1:1 n
3+ (group 1:6
4+ (call 1:7 (wing 1:7 succ) (lit 1:12 1))))
5+ (value 2:1 hx
6+ (group 2:7
7+ (call 2:8 (wing 2:8 succ) (lit 2:13 0x1f))))
8+ (value 3:1 generic
9+ (gate 3:12
10+ (face 3:15 x (tvar 3:17 A))
11+ (group 3:19
12+ (call 3:20 (wing 3:20 succ) (wing 3:25 x)))))
13+ (value 4:1 bad
14+ (group 4:8
15+ (call 4:9 (wing 4:9 succ) (lit 4:14 %.y)))))
tests/golden/types-prelude-succ/types.txtnew file+11
@@ -0,0 +1,11 @@
1+partial inference; module not checked
2+++ n: @ud
3+++ hx: @ux
4+++ generic: $-(A A) where A is an atom other than ?
5+++ bad: call's sample and argument types do not unify
6+/tests/golden/types-prelude-succ/source.jibb:4:9: called gate has type $-(A A) where A is an atom other than ?
7+++ bad (succ %.y)
8+ ^
9+/tests/golden/types-prelude-succ/source.jibb:4:14: argument has type ?
10+++ bad (succ %.y)
11+ ^
tests/golden/types-union-source-alias/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Unions: "Cases must differ as nouns"; Grammar, Generic molds.
2+tests: A one-hop local generic alias with a literal head is proven disjoint from a different head, including with outer generic parameters. Same-head and equal-noun zero spellings remain unsupported or rejected; this partial report does not claim the full module is checked.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-union-source-alias/source.jibbnew file+18
@@ -0,0 +1,18 @@
1++$ tagged |$ [A] [%wrapped A]
2++$ choice
3+ (tagged @t)
4+ [%other @p]
5+++ id |= x=choice x
6++$ poly |$ [A B]
7+ (tagged A)
8+ [%second B]
9+++ typed |= x=(poly @t @p) x
10++$ same
11+ (tagged @t)
12+ [%wrapped @p]
13+++ collide |= x=same x
14++$ zero |$ [A] [%.y A]
15++$ same-zero
16+ (zero @t)
17+ [%$ @p]
18+++ collide-zero |= x=same-zero x
tests/golden/types-union-source-alias/tokens.txtnew file+119
@@ -0,0 +1,119 @@
1+1:1 glyph +$
2+1:4 name tagged
3+1:11 glyph |$
4+1:14 glyph [
5+1:15 tight tvar A
6+1:16 tight glyph ]
7+1:18 glyph [
8+1:19 tight lit %wrapped
9+1:28 tvar A
10+1:29 tight glyph ]
11+2:1 NEWLINE
12+2:1 glyph +$
13+2:4 name choice
14+3:3 INDENT
15+3:3 glyph (
16+3:4 tight name tagged
17+3:11 aura @t
18+3:13 tight glyph )
19+4:3 NEWLINE
20+4:3 glyph [
21+4:4 tight lit %other
22+4:11 aura @p
23+4:13 tight glyph ]
24+5:1 DEDENT
25+5:1 NEWLINE
26+5:1 glyph ++
27+5:4 name id
28+5:7 glyph |=
29+5:10 name x
30+5:11 tight glyph =
31+5:12 tight name choice
32+5:19 name x
33+6:1 NEWLINE
34+6:1 glyph +$
35+6:4 name poly
36+6:9 glyph |$
37+6:12 glyph [
38+6:13 tight tvar A
39+6:15 tvar B
40+6:16 tight glyph ]
41+7:3 INDENT
42+7:3 glyph (
43+7:4 tight name tagged
44+7:11 tvar A
45+7:12 tight glyph )
46+8:3 NEWLINE
47+8:3 glyph [
48+8:4 tight lit %second
49+8:12 tvar B
50+8:13 tight glyph ]
51+9:1 DEDENT
52+9:1 NEWLINE
53+9:1 glyph ++
54+9:4 name typed
55+9:10 glyph |=
56+9:13 name x
57+9:14 tight glyph =
58+9:15 tight glyph (
59+9:16 tight name poly
60+9:21 aura @t
61+9:24 aura @p
62+9:26 tight glyph )
63+9:28 name x
64+10:1 NEWLINE
65+10:1 glyph +$
66+10:4 name same
67+11:3 INDENT
68+11:3 glyph (
69+11:4 tight name tagged
70+11:11 aura @t
71+11:13 tight glyph )
72+12:3 NEWLINE
73+12:3 glyph [
74+12:4 tight lit %wrapped
75+12:13 aura @p
76+12:15 tight glyph ]
77+13:1 DEDENT
78+13:1 NEWLINE
79+13:1 glyph ++
80+13:4 name collide
81+13:12 glyph |=
82+13:15 name x
83+13:16 tight glyph =
84+13:17 tight name same
85+13:22 name x
86+14:1 NEWLINE
87+14:1 glyph +$
88+14:4 name zero
89+14:9 glyph |$
90+14:12 glyph [
91+14:13 tight tvar A
92+14:14 tight glyph ]
93+14:16 glyph [
94+14:17 tight lit %.y
95+14:21 tvar A
96+14:22 tight glyph ]
97+15:1 NEWLINE
98+15:1 glyph +$
99+15:4 name same-zero
100+16:3 INDENT
101+16:3 glyph (
102+16:4 tight name zero
103+16:9 aura @t
104+16:11 tight glyph )
105+17:3 NEWLINE
106+17:3 glyph [
107+17:4 tight lit %$
108+17:7 aura @p
109+17:9 tight glyph ]
110+18:1 DEDENT
111+18:1 NEWLINE
112+18:1 glyph ++
113+18:4 name collide-zero
114+18:17 glyph |=
115+18:20 name x
116+18:21 tight glyph =
117+18:22 tight name same-zero
118+18:32 name x
119+18:33 NEWLINE
tests/golden/types-union-source-alias/tree.txtnew file+41
@@ -0,0 +1,41 @@
1+(module
2+ (mold 1:1 tagged
3+ (generic 1:11 A
4+ (cell 1:18 (const 1:19 %wrapped) (tvar 1:28 A))))
5+ (mold 2:1 choice
6+ (union 3:3
7+ (apply 3:3 tagged (aura 3:11 @t))
8+ (cell 4:3 (const 4:4 %other) (aura 4:11 @p))))
9+ (value 5:1 id
10+ (gate 5:7
11+ (face 5:10 x (ref 5:12 choice))
12+ (wing 5:19 x)))
13+ (mold 6:1 poly
14+ (generic 6:9 A B
15+ (union 7:3
16+ (apply 7:3 tagged (tvar 7:11 A))
17+ (cell 8:3 (const 8:4 %second) (tvar 8:12 B)))))
18+ (value 9:1 typed
19+ (gate 9:10
20+ (face 9:13 x
21+ (apply 9:15 poly (aura 9:21 @t) (aura 9:24 @p)))
22+ (wing 9:28 x)))
23+ (mold 10:1 same
24+ (union 11:3
25+ (apply 11:3 tagged (aura 11:11 @t))
26+ (cell 12:3 (const 12:4 %wrapped) (aura 12:13 @p))))
27+ (value 13:1 collide
28+ (gate 13:12
29+ (face 13:15 x (ref 13:17 same))
30+ (wing 13:22 x)))
31+ (mold 14:1 zero
32+ (generic 14:9 A
33+ (cell 14:16 (const 14:17 %.y) (tvar 14:21 A))))
34+ (mold 15:1 same-zero
35+ (union 16:3
36+ (apply 16:3 zero (aura 16:9 @t))
37+ (cell 17:3 (const 17:4 %$) (aura 17:7 @p))))
38+ (value 18:1 collide-zero
39+ (gate 18:17
40+ (face 18:20 x (ref 18:22 same-zero))
41+ (wing 18:32 x))))
tests/golden/types-union-source-alias/types.txtnew file+11
@@ -0,0 +1,11 @@
1+partial inference; module not checked
2++$ tagged: not checked
3++$ choice: cases proven disjoint; mold not checked
4+++ id: $-(choice choice)
5++$ poly: cases proven disjoint; mold not checked
6+++ typed: $-((poly @t @p) (poly @t @p))
7++$ same: case disjointness unresolved; mold not checked
8+++ collide: sample mold is not supported by partial inference
9++$ zero: not checked
10++$ same-zero: case disjointness unresolved; mold not checked
11+++ collide-zero: sample mold is not supported by partial inference
tests/lib/jibb-union-source.hoonnew file+152
@@ -0,0 +1,152 @@
1+:: Bounded source-backed generic-union proof checks; no runtime claim.
2+/+ jibb
3+/* prelude %jibb /lib/jibb/prelude/jibb
4+/* internal %jibb /lib/jibb/internal/jibb
5+/* good %txt /tests/type-union-source/good/txt
6+/* same %txt /tests/type-union-source/same/txt
7+/* zero %txt /tests/type-union-source/zero/txt
8+/* nested %txt /tests/type-union-source/nested/txt
9+/* duplicate %txt /tests/type-union-source/duplicate/txt
10+/* wrong %txt /tests/type-union-source/wrong/txt
11+/* duplicate-params %txt /tests/type-union-source/duplicate-params/txt
12+/* hidden-ref %txt /tests/type-union-source/hidden-ref/txt
13+/* qualified %txt /tests/type-union-source/qualified/txt
14+/* direct-source %txt /tests/type-union-source/direct-source/txt
15+/* wide-source %txt /tests/type-union-source/wide-source/txt
16+/* free-source %txt /tests/type-union-source/free-source/txt
17+/* late-source %txt /tests/type-union-source/late-source/txt
18+/* shadow-source %txt /tests/type-union-source/shadow-source/txt
19+/* mixed-source %txt /tests/type-union-source/mixed-source/txt
20+/* expected %txt /tests/type-union-source/expected/txt
21+|%
22+++ checks
23+ |= [public=@t internal=@t good=@t same=@t zero=@t nested=@t duplicate=@t wrong=@t duplicate-params=@t hidden-ref=@t qualified=@t direct-source=@t wide-source=@t free-source=@t late-source=@t shadow-source=@t mixed-source=@t]
24+ ^- (list [@t ?])
25+ =/ module-choice
26+ |= [source=@t name=term]
27+ ^- (unit [cases=(list shape:jibb) molds=imolds:jibb])
28+ =/ parsed (parse:jibb /tests/empty/jibb source)
29+ ?: ?=(%| -.parsed) ~
30+ =/ molds=imolds:jibb (collect-simple-molds:jibb defs.p.parsed)
31+ =/ found=(unit shape:jibb) (find-simple-mold:jibb name molds)
32+ ?~ found ~
33+ ?. ?=(%union -.u.found) ~
34+ `[cases.u.found molds]
35+ =/ g=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice good %choice)
36+ =/ s=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice same %bad)
37+ =/ z=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice zero %bad)
38+ =/ n=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice nested %choice)
39+ =/ d=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice duplicate %choice)
40+ =/ w=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice wrong %bad)
41+ =/ dp=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice duplicate-params %choice)
42+ =/ hr=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice hidden-ref %choice)
43+ =/ q=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice qualified %choice)
44+ =/ direct=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice direct-source %choice)
45+ =/ wide=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice wide-source %choice)
46+ =/ free=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice free-source %choice)
47+ =/ late=(unit [cases=(list shape:jibb) molds=imolds:jibb]) (module-choice late-source %choice)
48+ ?~ g ~[['BAD good parse' |]]
49+ ?~ s ~[['BAD same parse' |]]
50+ ?~ z ~[['BAD zero parse' |]]
51+ ?~ n ~[['BAD nested parse' |]]
52+ ?~ d ~[['BAD duplicate parse' |]]
53+ ?~ w ~[['BAD arity parse' |]]
54+ ?~ dp ~[['BAD duplicate params parse' |]]
55+ ?~ hr ~[['BAD hidden ref parse' |]]
56+ ?~ q ~[['BAD qualified parse' |]]
57+ ?~ direct ~[['BAD direct parse' |]]
58+ ?~ wide ~[['BAD wide parse' |]]
59+ ?~ free ~[['BAD free parse' |]]
60+ ?~ late ~[['BAD late parse' |]]
61+ ?~ cases.u.late ~[['BAD late cases' |]]
62+ =/ chosen=(unit shape:jibb) (find-simple-mold:jibb %choice molds.u.g)
63+ ?~ chosen ~[['BAD chosen source' |]]
64+ =/ late-shape=(unit shape:jibb) (find-simple-mold:jibb %choice molds.u.late)
65+ ?~ late-shape ~[['BAD late source' |]]
66+ =/ mixed-parsed=(each module:jibb error:jibb) (parse:jibb /tests/empty/jibb mixed-source)
67+ ?: ?=(%| -.mixed-parsed) ~[['BAD mixed parse' |]]
68+ =/ mixed-collected=grec-collected:jibb (grec-collect-molds:jibb defs.p.mixed-parsed)
69+ =/ mixed-tree=(unit shape:jibb) (~(get by proofs.mixed-collected) %element)
70+ =/ prep=(unit iprelude:jibb) (prepare-prelude-with-internal:jibb public internal)
71+ ?~ prep ~[['BAD prepared prelude' |]]
72+ =/ mixed-result=jfile-result:jibb
73+ (infer-jibb-file:jibb /tests/empty/jibb mixed-source ~ ~ ~ ~[/tests/empty/jibb] values.u.prep molds.u.prep ~ `iface.u.prep)
74+ =/ mixed-report=wain (to-wain:format (golden-types-with-prepared-prelude:jibb /tests/empty/jibb mixed-source ~ ~ ~ prep))
75+ =/ good-report=wain (to-wain:format (golden-types-in-context:jibb /tests/empty/jibb good ~ ~ ~ ~ ~ ~))
76+ =/ shadow-report=wain (to-wain:format (golden-types-in-context:jibb /tests/empty/jibb shadow-source ~ ~ ~ ~ ~ ~))
77+ =/ good-checked=jfile-result:jibb
78+ (infer-jibb-file:jibb /tests/empty/jibb good ~ ~ ~ ~[/tests/empty/jibb] ~ ~ ~ ~)
79+ =/ collision-checked=jfile-result:jibb
80+ (infer-jibb-file:jibb /tests/empty/jibb same ~ ~ ~ ~[/tests/empty/jibb] ~ ~ ~ ~)
81+ =/ zero-checked=jfile-result:jibb
82+ (infer-jibb-file:jibb /tests/empty/jibb zero ~ ~ ~ ~[/tests/empty/jibb] ~ ~ ~ ~)
83+ =/ arity-checked=jfile-result:jibb
84+ (infer-jibb-file:jibb /tests/empty/jibb wrong ~ ~ ~ ~[/tests/empty/jibb] ~ ~ ~ ~)
85+ =/ shadow-parsed=(each module:jibb error:jibb) (parse:jibb /tests/empty/jibb shadow-source)
86+ =/ shadow-checked=jfile-result:jibb
87+ (infer-jibb-file:jibb /tests/empty/jibb shadow-source ~ ~ ~ ~[/tests/empty/jibb] ~ ~ ~ ~)
88+ =/ state=istate:jibb *istate:jibb
89+ =/ idx=[at=path source=@t prelude=ifile:jibb shapes=(map term shape:jibb)] [/tests/empty/jibb '' *ifile:jibb *(map term shape:jibb)]
90+ =/ cap256=icaps:jibb (turn (gulf 0 255) |=(n=@ud ['A' n *span:jibb]))
91+ =/ cap257=icaps:jibb (turn (gulf 0 256) |=(n=@ud ['A' n *span:jibb]))
92+ =/ initial=istate:jibb
93+ state(molds molds.u.g, at /tests/empty/jibb, active ~[%outer], caps ~[['Q' 17 *span:jibb]], tags ~[[42 [%term %tas %pending '%pending']]], sub ~[[71 [%atom %t]]], next 100)
94+ =/ preserved=(unit [typ=itype:jibb state=istate:jibb]) (infer-simple-shape:jibb u.chosen initial)
95+ =/ structured=istate:jibb initial(params ~[['A' [%cell [%atom %t] [%atom %t]]]])
96+ =/ rejected=(unit [typ=itype:jibb state=istate:jibb]) (infer-simple-shape:jibb u.chosen structured)
97+ =/ delayed=istate:jibb initial(molds molds.u.late, in-mold &, params ~[['A' [%var 3]]])
98+ =/ first=(unit [typ=itype:jibb state=istate:jibb]) (infer-simple-shape:jibb i.cases.u.late delayed)
99+ =/ incomplete=(unit [typ=itype:jibb state=istate:jibb]) (infer-simple-shape:jibb u.late-shape delayed)
100+ :~ ['source generic distinct' (union-source-distinct-tags:jibb cases.u.g molds.u.g 256)]
101+ ['actual inference preserves pending and scoped state' ?:(?=(~ preserved) | =(state.u.preserved initial))]
102+ ['actual inference rejects structural state' ?=(~ rejected)]
103+ ['later source failure returns no partial state' &(?=(^ first) ?=(~ incomplete))]
104+ ['actual local owner shadow rejected' &(?=(%& -.shadow-parsed) ?=(%| -.shadow-checked))]
105+ ['full generic-alias module checks' ?=(%& -.good-checked)]
106+ ['same-head module is not published' ?=(%| -.collision-checked)]
107+ ['mixed-zero module is not published' ?=(%| -.zero-checked)]
108+ ['wrong-arity module is not published' ?=(%| -.arity-checked)]
109+ ['partial report uses source proof' (lien good-report |=(line=@t =(line '+$ choice: cases proven disjoint; mold not checked')))]
110+ ['partial report preserves shadow diagnostic' (lien shadow-report |=(line=@t =(line '++ bad: local molds shadow a name')))]
111+ ['recognized recursive tree causes conservative decline' &(?=(^ mixed-tree) ?=(%| -.mixed-result))]
112+ ['mixed partial report remains source-only' (lien mixed-report |=(line=@t =(line '+$ choice: cases proven disjoint; mold not checked')))]
113+ ['source exact fuel 18' (union-source-distinct-tags:jibb cases.u.g molds.u.g 18)]
114+ ['source 17 fuel declines' !(union-source-distinct-tags:jibb cases.u.g molds.u.g 17)]
115+ ['same head declines' !(union-source-distinct-tags:jibb cases.u.s molds.u.s 256)]
116+ ['equal noun cross spelling declines' !(union-source-distinct-tags:jibb cases.u.z molds.u.z 256)]
117+ ['nested application declines' !(union-source-distinct-tags:jibb cases.u.n molds.u.n 256)]
118+ ['duplicate owner declines' !(union-source-distinct-tags:jibb cases.u.d molds.u.d 256)]
119+ ['wrong arity declines' !(union-source-distinct-tags:jibb cases.u.w molds.u.w 256)]
120+ ['duplicate parameters decline' !(union-source-distinct-tags:jibb cases.u.dp molds.u.dp 256)]
121+ ['hidden body reference declines' !(union-source-distinct-tags:jibb cases.u.hr molds.u.hr 256)]
122+ ['qualified import declines' !(union-source-distinct-tags:jibb cases.u.q molds.u.q 256)]
123+ ['direct cases use existing proof' !(union-source-distinct-tags:jibb cases.u.direct molds.u.direct 256)]
124+ ['wide alias body declines' !(union-source-distinct-tags:jibb cases.u.wide molds.u.wide 256)]
125+ ['undeclared body parameter declines' !(union-source-distinct-tags:jibb cases.u.free molds.u.free 256)]
126+ ['empty state accepted' (union-source-state-safe:jibb state 256)]
127+ ['simple outer generic accepted' (union-source-state-safe:jibb state(params ~[['A' [%var 3]]], sub ~[[3 [%var 5]]]) 256)]
128+ ['structured outer argument declined' !(union-source-state-safe:jibb state(params ~[['A' [%cell [%atom %t] [%atom %t]]]]) 256)]
129+ ['structured substitution declined' !(union-source-state-safe:jibb state(sub ~[[3 [%cell [%atom %t] [%atom %t]]]]) 256)]
130+ ['pending hole declined' !(union-source-state-safe:jibb state(holes ~[[3 *span:jibb]]) 256)]
131+ ['recursive index declined' !(union-source-state-safe:jibb state(grec-index `idx) 256)]
132+ ['deferred transaction declined' !(union-source-state-safe:jibb state(defer `~) 256)]
133+ ['pending obligation declined' !(union-source-state-safe:jibb state(obligations ~[[[%var 1] [%var 2] *span:jibb *span:jibb]]) 256)]
134+ ['256 state entries accepted' (union-source-state-safe:jibb state(caps cap256) 256)]
135+ ['257 state entries declined' !(union-source-state-safe:jibb state(caps cap257) 256)]
136+ ==
137+++ source-output
138+ |= [public=@t internal=@t good=@t same=@t zero=@t nested=@t duplicate=@t wrong=@t duplicate-params=@t hidden-ref=@t qualified=@t direct-source=@t wide-source=@t free-source=@t late-source=@t shadow-source=@t mixed-source=@t]
139+ ^- @t
140+ =/ result=(list [@t ?]) (checks public internal good same zero nested duplicate wrong duplicate-params hidden-ref qualified direct-source wide-source free-source late-source shadow-source mixed-source)
141+ (of-wain:format (turn result |=(entry=[@t ?] (crip "{(trip -.entry)}: {?:(+.entry "ok" "BAD")}"))))
142+++ text
143+ |= lines=wain
144+ ^- @t
145+ (rap 3 (turn lines |=(line=@t (cat 3 line '\0a'))))
146+++ test-union-source
147+ ^- tang
148+ ?~ expected ~[leaf+"expected output missing"]
149+ =/ actual=@t (source-output prelude internal (text good) (text same) (text zero) (text nested) (text duplicate) (text wrong) (text duplicate-params) (text hidden-ref) (text qualified) (text direct-source) (text wide-source) (text free-source) (text late-source) (text shadow-source) (text mixed-source))
150+ ?. =((to-wain:format (cat 3 actual '\0a')) expected) ~[leaf+"generic union source output differs"]
151+ ~
152+--
tests/lib/jibb.hoon+572−560
@@ -1986,462 +1986,470 @@
1986/* tok-552 %txt /tests/golden/types-prelude-sub-nested/tokens/txt
1986/* tok-552 %txt /tests/golden/types-prelude-sub-nested/tokens/txt
1987/* tre-552 %txt /tests/golden/types-prelude-sub-nested/tree/txt
1987/* tre-552 %txt /tests/golden/types-prelude-sub-nested/tree/txt
1988/* typ-552 %txt /tests/golden/types-prelude-sub-nested/types/txt
1988/* typ-552 %txt /tests/golden/types-prelude-sub-nested/types/txt
1989−/* src-553 %jibb /tests/golden/types-prelude-unit-helpers/source/jibb
1989+/* src-553 %jibb /tests/golden/types-prelude-succ/source/jibb
1990−/* tok-553 %txt /tests/golden/types-prelude-unit-helpers/tokens/txt
1990+/* tok-553 %txt /tests/golden/types-prelude-succ/tokens/txt
1991−/* tre-553 %txt /tests/golden/types-prelude-unit-helpers/tree/txt
1991+/* tre-553 %txt /tests/golden/types-prelude-succ/tree/txt
1992−/* typ-553 %txt /tests/golden/types-prelude-unit-helpers/types/txt
1992+/* typ-553 %txt /tests/golden/types-prelude-succ/types/txt
1993−/* src-554 %jibb /tests/golden/types-prelude-zing/source/jibb
1993+/* src-554 %jibb /tests/golden/types-prelude-unit-helpers/source/jibb
1994−/* tok-554 %txt /tests/golden/types-prelude-zing/tokens/txt
1994+/* tok-554 %txt /tests/golden/types-prelude-unit-helpers/tokens/txt
1995−/* tre-554 %txt /tests/golden/types-prelude-zing/tree/txt
1995+/* tre-554 %txt /tests/golden/types-prelude-unit-helpers/tree/txt
1996−/* typ-554 %txt /tests/golden/types-prelude-zing/types/txt
1996+/* typ-554 %txt /tests/golden/types-prelude-unit-helpers/types/txt
1997−/* src-555 %jibb /tests/golden/types-proj-explicit-context/source/jibb
1997+/* src-555 %jibb /tests/golden/types-prelude-zing/source/jibb
1998−/* tok-555 %txt /tests/golden/types-proj-explicit-context/tokens/txt
1998+/* tok-555 %txt /tests/golden/types-prelude-zing/tokens/txt
1999−/* tre-555 %txt /tests/golden/types-proj-explicit-context/tree/txt
1999+/* tre-555 %txt /tests/golden/types-prelude-zing/tree/txt
2000−/* typ-555 %txt /tests/golden/types-proj-explicit-context/types/txt
2000+/* typ-555 %txt /tests/golden/types-prelude-zing/types/txt
2001−/* src-556 %jibb /tests/golden/types-proj-nested-no-implicit/source/jibb
2001+/* src-556 %jibb /tests/golden/types-proj-explicit-context/source/jibb
2002−/* tok-556 %txt /tests/golden/types-proj-nested-no-implicit/tokens/txt
2002+/* tok-556 %txt /tests/golden/types-proj-explicit-context/tokens/txt
2003−/* tre-556 %txt /tests/golden/types-proj-nested-no-implicit/tree/txt
2003+/* tre-556 %txt /tests/golden/types-proj-explicit-context/tree/txt
2004−/* typ-556 %txt /tests/golden/types-proj-nested-no-implicit/types/txt
2004+/* typ-556 %txt /tests/golden/types-proj-explicit-context/types/txt
2005−/* src-557 %jibb /tests/golden/types-proj-reserved-imported-definition/source/jibb
2005+/* src-557 %jibb /tests/golden/types-proj-nested-no-implicit/source/jibb
2006−/* tok-557 %txt /tests/golden/types-proj-reserved-imported-definition/tokens/txt
2006+/* tok-557 %txt /tests/golden/types-proj-nested-no-implicit/tokens/txt
2007−/* tre-557 %txt /tests/golden/types-proj-reserved-imported-definition/tree/txt
2007+/* tre-557 %txt /tests/golden/types-proj-nested-no-implicit/tree/txt
2008−/* mod-557-1 %jibb /tests/golden/types-proj-reserved-imported-definition/modules/ui/lib/jibb
2008+/* typ-557 %txt /tests/golden/types-proj-nested-no-implicit/types/txt
2009−/* typ-557 %txt /tests/golden/types-proj-reserved-imported-definition/types/txt
2009+/* src-558 %jibb /tests/golden/types-proj-reserved-imported-definition/source/jibb
2010−/* mtre-557 %txt /tests/golden/types-proj-reserved-imported-definition/module-trees/txt
2010+/* tok-558 %txt /tests/golden/types-proj-reserved-imported-definition/tokens/txt
2011−/* src-558 %jibb /tests/golden/types-proj-reserved-jibb-import/source/jibb
2011+/* tre-558 %txt /tests/golden/types-proj-reserved-imported-definition/tree/txt
2012−/* tok-558 %txt /tests/golden/types-proj-reserved-jibb-import/tokens/txt
2012+/* mod-558-1 %jibb /tests/golden/types-proj-reserved-imported-definition/modules/ui/lib/jibb
2013−/* tre-558 %txt /tests/golden/types-proj-reserved-jibb-import/tree/txt
2013+/* typ-558 %txt /tests/golden/types-proj-reserved-imported-definition/types/txt
2014−/* mod-558-1 %jibb /tests/golden/types-proj-reserved-jibb-import/modules/ui/lib/jibb
2014+/* mtre-558 %txt /tests/golden/types-proj-reserved-imported-definition/module-trees/txt
2015−/* typ-558 %txt /tests/golden/types-proj-reserved-jibb-import/types/txt
2015+/* src-559 %jibb /tests/golden/types-proj-reserved-jibb-import/source/jibb
2016−/* mtre-558 %txt /tests/golden/types-proj-reserved-jibb-import/module-trees/txt
2016+/* tok-559 %txt /tests/golden/types-proj-reserved-jibb-import/tokens/txt
2017−/* src-559 %jibb /tests/golden/types-proj-reserved-local/source/jibb
2017+/* tre-559 %txt /tests/golden/types-proj-reserved-jibb-import/tree/txt
2018−/* tok-559 %txt /tests/golden/types-proj-reserved-local/tokens/txt
2018+/* mod-559-1 %jibb /tests/golden/types-proj-reserved-jibb-import/modules/ui/lib/jibb
2019−/* tre-559 %txt /tests/golden/types-proj-reserved-local/tree/txt
2019+/* typ-559 %txt /tests/golden/types-proj-reserved-jibb-import/types/txt
2020−/* typ-559 %txt /tests/golden/types-proj-reserved-local/types/txt
2020+/* mtre-559 %txt /tests/golden/types-proj-reserved-jibb-import/module-trees/txt
2021−/* src-560 %jibb /tests/golden/types-proj-reserved-local-mold/source/jibb
2021+/* src-560 %jibb /tests/golden/types-proj-reserved-local/source/jibb
2022−/* tok-560 %txt /tests/golden/types-proj-reserved-local-mold/tokens/txt
2022+/* tok-560 %txt /tests/golden/types-proj-reserved-local/tokens/txt
2023−/* tre-560 %txt /tests/golden/types-proj-reserved-local-mold/tree/txt
2023+/* tre-560 %txt /tests/golden/types-proj-reserved-local/tree/txt
2024−/* typ-560 %txt /tests/golden/types-proj-reserved-local-mold/types/txt
2024+/* typ-560 %txt /tests/golden/types-proj-reserved-local/types/txt
2025−/* src-561 %jibb /tests/golden/types-proj-reserved-mark-import/source/jibb
2025+/* src-561 %jibb /tests/golden/types-proj-reserved-local-mold/source/jibb
2026−/* tok-561 %txt /tests/golden/types-proj-reserved-mark-import/tokens/txt
2026+/* tok-561 %txt /tests/golden/types-proj-reserved-local-mold/tokens/txt
2027−/* tre-561 %txt /tests/golden/types-proj-reserved-mark-import/tree/txt
2027+/* tre-561 %txt /tests/golden/types-proj-reserved-local-mold/tree/txt
2028−/* typ-561 %txt /tests/golden/types-proj-reserved-mark-import/types/txt
2028+/* typ-561 %txt /tests/golden/types-proj-reserved-local-mold/types/txt
2029−/* src-562 %jibb /tests/golden/types-proj-reserved-mold/source/jibb
2029+/* src-562 %jibb /tests/golden/types-proj-reserved-mark-import/source/jibb
2030−/* tok-562 %txt /tests/golden/types-proj-reserved-mold/tokens/txt
2030+/* tok-562 %txt /tests/golden/types-proj-reserved-mark-import/tokens/txt
2031−/* tre-562 %txt /tests/golden/types-proj-reserved-mold/tree/txt
2031+/* tre-562 %txt /tests/golden/types-proj-reserved-mark-import/tree/txt
2032−/* typ-562 %txt /tests/golden/types-proj-reserved-mold/types/txt
2032+/* typ-562 %txt /tests/golden/types-proj-reserved-mark-import/types/txt
2033−/* src-563 %jibb /tests/golden/types-proj-reserved-pattern/source/jibb
2033+/* src-563 %jibb /tests/golden/types-proj-reserved-mold/source/jibb
2034−/* tok-563 %txt /tests/golden/types-proj-reserved-pattern/tokens/txt
2034+/* tok-563 %txt /tests/golden/types-proj-reserved-mold/tokens/txt
2035−/* tre-563 %txt /tests/golden/types-proj-reserved-pattern/tree/txt
2035+/* tre-563 %txt /tests/golden/types-proj-reserved-mold/tree/txt
2036−/* typ-563 %txt /tests/golden/types-proj-reserved-pattern/types/txt
2036+/* typ-563 %txt /tests/golden/types-proj-reserved-mold/types/txt
2037−/* src-564 %jibb /tests/golden/types-proj-reserved-positive/source/jibb
2037+/* src-564 %jibb /tests/golden/types-proj-reserved-pattern/source/jibb
2038−/* tok-564 %txt /tests/golden/types-proj-reserved-positive/tokens/txt
2038+/* tok-564 %txt /tests/golden/types-proj-reserved-pattern/tokens/txt
2039−/* tre-564 %txt /tests/golden/types-proj-reserved-positive/tree/txt
2039+/* tre-564 %txt /tests/golden/types-proj-reserved-pattern/tree/txt
2040−/* typ-564 %txt /tests/golden/types-proj-reserved-positive/types/txt
2040+/* typ-564 %txt /tests/golden/types-proj-reserved-pattern/types/txt
2041−/* src-565 %jibb /tests/golden/types-proj-reserved-sample/source/jibb
2041+/* src-565 %jibb /tests/golden/types-proj-reserved-positive/source/jibb
2042−/* tok-565 %txt /tests/golden/types-proj-reserved-sample/tokens/txt
2042+/* tok-565 %txt /tests/golden/types-proj-reserved-positive/tokens/txt
2043−/* tre-565 %txt /tests/golden/types-proj-reserved-sample/tree/txt
2043+/* tre-565 %txt /tests/golden/types-proj-reserved-positive/tree/txt
2044−/* typ-565 %txt /tests/golden/types-proj-reserved-sample/types/txt
2044+/* typ-565 %txt /tests/golden/types-proj-reserved-positive/types/txt
2045−/* src-566 %jibb /tests/golden/types-proj-reserved-sur-import/source/jibb
2045+/* src-566 %jibb /tests/golden/types-proj-reserved-sample/source/jibb
2046−/* tok-566 %txt /tests/golden/types-proj-reserved-sur-import/tokens/txt
2046+/* tok-566 %txt /tests/golden/types-proj-reserved-sample/tokens/txt
2047−/* tre-566 %txt /tests/golden/types-proj-reserved-sur-import/tree/txt
2047+/* tre-566 %txt /tests/golden/types-proj-reserved-sample/tree/txt
2048−/* typ-566 %txt /tests/golden/types-proj-reserved-sur-import/types/txt
2048+/* typ-566 %txt /tests/golden/types-proj-reserved-sample/types/txt
2049−/* src-567 %jibb /tests/golden/types-proj-reserved-unused-pattern/source/jibb
2049+/* src-567 %jibb /tests/golden/types-proj-reserved-sur-import/source/jibb
2050−/* tok-567 %txt /tests/golden/types-proj-reserved-unused-pattern/tokens/txt
2050+/* tok-567 %txt /tests/golden/types-proj-reserved-sur-import/tokens/txt
2051−/* tre-567 %txt /tests/golden/types-proj-reserved-unused-pattern/tree/txt
2051+/* tre-567 %txt /tests/golden/types-proj-reserved-sur-import/tree/txt
2052−/* typ-567 %txt /tests/golden/types-proj-reserved-unused-pattern/types/txt
2052+/* typ-567 %txt /tests/golden/types-proj-reserved-sur-import/types/txt
2053−/* src-568 %jibb /tests/golden/types-proj-reserved-unused-sample/source/jibb
2053+/* src-568 %jibb /tests/golden/types-proj-reserved-unused-pattern/source/jibb
2054−/* tok-568 %txt /tests/golden/types-proj-reserved-unused-sample/tokens/txt
2054+/* tok-568 %txt /tests/golden/types-proj-reserved-unused-pattern/tokens/txt
2055−/* tre-568 %txt /tests/golden/types-proj-reserved-unused-sample/tree/txt
2055+/* tre-568 %txt /tests/golden/types-proj-reserved-unused-pattern/tree/txt
2056−/* typ-568 %txt /tests/golden/types-proj-reserved-unused-sample/types/txt
2056+/* typ-568 %txt /tests/golden/types-proj-reserved-unused-pattern/types/txt
2057−/* src-569 %jibb /tests/golden/types-proj-reserved-unused-value/source/jibb
2057+/* src-569 %jibb /tests/golden/types-proj-reserved-unused-sample/source/jibb
2058−/* tok-569 %txt /tests/golden/types-proj-reserved-unused-value/tokens/txt
2058+/* tok-569 %txt /tests/golden/types-proj-reserved-unused-sample/tokens/txt
2059−/* tre-569 %txt /tests/golden/types-proj-reserved-unused-value/tree/txt
2059+/* tre-569 %txt /tests/golden/types-proj-reserved-unused-sample/tree/txt
2060−/* typ-569 %txt /tests/golden/types-proj-reserved-unused-value/types/txt
2060+/* typ-569 %txt /tests/golden/types-proj-reserved-unused-sample/types/txt
2061−/* src-570 %jibb /tests/golden/types-proj-reserved-value/source/jibb
2061+/* src-570 %jibb /tests/golden/types-proj-reserved-unused-value/source/jibb
2062−/* tok-570 %txt /tests/golden/types-proj-reserved-value/tokens/txt
2062+/* tok-570 %txt /tests/golden/types-proj-reserved-unused-value/tokens/txt
2063−/* tre-570 %txt /tests/golden/types-proj-reserved-value/tree/txt
2063+/* tre-570 %txt /tests/golden/types-proj-reserved-unused-value/tree/txt
2064−/* typ-570 %txt /tests/golden/types-proj-reserved-value/types/txt
2064+/* typ-570 %txt /tests/golden/types-proj-reserved-unused-value/types/txt
2065−/* src-571 %jibb /tests/golden/types-proj-single-duplicate/source/jibb
2065+/* src-571 %jibb /tests/golden/types-proj-reserved-value/source/jibb
2066−/* tok-571 %txt /tests/golden/types-proj-single-duplicate/tokens/txt
2066+/* tok-571 %txt /tests/golden/types-proj-reserved-value/tokens/txt
2067−/* tre-571 %txt /tests/golden/types-proj-single-duplicate/tree/txt
2067+/* tre-571 %txt /tests/golden/types-proj-reserved-value/tree/txt
2068−/* typ-571 %txt /tests/golden/types-proj-single-duplicate/types/txt
2068+/* typ-571 %txt /tests/golden/types-proj-reserved-value/types/txt
2069−/* src-572 %jibb /tests/golden/types-proj-single-field/source/jibb
2069+/* src-572 %jibb /tests/golden/types-proj-single-duplicate/source/jibb
2070−/* tok-572 %txt /tests/golden/types-proj-single-field/tokens/txt
2070+/* tok-572 %txt /tests/golden/types-proj-single-duplicate/tokens/txt
2071−/* tre-572 %txt /tests/golden/types-proj-single-field/tree/txt
2071+/* tre-572 %txt /tests/golden/types-proj-single-duplicate/tree/txt
2072−/* typ-572 %txt /tests/golden/types-proj-single-field/types/txt
2072+/* typ-572 %txt /tests/golden/types-proj-single-duplicate/types/txt
2073−/* src-573 %jibb /tests/golden/types-proj-single-sample-face/source/jibb
2073+/* src-573 %jibb /tests/golden/types-proj-single-field/source/jibb
2074−/* tok-573 %txt /tests/golden/types-proj-single-sample-face/tokens/txt
2074+/* tok-573 %txt /tests/golden/types-proj-single-field/tokens/txt
2075−/* tre-573 %txt /tests/golden/types-proj-single-sample-face/tree/txt
2075+/* tre-573 %txt /tests/golden/types-proj-single-field/tree/txt
2076−/* typ-573 %txt /tests/golden/types-proj-single-sample-face/types/txt
2076+/* typ-573 %txt /tests/golden/types-proj-single-field/types/txt
2077−/* src-574 %jibb /tests/golden/types-proj-single-wrapped/source/jibb
2077+/* src-574 %jibb /tests/golden/types-proj-single-sample-face/source/jibb
2078−/* tok-574 %txt /tests/golden/types-proj-single-wrapped/tokens/txt
2078+/* tok-574 %txt /tests/golden/types-proj-single-sample-face/tokens/txt
2079−/* tre-574 %txt /tests/golden/types-proj-single-wrapped/tree/txt
2079+/* tre-574 %txt /tests/golden/types-proj-single-sample-face/tree/txt
2080−/* typ-574 %txt /tests/golden/types-proj-single-wrapped/types/txt
2080+/* typ-574 %txt /tests/golden/types-proj-single-sample-face/types/txt
2081−/* src-575 %jibb /tests/golden/types-qath-faces/source/jibb
2081+/* src-575 %jibb /tests/golden/types-proj-single-wrapped/source/jibb
2082−/* tok-575 %txt /tests/golden/types-qath-faces/tokens/txt
2082+/* tok-575 %txt /tests/golden/types-proj-single-wrapped/tokens/txt
2083−/* tre-575 %txt /tests/golden/types-qath-faces/tree/txt
2083+/* tre-575 %txt /tests/golden/types-proj-single-wrapped/tree/txt
2084−/* typ-575 %txt /tests/golden/types-qath-faces/types/txt
2084+/* typ-575 %txt /tests/golden/types-proj-single-wrapped/types/txt
2085−/* src-576 %jibb /tests/golden/types-qath-holes/source/jibb
2085+/* src-576 %jibb /tests/golden/types-qath-faces/source/jibb
2086−/* tok-576 %txt /tests/golden/types-qath-holes/tokens/txt
2086+/* tok-576 %txt /tests/golden/types-qath-faces/tokens/txt
2087−/* tre-576 %txt /tests/golden/types-qath-holes/tree/txt
2087+/* tre-576 %txt /tests/golden/types-qath-faces/tree/txt
2088−/* typ-576 %txt /tests/golden/types-qath-holes/types/txt
2088+/* typ-576 %txt /tests/golden/types-qath-faces/types/txt
2089−/* src-577 %jibb /tests/golden/types-qath-module-identity/source/jibb
2089+/* src-577 %jibb /tests/golden/types-qath-holes/source/jibb
2090−/* tok-577 %txt /tests/golden/types-qath-module-identity/tokens/txt
2090+/* tok-577 %txt /tests/golden/types-qath-holes/tokens/txt
2091−/* tre-577 %txt /tests/golden/types-qath-module-identity/tree/txt
2091+/* tre-577 %txt /tests/golden/types-qath-holes/tree/txt
2092−/* mod-577-1 %jibb /tests/golden/types-qath-module-identity/modules/ui/one/jibb
2092+/* typ-577 %txt /tests/golden/types-qath-holes/types/txt
2093−/* mod-577-2 %jibb /tests/golden/types-qath-module-identity/modules/ui/two/jibb
2093+/* src-578 %jibb /tests/golden/types-qath-module-identity/source/jibb
2094−/* mod-577-3 %jibb /tests/golden/types-qath-module-identity/modules/ui/mid/jibb
2094+/* tok-578 %txt /tests/golden/types-qath-module-identity/tokens/txt
2095−/* typ-577 %txt /tests/golden/types-qath-module-identity/types/txt
2095+/* tre-578 %txt /tests/golden/types-qath-module-identity/tree/txt
2096−/* mtre-577 %txt /tests/golden/types-qath-module-identity/module-trees/txt
2096+/* mod-578-1 %jibb /tests/golden/types-qath-module-identity/modules/ui/one/jibb
2097−/* src-578 %jibb /tests/golden/types-qath-recursive/source/jibb
2097+/* mod-578-2 %jibb /tests/golden/types-qath-module-identity/modules/ui/two/jibb
2098−/* tok-578 %txt /tests/golden/types-qath-recursive/tokens/txt
2098+/* mod-578-3 %jibb /tests/golden/types-qath-module-identity/modules/ui/mid/jibb
2099−/* tre-578 %txt /tests/golden/types-qath-recursive/tree/txt
2099+/* typ-578 %txt /tests/golden/types-qath-module-identity/types/txt
2100−/* typ-578 %txt /tests/golden/types-qath-recursive/types/txt
2100+/* mtre-578 %txt /tests/golden/types-qath-module-identity/module-trees/txt
2101−/* src-579 %jibb /tests/golden/types-record-bound-variable/source/jibb
2101+/* src-579 %jibb /tests/golden/types-qath-recursive/source/jibb
2102−/* tok-579 %txt /tests/golden/types-record-bound-variable/tokens/txt
2102+/* tok-579 %txt /tests/golden/types-qath-recursive/tokens/txt
2103−/* tre-579 %txt /tests/golden/types-record-bound-variable/tree/txt
2103+/* tre-579 %txt /tests/golden/types-qath-recursive/tree/txt
2104−/* typ-579 %txt /tests/golden/types-record-bound-variable/types/txt
2104+/* typ-579 %txt /tests/golden/types-qath-recursive/types/txt
2105−/* src-580 %jibb /tests/golden/types-record-cast-context/source/jibb
2105+/* src-580 %jibb /tests/golden/types-record-bound-variable/source/jibb
2106−/* tok-580 %txt /tests/golden/types-record-cast-context/tokens/txt
2106+/* tok-580 %txt /tests/golden/types-record-bound-variable/tokens/txt
2107−/* tre-580 %txt /tests/golden/types-record-cast-context/tree/txt
2107+/* tre-580 %txt /tests/golden/types-record-bound-variable/tree/txt
2108−/* typ-580 %txt /tests/golden/types-record-cast-context/types/txt
2108+/* typ-580 %txt /tests/golden/types-record-bound-variable/types/txt
2109−/* src-581 %jibb /tests/golden/types-record-change/source/jibb
2109+/* src-581 %jibb /tests/golden/types-record-cast-context/source/jibb
2110−/* tok-581 %txt /tests/golden/types-record-change/tokens/txt
2110+/* tok-581 %txt /tests/golden/types-record-cast-context/tokens/txt
2111−/* tre-581 %txt /tests/golden/types-record-change/tree/txt
2111+/* tre-581 %txt /tests/golden/types-record-cast-context/tree/txt
2112−/* typ-581 %txt /tests/golden/types-record-change/types/txt
2112+/* typ-581 %txt /tests/golden/types-record-cast-context/types/txt
2113−/* src-582 %jibb /tests/golden/types-record-change-generic/source/jibb
2113+/* src-582 %jibb /tests/golden/types-record-change/source/jibb
2114−/* tok-582 %txt /tests/golden/types-record-change-generic/tokens/txt
2114+/* tok-582 %txt /tests/golden/types-record-change/tokens/txt
2115−/* tre-582 %txt /tests/golden/types-record-change-generic/tree/txt
2115+/* tre-582 %txt /tests/golden/types-record-change/tree/txt
2116−/* typ-582 %txt /tests/golden/types-record-change-generic/types/txt
2116+/* typ-582 %txt /tests/golden/types-record-change/types/txt
2117−/* src-583 %jibb /tests/golden/types-record-faces/source/jibb
2117+/* src-583 %jibb /tests/golden/types-record-change-generic/source/jibb
2118−/* tok-583 %txt /tests/golden/types-record-faces/tokens/txt
2118+/* tok-583 %txt /tests/golden/types-record-change-generic/tokens/txt
2119−/* tre-583 %txt /tests/golden/types-record-faces/tree/txt
2119+/* tre-583 %txt /tests/golden/types-record-change-generic/tree/txt
2120−/* typ-583 %txt /tests/golden/types-record-faces/types/txt
2120+/* typ-583 %txt /tests/golden/types-record-change-generic/types/txt
2121−/* src-584 %jibb /tests/golden/types-record-field-edit-separate/source/jibb
2121+/* src-584 %jibb /tests/golden/types-record-faces/source/jibb
2122−/* tok-584 %txt /tests/golden/types-record-field-edit-separate/tokens/txt
2122+/* tok-584 %txt /tests/golden/types-record-faces/tokens/txt
2123−/* tre-584 %txt /tests/golden/types-record-field-edit-separate/tree/txt
2123+/* tre-584 %txt /tests/golden/types-record-faces/tree/txt
2124−/* typ-584 %txt /tests/golden/types-record-field-edit-separate/types/txt
2124+/* typ-584 %txt /tests/golden/types-record-faces/types/txt
2125−/* src-585 %jibb /tests/golden/types-record-field-expr-duplicate/source/jibb
2125+/* src-585 %jibb /tests/golden/types-record-field-edit-separate/source/jibb
2126−/* tok-585 %txt /tests/golden/types-record-field-expr-duplicate/tokens/txt
2126+/* tok-585 %txt /tests/golden/types-record-field-edit-separate/tokens/txt
2127−/* tre-585 %txt /tests/golden/types-record-field-expr-duplicate/tree/txt
2127+/* tre-585 %txt /tests/golden/types-record-field-edit-separate/tree/txt
2128−/* typ-585 %txt /tests/golden/types-record-field-expr-duplicate/types/txt
2128+/* typ-585 %txt /tests/golden/types-record-field-edit-separate/types/txt
2129−/* src-586 %jibb /tests/golden/types-record-field-expr-separate/source/jibb
2129+/* src-586 %jibb /tests/golden/types-record-field-expr-duplicate/source/jibb
2130−/* tok-586 %txt /tests/golden/types-record-field-expr-separate/tokens/txt
2130+/* tok-586 %txt /tests/golden/types-record-field-expr-duplicate/tokens/txt
2131−/* tre-586 %txt /tests/golden/types-record-field-expr-separate/tree/txt
2131+/* tre-586 %txt /tests/golden/types-record-field-expr-duplicate/tree/txt
2132−/* typ-586 %txt /tests/golden/types-record-field-expr-separate/types/txt
2132+/* typ-586 %txt /tests/golden/types-record-field-expr-duplicate/types/txt
2133−/* src-587 %jibb /tests/golden/types-record-field-module-reachable/source/jibb
2133+/* src-587 %jibb /tests/golden/types-record-field-expr-separate/source/jibb
2134−/* tok-587 %txt /tests/golden/types-record-field-module-reachable/tokens/txt
2134+/* tok-587 %txt /tests/golden/types-record-field-expr-separate/tokens/txt
2135−/* tre-587 %txt /tests/golden/types-record-field-module-reachable/tree/txt
2135+/* tre-587 %txt /tests/golden/types-record-field-expr-separate/tree/txt
2136−/* mod-587-1 %jibb /tests/golden/types-record-field-module-reachable/modules/ui/lib/jibb
2136+/* typ-587 %txt /tests/golden/types-record-field-expr-separate/types/txt
2137−/* typ-587 %txt /tests/golden/types-record-field-module-reachable/types/txt
2137+/* src-588 %jibb /tests/golden/types-record-field-module-reachable/source/jibb
2138−/* mtre-587 %txt /tests/golden/types-record-field-module-reachable/module-trees/txt
2138+/* tok-588 %txt /tests/golden/types-record-field-module-reachable/tokens/txt
2139−/* src-588 %jibb /tests/golden/types-record-field-module-unused/source/jibb
2139+/* tre-588 %txt /tests/golden/types-record-field-module-reachable/tree/txt
2140−/* tok-588 %txt /tests/golden/types-record-field-module-unused/tokens/txt
2140+/* mod-588-1 %jibb /tests/golden/types-record-field-module-reachable/modules/ui/lib/jibb
2141−/* tre-588 %txt /tests/golden/types-record-field-module-unused/tree/txt
2141+/* typ-588 %txt /tests/golden/types-record-field-module-reachable/types/txt
2142−/* mod-588-1 %jibb /tests/golden/types-record-field-module-unused/modules/ui/good/jibb
2142+/* mtre-588 %txt /tests/golden/types-record-field-module-reachable/module-trees/txt
2143−/* mod-588-2 %jibb /tests/golden/types-record-field-module-unused/modules/ui/unused/jibb
2143+/* src-589 %jibb /tests/golden/types-record-field-module-unused/source/jibb
2144−/* typ-588 %txt /tests/golden/types-record-field-module-unused/types/txt
2144+/* tok-589 %txt /tests/golden/types-record-field-module-unused/tokens/txt
2145−/* mtre-588 %txt /tests/golden/types-record-field-module-unused/module-trees/txt
2145+/* tre-589 %txt /tests/golden/types-record-field-module-unused/tree/txt
2146−/* src-589 %jibb /tests/golden/types-record-field-nested-mold/source/jibb
2146+/* mod-589-1 %jibb /tests/golden/types-record-field-module-unused/modules/ui/good/jibb
2147−/* tok-589 %txt /tests/golden/types-record-field-nested-mold/tokens/txt
2147+/* mod-589-2 %jibb /tests/golden/types-record-field-module-unused/modules/ui/unused/jibb
2148−/* tre-589 %txt /tests/golden/types-record-field-nested-mold/tree/txt
2148+/* typ-589 %txt /tests/golden/types-record-field-module-unused/types/txt
2149−/* typ-589 %txt /tests/golden/types-record-field-nested-mold/types/txt
2149+/* mtre-589 %txt /tests/golden/types-record-field-module-unused/module-trees/txt
2150−/* src-590 %jibb /tests/golden/types-record-field-outer-inner/source/jibb
2150+/* src-590 %jibb /tests/golden/types-record-field-nested-mold/source/jibb
2151−/* tok-590 %txt /tests/golden/types-record-field-outer-inner/tokens/txt
2151+/* tok-590 %txt /tests/golden/types-record-field-nested-mold/tokens/txt
2152−/* tre-590 %txt /tests/golden/types-record-field-outer-inner/tree/txt
2152+/* tre-590 %txt /tests/golden/types-record-field-nested-mold/tree/txt
2153−/* typ-590 %txt /tests/golden/types-record-field-outer-inner/types/txt
2153+/* typ-590 %txt /tests/golden/types-record-field-nested-mold/types/txt
2154−/* src-591 %jibb /tests/golden/types-record-field-sample-duplicate/source/jibb
2154+/* src-591 %jibb /tests/golden/types-record-field-outer-inner/source/jibb
2155−/* tok-591 %txt /tests/golden/types-record-field-sample-duplicate/tokens/txt
2155+/* tok-591 %txt /tests/golden/types-record-field-outer-inner/tokens/txt
2156−/* tre-591 %txt /tests/golden/types-record-field-sample-duplicate/tree/txt
2156+/* tre-591 %txt /tests/golden/types-record-field-outer-inner/tree/txt
2157−/* typ-591 %txt /tests/golden/types-record-field-sample-duplicate/types/txt
2157+/* typ-591 %txt /tests/golden/types-record-field-outer-inner/types/txt
2158−/* src-592 %jibb /tests/golden/types-record-field-separate-molds/source/jibb
2158+/* src-592 %jibb /tests/golden/types-record-field-sample-duplicate/source/jibb
2159−/* tok-592 %txt /tests/golden/types-record-field-separate-molds/tokens/txt
2159+/* tok-592 %txt /tests/golden/types-record-field-sample-duplicate/tokens/txt
2160−/* tre-592 %txt /tests/golden/types-record-field-separate-molds/tree/txt
2160+/* tre-592 %txt /tests/golden/types-record-field-sample-duplicate/tree/txt
2161−/* typ-592 %txt /tests/golden/types-record-field-separate-molds/types/txt
2161+/* typ-592 %txt /tests/golden/types-record-field-sample-duplicate/types/txt
2162−/* src-593 %jibb /tests/golden/types-record-field-unused-mold/source/jibb
2162+/* src-593 %jibb /tests/golden/types-record-field-separate-molds/source/jibb
2163−/* tok-593 %txt /tests/golden/types-record-field-unused-mold/tokens/txt
2163+/* tok-593 %txt /tests/golden/types-record-field-separate-molds/tokens/txt
2164−/* tre-593 %txt /tests/golden/types-record-field-unused-mold/tree/txt
2164+/* tre-593 %txt /tests/golden/types-record-field-separate-molds/tree/txt
2165−/* typ-593 %txt /tests/golden/types-record-field-unused-mold/types/txt
2165+/* typ-593 %txt /tests/golden/types-record-field-separate-molds/types/txt
2166−/* src-594 %jibb /tests/golden/types-record-import/source/jibb
2166+/* src-594 %jibb /tests/golden/types-record-field-unused-mold/source/jibb
2167−/* tok-594 %txt /tests/golden/types-record-import/tokens/txt
2167+/* tok-594 %txt /tests/golden/types-record-field-unused-mold/tokens/txt
2168−/* tre-594 %txt /tests/golden/types-record-import/tree/txt
2168+/* tre-594 %txt /tests/golden/types-record-field-unused-mold/tree/txt
2169−/* mod-594-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
2169+/* typ-594 %txt /tests/golden/types-record-field-unused-mold/types/txt
2170−/* typ-594 %txt /tests/golden/types-record-import/types/txt
2170+/* src-595 %jibb /tests/golden/types-record-import/source/jibb
2171−/* mtre-594 %txt /tests/golden/types-record-import/module-trees/txt
2171+/* tok-595 %txt /tests/golden/types-record-import/tokens/txt
2172−/* src-595 %jibb /tests/golden/types-record-local-scheme/source/jibb
2172+/* tre-595 %txt /tests/golden/types-record-import/tree/txt
2173−/* tok-595 %txt /tests/golden/types-record-local-scheme/tokens/txt
2173+/* mod-595-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
2174−/* tre-595 %txt /tests/golden/types-record-local-scheme/tree/txt
2174+/* typ-595 %txt /tests/golden/types-record-import/types/txt
2175−/* typ-595 %txt /tests/golden/types-record-local-scheme/types/txt
2175+/* mtre-595 %txt /tests/golden/types-record-import/module-trees/txt
2176−/* src-596 %jibb /tests/golden/types-record-nested/source/jibb
2176+/* src-596 %jibb /tests/golden/types-record-local-scheme/source/jibb
2177−/* tok-596 %txt /tests/golden/types-record-nested/tokens/txt
2177+/* tok-596 %txt /tests/golden/types-record-local-scheme/tokens/txt
2178−/* tre-596 %txt /tests/golden/types-record-nested/tree/txt
2178+/* tre-596 %txt /tests/golden/types-record-local-scheme/tree/txt
2179−/* typ-596 %txt /tests/golden/types-record-nested/types/txt
2179+/* typ-596 %txt /tests/golden/types-record-local-scheme/types/txt
2180−/* src-597 %jibb /tests/golden/types-record-to-tuple/source/jibb
2180+/* src-597 %jibb /tests/golden/types-record-nested/source/jibb
2181−/* tok-597 %txt /tests/golden/types-record-to-tuple/tokens/txt
2181+/* tok-597 %txt /tests/golden/types-record-nested/tokens/txt
2182−/* tre-597 %txt /tests/golden/types-record-to-tuple/tree/txt
2182+/* tre-597 %txt /tests/golden/types-record-nested/tree/txt
2183−/* typ-597 %txt /tests/golden/types-record-to-tuple/types/txt
2183+/* typ-597 %txt /tests/golden/types-record-nested/types/txt
2184−/* src-598 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
2184+/* src-598 %jibb /tests/golden/types-record-to-tuple/source/jibb
2185−/* tok-598 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
2185+/* tok-598 %txt /tests/golden/types-record-to-tuple/tokens/txt
2186−/* tre-598 %txt /tests/golden/types-recursion-scc-failures/tree/txt
2186+/* tre-598 %txt /tests/golden/types-record-to-tuple/tree/txt
2187−/* typ-598 %txt /tests/golden/types-recursion-scc-failures/types/txt
2187+/* typ-598 %txt /tests/golden/types-record-to-tuple/types/txt
2188−/* src-599 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
2188+/* src-599 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
2189−/* tok-599 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
2189+/* tok-599 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
2190−/* tre-599 %txt /tests/golden/types-recursion-scc-groups/tree/txt
2190+/* tre-599 %txt /tests/golden/types-recursion-scc-failures/tree/txt
2191−/* typ-599 %txt /tests/golden/types-recursion-scc-groups/types/txt
2191+/* typ-599 %txt /tests/golden/types-recursion-scc-failures/types/txt
2192−/* src-600 %jibb /tests/golden/types-recursion-scc-import/source/jibb
2192+/* src-600 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
2193−/* tok-600 %txt /tests/golden/types-recursion-scc-import/tokens/txt
2193+/* tok-600 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
2194−/* tre-600 %txt /tests/golden/types-recursion-scc-import/tree/txt
2194+/* tre-600 %txt /tests/golden/types-recursion-scc-groups/tree/txt
2195−/* mod-600-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
2195+/* typ-600 %txt /tests/golden/types-recursion-scc-groups/types/txt
2196−/* typ-600 %txt /tests/golden/types-recursion-scc-import/types/txt
2196+/* src-601 %jibb /tests/golden/types-recursion-scc-import/source/jibb
2197−/* mtre-600 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
2197+/* tok-601 %txt /tests/golden/types-recursion-scc-import/tokens/txt
2198−/* src-601 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
2198+/* tre-601 %txt /tests/golden/types-recursion-scc-import/tree/txt
2199−/* tok-601 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
2199+/* mod-601-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
2200−/* tre-601 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
2200+/* typ-601 %txt /tests/golden/types-recursion-scc-import/types/txt
2201−/* mod-601-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
2201+/* mtre-601 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
2202−/* typ-601 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
2202+/* src-602 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
2203−/* mtre-601 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
2203+/* tok-602 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
2204−/* src-602 %jibb /tests/golden/types-recursion-scc-local/source/jibb
2204+/* tre-602 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
2205−/* tok-602 %txt /tests/golden/types-recursion-scc-local/tokens/txt
2205+/* mod-602-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
2206−/* tre-602 %txt /tests/golden/types-recursion-scc-local/tree/txt
2206+/* typ-602 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
2207−/* typ-602 %txt /tests/golden/types-recursion-scc-local/types/txt
2207+/* mtre-602 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
2208−/* src-603 %jibb /tests/golden/types-recursion-scc-order/source/jibb
2208+/* src-603 %jibb /tests/golden/types-recursion-scc-local/source/jibb
2209−/* tok-603 %txt /tests/golden/types-recursion-scc-order/tokens/txt
2209+/* tok-603 %txt /tests/golden/types-recursion-scc-local/tokens/txt
2210−/* tre-603 %txt /tests/golden/types-recursion-scc-order/tree/txt
2210+/* tre-603 %txt /tests/golden/types-recursion-scc-local/tree/txt
2211−/* typ-603 %txt /tests/golden/types-recursion-scc-order/types/txt
2211+/* typ-603 %txt /tests/golden/types-recursion-scc-local/types/txt
2212−/* src-604 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
2212+/* src-604 %jibb /tests/golden/types-recursion-scc-order/source/jibb
2213−/* tok-604 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
2213+/* tok-604 %txt /tests/golden/types-recursion-scc-order/tokens/txt
2214−/* tre-604 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
2214+/* tre-604 %txt /tests/golden/types-recursion-scc-order/tree/txt
2215−/* typ-604 %txt /tests/golden/types-recursion-scc-shadow/types/txt
2215+/* typ-604 %txt /tests/golden/types-recursion-scc-order/types/txt
2216−/* src-605 %jibb /tests/golden/types-recursive-branch/source/jibb
2216+/* src-605 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
2217−/* tok-605 %txt /tests/golden/types-recursive-branch/tokens/txt
2217+/* tok-605 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
2218−/* tre-605 %txt /tests/golden/types-recursive-branch/tree/txt
2218+/* tre-605 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
2219−/* typ-605 %txt /tests/golden/types-recursive-branch/types/txt
2219+/* typ-605 %txt /tests/golden/types-recursion-scc-shadow/types/txt
2220−/* src-606 %jibb /tests/golden/types-recursive-gate/source/jibb
2220+/* src-606 %jibb /tests/golden/types-recursive-branch/source/jibb
2221−/* tok-606 %txt /tests/golden/types-recursive-gate/tokens/txt
2221+/* tok-606 %txt /tests/golden/types-recursive-branch/tokens/txt
2222−/* tre-606 %txt /tests/golden/types-recursive-gate/tree/txt
2222+/* tre-606 %txt /tests/golden/types-recursive-branch/tree/txt
2223−/* typ-606 %txt /tests/golden/types-recursive-gate/types/txt
2223+/* typ-606 %txt /tests/golden/types-recursive-branch/types/txt
2224−/* src-607 %jibb /tests/golden/types-recursive-sample/source/jibb
2224+/* src-607 %jibb /tests/golden/types-recursive-gate/source/jibb
2225−/* tok-607 %txt /tests/golden/types-recursive-sample/tokens/txt
2225+/* tok-607 %txt /tests/golden/types-recursive-gate/tokens/txt
2226−/* tre-607 %txt /tests/golden/types-recursive-sample/tree/txt
2226+/* tre-607 %txt /tests/golden/types-recursive-gate/tree/txt
2227−/* typ-607 %txt /tests/golden/types-recursive-sample/types/txt
2227+/* typ-607 %txt /tests/golden/types-recursive-gate/types/txt
2228−/* src-608 %jibb /tests/golden/types-request-normal/source/jibb
2228+/* src-608 %jibb /tests/golden/types-recursive-sample/source/jibb
2229−/* tok-608 %txt /tests/golden/types-request-normal/tokens/txt
2229+/* tok-608 %txt /tests/golden/types-recursive-sample/tokens/txt
2230−/* tre-608 %txt /tests/golden/types-request-normal/tree/txt
2230+/* tre-608 %txt /tests/golden/types-recursive-sample/tree/txt
2231−/* mod-608-1 %jibb /tests/golden/types-request-normal/modules/ui/api/demo/jibb
2231+/* typ-608 %txt /tests/golden/types-recursive-sample/types/txt
2232−/* typ-608 %txt /tests/golden/types-request-normal/types/txt
2232+/* src-609 %jibb /tests/golden/types-request-normal/source/jibb
2233−/* mark-608-1 %txt /tests/golden/types-request-normal/mar/full/txt
2233+/* tok-609 %txt /tests/golden/types-request-normal/tokens/txt
2234−/* mtre-608 %txt /tests/golden/types-request-normal/module-trees/txt
2234+/* tre-609 %txt /tests/golden/types-request-normal/tree/txt
2235−/* src-609 %jibb /tests/golden/types-scope-library-poke/source/jibb
2235+/* mod-609-1 %jibb /tests/golden/types-request-normal/modules/ui/api/demo/jibb
2236−/* tok-609 %txt /tests/golden/types-scope-library-poke/tokens/txt
2236+/* typ-609 %txt /tests/golden/types-request-normal/types/txt
2237−/* tre-609 %txt /tests/golden/types-scope-library-poke/tree/txt
2237+/* mark-609-1 %txt /tests/golden/types-request-normal/mar/full/txt
2238−/* typ-609 %txt /tests/golden/types-scope-library-poke/types/txt
2238+/* mtre-609 %txt /tests/golden/types-request-normal/module-trees/txt
2239−/* src-610 %jibb /tests/golden/types-scope-root-api/source/jibb
2239+/* src-610 %jibb /tests/golden/types-scope-library-poke/source/jibb
2240−/* tok-610 %txt /tests/golden/types-scope-root-api/tokens/txt
2240+/* tok-610 %txt /tests/golden/types-scope-library-poke/tokens/txt
2241−/* tre-610 %txt /tests/golden/types-scope-root-api/tree/txt
2241+/* tre-610 %txt /tests/golden/types-scope-library-poke/tree/txt
2242−/* typ-610 %txt /tests/golden/types-scope-root-api/types/txt
2242+/* typ-610 %txt /tests/golden/types-scope-library-poke/types/txt
2243−/* src-611 %jibb /tests/golden/types-scope-store-duplicate/source/jibb
2243+/* src-611 %jibb /tests/golden/types-scope-root-api/source/jibb
2244−/* tok-611 %txt /tests/golden/types-scope-store-duplicate/tokens/txt
2244+/* tok-611 %txt /tests/golden/types-scope-root-api/tokens/txt
2245−/* tre-611 %txt /tests/golden/types-scope-store-duplicate/tree/txt
2245+/* tre-611 %txt /tests/golden/types-scope-root-api/tree/txt
2246−/* typ-611 %txt /tests/golden/types-scope-store-duplicate/types/txt
2246+/* typ-611 %txt /tests/golden/types-scope-root-api/types/txt
2247−/* src-612 %jibb /tests/golden/types-scope-store-shadow/source/jibb
2247+/* src-612 %jibb /tests/golden/types-scope-store-duplicate/source/jibb
2248−/* tok-612 %txt /tests/golden/types-scope-store-shadow/tokens/txt
2248+/* tok-612 %txt /tests/golden/types-scope-store-duplicate/tokens/txt
2249−/* tre-612 %txt /tests/golden/types-scope-store-shadow/tree/txt
2249+/* tre-612 %txt /tests/golden/types-scope-store-duplicate/tree/txt
2250−/* typ-612 %txt /tests/golden/types-scope-store-shadow/types/txt
2250+/* typ-612 %txt /tests/golden/types-scope-store-duplicate/types/txt
2251−/* src-613 %jibb /tests/golden/types-single-case-pattern/source/jibb
2251+/* src-613 %jibb /tests/golden/types-scope-store-shadow/source/jibb
2252−/* tok-613 %txt /tests/golden/types-single-case-pattern/tokens/txt
2252+/* tok-613 %txt /tests/golden/types-scope-store-shadow/tokens/txt
2253−/* tre-613 %txt /tests/golden/types-single-case-pattern/tree/txt
2253+/* tre-613 %txt /tests/golden/types-scope-store-shadow/tree/txt
2254−/* typ-613 %txt /tests/golden/types-single-case-pattern/types/txt
2254+/* typ-613 %txt /tests/golden/types-scope-store-shadow/types/txt
2255−/* src-614 %jibb /tests/golden/types-string-interpolation/source/jibb
2255+/* src-614 %jibb /tests/golden/types-single-case-pattern/source/jibb
2256−/* tok-614 %txt /tests/golden/types-string-interpolation/tokens/txt
2256+/* tok-614 %txt /tests/golden/types-single-case-pattern/tokens/txt
2257−/* tre-614 %txt /tests/golden/types-string-interpolation/tree/txt
2257+/* tre-614 %txt /tests/golden/types-single-case-pattern/tree/txt
2258−/* typ-614 %txt /tests/golden/types-string-interpolation/types/txt
2258+/* typ-614 %txt /tests/golden/types-single-case-pattern/types/txt
2259−/* src-615 %jibb /tests/golden/types-tuple-context/source/jibb
2259+/* src-615 %jibb /tests/golden/types-string-interpolation/source/jibb
2260−/* tok-615 %txt /tests/golden/types-tuple-context/tokens/txt
2260+/* tok-615 %txt /tests/golden/types-string-interpolation/tokens/txt
2261−/* tre-615 %txt /tests/golden/types-tuple-context/tree/txt
2261+/* tre-615 %txt /tests/golden/types-string-interpolation/tree/txt
2262−/* typ-615 %txt /tests/golden/types-tuple-context/types/txt
2262+/* typ-615 %txt /tests/golden/types-string-interpolation/types/txt
2263−/* src-616 %jibb /tests/golden/types-tuple-context-nested/source/jibb
2263+/* src-616 %jibb /tests/golden/types-tuple-context/source/jibb
2264−/* tok-616 %txt /tests/golden/types-tuple-context-nested/tokens/txt
2264+/* tok-616 %txt /tests/golden/types-tuple-context/tokens/txt
2265−/* tre-616 %txt /tests/golden/types-tuple-context-nested/tree/txt
2265+/* tre-616 %txt /tests/golden/types-tuple-context/tree/txt
2266−/* typ-616 %txt /tests/golden/types-tuple-context-nested/types/txt
2266+/* typ-616 %txt /tests/golden/types-tuple-context/types/txt
2267−/* src-617 %jibb /tests/golden/types-union-alias/source/jibb
2267+/* src-617 %jibb /tests/golden/types-tuple-context-nested/source/jibb
2268−/* tok-617 %txt /tests/golden/types-union-alias/tokens/txt
2268+/* tok-617 %txt /tests/golden/types-tuple-context-nested/tokens/txt
2269−/* tre-617 %txt /tests/golden/types-union-alias/tree/txt
2269+/* tre-617 %txt /tests/golden/types-tuple-context-nested/tree/txt
2270−/* typ-617 %txt /tests/golden/types-union-alias/types/txt
2270+/* typ-617 %txt /tests/golden/types-tuple-context-nested/types/txt
2271−/* src-618 %jibb /tests/golden/types-union-branch-context/source/jibb
2271+/* src-618 %jibb /tests/golden/types-union-alias/source/jibb
2272−/* tok-618 %txt /tests/golden/types-union-branch-context/tokens/txt
2272+/* tok-618 %txt /tests/golden/types-union-alias/tokens/txt
2273−/* tre-618 %txt /tests/golden/types-union-branch-context/tree/txt
2273+/* tre-618 %txt /tests/golden/types-union-alias/tree/txt
2274−/* typ-618 %txt /tests/golden/types-union-branch-context/types/txt
2274+/* typ-618 %txt /tests/golden/types-union-alias/types/txt
2275−/* src-619 %jibb /tests/golden/types-union-branch-pending/source/jibb
2275+/* src-619 %jibb /tests/golden/types-union-branch-context/source/jibb
2276−/* tok-619 %txt /tests/golden/types-union-branch-pending/tokens/txt
2276+/* tok-619 %txt /tests/golden/types-union-branch-context/tokens/txt
2277−/* tre-619 %txt /tests/golden/types-union-branch-pending/tree/txt
2277+/* tre-619 %txt /tests/golden/types-union-branch-context/tree/txt
2278−/* typ-619 %txt /tests/golden/types-union-branch-pending/types/txt
2278+/* typ-619 %txt /tests/golden/types-union-branch-context/types/txt
2279−/* src-620 %jibb /tests/golden/types-union-constructor-shape/source/jibb
2279+/* src-620 %jibb /tests/golden/types-union-branch-pending/source/jibb
2280−/* tok-620 %txt /tests/golden/types-union-constructor-shape/tokens/txt
2280+/* tok-620 %txt /tests/golden/types-union-branch-pending/tokens/txt
2281−/* tre-620 %txt /tests/golden/types-union-constructor-shape/tree/txt
2281+/* tre-620 %txt /tests/golden/types-union-branch-pending/tree/txt
2282−/* typ-620 %txt /tests/golden/types-union-constructor-shape/types/txt
2282+/* typ-620 %txt /tests/golden/types-union-branch-pending/types/txt
2283−/* src-621 %jibb /tests/golden/types-union-context-flow/source/jibb
2283+/* src-621 %jibb /tests/golden/types-union-constructor-shape/source/jibb
2284−/* tok-621 %txt /tests/golden/types-union-context-flow/tokens/txt
2284+/* tok-621 %txt /tests/golden/types-union-constructor-shape/tokens/txt
2285−/* tre-621 %txt /tests/golden/types-union-context-flow/tree/txt
2285+/* tre-621 %txt /tests/golden/types-union-constructor-shape/tree/txt
2286−/* typ-621 %txt /tests/golden/types-union-context-flow/types/txt
2286+/* typ-621 %txt /tests/golden/types-union-constructor-shape/types/txt
2287−/* src-622 %jibb /tests/golden/types-union-finite/source/jibb
2287+/* src-622 %jibb /tests/golden/types-union-context-flow/source/jibb
2288−/* tok-622 %txt /tests/golden/types-union-finite/tokens/txt
2288+/* tok-622 %txt /tests/golden/types-union-context-flow/tokens/txt
2289−/* tre-622 %txt /tests/golden/types-union-finite/tree/txt
2289+/* tre-622 %txt /tests/golden/types-union-context-flow/tree/txt
2290−/* typ-622 %txt /tests/golden/types-union-finite/types/txt
2290+/* typ-622 %txt /tests/golden/types-union-context-flow/types/txt
2291−/* src-623 %jibb /tests/golden/types-union-finite-context/source/jibb
2291+/* src-623 %jibb /tests/golden/types-union-finite/source/jibb
2292−/* tok-623 %txt /tests/golden/types-union-finite-context/tokens/txt
2292+/* tok-623 %txt /tests/golden/types-union-finite/tokens/txt
2293−/* tre-623 %txt /tests/golden/types-union-finite-context/tree/txt
2293+/* tre-623 %txt /tests/golden/types-union-finite/tree/txt
2294−/* typ-623 %txt /tests/golden/types-union-finite-context/types/txt
2294+/* typ-623 %txt /tests/golden/types-union-finite/types/txt
2295−/* src-624 %jibb /tests/golden/types-union-finite-generic/source/jibb
2295+/* src-624 %jibb /tests/golden/types-union-finite-context/source/jibb
2296−/* tok-624 %txt /tests/golden/types-union-finite-generic/tokens/txt
2296+/* tok-624 %txt /tests/golden/types-union-finite-context/tokens/txt
2297−/* tre-624 %txt /tests/golden/types-union-finite-generic/tree/txt
2297+/* tre-624 %txt /tests/golden/types-union-finite-context/tree/txt
2298−/* typ-624 %txt /tests/golden/types-union-finite-generic/types/txt
2298+/* typ-624 %txt /tests/golden/types-union-finite-context/types/txt
2299−/* src-625 %jibb /tests/golden/types-union-finite-limit/source/jibb
2299+/* src-625 %jibb /tests/golden/types-union-finite-generic/source/jibb
2300−/* tok-625 %txt /tests/golden/types-union-finite-limit/tokens/txt
2300+/* tok-625 %txt /tests/golden/types-union-finite-generic/tokens/txt
2301−/* tre-625 %txt /tests/golden/types-union-finite-limit/tree/txt
2301+/* tre-625 %txt /tests/golden/types-union-finite-generic/tree/txt
2302−/* typ-625 %txt /tests/golden/types-union-finite-limit/types/txt
2302+/* typ-625 %txt /tests/golden/types-union-finite-generic/types/txt
2303−/* src-626 %jibb /tests/golden/types-union-import/source/jibb
2303+/* src-626 %jibb /tests/golden/types-union-finite-limit/source/jibb
2304−/* tok-626 %txt /tests/golden/types-union-import/tokens/txt
2304+/* tok-626 %txt /tests/golden/types-union-finite-limit/tokens/txt
2305−/* tre-626 %txt /tests/golden/types-union-import/tree/txt
2305+/* tre-626 %txt /tests/golden/types-union-finite-limit/tree/txt
2306−/* mod-626-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
2306+/* typ-626 %txt /tests/golden/types-union-finite-limit/types/txt
2307−/* typ-626 %txt /tests/golden/types-union-import/types/txt
2307+/* src-627 %jibb /tests/golden/types-union-import/source/jibb
2308−/* mtre-626 %txt /tests/golden/types-union-import/module-trees/txt
2308+/* tok-627 %txt /tests/golden/types-union-import/tokens/txt
2309−/* src-627 %jibb /tests/golden/types-union-local-pending/source/jibb
2309+/* tre-627 %txt /tests/golden/types-union-import/tree/txt
2310−/* tok-627 %txt /tests/golden/types-union-local-pending/tokens/txt
2310+/* mod-627-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
2311−/* tre-627 %txt /tests/golden/types-union-local-pending/tree/txt
2311+/* typ-627 %txt /tests/golden/types-union-import/types/txt
2312−/* typ-627 %txt /tests/golden/types-union-local-pending/types/txt
2312+/* mtre-627 %txt /tests/golden/types-union-import/module-trees/txt
2313−/* src-628 %jibb /tests/golden/types-union-nonwing-subject/source/jibb
2313+/* src-628 %jibb /tests/golden/types-union-local-pending/source/jibb
2314−/* tok-628 %txt /tests/golden/types-union-nonwing-subject/tokens/txt
2314+/* tok-628 %txt /tests/golden/types-union-local-pending/tokens/txt
2315−/* tre-628 %txt /tests/golden/types-union-nonwing-subject/tree/txt
2315+/* tre-628 %txt /tests/golden/types-union-local-pending/tree/txt
2316−/* typ-628 %txt /tests/golden/types-union-nonwing-subject/types/txt
2316+/* typ-628 %txt /tests/golden/types-union-local-pending/types/txt
2317−/* src-629 %jibb /tests/golden/types-union-overlap/source/jibb
2317+/* src-629 %jibb /tests/golden/types-union-nonwing-subject/source/jibb
2318−/* tok-629 %txt /tests/golden/types-union-overlap/tokens/txt
2318+/* tok-629 %txt /tests/golden/types-union-nonwing-subject/tokens/txt
2319−/* tre-629 %txt /tests/golden/types-union-overlap/tree/txt
2319+/* tre-629 %txt /tests/golden/types-union-nonwing-subject/tree/txt
2320−/* typ-629 %txt /tests/golden/types-union-overlap/types/txt
2320+/* typ-629 %txt /tests/golden/types-union-nonwing-subject/types/txt
2321−/* src-630 %jibb /tests/golden/types-union-overlap-nested/source/jibb
2321+/* src-630 %jibb /tests/golden/types-union-overlap/source/jibb
2322−/* tok-630 %txt /tests/golden/types-union-overlap-nested/tokens/txt
2322+/* tok-630 %txt /tests/golden/types-union-overlap/tokens/txt
2323−/* tre-630 %txt /tests/golden/types-union-overlap-nested/tree/txt
2323+/* tre-630 %txt /tests/golden/types-union-overlap/tree/txt
2324−/* typ-630 %txt /tests/golden/types-union-overlap-nested/types/txt
2324+/* typ-630 %txt /tests/golden/types-union-overlap/types/txt
2325−/* src-631 %jibb /tests/golden/types-union-pattern-result-context/source/jibb
2325+/* src-631 %jibb /tests/golden/types-union-overlap-nested/source/jibb
2326−/* tok-631 %txt /tests/golden/types-union-pattern-result-context/tokens/txt
2326+/* tok-631 %txt /tests/golden/types-union-overlap-nested/tokens/txt
2327−/* tre-631 %txt /tests/golden/types-union-pattern-result-context/tree/txt
2327+/* tre-631 %txt /tests/golden/types-union-overlap-nested/tree/txt
2328−/* typ-631 %txt /tests/golden/types-union-pattern-result-context/types/txt
2328+/* typ-631 %txt /tests/golden/types-union-overlap-nested/types/txt
2329−/* src-632 %jibb /tests/golden/types-union-pattern-result-controls/source/jibb
2329+/* src-632 %jibb /tests/golden/types-union-pattern-result-context/source/jibb
2330−/* tok-632 %txt /tests/golden/types-union-pattern-result-controls/tokens/txt
2330+/* tok-632 %txt /tests/golden/types-union-pattern-result-context/tokens/txt
2331−/* tre-632 %txt /tests/golden/types-union-pattern-result-controls/tree/txt
2331+/* tre-632 %txt /tests/golden/types-union-pattern-result-context/tree/txt
2332−/* typ-632 %txt /tests/golden/types-union-pattern-result-controls/types/txt
2332+/* typ-632 %txt /tests/golden/types-union-pattern-result-context/types/txt
2333−/* src-633 %jibb /tests/golden/types-union-patterns/source/jibb
2333+/* src-633 %jibb /tests/golden/types-union-pattern-result-controls/source/jibb
2334−/* tok-633 %txt /tests/golden/types-union-patterns/tokens/txt
2334+/* tok-633 %txt /tests/golden/types-union-pattern-result-controls/tokens/txt
2335−/* tre-633 %txt /tests/golden/types-union-patterns/tree/txt
2335+/* tre-633 %txt /tests/golden/types-union-pattern-result-controls/tree/txt
2336−/* typ-633 %txt /tests/golden/types-union-patterns/types/txt
2336+/* typ-633 %txt /tests/golden/types-union-pattern-result-controls/types/txt
2337−/* src-634 %jibb /tests/golden/types-union-patterns-generic/source/jibb
2337+/* src-634 %jibb /tests/golden/types-union-patterns/source/jibb
2338−/* tok-634 %txt /tests/golden/types-union-patterns-generic/tokens/txt
2338+/* tok-634 %txt /tests/golden/types-union-patterns/tokens/txt
2339−/* tre-634 %txt /tests/golden/types-union-patterns-generic/tree/txt
2339+/* tre-634 %txt /tests/golden/types-union-patterns/tree/txt
2340−/* typ-634 %txt /tests/golden/types-union-patterns-generic/types/txt
2340+/* typ-634 %txt /tests/golden/types-union-patterns/types/txt
2341−/* src-635 %jibb /tests/golden/types-union-patterns-import/source/jibb
2341+/* src-635 %jibb /tests/golden/types-union-patterns-generic/source/jibb
2342−/* tok-635 %txt /tests/golden/types-union-patterns-import/tokens/txt
2342+/* tok-635 %txt /tests/golden/types-union-patterns-generic/tokens/txt
2343−/* tre-635 %txt /tests/golden/types-union-patterns-import/tree/txt
2343+/* tre-635 %txt /tests/golden/types-union-patterns-generic/tree/txt
2344−/* mod-635-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
2344+/* typ-635 %txt /tests/golden/types-union-patterns-generic/types/txt
2345−/* typ-635 %txt /tests/golden/types-union-patterns-import/types/txt
2345+/* src-636 %jibb /tests/golden/types-union-patterns-import/source/jibb
2346−/* mtre-635 %txt /tests/golden/types-union-patterns-import/module-trees/txt
2346+/* tok-636 %txt /tests/golden/types-union-patterns-import/tokens/txt
2347−/* src-636 %jibb /tests/golden/types-union-phantom-generic/source/jibb
2347+/* tre-636 %txt /tests/golden/types-union-patterns-import/tree/txt
2348−/* tok-636 %txt /tests/golden/types-union-phantom-generic/tokens/txt
2348+/* mod-636-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
2349−/* tre-636 %txt /tests/golden/types-union-phantom-generic/tree/txt
2349+/* typ-636 %txt /tests/golden/types-union-patterns-import/types/txt
2350−/* typ-636 %txt /tests/golden/types-union-phantom-generic/types/txt
2350+/* mtre-636 %txt /tests/golden/types-union-patterns-import/module-trees/txt
2351−/* src-637 %jibb /tests/golden/types-union-polymorphic-identity/source/jibb
2351+/* src-637 %jibb /tests/golden/types-union-phantom-generic/source/jibb
2352−/* tok-637 %txt /tests/golden/types-union-polymorphic-identity/tokens/txt
2352+/* tok-637 %txt /tests/golden/types-union-phantom-generic/tokens/txt
2353−/* tre-637 %txt /tests/golden/types-union-polymorphic-identity/tree/txt
2353+/* tre-637 %txt /tests/golden/types-union-phantom-generic/tree/txt
2354−/* mod-637-1 %jibb /tests/golden/types-union-polymorphic-identity/modules/ui/one/jibb
2354+/* typ-637 %txt /tests/golden/types-union-phantom-generic/types/txt
2355−/* mod-637-2 %jibb /tests/golden/types-union-polymorphic-identity/modules/ui/two/jibb
2355+/* src-638 %jibb /tests/golden/types-union-polymorphic-identity/source/jibb
2356−/* typ-637 %txt /tests/golden/types-union-polymorphic-identity/types/txt
2356+/* tok-638 %txt /tests/golden/types-union-polymorphic-identity/tokens/txt
2357−/* mtre-637 %txt /tests/golden/types-union-polymorphic-identity/module-trees/txt
2357+/* tre-638 %txt /tests/golden/types-union-polymorphic-identity/tree/txt
2358−/* src-638 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
2358+/* mod-638-1 %jibb /tests/golden/types-union-polymorphic-identity/modules/ui/one/jibb
2359−/* tok-638 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
2359+/* mod-638-2 %jibb /tests/golden/types-union-polymorphic-identity/modules/ui/two/jibb
2360−/* tre-638 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
2360+/* typ-638 %txt /tests/golden/types-union-polymorphic-identity/types/txt
2361−/* mod-638-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
2361+/* mtre-638 %txt /tests/golden/types-union-polymorphic-identity/module-trees/txt
2362−/* typ-638 %txt /tests/golden/types-union-print-cross-namespace/types/txt
2362+/* src-639 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
2363−/* mtre-638 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
2363+/* tok-639 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
2364−/* src-639 %jibb /tests/golden/types-union-print-distinct/source/jibb
2364+/* tre-639 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
2365−/* tok-639 %txt /tests/golden/types-union-print-distinct/tokens/txt
2365+/* mod-639-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
2366−/* tre-639 %txt /tests/golden/types-union-print-distinct/tree/txt
2366+/* typ-639 %txt /tests/golden/types-union-print-cross-namespace/types/txt
2367−/* mod-639-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
2367+/* mtre-639 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
2368−/* mod-639-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
2368+/* src-640 %jibb /tests/golden/types-union-print-distinct/source/jibb
2369−/* mod-639-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
2369+/* tok-640 %txt /tests/golden/types-union-print-distinct/tokens/txt
2370−/* typ-639 %txt /tests/golden/types-union-print-distinct/types/txt
2370+/* tre-640 %txt /tests/golden/types-union-print-distinct/tree/txt
2371−/* mtre-639 %txt /tests/golden/types-union-print-distinct/module-trees/txt
2371+/* mod-640-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
2372−/* src-640 %jibb /tests/golden/types-union-print-escape/source/jibb
2372+/* mod-640-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
2373−/* tok-640 %txt /tests/golden/types-union-print-escape/tokens/txt
2373+/* mod-640-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
2374−/* tre-640 %txt /tests/golden/types-union-print-escape/tree/txt
2374+/* typ-640 %txt /tests/golden/types-union-print-distinct/types/txt
2375−/* typ-640 %txt /tests/golden/types-union-print-escape/types/txt
2375+/* mtre-640 %txt /tests/golden/types-union-print-distinct/module-trees/txt
2376−/* src-641 %jibb /tests/golden/types-union-print-local/source/jibb
2376+/* src-641 %jibb /tests/golden/types-union-print-escape/source/jibb
2377−/* tok-641 %txt /tests/golden/types-union-print-local/tokens/txt
2377+/* tok-641 %txt /tests/golden/types-union-print-escape/tokens/txt
2378−/* tre-641 %txt /tests/golden/types-union-print-local/tree/txt
2378+/* tre-641 %txt /tests/golden/types-union-print-escape/tree/txt
2379−/* typ-641 %txt /tests/golden/types-union-print-local/types/txt
2379+/* typ-641 %txt /tests/golden/types-union-print-escape/types/txt
2380−/* src-642 %jibb /tests/golden/types-union-print-nested/source/jibb
2380+/* src-642 %jibb /tests/golden/types-union-print-local/source/jibb
2381−/* tok-642 %txt /tests/golden/types-union-print-nested/tokens/txt
2381+/* tok-642 %txt /tests/golden/types-union-print-local/tokens/txt
2382−/* tre-642 %txt /tests/golden/types-union-print-nested/tree/txt
2382+/* tre-642 %txt /tests/golden/types-union-print-local/tree/txt
2383−/* typ-642 %txt /tests/golden/types-union-print-nested/types/txt
2383+/* typ-642 %txt /tests/golden/types-union-print-local/types/txt
2384−/* src-643 %jibb /tests/golden/types-union-print-same-origin/source/jibb
2384+/* src-643 %jibb /tests/golden/types-union-print-nested/source/jibb
2385−/* tok-643 %txt /tests/golden/types-union-print-same-origin/tokens/txt
2385+/* tok-643 %txt /tests/golden/types-union-print-nested/tokens/txt
2386−/* tre-643 %txt /tests/golden/types-union-print-same-origin/tree/txt
2386+/* tre-643 %txt /tests/golden/types-union-print-nested/tree/txt
2387−/* mod-643-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
2387+/* typ-643 %txt /tests/golden/types-union-print-nested/types/txt
2388−/* typ-643 %txt /tests/golden/types-union-print-same-origin/types/txt
2388+/* src-644 %jibb /tests/golden/types-union-print-same-origin/source/jibb
2389−/* mtre-643 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
2389+/* tok-644 %txt /tests/golden/types-union-print-same-origin/tokens/txt
2390−/* src-644 %jibb /tests/golden/types-union-print-transitive/source/jibb
2390+/* tre-644 %txt /tests/golden/types-union-print-same-origin/tree/txt
2391−/* tok-644 %txt /tests/golden/types-union-print-transitive/tokens/txt
2391+/* mod-644-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
2392−/* tre-644 %txt /tests/golden/types-union-print-transitive/tree/txt
2392+/* typ-644 %txt /tests/golden/types-union-print-same-origin/types/txt
2393−/* mod-644-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
2393+/* mtre-644 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
2394−/* mod-644-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
2394+/* src-645 %jibb /tests/golden/types-union-print-transitive/source/jibb
2395−/* typ-644 %txt /tests/golden/types-union-print-transitive/types/txt
2395+/* tok-645 %txt /tests/golden/types-union-print-transitive/tokens/txt
2396−/* mtre-644 %txt /tests/golden/types-union-print-transitive/module-trees/txt
2396+/* tre-645 %txt /tests/golden/types-union-print-transitive/tree/txt
2397−/* src-645 %jibb /tests/golden/types-union-runtime-equality/source/jibb
2397+/* mod-645-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
2398−/* tok-645 %txt /tests/golden/types-union-runtime-equality/tokens/txt
2398+/* mod-645-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
2399−/* tre-645 %txt /tests/golden/types-union-runtime-equality/tree/txt
2399+/* typ-645 %txt /tests/golden/types-union-print-transitive/types/txt
2400−/* typ-645 %txt /tests/golden/types-union-runtime-equality/types/txt
2400+/* mtre-645 %txt /tests/golden/types-union-print-transitive/module-trees/txt
2401−/* src-646 %jibb /tests/golden/types-union-singleton/source/jibb
2401+/* src-646 %jibb /tests/golden/types-union-runtime-equality/source/jibb
2402−/* tok-646 %txt /tests/golden/types-union-singleton/tokens/txt
2402+/* tok-646 %txt /tests/golden/types-union-runtime-equality/tokens/txt
2403−/* tre-646 %txt /tests/golden/types-union-singleton/tree/txt
2403+/* tre-646 %txt /tests/golden/types-union-runtime-equality/tree/txt
2404−/* typ-646 %txt /tests/golden/types-union-singleton/types/txt
2404+/* typ-646 %txt /tests/golden/types-union-runtime-equality/types/txt
2405−/* src-647 %jibb /tests/golden/types-union-tag-atoms/source/jibb
2405+/* src-647 %jibb /tests/golden/types-union-singleton/source/jibb
2406−/* tok-647 %txt /tests/golden/types-union-tag-atoms/tokens/txt
2406+/* tok-647 %txt /tests/golden/types-union-singleton/tokens/txt
2407−/* tre-647 %txt /tests/golden/types-union-tag-atoms/tree/txt
2407+/* tre-647 %txt /tests/golden/types-union-singleton/tree/txt
2408−/* typ-647 %txt /tests/golden/types-union-tag-atoms/types/txt
2408+/* typ-647 %txt /tests/golden/types-union-singleton/types/txt
2409−/* src-648 %jibb /tests/golden/types-union-tags/source/jibb
2409+/* src-648 %jibb /tests/golden/types-union-source-alias/source/jibb
2410−/* tok-648 %txt /tests/golden/types-union-tags/tokens/txt
2410+/* tok-648 %txt /tests/golden/types-union-source-alias/tokens/txt
2411−/* tre-648 %txt /tests/golden/types-union-tags/tree/txt
2411+/* tre-648 %txt /tests/golden/types-union-source-alias/tree/txt
2412−/* typ-648 %txt /tests/golden/types-union-tags/types/txt
2412+/* typ-648 %txt /tests/golden/types-union-source-alias/types/txt
2413−/* src-649 %jibb /tests/golden/types-union-unresolved/source/jibb
2413+/* src-649 %jibb /tests/golden/types-union-tag-atoms/source/jibb
2414−/* tok-649 %txt /tests/golden/types-union-unresolved/tokens/txt
2414+/* tok-649 %txt /tests/golden/types-union-tag-atoms/tokens/txt
2415−/* tre-649 %txt /tests/golden/types-union-unresolved/tree/txt
2415+/* tre-649 %txt /tests/golden/types-union-tag-atoms/tree/txt
2416−/* typ-649 %txt /tests/golden/types-union-unresolved/types/txt
2416+/* typ-649 %txt /tests/golden/types-union-tag-atoms/types/txt
2417−/* src-650 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
2417+/* src-650 %jibb /tests/golden/types-union-tags/source/jibb
2418−/* tok-650 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
2418+/* tok-650 %txt /tests/golden/types-union-tags/tokens/txt
2419−/* tre-650 %txt /tests/golden/types-union-unresolved-flow/tree/txt
2419+/* tre-650 %txt /tests/golden/types-union-tags/tree/txt
2420−/* typ-650 %txt /tests/golden/types-union-unresolved-flow/types/txt
2420+/* typ-650 %txt /tests/golden/types-union-tags/types/txt
2421−/* src-651 %jibb /tests/golden/types-unit-construction/source/jibb
2421+/* src-651 %jibb /tests/golden/types-union-unresolved/source/jibb
2422−/* tok-651 %txt /tests/golden/types-unit-construction/tokens/txt
2422+/* tok-651 %txt /tests/golden/types-union-unresolved/tokens/txt
2423−/* tre-651 %txt /tests/golden/types-unit-construction/tree/txt
2423+/* tre-651 %txt /tests/golden/types-union-unresolved/tree/txt
2424−/* typ-651 %txt /tests/golden/types-unit-construction/types/txt
2424+/* typ-651 %txt /tests/golden/types-union-unresolved/types/txt
2425−/* src-652 %jibb /tests/golden/types-unit-context/source/jibb
2425+/* src-652 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
2426−/* tok-652 %txt /tests/golden/types-unit-context/tokens/txt
2426+/* tok-652 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
2427−/* tre-652 %txt /tests/golden/types-unit-context/tree/txt
2427+/* tre-652 %txt /tests/golden/types-union-unresolved-flow/tree/txt
2428−/* typ-652 %txt /tests/golden/types-unit-context/types/txt
2428+/* typ-652 %txt /tests/golden/types-union-unresolved-flow/types/txt
2429−/* src-653 %jibb /tests/golden/types-unit-patterns/source/jibb
2429+/* src-653 %jibb /tests/golden/types-unit-construction/source/jibb
2430−/* tok-653 %txt /tests/golden/types-unit-patterns/tokens/txt
2430+/* tok-653 %txt /tests/golden/types-unit-construction/tokens/txt
2431−/* tre-653 %txt /tests/golden/types-unit-patterns/tree/txt
2431+/* tre-653 %txt /tests/golden/types-unit-construction/tree/txt
2432−/* typ-653 %txt /tests/golden/types-unit-patterns/types/txt
2432+/* typ-653 %txt /tests/golden/types-unit-construction/types/txt
2433−/* src-654 %jibb /tests/golden/types-value-cycle-shadow/source/jibb
2433+/* src-654 %jibb /tests/golden/types-unit-context/source/jibb
2434−/* tok-654 %txt /tests/golden/types-value-cycle-shadow/tokens/txt
2434+/* tok-654 %txt /tests/golden/types-unit-context/tokens/txt
2435−/* tre-654 %txt /tests/golden/types-value-cycle-shadow/tree/txt
2435+/* tre-654 %txt /tests/golden/types-unit-context/tree/txt
2436−/* typ-654 %txt /tests/golden/types-value-cycle-shadow/types/txt
2436+/* typ-654 %txt /tests/golden/types-unit-context/types/txt
2437−/* src-655 %jibb /tests/golden/types-value-cycle-unsupported/source/jibb
2437+/* src-655 %jibb /tests/golden/types-unit-patterns/source/jibb
2438−/* tok-655 %txt /tests/golden/types-value-cycle-unsupported/tokens/txt
2438+/* tok-655 %txt /tests/golden/types-unit-patterns/tokens/txt
2439−/* tre-655 %txt /tests/golden/types-value-cycle-unsupported/tree/txt
2439+/* tre-655 %txt /tests/golden/types-unit-patterns/tree/txt
2440−/* typ-655 %txt /tests/golden/types-value-cycle-unsupported/types/txt
2440+/* typ-655 %txt /tests/golden/types-unit-patterns/types/txt
2441−/* src-656 %jibb /tests/golden/types-value-cycles/source/jibb
2441+/* src-656 %jibb /tests/golden/types-value-cycle-shadow/source/jibb
2442−/* tok-656 %txt /tests/golden/types-value-cycles/tokens/txt
2442+/* tok-656 %txt /tests/golden/types-value-cycle-shadow/tokens/txt
2443−/* tre-656 %txt /tests/golden/types-value-cycles/tree/txt
2443+/* tre-656 %txt /tests/golden/types-value-cycle-shadow/tree/txt
2444−/* typ-656 %txt /tests/golden/types-value-cycles/types/txt
2444+/* typ-656 %txt /tests/golden/types-value-cycle-shadow/types/txt
2445+/* src-657 %jibb /tests/golden/types-value-cycle-unsupported/source/jibb
2446+/* tok-657 %txt /tests/golden/types-value-cycle-unsupported/tokens/txt
2447+/* tre-657 %txt /tests/golden/types-value-cycle-unsupported/tree/txt
2448+/* typ-657 %txt /tests/golden/types-value-cycle-unsupported/types/txt
2449+/* src-658 %jibb /tests/golden/types-value-cycles/source/jibb
2450+/* tok-658 %txt /tests/golden/types-value-cycles/tokens/txt
2451+/* tre-658 %txt /tests/golden/types-value-cycles/tree/txt
2452+/* typ-658 %txt /tests/golden/types-value-cycles/types/txt
2445=/ prepared-prelude (prepare-prelude-with-internal:jibb prelude-source internal-source)
2453=/ prepared-prelude (prepare-prelude-with-internal:jibb prelude-source internal-source)
2446|%
2454|%
2447:: one arm per case
2455:: one arm per case
@@ -3550,214 +3558,218 @@
3550 (weld (check ~.types-prelude-sub src-551 `tok-551 `tre-551) (check-module-types ~.types-prelude-sub ~[%tests %golden ~.types-prelude-sub %source %jibb] src-551 `typ-551 ~ ~ ~))
3558 (weld (check ~.types-prelude-sub src-551 `tok-551 `tre-551) (check-module-types ~.types-prelude-sub ~[%tests %golden ~.types-prelude-sub %source %jibb] src-551 `typ-551 ~ ~ ~))
3551++ test-types-prelude-sub-nested
3559++ test-types-prelude-sub-nested
3552 (weld (check ~.types-prelude-sub-nested src-552 `tok-552 `tre-552) (check-module-types ~.types-prelude-sub-nested ~[%tests %golden ~.types-prelude-sub-nested %source %jibb] src-552 `typ-552 ~ ~ ~))
3560 (weld (check ~.types-prelude-sub-nested src-552 `tok-552 `tre-552) (check-module-types ~.types-prelude-sub-nested ~[%tests %golden ~.types-prelude-sub-nested %source %jibb] src-552 `typ-552 ~ ~ ~))
3561+++ test-types-prelude-succ
3562+ (weld (check ~.types-prelude-succ src-553 `tok-553 `tre-553) (check-module-types ~.types-prelude-succ ~[%tests %golden ~.types-prelude-succ %source %jibb] src-553 `typ-553 ~ ~ ~))
3553++ test-types-prelude-unit-helpers
3563++ test-types-prelude-unit-helpers
3554− (weld (check ~.types-prelude-unit-helpers src-553 `tok-553 `tre-553) (check-module-types ~.types-prelude-unit-helpers ~[%tests %golden ~.types-prelude-unit-helpers %source %jibb] src-553 `typ-553 ~ ~ ~))
3564+ (weld (check ~.types-prelude-unit-helpers src-554 `tok-554 `tre-554) (check-module-types ~.types-prelude-unit-helpers ~[%tests %golden ~.types-prelude-unit-helpers %source %jibb] src-554 `typ-554 ~ ~ ~))
3555++ test-types-prelude-zing
3565++ test-types-prelude-zing
3556− (weld (check ~.types-prelude-zing src-554 `tok-554 `tre-554) (check-module-types ~.types-prelude-zing ~[%tests %golden ~.types-prelude-zing %source %jibb] src-554 `typ-554 ~ ~ ~))
3566+ (weld (check ~.types-prelude-zing src-555 `tok-555 `tre-555) (check-module-types ~.types-prelude-zing ~[%tests %golden ~.types-prelude-zing %source %jibb] src-555 `typ-555 ~ ~ ~))
3557++ test-types-proj-explicit-context
3567++ test-types-proj-explicit-context
3558− (weld (check ~.types-proj-explicit-context src-555 `tok-555 `tre-555) (check-module-types ~.types-proj-explicit-context ~[%tests %golden ~.types-proj-explicit-context %source %jibb] src-555 `typ-555 ~ ~ ~))
3568+ (weld (check ~.types-proj-explicit-context src-556 `tok-556 `tre-556) (check-module-types ~.types-proj-explicit-context ~[%tests %golden ~.types-proj-explicit-context %source %jibb] src-556 `typ-556 ~ ~ ~))
3559++ test-types-proj-nested-no-implicit
3569++ test-types-proj-nested-no-implicit
3560− (weld (check ~.types-proj-nested-no-implicit src-556 `tok-556 `tre-556) (check-module-types ~.types-proj-nested-no-implicit ~[%tests %golden ~.types-proj-nested-no-implicit %source %jibb] src-556 `typ-556 ~ ~ ~))
3570+ (weld (check ~.types-proj-nested-no-implicit src-557 `tok-557 `tre-557) (check-module-types ~.types-proj-nested-no-implicit ~[%tests %golden ~.types-proj-nested-no-implicit %source %jibb] src-557 `typ-557 ~ ~ ~))
3561++ test-types-proj-reserved-imported-definition
3571++ test-types-proj-reserved-imported-definition
3562− (weld (weld (check ~.types-proj-reserved-imported-definition src-557 `tok-557 `tre-557) (check-module-types ~.types-proj-reserved-imported-definition ~[%tests %golden ~.types-proj-reserved-imported-definition %source %jibb] src-557 `typ-557 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-557-1]])) (check-module-trees ~.types-proj-reserved-imported-definition `mtre-557 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-557-1]]))
3572+ (weld (weld (check ~.types-proj-reserved-imported-definition src-558 `tok-558 `tre-558) (check-module-types ~.types-proj-reserved-imported-definition ~[%tests %golden ~.types-proj-reserved-imported-definition %source %jibb] src-558 `typ-558 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-558-1]])) (check-module-trees ~.types-proj-reserved-imported-definition `mtre-558 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-558-1]]))
3563++ test-types-proj-reserved-jibb-import
3573++ test-types-proj-reserved-jibb-import
3564− (weld (weld (check ~.types-proj-reserved-jibb-import src-558 `tok-558 `tre-558) (check-module-types ~.types-proj-reserved-jibb-import ~[%tests %golden ~.types-proj-reserved-jibb-import %source %jibb] src-558 `typ-558 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-558-1]])) (check-module-trees ~.types-proj-reserved-jibb-import `mtre-558 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-558-1]]))
3574+ (weld (weld (check ~.types-proj-reserved-jibb-import src-559 `tok-559 `tre-559) (check-module-types ~.types-proj-reserved-jibb-import ~[%tests %golden ~.types-proj-reserved-jibb-import %source %jibb] src-559 `typ-559 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-559-1]])) (check-module-trees ~.types-proj-reserved-jibb-import `mtre-559 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-559-1]]))
3565++ test-types-proj-reserved-local
3575++ test-types-proj-reserved-local
3566− (weld (check ~.types-proj-reserved-local src-559 `tok-559 `tre-559) (check-module-types ~.types-proj-reserved-local ~[%tests %golden ~.types-proj-reserved-local %source %jibb] src-559 `typ-559 ~ ~ ~))
3576+ (weld (check ~.types-proj-reserved-local src-560 `tok-560 `tre-560) (check-module-types ~.types-proj-reserved-local ~[%tests %golden ~.types-proj-reserved-local %source %jibb] src-560 `typ-560 ~ ~ ~))
3567++ test-types-proj-reserved-local-mold
3577++ test-types-proj-reserved-local-mold
3568− (weld (check ~.types-proj-reserved-local-mold src-560 `tok-560 `tre-560) (check-module-types ~.types-proj-reserved-local-mold ~[%tests %golden ~.types-proj-reserved-local-mold %source %jibb] src-560 `typ-560 ~ ~ ~))
3578+ (weld (check ~.types-proj-reserved-local-mold src-561 `tok-561 `tre-561) (check-module-types ~.types-proj-reserved-local-mold ~[%tests %golden ~.types-proj-reserved-local-mold %source %jibb] src-561 `typ-561 ~ ~ ~))
3569++ test-types-proj-reserved-mark-import
3579++ test-types-proj-reserved-mark-import
3570− (weld (check ~.types-proj-reserved-mark-import src-561 `tok-561 `tre-561) (check-module-types ~.types-proj-reserved-mark-import ~[%tests %golden ~.types-proj-reserved-mark-import %source %jibb] src-561 `typ-561 ~ ~ ~))
3580+ (weld (check ~.types-proj-reserved-mark-import src-562 `tok-562 `tre-562) (check-module-types ~.types-proj-reserved-mark-import ~[%tests %golden ~.types-proj-reserved-mark-import %source %jibb] src-562 `typ-562 ~ ~ ~))
3571++ test-types-proj-reserved-mold
3581++ test-types-proj-reserved-mold
3572− (weld (check ~.types-proj-reserved-mold src-562 `tok-562 `tre-562) (check-module-types ~.types-proj-reserved-mold ~[%tests %golden ~.types-proj-reserved-mold %source %jibb] src-562 `typ-562 ~ ~ ~))
3582+ (weld (check ~.types-proj-reserved-mold src-563 `tok-563 `tre-563) (check-module-types ~.types-proj-reserved-mold ~[%tests %golden ~.types-proj-reserved-mold %source %jibb] src-563 `typ-563 ~ ~ ~))
3573++ test-types-proj-reserved-pattern
3583++ test-types-proj-reserved-pattern
3574− (weld (check ~.types-proj-reserved-pattern src-563 `tok-563 `tre-563) (check-module-types ~.types-proj-reserved-pattern ~[%tests %golden ~.types-proj-reserved-pattern %source %jibb] src-563 `typ-563 ~ ~ ~))
3584+ (weld (check ~.types-proj-reserved-pattern src-564 `tok-564 `tre-564) (check-module-types ~.types-proj-reserved-pattern ~[%tests %golden ~.types-proj-reserved-pattern %source %jibb] src-564 `typ-564 ~ ~ ~))
3575++ test-types-proj-reserved-positive
3585++ test-types-proj-reserved-positive
3576− (weld (check ~.types-proj-reserved-positive src-564 `tok-564 `tre-564) (check-module-types ~.types-proj-reserved-positive ~[%tests %golden ~.types-proj-reserved-positive %source %jibb] src-564 `typ-564 ~ ~ ~))
3586+ (weld (check ~.types-proj-reserved-positive src-565 `tok-565 `tre-565) (check-module-types ~.types-proj-reserved-positive ~[%tests %golden ~.types-proj-reserved-positive %source %jibb] src-565 `typ-565 ~ ~ ~))
3577++ test-types-proj-reserved-sample
3587++ test-types-proj-reserved-sample
3578− (weld (check ~.types-proj-reserved-sample src-565 `tok-565 `tre-565) (check-module-types ~.types-proj-reserved-sample ~[%tests %golden ~.types-proj-reserved-sample %source %jibb] src-565 `typ-565 ~ ~ ~))
3588+ (weld (check ~.types-proj-reserved-sample src-566 `tok-566 `tre-566) (check-module-types ~.types-proj-reserved-sample ~[%tests %golden ~.types-proj-reserved-sample %source %jibb] src-566 `typ-566 ~ ~ ~))
3579++ test-types-proj-reserved-sur-import
3589++ test-types-proj-reserved-sur-import
3580− (weld (check ~.types-proj-reserved-sur-import src-566 `tok-566 `tre-566) (check-module-types ~.types-proj-reserved-sur-import ~[%tests %golden ~.types-proj-reserved-sur-import %source %jibb] src-566 `typ-566 ~ ~ ~))
3590+ (weld (check ~.types-proj-reserved-sur-import src-567 `tok-567 `tre-567) (check-module-types ~.types-proj-reserved-sur-import ~[%tests %golden ~.types-proj-reserved-sur-import %source %jibb] src-567 `typ-567 ~ ~ ~))
3581++ test-types-proj-reserved-unused-pattern
3591++ test-types-proj-reserved-unused-pattern
3582− (weld (check ~.types-proj-reserved-unused-pattern src-567 `tok-567 `tre-567) (check-module-types ~.types-proj-reserved-unused-pattern ~[%tests %golden ~.types-proj-reserved-unused-pattern %source %jibb] src-567 `typ-567 ~ ~ ~))
3592+ (weld (check ~.types-proj-reserved-unused-pattern src-568 `tok-568 `tre-568) (check-module-types ~.types-proj-reserved-unused-pattern ~[%tests %golden ~.types-proj-reserved-unused-pattern %source %jibb] src-568 `typ-568 ~ ~ ~))
3583++ test-types-proj-reserved-unused-sample
3593++ test-types-proj-reserved-unused-sample
3584− (weld (check ~.types-proj-reserved-unused-sample src-568 `tok-568 `tre-568) (check-module-types ~.types-proj-reserved-unused-sample ~[%tests %golden ~.types-proj-reserved-unused-sample %source %jibb] src-568 `typ-568 ~ ~ ~))
3594+ (weld (check ~.types-proj-reserved-unused-sample src-569 `tok-569 `tre-569) (check-module-types ~.types-proj-reserved-unused-sample ~[%tests %golden ~.types-proj-reserved-unused-sample %source %jibb] src-569 `typ-569 ~ ~ ~))
3585++ test-types-proj-reserved-unused-value
3595++ test-types-proj-reserved-unused-value
3586− (weld (check ~.types-proj-reserved-unused-value src-569 `tok-569 `tre-569) (check-module-types ~.types-proj-reserved-unused-value ~[%tests %golden ~.types-proj-reserved-unused-value %source %jibb] src-569 `typ-569 ~ ~ ~))
3596+ (weld (check ~.types-proj-reserved-unused-value src-570 `tok-570 `tre-570) (check-module-types ~.types-proj-reserved-unused-value ~[%tests %golden ~.types-proj-reserved-unused-value %source %jibb] src-570 `typ-570 ~ ~ ~))
3587++ test-types-proj-reserved-value
3597++ test-types-proj-reserved-value
3588− (weld (check ~.types-proj-reserved-value src-570 `tok-570 `tre-570) (check-module-types ~.types-proj-reserved-value ~[%tests %golden ~.types-proj-reserved-value %source %jibb] src-570 `typ-570 ~ ~ ~))
3598+ (weld (check ~.types-proj-reserved-value src-571 `tok-571 `tre-571) (check-module-types ~.types-proj-reserved-value ~[%tests %golden ~.types-proj-reserved-value %source %jibb] src-571 `typ-571 ~ ~ ~))
3589++ test-types-proj-single-duplicate
3599++ test-types-proj-single-duplicate
3590− (weld (check ~.types-proj-single-duplicate src-571 `tok-571 `tre-571) (check-module-types ~.types-proj-single-duplicate ~[%tests %golden ~.types-proj-single-duplicate %source %jibb] src-571 `typ-571 ~ ~ ~))
3600+ (weld (check ~.types-proj-single-duplicate src-572 `tok-572 `tre-572) (check-module-types ~.types-proj-single-duplicate ~[%tests %golden ~.types-proj-single-duplicate %source %jibb] src-572 `typ-572 ~ ~ ~))
3591++ test-types-proj-single-field
3601++ test-types-proj-single-field
3592− (weld (check ~.types-proj-single-field src-572 `tok-572 `tre-572) (check-module-types ~.types-proj-single-field ~[%tests %golden ~.types-proj-single-field %source %jibb] src-572 `typ-572 ~ ~ ~))
3602+ (weld (check ~.types-proj-single-field src-573 `tok-573 `tre-573) (check-module-types ~.types-proj-single-field ~[%tests %golden ~.types-proj-single-field %source %jibb] src-573 `typ-573 ~ ~ ~))
3593++ test-types-proj-single-sample-face
3603++ test-types-proj-single-sample-face
3594− (weld (check ~.types-proj-single-sample-face src-573 `tok-573 `tre-573) (check-module-types ~.types-proj-single-sample-face ~[%tests %golden ~.types-proj-single-sample-face %source %jibb] src-573 `typ-573 ~ ~ ~))
3604+ (weld (check ~.types-proj-single-sample-face src-574 `tok-574 `tre-574) (check-module-types ~.types-proj-single-sample-face ~[%tests %golden ~.types-proj-single-sample-face %source %jibb] src-574 `typ-574 ~ ~ ~))
3595++ test-types-proj-single-wrapped
3605++ test-types-proj-single-wrapped
3596− (weld (check ~.types-proj-single-wrapped src-574 `tok-574 `tre-574) (check-module-types ~.types-proj-single-wrapped ~[%tests %golden ~.types-proj-single-wrapped %source %jibb] src-574 `typ-574 ~ ~ ~))
3606+ (weld (check ~.types-proj-single-wrapped src-575 `tok-575 `tre-575) (check-module-types ~.types-proj-single-wrapped ~[%tests %golden ~.types-proj-single-wrapped %source %jibb] src-575 `typ-575 ~ ~ ~))
3597++ test-types-qath-faces
3607++ test-types-qath-faces
3598− (weld (check ~.types-qath-faces src-575 `tok-575 `tre-575) (check-module-types ~.types-qath-faces ~[%tests %golden ~.types-qath-faces %source %jibb] src-575 `typ-575 ~ ~ ~))
3608+ (weld (check ~.types-qath-faces src-576 `tok-576 `tre-576) (check-module-types ~.types-qath-faces ~[%tests %golden ~.types-qath-faces %source %jibb] src-576 `typ-576 ~ ~ ~))
3599++ test-types-qath-holes
3609++ test-types-qath-holes
3600− (weld (check ~.types-qath-holes src-576 `tok-576 `tre-576) (check-module-types ~.types-qath-holes ~[%tests %golden ~.types-qath-holes %source %jibb] src-576 `typ-576 ~ ~ ~))
3610+ (weld (check ~.types-qath-holes src-577 `tok-577 `tre-577) (check-module-types ~.types-qath-holes ~[%tests %golden ~.types-qath-holes %source %jibb] src-577 `typ-577 ~ ~ ~))
3601++ test-types-qath-module-identity
3611++ test-types-qath-module-identity
3602− (weld (weld (check ~.types-qath-module-identity src-577 `tok-577 `tre-577) (check-module-types ~.types-qath-module-identity ~[%tests %golden ~.types-qath-module-identity %source %jibb] src-577 `typ-577 ~ ~ ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-577-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-577-2] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-577-3]])) (check-module-trees ~.types-qath-module-identity `mtre-577 ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-577-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-577-2] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-577-3]]))
3612+ (weld (weld (check ~.types-qath-module-identity src-578 `tok-578 `tre-578) (check-module-types ~.types-qath-module-identity ~[%tests %golden ~.types-qath-module-identity %source %jibb] src-578 `typ-578 ~ ~ ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-578-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-578-2] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-578-3]])) (check-module-trees ~.types-qath-module-identity `mtre-578 ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-578-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-578-2] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-578-3]]))
3603++ test-types-qath-recursive
3613++ test-types-qath-recursive
3604− (weld (check ~.types-qath-recursive src-578 `tok-578 `tre-578) (check-module-types ~.types-qath-recursive ~[%tests %golden ~.types-qath-recursive %source %jibb] src-578 `typ-578 ~ ~ ~))
3614+ (weld (check ~.types-qath-recursive src-579 `tok-579 `tre-579) (check-module-types ~.types-qath-recursive ~[%tests %golden ~.types-qath-recursive %source %jibb] src-579 `typ-579 ~ ~ ~))
3605++ test-types-record-bound-variable
3615++ test-types-record-bound-variable
3606− (weld (check ~.types-record-bound-variable src-579 `tok-579 `tre-579) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-579 `typ-579))
3616+ (weld (check ~.types-record-bound-variable src-580 `tok-580 `tre-580) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-580 `typ-580))
3607++ test-types-record-cast-context
3617++ test-types-record-cast-context
3608− (weld (check ~.types-record-cast-context src-580 `tok-580 `tre-580) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-580 `typ-580 ~ ~ ~))
3618+ (weld (check ~.types-record-cast-context src-581 `tok-581 `tre-581) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-581 `typ-581 ~ ~ ~))
3609++ test-types-record-change
3619++ test-types-record-change
3610− (weld (check ~.types-record-change src-581 `tok-581 `tre-581) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-581 `typ-581 ~ ~ ~))
3620+ (weld (check ~.types-record-change src-582 `tok-582 `tre-582) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-582 `typ-582 ~ ~ ~))
3611++ test-types-record-change-generic
3621++ test-types-record-change-generic
3612− (weld (check ~.types-record-change-generic src-582 `tok-582 `tre-582) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-582 `typ-582 ~ ~ ~))
3622+ (weld (check ~.types-record-change-generic src-583 `tok-583 `tre-583) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-583 `typ-583 ~ ~ ~))
3613++ test-types-record-faces
3623++ test-types-record-faces
3614− (weld (check ~.types-record-faces src-583 `tok-583 `tre-583) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-583 `typ-583))
3624+ (weld (check ~.types-record-faces src-584 `tok-584 `tre-584) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-584 `typ-584))
3615++ test-types-record-field-edit-separate
3625++ test-types-record-field-edit-separate
3616− (weld (check ~.types-record-field-edit-separate src-584 `tok-584 `tre-584) (check-types ~.types-record-field-edit-separate ~[%tests %golden ~.types-record-field-edit-separate %source %jibb] src-584 `typ-584))
3626+ (weld (check ~.types-record-field-edit-separate src-585 `tok-585 `tre-585) (check-types ~.types-record-field-edit-separate ~[%tests %golden ~.types-record-field-edit-separate %source %jibb] src-585 `typ-585))
3617++ test-types-record-field-expr-duplicate
3627++ test-types-record-field-expr-duplicate
3618− (weld (check ~.types-record-field-expr-duplicate src-585 `tok-585 `tre-585) (check-types ~.types-record-field-expr-duplicate ~[%tests %golden ~.types-record-field-expr-duplicate %source %jibb] src-585 `typ-585))
3628+ (weld (check ~.types-record-field-expr-duplicate src-586 `tok-586 `tre-586) (check-types ~.types-record-field-expr-duplicate ~[%tests %golden ~.types-record-field-expr-duplicate %source %jibb] src-586 `typ-586))
3619++ test-types-record-field-expr-separate
3629++ test-types-record-field-expr-separate
3620− (weld (check ~.types-record-field-expr-separate src-586 `tok-586 `tre-586) (check-types ~.types-record-field-expr-separate ~[%tests %golden ~.types-record-field-expr-separate %source %jibb] src-586 `typ-586))
3630+ (weld (check ~.types-record-field-expr-separate src-587 `tok-587 `tre-587) (check-types ~.types-record-field-expr-separate ~[%tests %golden ~.types-record-field-expr-separate %source %jibb] src-587 `typ-587))
3621++ test-types-record-field-module-reachable
3631++ test-types-record-field-module-reachable
3622− (weld (weld (check ~.types-record-field-module-reachable src-587 `tok-587 `tre-587) (check-module-types ~.types-record-field-module-reachable ~[%tests %golden ~.types-record-field-module-reachable %source %jibb] src-587 `typ-587 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-587-1]])) (check-module-trees ~.types-record-field-module-reachable `mtre-587 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-587-1]]))
3632+ (weld (weld (check ~.types-record-field-module-reachable src-588 `tok-588 `tre-588) (check-module-types ~.types-record-field-module-reachable ~[%tests %golden ~.types-record-field-module-reachable %source %jibb] src-588 `typ-588 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-588-1]])) (check-module-trees ~.types-record-field-module-reachable `mtre-588 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-588-1]]))
3623++ test-types-record-field-module-unused
3633++ test-types-record-field-module-unused
3624− (weld (weld (check ~.types-record-field-module-unused src-588 `tok-588 `tre-588) (check-module-types ~.types-record-field-module-unused ~[%tests %golden ~.types-record-field-module-unused %source %jibb] src-588 `typ-588 ~ ~ ~[['/ui/good.jibb' ~[~.ui ~.good ~.jibb] mod-588-1] ['/ui/unused.jibb' ~[~.ui ~.unused ~.jibb] mod-588-2]])) (check-module-trees ~.types-record-field-module-unused `mtre-588 ~[['/ui/good.jibb' ~[~.ui ~.good ~.jibb] mod-588-1] ['/ui/unused.jibb' ~[~.ui ~.unused ~.jibb] mod-588-2]]))
3634+ (weld (weld (check ~.types-record-field-module-unused src-589 `tok-589 `tre-589) (check-module-types ~.types-record-field-module-unused ~[%tests %golden ~.types-record-field-module-unused %source %jibb] src-589 `typ-589 ~ ~ ~[['/ui/good.jibb' ~[~.ui ~.good ~.jibb] mod-589-1] ['/ui/unused.jibb' ~[~.ui ~.unused ~.jibb] mod-589-2]])) (check-module-trees ~.types-record-field-module-unused `mtre-589 ~[['/ui/good.jibb' ~[~.ui ~.good ~.jibb] mod-589-1] ['/ui/unused.jibb' ~[~.ui ~.unused ~.jibb] mod-589-2]]))
3625++ test-types-record-field-nested-mold
3635++ test-types-record-field-nested-mold
3626− (weld (check ~.types-record-field-nested-mold src-589 `tok-589 `tre-589) (check-types ~.types-record-field-nested-mold ~[%tests %golden ~.types-record-field-nested-mold %source %jibb] src-589 `typ-589))
3636+ (weld (check ~.types-record-field-nested-mold src-590 `tok-590 `tre-590) (check-types ~.types-record-field-nested-mold ~[%tests %golden ~.types-record-field-nested-mold %source %jibb] src-590 `typ-590))
3627++ test-types-record-field-outer-inner
3637++ test-types-record-field-outer-inner
3628− (weld (check ~.types-record-field-outer-inner src-590 `tok-590 `tre-590) (check-types ~.types-record-field-outer-inner ~[%tests %golden ~.types-record-field-outer-inner %source %jibb] src-590 `typ-590))
3638+ (weld (check ~.types-record-field-outer-inner src-591 `tok-591 `tre-591) (check-types ~.types-record-field-outer-inner ~[%tests %golden ~.types-record-field-outer-inner %source %jibb] src-591 `typ-591))
3629++ test-types-record-field-sample-duplicate
3639++ test-types-record-field-sample-duplicate
3630− (weld (check ~.types-record-field-sample-duplicate src-591 `tok-591 `tre-591) (check-types ~.types-record-field-sample-duplicate ~[%tests %golden ~.types-record-field-sample-duplicate %source %jibb] src-591 `typ-591))
3640+ (weld (check ~.types-record-field-sample-duplicate src-592 `tok-592 `tre-592) (check-types ~.types-record-field-sample-duplicate ~[%tests %golden ~.types-record-field-sample-duplicate %source %jibb] src-592 `typ-592))
3631++ test-types-record-field-separate-molds
3641++ test-types-record-field-separate-molds
3632− (weld (check ~.types-record-field-separate-molds src-592 `tok-592 `tre-592) (check-types ~.types-record-field-separate-molds ~[%tests %golden ~.types-record-field-separate-molds %source %jibb] src-592 `typ-592))
3642+ (weld (check ~.types-record-field-separate-molds src-593 `tok-593 `tre-593) (check-types ~.types-record-field-separate-molds ~[%tests %golden ~.types-record-field-separate-molds %source %jibb] src-593 `typ-593))
3633++ test-types-record-field-unused-mold
3643++ test-types-record-field-unused-mold
3634− (weld (check ~.types-record-field-unused-mold src-593 `tok-593 `tre-593) (check-types ~.types-record-field-unused-mold ~[%tests %golden ~.types-record-field-unused-mold %source %jibb] src-593 `typ-593))
3644+ (weld (check ~.types-record-field-unused-mold src-594 `tok-594 `tre-594) (check-types ~.types-record-field-unused-mold ~[%tests %golden ~.types-record-field-unused-mold %source %jibb] src-594 `typ-594))
3635++ test-types-record-import
3645++ test-types-record-import
3636− (weld (weld (check ~.types-record-import src-594 `tok-594 `tre-594) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-594 `typ-594 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-594-1]])) (check-module-trees ~.types-record-import `mtre-594 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-594-1]]))
3646+ (weld (weld (check ~.types-record-import src-595 `tok-595 `tre-595) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-595 `typ-595 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-595-1]])) (check-module-trees ~.types-record-import `mtre-595 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-595-1]]))
3637++ test-types-record-local-scheme
3647++ test-types-record-local-scheme
3638− (weld (check ~.types-record-local-scheme src-595 `tok-595 `tre-595) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-595 `typ-595))
3648+ (weld (check ~.types-record-local-scheme src-596 `tok-596 `tre-596) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-596 `typ-596))
3639++ test-types-record-nested
3649++ test-types-record-nested
3640− (weld (check ~.types-record-nested src-596 `tok-596 `tre-596) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-596 `typ-596))
3650+ (weld (check ~.types-record-nested src-597 `tok-597 `tre-597) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-597 `typ-597))
3641++ test-types-record-to-tuple
3651++ test-types-record-to-tuple
3642− (weld (check ~.types-record-to-tuple src-597 `tok-597 `tre-597) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-597 `typ-597))
3652+ (weld (check ~.types-record-to-tuple src-598 `tok-598 `tre-598) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-598 `typ-598))
3643++ test-types-recursion-scc-failures
3653++ test-types-recursion-scc-failures
3644− (weld (check ~.types-recursion-scc-failures src-598 `tok-598 `tre-598) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-598 `typ-598 ~ ~ ~))
3654+ (weld (check ~.types-recursion-scc-failures src-599 `tok-599 `tre-599) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-599 `typ-599 ~ ~ ~))
3645++ test-types-recursion-scc-groups
3655++ test-types-recursion-scc-groups
3646− (weld (check ~.types-recursion-scc-groups src-599 `tok-599 `tre-599) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-599 `typ-599 ~ ~ ~))
3656+ (weld (check ~.types-recursion-scc-groups src-600 `tok-600 `tre-600) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-600 `typ-600 ~ ~ ~))
3647++ test-types-recursion-scc-import
3657++ test-types-recursion-scc-import
3648− (weld (weld (check ~.types-recursion-scc-import src-600 `tok-600 `tre-600) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-600 `typ-600 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-600-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-600 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-600-1]]))
3658+ (weld (weld (check ~.types-recursion-scc-import src-601 `tok-601 `tre-601) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-601 `typ-601 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-601-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-601 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-601-1]]))
3649++ test-types-recursion-scc-import-bad
3659++ test-types-recursion-scc-import-bad
3650− (weld (weld (check ~.types-recursion-scc-import-bad src-601 `tok-601 `tre-601) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-601 `typ-601 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-601-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-601 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-601-1]]))
3660+ (weld (weld (check ~.types-recursion-scc-import-bad src-602 `tok-602 `tre-602) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-602 `typ-602 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-602-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-602 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-602-1]]))
3651++ test-types-recursion-scc-local
3661++ test-types-recursion-scc-local
3652− (weld (check ~.types-recursion-scc-local src-602 `tok-602 `tre-602) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-602 `typ-602 ~ ~ ~))
3662+ (weld (check ~.types-recursion-scc-local src-603 `tok-603 `tre-603) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-603 `typ-603 ~ ~ ~))
3653++ test-types-recursion-scc-order
3663++ test-types-recursion-scc-order
3654− (weld (check ~.types-recursion-scc-order src-603 `tok-603 `tre-603) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-603 `typ-603 ~ ~ ~))
3664+ (weld (check ~.types-recursion-scc-order src-604 `tok-604 `tre-604) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-604 `typ-604 ~ ~ ~))
3655++ test-types-recursion-scc-shadow
3665++ test-types-recursion-scc-shadow
3656− (weld (check ~.types-recursion-scc-shadow src-604 `tok-604 `tre-604) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-604 `typ-604 ~ ~ ~))
3666+ (weld (check ~.types-recursion-scc-shadow src-605 `tok-605 `tre-605) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-605 `typ-605 ~ ~ ~))
3657++ test-types-recursive-branch
3667++ test-types-recursive-branch
3658− (weld (check ~.types-recursive-branch src-605 `tok-605 `tre-605) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-605 `typ-605 ~ ~ ~))
3668+ (weld (check ~.types-recursive-branch src-606 `tok-606 `tre-606) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-606 `typ-606 ~ ~ ~))
3659++ test-types-recursive-gate
3669++ test-types-recursive-gate
3660− (weld (check ~.types-recursive-gate src-606 `tok-606 `tre-606) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-606 `typ-606))
3670+ (weld (check ~.types-recursive-gate src-607 `tok-607 `tre-607) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-607 `typ-607))
3661++ test-types-recursive-sample
3671++ test-types-recursive-sample
3662− (weld (check ~.types-recursive-sample src-607 `tok-607 `tre-607) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-607 `typ-607))
3672+ (weld (check ~.types-recursive-sample src-608 `tok-608 `tre-608) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-608 `typ-608))
3663++ test-types-request-normal
3673++ test-types-request-normal
3664− (weld (weld (check ~.types-request-normal src-608 `tok-608 `tre-608) (check-module-types ~.types-request-normal ~[%tests %golden ~.types-request-normal %source %jibb] src-608 `typ-608 ~ ~[[%full mark-608-1]] ~[['/ui/api/demo.jibb' ~[~.ui ~.api ~.demo ~.jibb] mod-608-1]])) (check-module-trees ~.types-request-normal `mtre-608 ~[['/ui/api/demo.jibb' ~[~.ui ~.api ~.demo ~.jibb] mod-608-1]]))
3674+ (weld (weld (check ~.types-request-normal src-609 `tok-609 `tre-609) (check-module-types ~.types-request-normal ~[%tests %golden ~.types-request-normal %source %jibb] src-609 `typ-609 ~ ~[[%full mark-609-1]] ~[['/ui/api/demo.jibb' ~[~.ui ~.api ~.demo ~.jibb] mod-609-1]])) (check-module-trees ~.types-request-normal `mtre-609 ~[['/ui/api/demo.jibb' ~[~.ui ~.api ~.demo ~.jibb] mod-609-1]]))
3665++ test-types-scope-library-poke
3675++ test-types-scope-library-poke
3666− (weld (check-at ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-609 `tok-609 `tre-609) (check-module-types ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-609 `typ-609 ~ ~ ~))
3676+ (weld (check-at ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-610 `tok-610 `tre-610) (check-module-types ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-610 `typ-610 ~ ~ ~))
3667++ test-types-scope-root-api
3677++ test-types-scope-root-api
3668− (weld (check-at ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-610 `tok-610 `tre-610) (check-module-types ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-610 `typ-610 ~ ~ ~))
3678+ (weld (check-at ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-611 `tok-611 `tre-611) (check-module-types ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-611 `typ-611 ~ ~ ~))
3669++ test-types-scope-store-duplicate
3679++ test-types-scope-store-duplicate
3670− (weld (check-at ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-611 `tok-611 `tre-611) (check-module-types ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-611 `typ-611 ~ ~ ~))
3680+ (weld (check-at ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-612 `tok-612 `tre-612) (check-module-types ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-612 `typ-612 ~ ~ ~))
3671++ test-types-scope-store-shadow
3681++ test-types-scope-store-shadow
3672− (weld (check-at ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-612 `tok-612 `tre-612) (check-module-types ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-612 `typ-612 ~ ~ ~))
3682+ (weld (check-at ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-613 `tok-613 `tre-613) (check-module-types ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-613 `typ-613 ~ ~ ~))
3673++ test-types-single-case-pattern
3683++ test-types-single-case-pattern
3674− (weld (check ~.types-single-case-pattern src-613 `tok-613 `tre-613) (check-module-types ~.types-single-case-pattern ~[%tests %golden ~.types-single-case-pattern %source %jibb] src-613 `typ-613 ~ ~ ~))
3684+ (weld (check ~.types-single-case-pattern src-614 `tok-614 `tre-614) (check-module-types ~.types-single-case-pattern ~[%tests %golden ~.types-single-case-pattern %source %jibb] src-614 `typ-614 ~ ~ ~))
3675++ test-types-string-interpolation
3685++ test-types-string-interpolation
3676− (weld (check ~.types-string-interpolation src-614 `tok-614 `tre-614) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-614 `typ-614 ~ ~ ~))
3686+ (weld (check ~.types-string-interpolation src-615 `tok-615 `tre-615) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-615 `typ-615 ~ ~ ~))
3677++ test-types-tuple-context
3687++ test-types-tuple-context
3678− (weld (check ~.types-tuple-context src-615 `tok-615 `tre-615) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-615 `typ-615 ~ ~ ~))
3688+ (weld (check ~.types-tuple-context src-616 `tok-616 `tre-616) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-616 `typ-616 ~ ~ ~))
3679++ test-types-tuple-context-nested
3689++ test-types-tuple-context-nested
3680− (weld (check ~.types-tuple-context-nested src-616 `tok-616 `tre-616) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-616 `typ-616 ~ ~ ~))
3690+ (weld (check ~.types-tuple-context-nested src-617 `tok-617 `tre-617) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-617 `typ-617 ~ ~ ~))
3681++ test-types-union-alias
3691++ test-types-union-alias
3682− (weld (check ~.types-union-alias src-617 `tok-617 `tre-617) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-617 `typ-617))
3692+ (weld (check ~.types-union-alias src-618 `tok-618 `tre-618) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-618 `typ-618))
3683++ test-types-union-branch-context
3693++ test-types-union-branch-context
3684− (weld (check ~.types-union-branch-context src-618 `tok-618 `tre-618) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-618 `typ-618))
3694+ (weld (check ~.types-union-branch-context src-619 `tok-619 `tre-619) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-619 `typ-619))
3685++ test-types-union-branch-pending
3695++ test-types-union-branch-pending
3686− (weld (check ~.types-union-branch-pending src-619 `tok-619 `tre-619) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-619 `typ-619))
3696+ (weld (check ~.types-union-branch-pending src-620 `tok-620 `tre-620) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-620 `typ-620))
3687++ test-types-union-constructor-shape
3697++ test-types-union-constructor-shape
3688− (weld (check ~.types-union-constructor-shape src-620 `tok-620 `tre-620) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-620 `typ-620))
3698+ (weld (check ~.types-union-constructor-shape src-621 `tok-621 `tre-621) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-621 `typ-621))
3689++ test-types-union-context-flow
3699++ test-types-union-context-flow
3690− (weld (check ~.types-union-context-flow src-621 `tok-621 `tre-621) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-621 `typ-621))
3700+ (weld (check ~.types-union-context-flow src-622 `tok-622 `tre-622) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-622 `typ-622))
3691++ test-types-union-finite
3701++ test-types-union-finite
3692− (weld (check ~.types-union-finite src-622 `tok-622 `tre-622) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-622 `typ-622 ~ ~ ~))
3702+ (weld (check ~.types-union-finite src-623 `tok-623 `tre-623) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-623 `typ-623 ~ ~ ~))
3693++ test-types-union-finite-context
3703++ test-types-union-finite-context
3694− (weld (check ~.types-union-finite-context src-623 `tok-623 `tre-623) (check-module-types ~.types-union-finite-context ~[%tests %golden ~.types-union-finite-context %source %jibb] src-623 `typ-623 ~ ~ ~))
3704+ (weld (check ~.types-union-finite-context src-624 `tok-624 `tre-624) (check-module-types ~.types-union-finite-context ~[%tests %golden ~.types-union-finite-context %source %jibb] src-624 `typ-624 ~ ~ ~))
3695++ test-types-union-finite-generic
3705++ test-types-union-finite-generic
3696− (weld (check ~.types-union-finite-generic src-624 `tok-624 `tre-624) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-624 `typ-624 ~ ~ ~))
3706+ (weld (check ~.types-union-finite-generic src-625 `tok-625 `tre-625) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-625 `typ-625 ~ ~ ~))
3697++ test-types-union-finite-limit
3707++ test-types-union-finite-limit
3698− (weld (check ~.types-union-finite-limit src-625 `tok-625 `tre-625) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-625 `typ-625 ~ ~ ~))
3708+ (weld (check ~.types-union-finite-limit src-626 `tok-626 `tre-626) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-626 `typ-626 ~ ~ ~))
3699++ test-types-union-import
3709++ test-types-union-import
3700− (weld (weld (check ~.types-union-import src-626 `tok-626 `tre-626) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-626 `typ-626 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-626-1]])) (check-module-trees ~.types-union-import `mtre-626 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-626-1]]))
3710+ (weld (weld (check ~.types-union-import src-627 `tok-627 `tre-627) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-627 `typ-627 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-627-1]])) (check-module-trees ~.types-union-import `mtre-627 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-627-1]]))
3701++ test-types-union-local-pending
3711++ test-types-union-local-pending
3702− (weld (check ~.types-union-local-pending src-627 `tok-627 `tre-627) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-627 `typ-627))
3712+ (weld (check ~.types-union-local-pending src-628 `tok-628 `tre-628) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-628 `typ-628))
3703++ test-types-union-nonwing-subject
3713++ test-types-union-nonwing-subject
3704− (weld (check ~.types-union-nonwing-subject src-628 `tok-628 `tre-628) (check-module-types ~.types-union-nonwing-subject ~[%tests %golden ~.types-union-nonwing-subject %source %jibb] src-628 `typ-628 ~ ~ ~))
3714+ (weld (check ~.types-union-nonwing-subject src-629 `tok-629 `tre-629) (check-module-types ~.types-union-nonwing-subject ~[%tests %golden ~.types-union-nonwing-subject %source %jibb] src-629 `typ-629 ~ ~ ~))
3705++ test-types-union-overlap
3715++ test-types-union-overlap
3706− (weld (check ~.types-union-overlap src-629 `tok-629 `tre-629) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-629 `typ-629))
3716+ (weld (check ~.types-union-overlap src-630 `tok-630 `tre-630) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-630 `typ-630))
3707++ test-types-union-overlap-nested
3717++ test-types-union-overlap-nested
3708− (weld (check ~.types-union-overlap-nested src-630 `tok-630 `tre-630) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-630 `typ-630))
3718+ (weld (check ~.types-union-overlap-nested src-631 `tok-631 `tre-631) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-631 `typ-631))
3709++ test-types-union-pattern-result-context
3719++ test-types-union-pattern-result-context
3710− (weld (check ~.types-union-pattern-result-context src-631 `tok-631 `tre-631) (check-module-types ~.types-union-pattern-result-context ~[%tests %golden ~.types-union-pattern-result-context %source %jibb] src-631 `typ-631 ~ ~ ~))
3720+ (weld (check ~.types-union-pattern-result-context src-632 `tok-632 `tre-632) (check-module-types ~.types-union-pattern-result-context ~[%tests %golden ~.types-union-pattern-result-context %source %jibb] src-632 `typ-632 ~ ~ ~))
3711++ test-types-union-pattern-result-controls
3721++ test-types-union-pattern-result-controls
3712− (weld (check ~.types-union-pattern-result-controls src-632 `tok-632 `tre-632) (check-module-types ~.types-union-pattern-result-controls ~[%tests %golden ~.types-union-pattern-result-controls %source %jibb] src-632 `typ-632 ~ ~ ~))
3722+ (weld (check ~.types-union-pattern-result-controls src-633 `tok-633 `tre-633) (check-module-types ~.types-union-pattern-result-controls ~[%tests %golden ~.types-union-pattern-result-controls %source %jibb] src-633 `typ-633 ~ ~ ~))
3713++ test-types-union-patterns
3723++ test-types-union-patterns
3714− (weld (check ~.types-union-patterns src-633 `tok-633 `tre-633) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-633 `typ-633 ~ ~ ~))
3724+ (weld (check ~.types-union-patterns src-634 `tok-634 `tre-634) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-634 `typ-634 ~ ~ ~))
3715++ test-types-union-patterns-generic
3725++ test-types-union-patterns-generic
3716− (weld (check ~.types-union-patterns-generic src-634 `tok-634 `tre-634) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-634 `typ-634 ~ ~ ~))
3726+ (weld (check ~.types-union-patterns-generic src-635 `tok-635 `tre-635) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-635 `typ-635 ~ ~ ~))
3717++ test-types-union-patterns-import
3727++ test-types-union-patterns-import
3718− (weld (weld (check ~.types-union-patterns-import src-635 `tok-635 `tre-635) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-635 `typ-635 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-635-1]])) (check-module-trees ~.types-union-patterns-import `mtre-635 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-635-1]]))
3728+ (weld (weld (check ~.types-union-patterns-import src-636 `tok-636 `tre-636) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-636 `typ-636 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-636-1]])) (check-module-trees ~.types-union-patterns-import `mtre-636 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-636-1]]))
3719++ test-types-union-phantom-generic
3729++ test-types-union-phantom-generic
3720− (weld (check ~.types-union-phantom-generic src-636 `tok-636 `tre-636) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-636 `typ-636))
3730+ (weld (check ~.types-union-phantom-generic src-637 `tok-637 `tre-637) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-637 `typ-637))
3721++ test-types-union-polymorphic-identity
3731++ test-types-union-polymorphic-identity
3722− (weld (weld (check ~.types-union-polymorphic-identity src-637 `tok-637 `tre-637) (check-module-types ~.types-union-polymorphic-identity ~[%tests %golden ~.types-union-polymorphic-identity %source %jibb] src-637 `typ-637 ~ ~ ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-637-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-637-2]])) (check-module-trees ~.types-union-polymorphic-identity `mtre-637 ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-637-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-637-2]]))
3732+ (weld (weld (check ~.types-union-polymorphic-identity src-638 `tok-638 `tre-638) (check-module-types ~.types-union-polymorphic-identity ~[%tests %golden ~.types-union-polymorphic-identity %source %jibb] src-638 `typ-638 ~ ~ ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-638-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-638-2]])) (check-module-trees ~.types-union-polymorphic-identity `mtre-638 ~[['/ui/one.jibb' ~[~.ui ~.one ~.jibb] mod-638-1] ['/ui/two.jibb' ~[~.ui ~.two ~.jibb] mod-638-2]]))
3723++ test-types-union-print-cross-namespace
3733++ test-types-union-print-cross-namespace
3724− (weld (weld (check ~.types-union-print-cross-namespace src-638 `tok-638 `tre-638) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-638 `typ-638 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-638-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-638 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-638-1]]))
3734+ (weld (weld (check ~.types-union-print-cross-namespace src-639 `tok-639 `tre-639) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-639 `typ-639 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-639-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-639 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-639-1]]))
3725++ test-types-union-print-distinct
3735++ test-types-union-print-distinct
3726− (weld (weld (check ~.types-union-print-distinct src-639 `tok-639 `tre-639) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-639 `typ-639 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-639-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-639-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-639-3]])) (check-module-trees ~.types-union-print-distinct `mtre-639 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-639-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-639-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-639-3]]))
3736+ (weld (weld (check ~.types-union-print-distinct src-640 `tok-640 `tre-640) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-640 `typ-640 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-640-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-640-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-640-3]])) (check-module-trees ~.types-union-print-distinct `mtre-640 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-640-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-640-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-640-3]]))
3727++ test-types-union-print-escape
3737++ test-types-union-print-escape
3728− (weld (check ~.types-union-print-escape src-640 `tok-640 `tre-640) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-640 `typ-640))
3738+ (weld (check ~.types-union-print-escape src-641 `tok-641 `tre-641) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-641 `typ-641))
3729++ test-types-union-print-local
3739++ test-types-union-print-local
3730− (weld (check ~.types-union-print-local src-641 `tok-641 `tre-641) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-641 `typ-641))
3740+ (weld (check ~.types-union-print-local src-642 `tok-642 `tre-642) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-642 `typ-642))
3731++ test-types-union-print-nested
3741++ test-types-union-print-nested
3732− (weld (check ~.types-union-print-nested src-642 `tok-642 `tre-642) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-642 `typ-642))
3742+ (weld (check ~.types-union-print-nested src-643 `tok-643 `tre-643) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-643 `typ-643))
3733++ test-types-union-print-same-origin
3743++ test-types-union-print-same-origin
3734− (weld (weld (check ~.types-union-print-same-origin src-643 `tok-643 `tre-643) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-643 `typ-643 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-643-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-643 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-643-1]]))
3744+ (weld (weld (check ~.types-union-print-same-origin src-644 `tok-644 `tre-644) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-644 `typ-644 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-644-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-644 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-644-1]]))
3735++ test-types-union-print-transitive
3745++ test-types-union-print-transitive
3736− (weld (weld (check ~.types-union-print-transitive src-644 `tok-644 `tre-644) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-644 `typ-644 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-644-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-644-2]])) (check-module-trees ~.types-union-print-transitive `mtre-644 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-644-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-644-2]]))
3746+ (weld (weld (check ~.types-union-print-transitive src-645 `tok-645 `tre-645) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-645 `typ-645 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-645-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-645-2]])) (check-module-trees ~.types-union-print-transitive `mtre-645 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-645-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-645-2]]))
3737++ test-types-union-runtime-equality
3747++ test-types-union-runtime-equality
3738− (weld (check ~.types-union-runtime-equality src-645 `tok-645 `tre-645) (check-types ~.types-union-runtime-equality ~[%tests %golden ~.types-union-runtime-equality %source %jibb] src-645 `typ-645))
3748+ (weld (check ~.types-union-runtime-equality src-646 `tok-646 `tre-646) (check-types ~.types-union-runtime-equality ~[%tests %golden ~.types-union-runtime-equality %source %jibb] src-646 `typ-646))
3739++ test-types-union-singleton
3749++ test-types-union-singleton
3740− (weld (check ~.types-union-singleton src-646 `tok-646 `tre-646) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-646 `typ-646))
3750+ (weld (check ~.types-union-singleton src-647 `tok-647 `tre-647) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-647 `typ-647))
3751+++ test-types-union-source-alias
3752+ (weld (check ~.types-union-source-alias src-648 `tok-648 `tre-648) (check-types ~.types-union-source-alias ~[%tests %golden ~.types-union-source-alias %source %jibb] src-648 `typ-648))
3741++ test-types-union-tag-atoms
3753++ test-types-union-tag-atoms
3742− (weld (check ~.types-union-tag-atoms src-647 `tok-647 `tre-647) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-647 `typ-647))
3754+ (weld (check ~.types-union-tag-atoms src-649 `tok-649 `tre-649) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-649 `typ-649))
3743++ test-types-union-tags
3755++ test-types-union-tags
3744− (weld (check ~.types-union-tags src-648 `tok-648 `tre-648) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-648 `typ-648))
3756+ (weld (check ~.types-union-tags src-650 `tok-650 `tre-650) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-650 `typ-650))
3745++ test-types-union-unresolved
3757++ test-types-union-unresolved
3746− (weld (check ~.types-union-unresolved src-649 `tok-649 `tre-649) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-649 `typ-649))
3758+ (weld (check ~.types-union-unresolved src-651 `tok-651 `tre-651) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-651 `typ-651))
3747++ test-types-union-unresolved-flow
3759++ test-types-union-unresolved-flow
3748− (weld (check ~.types-union-unresolved-flow src-650 `tok-650 `tre-650) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-650 `typ-650))
3760+ (weld (check ~.types-union-unresolved-flow src-652 `tok-652 `tre-652) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-652 `typ-652))
3749++ test-types-unit-construction
3761++ test-types-unit-construction
3750− (weld (check ~.types-unit-construction src-651 `tok-651 `tre-651) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-651 `typ-651 ~ ~ ~))
3762+ (weld (check ~.types-unit-construction src-653 `tok-653 `tre-653) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-653 `typ-653 ~ ~ ~))
3751++ test-types-unit-context
3763++ test-types-unit-context
3752− (weld (check ~.types-unit-context src-652 `tok-652 `tre-652) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-652 `typ-652 ~ ~ ~))
3764+ (weld (check ~.types-unit-context src-654 `tok-654 `tre-654) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-654 `typ-654 ~ ~ ~))
3753++ test-types-unit-patterns
3765++ test-types-unit-patterns
3754− (weld (check ~.types-unit-patterns src-653 `tok-653 `tre-653) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-653 `typ-653))
3766+ (weld (check ~.types-unit-patterns src-655 `tok-655 `tre-655) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-655 `typ-655))
3755++ test-types-value-cycle-shadow
3767++ test-types-value-cycle-shadow
3756− (weld (check ~.types-value-cycle-shadow src-654 `tok-654 `tre-654) (check-module-types ~.types-value-cycle-shadow ~[%tests %golden ~.types-value-cycle-shadow %source %jibb] src-654 `typ-654 ~ ~ ~))
3768+ (weld (check ~.types-value-cycle-shadow src-656 `tok-656 `tre-656) (check-module-types ~.types-value-cycle-shadow ~[%tests %golden ~.types-value-cycle-shadow %source %jibb] src-656 `typ-656 ~ ~ ~))
3757++ test-types-value-cycle-unsupported
3769++ test-types-value-cycle-unsupported
3758− (weld (check ~.types-value-cycle-unsupported src-655 `tok-655 `tre-655) (check-module-types ~.types-value-cycle-unsupported ~[%tests %golden ~.types-value-cycle-unsupported %source %jibb] src-655 `typ-655 ~ ~ ~))
3770+ (weld (check ~.types-value-cycle-unsupported src-657 `tok-657 `tre-657) (check-module-types ~.types-value-cycle-unsupported ~[%tests %golden ~.types-value-cycle-unsupported %source %jibb] src-657 `typ-657 ~ ~ ~))
3759++ test-types-value-cycles
3771++ test-types-value-cycles
3760− (weld (check ~.types-value-cycles src-656 `tok-656 `tre-656) (check-module-types ~.types-value-cycles ~[%tests %golden ~.types-value-cycles %source %jibb] src-656 `typ-656 ~ ~ ~))
3772+ (weld (check ~.types-value-cycles src-658 `tok-658 `tre-658) (check-module-types ~.types-value-cycles ~[%tests %golden ~.types-value-cycles %source %jibb] src-658 `typ-658 ~ ~ ~))
3761::
3773::
3762:: +check: run golden:jibb on a case and compare both outputs
3774:: +check: run golden:jibb on a case and compare both outputs
3763::
3775::
tests/type-union-source/direct-source.txtnew file+3
@@ -0,0 +1,3 @@
1++$ choice
2+ [%a @t]
3+ [%b @p]
tests/type-union-source/duplicate-params.txtnew file+4
@@ -0,0 +1,4 @@
1++$ tagged |$ [A A] [%wrapped A]
2++$ choice
3+ (tagged @t @p)
4+ [%other @p]
tests/type-union-source/duplicate.txtnew file+5
@@ -0,0 +1,5 @@
1++$ tagged |$ [A] [%wrapped A]
2++$ tagged |$ [A] [%changed A]
3++$ choice
4+ (tagged @t)
5+ [%other @p]
tests/type-union-source/expected.txtnew file+36
@@ -0,0 +1,36 @@
1+source generic distinct: ok
2+actual inference preserves pending and scoped state: ok
3+actual inference rejects structural state: ok
4+later source failure returns no partial state: ok
5+actual local owner shadow rejected: ok
6+full generic-alias module checks: ok
7+same-head module is not published: ok
8+mixed-zero module is not published: ok
9+wrong-arity module is not published: ok
10+partial report uses source proof: ok
11+partial report preserves shadow diagnostic: ok
12+recognized recursive tree causes conservative decline: ok
13+mixed partial report remains source-only: ok
14+source exact fuel 18: ok
15+source 17 fuel declines: ok
16+same head declines: ok
17+equal noun cross spelling declines: ok
18+nested application declines: ok
19+duplicate owner declines: ok
20+wrong arity declines: ok
21+duplicate parameters decline: ok
22+hidden body reference declines: ok
23+qualified import declines: ok
24+direct cases use existing proof: ok
25+wide alias body declines: ok
26+undeclared body parameter declines: ok
27+empty state accepted: ok
28+simple outer generic accepted: ok
29+structured outer argument declined: ok
30+structured substitution declined: ok
31+pending hole declined: ok
32+recursive index declined: ok
33+deferred transaction declined: ok
34+pending obligation declined: ok
35+256 state entries accepted: ok
36+257 state entries declined: ok
tests/type-union-source/free-source.txtnew file+4
@@ -0,0 +1,4 @@
1++$ tagged |$ [A] [%wrapped B]
2++$ choice
3+ (tagged @t)
4+ [%other @p]
tests/type-union-source/good.txtnew file+9
@@ -0,0 +1,9 @@
1++$ tagged |$ [A] [%wrapped A]
2++$ choice
3+ (tagged @t)
4+ [%other @p]
5+++ id |= x=choice x
6++$ poly |$ [A B]
7+ (tagged A)
8+ [%second B]
9+++ typed |= x=(poly @t @p) x
tests/type-union-source/hidden-ref.txtnew file+5
@@ -0,0 +1,5 @@
1++$ helper @t
2++$ tagged |$ [A] [%wrapped helper]
3++$ choice
4+ (tagged @t)
5+ [%other @p]
tests/type-union-source/late-source.txtnew file+4
@@ -0,0 +1,4 @@
1++$ tagged |$ [A] [%wrapped A]
2++$ choice
3+ (tagged A)
4+ [%other B]
tests/type-union-source/mixed-source.txtnew file+8
@@ -0,0 +1,8 @@
1++$ element |$ [M]
2+ [%text value=@t]
3+ [%node event=$-(@t M) children=(list (element M))]
4++$ tagged |$ [A] [%wrapped A]
5++$ choice
6+ (tagged @t)
7+ [%other @p]
8+++ id |= x=choice x
tests/type-union-source/nested.txtnew file+4
@@ -0,0 +1,4 @@
1++$ tagged |$ [A] [%wrapped A]
2++$ choice
3+ (tagged (tagged @t))
4+ [%other @p]
tests/type-union-source/qualified.txtnew file+4
@@ -0,0 +1,4 @@
1+/= lib /ui/lib
2++$ choice
3+ (tagged.lib @t)
4+ [%other @p]
tests/type-union-source/same.txtnew file+5
@@ -0,0 +1,5 @@
1++$ tagged |$ [A] [%wrapped A]
2++$ bad
3+ (tagged @t)
4+ [%wrapped @p]
5+++ id |= x=bad x
tests/type-union-source/shadow-source.txtnew file+7
@@ -0,0 +1,7 @@
1++$ tagged |$ [A] [%wrapped A]
2+++ bad |= x=@t
3+ +$ tagged |$ [A] [%other A]
4+ +$ choice
5+ (tagged @t)
6+ [%other @p]
7+ x
tests/type-union-source/wide-source.txtnew file+4
@@ -0,0 +1,4 @@
1++$ tagged |$ [A] [%wrapped [@t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t @t]]
2++$ choice
3+ (tagged @t)
4+ [%other @p]
tests/type-union-source/wrong.txtnew file+5
@@ -0,0 +1,5 @@
1++$ tagged |$ [A] [%wrapped A]
2++$ bad
3+ (tagged @t @p)
4+ [%other @p]
5+++ id |= x=bad x
tests/type-union-source/zero.txtnew file+5
@@ -0,0 +1,5 @@
1++$ zero |$ [A] [%.y A]
2++$ bad
3+ (zero @t)
4+ [%$ @p]
5+++ id |= x=bad x
tools/testdata/ship-selftest+7
@@ -314,6 +314,7 @@ def generator_checks(tmp):
314 'tests/lib/jibb-generic-construction.hoon',
314 'tests/lib/jibb-generic-construction.hoon',
315 'tests/lib/jibb-generic-pattern.hoon',
315 'tests/lib/jibb-generic-pattern.hoon',
316 'tests/lib/jibb-empty.hoon',
316 'tests/lib/jibb-empty.hoon',
317+ 'tests/lib/jibb-union-source.hoon',
317 'tests/lib/jibb-api-evidence.hoon',
318 'tests/lib/jibb-api-evidence.hoon',
318 'tests/lib/jibb-ask-guards.hoon',
319 'tests/lib/jibb-ask-guards.hoon',
319 'tests/lib/jibb-request-guards.hoon',
320 'tests/lib/jibb-request-guards.hoon',
@@ -350,6 +351,12 @@ def generator_checks(tmp):
350 'good', 'overlap', 'dead', 'missing', 'standard-good',
351 'good', 'overlap', 'dead', 'missing', 'standard-good',
351 'list-dead', 'unit-dead', 'late-cap', 'list-live', 'list-open',
352 'list-dead', 'unit-dead', 'late-cap', 'list-live', 'list-open',
352 'face-source', 'expected')} <= set(normal.files))
353 'face-source', 'expected')} <= set(normal.files))
354+ check('generic union source fixtures and golden are assembled',
355+ {f'tests/type-union-source/{name}.txt' for name in (
356+ 'good', 'same', 'zero', 'nested', 'duplicate', 'wrong',
357+ 'duplicate-params', 'hidden-ref', 'qualified', 'direct-source',
358+ 'wide-source', 'free-source', 'late-source', 'shadow-source',
359+ 'mixed-source', 'expected')} <= set(normal.files))
353 check('deferred transaction and resolver sources are assembled',
360 check('deferred transaction and resolver sources are assembled',
354 {'tests/type-deferred/nested-src.txt', 'tests/type-deferred/principal-src.txt',
361 {'tests/type-deferred/nested-src.txt', 'tests/type-deferred/principal-src.txt',
355 'tests/type-deferred/expected.txt', 'tests/type-deferred-resolver/good.txt',
362 'tests/type-deferred/expected.txt', 'tests/type-deferred-resolver/good.txt',
tools/testdata/succ-hoon-reference.hoonnew file+9
@@ -0,0 +1,9 @@
1+:: Compare a Hoon translation of the Jibb successor with Hoon's 2n arm.
2+:: This does not execute Jibb, lower code or verify jet recognition.
3+^- @t
4+=/ next |= x=@ (add x 1)
5+=/ values=(list @) ~[0 1 2 31 255 256 65.535 65.536 4.294.967.295 18.446.744.073.709.551.615]
6+|- ^- @t
7+?~ values 'Hoon successor reference: 10 comparisons passed'
8+?. =((next i.values) (succ i.values)) 'BAD successor mismatch'
9+$(values t.values)
tools/type-union-source-testnew file+55
@@ -0,0 +1,55 @@
1+#!/usr/bin/env python3
2+"""Check source-backed bounded generic-union proofs under eval."""
3+from pathlib import Path
4+import argparse
5+import difflib
6+import subprocess
7+import sys
8+import tempfile
9+
10+root = Path(__file__).resolve().parent.parent
11+parser = argparse.ArgumentParser(description=__doc__)
12+parser.add_argument('--lib', default=str(root / 'jibb-dev/lib/jibb.hoon'))
13+parser.add_argument('--update', action='store_true')
14+args = parser.parse_args()
15+fixture = root / 'tests/type-union-source'
16+source = (root / 'tests/lib/jibb-union-source.hoon').read_text()
17+source = source[source.index('\n|%\n') + 1:]
18+names = ['good', 'same', 'zero', 'nested', 'duplicate', 'wrong', 'duplicate-params', 'hidden-ref', 'qualified', 'direct-source', 'wide-source', 'free-source', 'late-source', 'shadow-source', 'mixed-source']
19+cords = [item for name in names for item in ('--cord', f'{name}-text={fixture / (name + ".txt")}')]
20+cords += ['--cord', f'prelude={root / "jibb-dev/lib/jibb/prelude.jibb"}',
21+ '--cord', f'internal={root / "jibb-dev/lib/jibb/internal.jibb"}']
22+if not args.update:
23+ cords += ['--cord', f'expected-text={fixture / "expected.txt"}']
24+bindings = ''.join(f'=/ {name}=wain (to-wain:format {name}-text)\n' for name in names)
25+program = ('=/ jibb .\n=/ real-prelude=@t prelude\n'
26+ '=/ real-internal=@t internal\n' + bindings +
27+ ('=/ expected=wain ~\n' if args.update else '=/ expected=wain (to-wain:format expected-text)\n') +
28+ '=/ suite\n' + source +
29+ '\n=/ output=@t (source-output:suite prelude internal ' +
30+ ' '.join(name + '-text' for name in names) + ')\n' +
31+ ('output\n' if args.update else
32+ "=/ actual-test=tang test-union-source:suite\n?~ actual-test output\n'BAD ship test arm'\n"))
33+with tempfile.TemporaryDirectory(prefix='jibb-empty-') as tmp:
34+ path = Path(tmp) / 'test.hoon'
35+ path.write_text(program)
36+ result = subprocess.run([str(root / 'tools/hoon'), '--lib', args.lib, '--raw',
37+ '-f', str(path), *cords], stdout=subprocess.PIPE)
38+if result.returncode:
39+ sys.exit(result.returncode)
40+if any(line.startswith(b'BAD ') or line.endswith(b': BAD') for line in result.stdout.splitlines()):
41+ sys.stderr.write('generic-union guard assertion failed:\n')
42+ sys.stderr.buffer.write(result.stdout)
43+ sys.exit(1)
44+expected_path = fixture / 'expected.txt'
45+if args.update:
46+ expected_path.write_bytes(result.stdout)
47+else:
48+ expected = expected_path.read_bytes()
49+ if result.stdout != expected:
50+ sys.stderr.writelines(difflib.unified_diff(
51+ expected.decode().splitlines(keepends=True),
52+ result.stdout.decode().splitlines(keepends=True),
53+ fromfile='expected.txt', tofile='actual'))
54+ sys.exit(1)
55+print('source-backed generic-union guards passed')