on master help sign in
Infer faced variables and imported collections
56a899fiko
docs/compiler.md+2−2
@@ -56,13 +56,13 @@ The core is split into chapters, `+| %name`, in this order:
56| `%span-check` | `+check-spans`, which `+golden` runs on every tree, and `+check-spans-test` |
56| `%span-check` | `+check-spans`, which `+golden` runs on every tree, and `+check-spans-test` |
57| `%type-inference` | The initial inference fragment and its unification helpers; not yet a module type checker |
57| `%type-inference` | The initial inference fragment and its unification helpers; not yet a module type checker |
58
58
59−The inference fragment supports fixed auras, unrestricted `@`, one-way widening into it and toward aura-family ancestors, generic variables and gates, faced and unfaced cells, cell sample binders, known record field reads, a two-binder cell pattern, a complete two-arm loobean branch, closed local mold aliases and acyclic forward value references. It instantiates generalized top-level definitions when they are used. Acyclic local value definitions can refer forward and generalize variables that are free of their enclosing environment; captured variables and explicit capitals remain shared. Acyclic simple local mold aliases can also refer forward, and are scoped to the body, not its gate's sample. Nonrecursive generic aliases of supported molds can be applied at exact arity, including locally and through library interfaces; their parameters are lexical. Closed, provably disjoint nonrecursive unions and tagged single-case molds support contextual term values and `|=%tag` constructors; unresolved tags remain pending. Nonrecursive top-level generic union molds with provably disjoint cases also support contextual tags and constructors at exact arity; their arguments are retained through generalization and supported library interfaces. Nonrecursive generic aliases can reorder, repeat or omit parameters while preserving a supported union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do recursive local groups and recursive molds. A variable-dependent record-face constraint in a generic union payload fails closed. It can infer and generalize atom constraints arising from explicit capitals or bare sample binders, preserve those constraints through aliases, instantiate them independently, and print multiple constraints. Unresolved decimal variables default to `@ud` for inferred types without gates; defaulting inside gate types and other constraint cases remain incomplete. It does not yet check a module, complete imports, general patterns, general deferred constraints, recursive molds, dependency cycles or most errors with both conflicting excerpts. Definite cast and call mismatches, incompatible branches and overlapping union cases report both sites and excerpts. Concrete branch results can join at an explicitly present parent aura or `@`. Some known tuple and record positions acquire matching faces, while variable-dependent face merges, general branch tag context and ambiguous call-result propagation remain unsupported; function compatibility involving nested `@` and variable-dependent joins remain unsupported except for equal types. The current dependency pass can take quadratic time on long forward chains; the milestone's speed target remains unverified. A separate conservative pass reports unions whose cases are provably disjoint or overlapping and leaves other cases unresolved; it does not claim the mold is checked. Unsupported forms are reported as such, and the partial output says the module has not been checked.
59+The inference fragment supports fixed auras, unrestricted `@`, one-way widening into it and toward aura-family ancestors, generic variables and gates, faced and unfaced cells, cell sample binders, known record field reads, a two-binder cell pattern, a complete two-arm loobean branch, closed local mold aliases and acyclic forward value references. It instantiates generalized top-level definitions when they are used. Acyclic local value definitions can refer forward and generalize variables that are free of their enclosing environment; captured variables and explicit capitals remain shared. Acyclic simple local mold aliases can also refer forward, and are scoped to the body, not its gate's sample. Nonrecursive generic aliases of supported molds can be applied at exact arity, including locally and through library interfaces; their parameters are lexical. Closed, provably disjoint nonrecursive unions and tagged single-case molds support contextual term values and `|=%tag` constructors; unresolved tags remain pending. Nonrecursive top-level generic union molds with provably disjoint cases also support contextual tags and constructors at exact arity; their arguments are retained through generalization and supported library interfaces. Nonrecursive generic aliases can reorder, repeat or omit parameters while preserving a supported union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do recursive local groups and recursive molds. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. A differing-variable face constraint remains unsupported. It can infer and generalize atom constraints arising from explicit capitals or bare sample binders, preserve those constraints through aliases, instantiate them independently, and print multiple constraints. Unresolved decimal variables default to `@ud` for inferred types without gates; defaulting inside gate types and other constraint cases remain incomplete. It does not yet check a module, complete imports, general patterns, general deferred constraints, recursive molds, dependency cycles or most errors with both conflicting excerpts. Definite cast and call mismatches, incompatible branches and overlapping union cases report both sites and excerpts. Concrete branch results can join at an explicitly present parent aura or `@`. Some known tuple and record positions acquire matching faces; other variable-dependent face merges, general branch tag context and ambiguous call-result propagation remain unsupported; function compatibility involving nested `@` and variable-dependent joins remain unsupported except for equal types. The current dependency pass can take quadratic time on long forward chains; the milestone's speed target remains unverified. A separate conservative pass reports unions whose cases are provably disjoint or overlapping and leaves other cases unresolved; it does not claim the mold is checked. Unsupported forms are reported as such, and the partial output says the module has not been checked.
60
60
61For supported closed unions, the type printer keeps the union’s origin separate from its displayed name. It prints an in-scope name such as `msg` or `msg.lib`, including in records and gates; an accessible imported nongeneric alias may name a transitive union. A nongeneric body-local union that escapes its scope, or an origin without an accessible name, prints its cases separated by spaces, parenthesized when nested. That case-list form is print-only. A supported generic union prints its name and all arguments, including unused arguments; when its name is unavailable, the partial printer reports that limitation instead of dropping its arguments. Two faces for the same imported origin remain compatible; compatibility between distinct union origins, including in gate types, remains unsupported. Some comparisons of generic union arguments also remain unsupported rather than deciding equality or mismatch. The Hoon bridge also translates some imported unnamed unions into this representation; unsupported cases remain errors.
61For supported closed unions, the type printer keeps the union’s origin separate from its displayed name. It prints an in-scope name such as `msg` or `msg.lib`, including in records and gates; an accessible imported nongeneric alias may name a transitive union. A nongeneric body-local union that escapes its scope, or an origin without an accessible name, prints its cases separated by spaces, parenthesized when nested. That case-list form is print-only. A supported generic union prints its name and all arguments, including unused arguments; when its name is unavailable, the partial printer reports that limitation instead of dropping its arguments. Two faces for the same imported origin remain compatible; compatibility between distinct union origins, including in gate types, remains unsupported. Some comparisons of generic union arguments also remain unsupported rather than deciding equality or mismatch. The Hoon bridge also translates some imported unnamed unions into this representation; unsupported cases remain errors.
62
62
63A known closed union can also provide context to each arm of a complete loobean branch in a cast or a call with a known union sample. Nested branches and transparent groups work; a mismatch reports the expected union and the offending arm. General patterns and context through bodies with local definitions remain unsupported, and unrelated unresolved tags stay pending.
63A known closed union can also provide context to each arm of a complete loobean branch in a cast or a call with a known union sample. Nested branches and transparent groups work; a mismatch reports the expected union and the offending arm. General patterns and context through bodies with local definitions remain unsupported, and unrelated unresolved tags stay pending.
64
64
65−The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles named recursion, nested map, set, queue, list, unit, jar and jug arguments, direct ordered maps, and direct `$^` unions whose source branches can be proved disjoint. It also reads ordered map fields in records when the map arguments are syntactically fixed atom molds and other fields are fixed atom molds or standard collections of static atom molds. Collection names must not be shadowed. The reader can also import a mark door sample, removing its outer sample face and validating its build subject. The reader checks explicit Hoon `$%`, `$?` and `$^` unions against the Grammar’s disjointness rule (doc question 22). It re-evaluates statically recognizable source branches before Hoon can collapse them, checks materialized fork cases, and rejects shapes it cannot prove disjoint. Static records may also have verified standard-collection and `path` siblings. One direct explicit union argument in a standard list, set, map or unit is accepted when its call wrapper and collection provenance are verified and its static cases are pairwise disjoint. A synthetic regression checks that forged wrapper subjects, samples and tails are rejected. Other collection-union forms, nested ordered maps, general source-level disjointness and complete integration with the checker remain unfinished. `+golden-types-imports` can consume fixed-aura atoms, valid term singletons, nested faced or unfaced cells, and unions of supported, pairwise-disjoint cases from caller-supplied reader results for declared `/-` imports; `+golden-types-with-marks` accepts the same shapes for declared marks. The caller must pass unchanged results from the source-aware reader: the bridge validates the supplied graph but cannot detect source cases Hoon collapsed before that graph was built. Other forms remain unsupported. Its disjointness proof is conservative and can reject a valid union it cannot prove disjoint. Collection recognition requires the originating `/sur` core. The reader validates direct zuse subjects and Ford subjects consisting of faced imported cores and a validated tail, checking imported cores transitively; it rejects shadowed names, inconsistent core subjects and other subject shapes. For a recursive reference, the reader matches the exact Hoon hold against named arms in validated cores, including transitive Ford imports; it rejects missing, unlabelled or ambiguous origins. Its fixtures include three real Tlon files; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output. `tools/type-import-test` and `tools/type-mark-test` compare bridge reports under eval and on the ship. `tools/clay-fixtures` also passes Clay-built `/sur` molds and mark samples through the Clay-built importer and partial checker.
65+The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles named recursion, nested map, set, queue, list, unit, jar and jug arguments, direct ordered maps, and direct `$^` unions whose source branches can be proved disjoint. It also reads ordered map fields in records when the map arguments are syntactically fixed atom molds and other fields are fixed atom molds or standard collections of static atom molds. Collection names must not be shadowed. The reader can also import a mark door sample, removing its outer sample face and validating its build subject. The reader checks explicit Hoon `$%`, `$?` and `$^` unions against the Grammar’s disjointness rule (doc question 22). It re-evaluates statically recognizable source branches before Hoon can collapse them, checks materialized fork cases, and rejects shapes it cannot prove disjoint. Static records may also have verified standard-collection and `path` siblings. One direct explicit union argument in a standard list, set, map or unit is accepted when its call wrapper and collection provenance are verified and its static cases are pairwise disjoint. A synthetic regression checks that forged wrapper subjects, samples and tails are rejected. Other collection-union forms, nested ordered maps, general source-level disjointness and complete integration with the checker remain unfinished. `+golden-types-imports` can consume fixed-aura atoms, valid term singletons, nested faced or unfaced cells, unions of supported, pairwise-disjoint cases, and opaque standard collections with supported arguments from caller-supplied reader results for declared `/-` imports; `+golden-types-with-marks` accepts the same shapes for declared marks. The caller must pass unchanged results from the source-aware reader: the bridge validates the supplied graph but cannot detect source cases Hoon collapsed before that graph was built. The opaque collection types retain their names and arguments for identity, unification and printing; Jibb-written collection molds and their prelude operations are not yet connected. Other forms remain unsupported. Its disjointness proof is conservative and can reject a valid union it cannot prove disjoint. Collection recognition requires the originating `/sur` core. The reader validates direct zuse subjects and Ford subjects consisting of faced imported cores and a validated tail, checking imported cores transitively; it rejects shadowed names, inconsistent core subjects and other subject shapes. For a recursive reference, the reader matches the exact Hoon hold against named arms in validated cores, including transitive Ford imports; it rejects missing, unlabelled or ambiguous origins. Its fixtures include three real Tlon files; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output. `tools/type-import-test` and `tools/type-mark-test` compare bridge reports under eval and on the ship. `tools/clay-fixtures` also passes Clay-built `/sur` molds and mark samples through the Clay-built importer and partial checker.
66
66
67Callers that have a `/sur` core and a name can use `+read-named`: it checks for a locally declared arm before asking Hoon to evaluate the mold, and reports evaluation failures with the final Hoon trace line. `+read-mold-in` remains available when the caller already has the selected type. The checker currently treats a failed import as unsupported rather than rendering the importer's error.
67Callers that have a `/sur` core and a name can use `+read-named`: it checks for a locally declared arm before asking Hoon to evaluate the mold, and reports evaluation failures with the final Hoon trace line. `+read-mold-in` remains available when the caller already has the selected type. The checker currently treats a failed import as unsupported rather than rendering the importer's error.
68
68
docs/status.md+7−6
@@ -19,7 +19,7 @@ On 2026-10-30, @iko decided that Jibb drops `$?`, so a `+$` takes a union's case
19
19
20## Milestone 2: in progress
20## Milestone 2: in progress
21
21
22−The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; partial bridges pass selected Hoon atoms, term singletons, nested faced or unfaced cells and supported disjoint unions from `/sur` molds and marks into inference. The bridge trusts unchanged results from the source-aware reader; a materialized type graph alone cannot reveal cases Hoon already collapsed. The reader handles mark samples, recursive molds whose origins can be verified through Ford imports, nested collections, direct ordered maps, certain ordered-map fields, direct `$^` unions whose cases can be proved disjoint, and one verified explicit union argument in a list, set, map or unit. Ambiguous recursive origins fail closed; recognizable explicit unions are checked from source before Hoon can collapse their cases (doc question 22), while other nested unions, nested ordered maps, general union disjointness and complete import integration remain unfinished. The partial checker resolves a subset of ordinary library imports in dependency order using supplied Jibb sources and the current prelude names, caches completed interfaces per run, and detects missing sources and cycles. It does not yet check API or kind semantics, and the prelude inventory is incomplete. The inference fragment supports unrestricted `@`, selected one-way widenings including aura-family ancestors, generalized atom constraints arising from explicit capitals or bare sample binders, acyclic local value definitions with captures, simple and nonrecursive generic mold aliases, selected faced record casts and field reads, and contextual tags and constructors for closed disjoint unions, including direct nonrecursive generic unions and propagation through complete loobean branches in casts and known union-sample calls. Variable-dependent face merges remain unsupported. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do variable-dependent record-face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive local groups and molds, general branch tag context, other constraint cases and defaulting inside gate types still need work. Collection recognition checks the originating core and fails closed on shadows or unsupported Ford subject shapes; a wrapper regression also rejects forged subjects, samples and tails. Its golden fixtures include three real Tlon files. A Clay test passes a Ford-built nested union through the reader into partial inference. The partial prelude includes `murn`, `join`, `snip` and `rear`, parsed but still awaiting checker and backend validation, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
22+The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; partial bridges pass selected Hoon atoms, term singletons, nested faced or unfaced cells, supported disjoint unions and opaque standard collections from `/sur` molds and marks into inference. Collections retain their names and supported arguments for printing and unification; nested supported union arguments are retained too. The bridge trusts unchanged results from the source-aware reader; a materialized type graph alone cannot reveal cases Hoon already collapsed. Jibb-written collection molds, prelude collection operations and recursive references are not yet connected to this representation; malformed names and arities fail closed. The reader handles mark samples, recursive molds whose origins can be verified through Ford imports, nested collections, direct ordered maps, certain ordered-map fields, direct `$^` unions whose cases can be proved disjoint, and one verified explicit union argument in a list, set, map or unit. Ambiguous recursive origins fail closed; recognizable explicit unions are checked from source before Hoon can collapse their cases (doc question 22), while other nested unions, nested ordered maps, general union disjointness and complete import integration remain unfinished. The partial checker resolves a subset of ordinary library imports in dependency order using supplied Jibb sources and the current prelude names, caches completed interfaces per run, and detects missing sources and cycles. It does not yet check API or kind semantics, and the prelude inventory is incomplete. The inference fragment supports unrestricted `@`, selected one-way widenings including aura-family ancestors, generalized atom constraints arising from explicit capitals or bare sample binders, acyclic local value definitions with captures, simple and nonrecursive generic mold aliases, selected faced record casts and field reads, and contextual tags and constructors for closed disjoint unions, including direct nonrecursive generic unions and propagation through complete loobean branches in casts and known union-sample calls. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. Other variable-dependent face merges remain unsupported. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do differing-variable face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive local groups and molds, general branch tag context, other constraint cases and defaulting inside gate types still need work. Collection recognition checks the originating core and fails closed on shadows or unsupported Ford subject shapes; a wrapper regression also rejects forged subjects, samples and tails. Its golden fixtures include three real Tlon files. A Clay test passes a Ford-built nested union through the reader into partial inference. The partial prelude includes `murn`, `join`, `snip` and `rear`, parsed but still awaiting checker and backend validation, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
23
23
24## Milestone 1: parser and mark
24## Milestone 1: parser and mark
25
25
@@ -37,8 +37,8 @@ What the plan asks for, and where it is:
37
37
38Besides the plan's list:
38Besides the plan's list:
39
39
40−- 489 golden cases: 273 that parse and 216 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
40+- 490 golden cases: 274 that parse and 216 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
41−- The 489-case corpus passed under `urbit eval` in 56.0 s. The fake ship passed all 494 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 31.1 s for sync and 23.6 s for tests. The importer golden compares 141 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.
41+- The 490-case corpus passed under `urbit eval` in 55.8 s. The fake ship passed all 495 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 26.9 s for sync and 24.1 s for tests. The importer golden compares 141 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.
42- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
42- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
43- Two independent audits before 7c739b7, one of which compared the library with a reference parser written in Python from the doc over about 19,000 generated programs. Before ab797a9, a second Python parser, written from the decisions, agreed with the library on 8,000 generated programs and 900 hand-written probes.
43- Two independent audits before 7c739b7, one of which compared the library with a reference parser written in Python from the doc over about 19,000 generated programs. Before ab797a9, a second Python parser, written from the decisions, agreed with the library on 8,000 generated programs and 900 hand-written probes.
44- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
44- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
@@ -72,14 +72,15 @@ Besides the plan's list:
72| 5c73614 | 2026-10-30 | Print supported named and escaping union types |
72| 5c73614 | 2026-10-30 | Print supported named and escaping union types |
73| 0070584 | 2026-10-30 | Propagate union context through loobean branches, read selected unions in Hoon collections, and add `flit` |
73| 0070584 | 2026-10-30 | Propagate union context through loobean branches, read selected unions in Hoon collections, and add `flit` |
74| 250564c | 2026-10-30 | Infer selected named generic unions, test Hoon collection wrappers, and add list helpers |
74| 250564c | 2026-10-30 | Infer selected named generic unions, test Hoon collection wrappers, and add list helpers |
75−| This change | 2026-10-30 | Bridge selected Hoon unions into partial inference and support generic union aliases |
75+| e95ef8f | 2026-10-30 | Bridge selected Hoon unions into partial inference and support generic union aliases |
76+| This change | 2026-10-30 | Infer matching variable types in faced fields and bridge opaque Hoon collections |
76
77
77## Checking it
78## Checking it
78
79
79On a machine set up as [development.md](development.md) says:
80On a machine set up as [development.md](development.md) says:
80
81
81```
82```
82−tools/golden # 489 cases under urbit eval
83+tools/golden # 490 cases under urbit eval
83tools/importer-test # the Hoon importer fixture projection
84tools/importer-test # the Hoon importer fixture projection
84tools/type-import-test # the importer/checker bridge fixture
85tools/type-import-test # the importer/checker bridge fixture
85tools/type-mark-test # the mark/checker bridge fixture
86tools/type-mark-test # the mark/checker bridge fixture
@@ -89,7 +90,7 @@ tools/testdata/selftest # the tools themselves
89tools/doc-blocks docs/spec # the doc's examples are golden cases
90tools/doc-blocks docs/spec # the doc's examples are golden cases
90tools/ship start
91tools/ship start
91tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
92tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
92−tools/ship test # the same 489 cases as -test arms on the ship
93+tools/ship test # the same 490 cases as -test arms on the ship
93tools/testdata/ship-selftest
94tools/testdata/ship-selftest
94tools/ship check-commit # |commit stores .jibb files
95tools/ship check-commit # |commit stores .jibb files
95tools/clay-fixtures # example /sur files and marks build through Clay
96tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+82
@@ -4610,6 +4610,7 @@
4610 [%flag ~]
4610 [%flag ~]
4611 [%tag id=@ud literal=lit constructor=?]
4611 [%tag id=@ud literal=lit constructor=?]
4612 [%const literal=lit]
4612 [%const literal=lit]
4613+ [%collection name=term args=(list itype)]
4613 [%union cases=(list itype) origin=(unit [at=path name=term]) label=(unit @t) args=(list itype)]
4614 [%union cases=(list itype) origin=(unit [at=path name=term]) label=(unit @t) args=(list itype)]
4614 [%face name=term body=itype]
4615 [%face name=term body=itype]
4615 [%fn sample=itype product=itype]
4616 [%fn sample=itype product=itype]
@@ -4661,6 +4662,7 @@
4661 %tag =(n id.t)
4662 %tag =(n id.t)
4662 %const |
4663 %const |
4663 %union |((lien cases.t |=(c=itype (itype-occurs n c sub))) (lien args.t |=(c=itype (itype-occurs n c sub))))
4664 %union |((lien cases.t |=(c=itype (itype-occurs n c sub))) (lien args.t |=(c=itype (itype-occurs n c sub))))
4665+ %collection (lien args.t |=(c=itype (itype-occurs n c sub)))
4664 %face $(t body.t)
4666 %face $(t body.t)
4665 %fn |($(t sample.t) $(t product.t))
4667 %fn |($(t sample.t) $(t product.t))
4666 %cell |($(t hed.t) $(t tal.t))
4668 %cell |($(t hed.t) $(t tal.t))
@@ -4683,6 +4685,9 @@
4683 ?: &(?=(~ args.a) ?=(~ args.b)) ?:(=(cases.a cases.b) `sub ~)
4685 ?: &(?=(~ args.a) ?=(~ args.b)) ?:(=(cases.a cases.b) `sub ~)
4684 ?~ origin.a ~
4686 ?~ origin.a ~
4685 (itype-unify-args args.a args.b sub)
4687 (itype-unify-args args.a args.b sub)
4688+ ?: &(?=(%collection -.a) ?=(%collection -.b))
4689+ ?. =(name.a name.b) ~
4690+ (itype-unify-args args.a args.b sub)
4686 ?: ?=(%var -.a)
4691 ?: ?=(%var -.a)
4687 ?: (itype-occurs id.a b sub) ~
4692 ?: (itype-occurs id.a b sub) ~
4688 `[[id.a b] sub]
4693 `[[id.a b] sub]
@@ -4750,6 +4755,7 @@
4750 %tag |
4755 %tag |
4751 %const |
4756 %const |
4752 %union |((lien cases.t |=(c=itype (itype-has-any-atom c sub))) (lien args.t |=(c=itype (itype-has-any-atom c sub))))
4757 %union |((lien cases.t |=(c=itype (itype-has-any-atom c sub))) (lien args.t |=(c=itype (itype-has-any-atom c sub))))
4758+ %collection (lien args.t |=(c=itype (itype-has-any-atom c sub)))
4753 %face $(t body.t)
4759 %face $(t body.t)
4754 %fn |($(t sample.t) $(t product.t))
4760 %fn |($(t sample.t) $(t product.t))
4755 %cell |($(t hed.t) $(t tal.t))
4761 %cell |($(t hed.t) $(t tal.t))
@@ -4773,6 +4779,14 @@
4773:: Related auras in a structural unification need a common-type rule;
4779:: Related auras in a structural unification need a common-type rule;
4774:: until that rule is implemented, report an unknown rather than error.
4780:: until that rule is implemented, report an unknown rather than error.
4775::
4781::
4782+++ itype-family-related-collection-args
4783+ |= [as=(list itype) bs=(list itype) sub=isub]
4784+ ^- ?
4785+ ?~ as |
4786+ ?~ bs |
4787+ ?: (itype-family-related i.as i.bs sub) &
4788+ $(as t.as, bs t.bs)
4789+::
4776++ itype-family-related
4790++ itype-family-related
4777 |= [a=itype b=itype sub=isub]
4791 |= [a=itype b=itype sub=isub]
4778 ^- ?
4792 ^- ?
@@ -4781,6 +4795,9 @@
4781 ?: &(?=(%atom -.a) ?=(%atom -.b))
4795 ?: &(?=(%atom -.a) ?=(%atom -.b))
4782 ?. !=(aura.a aura.b) |
4796 ?. !=(aura.a aura.b) |
4783 |((aura-prefix aura.a aura.b) (aura-prefix aura.b aura.a))
4797 |((aura-prefix aura.a aura.b) (aura-prefix aura.b aura.a))
4798+ ?: &(?=(%collection -.a) ?=(%collection -.b))
4799+ ?. =(name.a name.b) |
4800+ (itype-family-related-collection-args args.a args.b sub)
4784 ?: &(?=(%face -.a) ?=(%face -.b))
4801 ?: &(?=(%face -.a) ?=(%face -.b))
4785 ?. =(name.a name.b) |
4802 ?. =(name.a name.b) |
4786 $(a body.a, b body.b)
4803 $(a body.a, b body.b)
@@ -4807,6 +4824,7 @@
4807 %tag &
4824 %tag &
4808 %const &
4825 %const &
4809 %union |((lien cases.typ |=(c=itype (itype-has-fixed-atom c))) (lien args.typ |=(c=itype (itype-has-fixed-atom c))))
4826 %union |((lien cases.typ |=(c=itype (itype-has-fixed-atom c))) (lien args.typ |=(c=itype (itype-has-fixed-atom c))))
4827+ %collection (lien args.typ |=(c=itype (itype-has-fixed-atom c)))
4810 %face $(typ body.typ)
4828 %face $(typ body.typ)
4811 %fn |($(typ sample.typ) $(typ product.typ))
4829 %fn |($(typ sample.typ) $(typ product.typ))
4812 %cell |($(typ hed.typ) $(typ tal.typ))
4830 %cell |($(typ hed.typ) $(typ tal.typ))
@@ -4834,17 +4852,29 @@
4834 ^- ?
4852 ^- ?
4835 =. t (itype-walk t sub)
4853 =. t (itype-walk t sub)
4836 ?- -.t
4854 ?- -.t
4855+ %collection (lien args.t |=(c=itype (itype-has-face c sub)))
4837 %face &
4856 %face &
4838 %cell |($(t hed.t) $(t tal.t))
4857 %cell |($(t hed.t) $(t tal.t))
4839 %fn |($(t sample.t) $(t product.t))
4858 %fn |($(t sample.t) $(t product.t))
4840 * |
4859 * |
4841 ==
4860 ==
4842::
4861::
4862+++ itype-face-asym-collection-args
4863+ |= [as=(list itype) bs=(list itype) sub=isub]
4864+ ^- ?
4865+ ?~ as |
4866+ ?~ bs |
4867+ ?: (itype-face-asym i.as i.bs sub) &
4868+ $(as t.as, bs t.bs)
4869+::
4843++ itype-face-asym
4870++ itype-face-asym
4844 |= [a=itype b=itype sub=isub]
4871 |= [a=itype b=itype sub=isub]
4845 ^- ?
4872 ^- ?
4846 =. a (itype-walk a sub)
4873 =. a (itype-walk a sub)
4847 =. b (itype-walk b sub)
4874 =. b (itype-walk b sub)
4875+ ?: &(?=(%collection -.a) ?=(%collection -.b))
4876+ ?. =(name.a name.b) |
4877+ (itype-face-asym-collection-args args.a args.b sub)
4848 ?: &(?=(%face -.a) ?=(%face -.b)) $(a body.a, b body.b)
4878 ?: &(?=(%face -.a) ?=(%face -.b)) $(a body.a, b body.b)
4849 ?: ?=(%face -.a) !|(?=(%var -.b) ?=(%avar -.b) ?=(%nvar -.b))
4879 ?: ?=(%face -.a) !|(?=(%var -.b) ?=(%avar -.b) ?=(%nvar -.b))
4850 ?: ?=(%face -.b) !|(?=(%var -.a) ?=(%avar -.a) ?=(%nvar -.a))
4880 ?: ?=(%face -.b) !|(?=(%var -.a) ?=(%avar -.a) ?=(%nvar -.a))
@@ -4878,6 +4908,7 @@
4878 %var &
4908 %var &
4879 %cell &
4909 %cell &
4880 %union &
4910 %union &
4911+ %collection &
4881 %face $(t body.t)
4912 %face $(t body.t)
4882 %fn |($(t sample.t) $(t product.t))
4913 %fn |($(t sample.t) $(t product.t))
4883 * |
4914 * |
@@ -4898,6 +4929,7 @@
4898 ^- ?
4929 ^- ?
4899 ?- -.t
4930 ?- -.t
4900 %tag &
4931 %tag &
4932+ %collection (lien args.t |=(c=itype (itype-has-tag c)))
4901 %face $(t body.t)
4933 %face $(t body.t)
4902 %fn |($(t sample.t) $(t product.t))
4934 %fn |($(t sample.t) $(t product.t))
4903 %cell |($(t hed.t) $(t tal.t))
4935 %cell |($(t hed.t) $(t tal.t))
@@ -4910,6 +4942,7 @@
4910 ^- ?
4942 ^- ?
4911 ?- -.t
4943 ?- -.t
4912 %union &
4944 %union &
4945+ %collection (lien args.t |=(c=itype (itype-has-union c)))
4913 %face $(t body.t)
4946 %face $(t body.t)
4914 %fn |($(t sample.t) $(t product.t))
4947 %fn |($(t sample.t) $(t product.t))
4915 %cell |($(t hed.t) $(t tal.t))
4948 %cell |($(t hed.t) $(t tal.t))
@@ -4927,6 +4960,7 @@
4927 %union
4960 %union
4928 ?: &(?=(~ label.t) ?=(^ args.t)) &
4961 ?: &(?=(~ label.t) ?=(^ args.t)) &
4929 (lien (weld args.t cases.t) |=(c=itype (itype-has-hidden-generic c)))
4962 (lien (weld args.t cases.t) |=(c=itype (itype-has-hidden-generic c)))
4963+ %collection (lien args.t |=(c=itype (itype-has-hidden-generic c)))
4930 %face $(t body.t)
4964 %face $(t body.t)
4931 %fn |($(t sample.t) $(t product.t))
4965 %fn |($(t sample.t) $(t product.t))
4932 %cell |($(t hed.t) $(t tal.t))
4966 %cell |($(t hed.t) $(t tal.t))
@@ -5054,6 +5088,15 @@
5054 =/ first=ifit $(actual hed.actual, expected hed.expected)
5088 =/ first=ifit $(actual hed.actual, expected hed.expected)
5055 ?. ?=(%ok -.first) first
5089 ?. ?=(%ok -.first) first
5056 $(actual tal.actual, expected tal.expected, sub sub.first, next next.first)
5090 $(actual tal.actual, expected tal.expected, sub sub.first, next next.first)
5091+ :: A field may add a face to an occurrence of the very same type
5092+ :: variable. Binding that variable to a face around itself would fail
5093+ :: the occurs check, but its underlying type has already matched.
5094+ ?: &(?=(%var -.actual) ?=(%face -.expected) =(actual (itype-walk body.expected sub)))
5095+ [%ok sub next]
5096+ :: Differing variables and faces need propagation that is not yet
5097+ :: represented. Binding one to the face can create a false mismatch.
5098+ ?: &(?=(%var -.actual) ?=(%face -.expected)) [%unknown ~]
5099+ ?: &(?=(%face -.actual) ?=(%var -.expected)) [%unknown ~]
5057 ?: &(?=(%var -.actual) (itype-has-any-atom expected sub))
5100 ?: &(?=(%var -.actual) (itype-has-any-atom expected sub))
5058 [%unknown ~]
5101 [%unknown ~]
5059 ?: |(?=(%var -.actual) ?=(%var -.expected))
5102 ?: |(?=(%var -.actual) ?=(%var -.expected))
@@ -5102,6 +5145,23 @@
5102 ["a shared type variable should reject incompatible arguments" problems]
5145 ["a shared type variable should reject incompatible arguments" problems]
5103 =? problems ?=(~ (itype-unify same fine ~))
5146 =? problems ?=(~ (itype-unify same fine ~))
5104 ["a shared type variable should accept equal arguments" problems]
5147 ["a shared type variable should accept equal arguments" problems]
5148+ =/ list-a=itype [%collection %list ~[a]]
5149+ =/ list-t=itype [%collection %list ~[txt]]
5150+ =/ list-n=itype [%collection %list ~[num]]
5151+ =? problems ?=(^ (itype-unify a list-a ~))
5152+ ["occurs check should look through collection arguments" problems]
5153+ =? problems !=((itype-vars list-a) ~[0])
5154+ ["generalization should see collection argument variables" problems]
5155+ =? problems !=((itype-rename list-a ~[[0 num]]) list-n)
5156+ ["instantiation should rename collection argument variables" problems]
5157+ =? problems ?=(^ (itype-unify list-t list-n ~))
5158+ ["collection arguments with different auras should conflict" problems]
5159+ =? problems ?=(^ (itype-unify list-t [%collection %unit ~[txt]] ~))
5160+ ["different collection names should conflict" problems]
5161+ =? problems !(itype-family-related list-t [%collection %list ~[[%atom 'tD']]] ~)
5162+ ["collection arguments should preserve aura-family uncertainty" problems]
5163+ =? problems !(itype-face-asym [%collection %list ~[[%face %x txt]]] list-t ~)
5164+ ["collection arguments should preserve face uncertainty" problems]
5105 problems
5165 problems
5106::
5166::
5107:: The expression inference below is deliberately a fragment: bindings,
5167:: The expression inference below is deliberately a fragment: bindings,
@@ -5140,6 +5200,7 @@
5140 |= [t=itype sub=isub]
5200 |= [t=itype sub=isub]
5141 ^- itype
5201 ^- itype
5142 =. t (itype-walk t sub)
5202 =. t (itype-walk t sub)
5203+ ?: ?=(%collection -.t) [%collection name.t (turn args.t |=(c=itype (itype-normalize c sub)))]
5143 ?: ?=(%union -.t)
5204 ?: ?=(%union -.t)
5144 [%union (turn cases.t |=(c=itype (itype-normalize c sub))) origin.t label.t (turn args.t |=(c=itype (itype-normalize c sub)))]
5205 [%union (turn cases.t |=(c=itype (itype-normalize c sub))) origin.t label.t (turn args.t |=(c=itype (itype-normalize c sub)))]
5145 ?: ?=(%face -.t)
5206 ?: ?=(%face -.t)
@@ -5161,6 +5222,7 @@
5161 ?- -.t
5222 ?- -.t
5162 %fn &
5223 %fn &
5163 %cell |($(t hed.t) $(t tal.t))
5224 %cell |($(t hed.t) $(t tal.t))
5225+ %collection (lien args.t |=(c=itype (itype-has-gate c)))
5164 %face $(t body.t)
5226 %face $(t body.t)
5165 %union (lien cases.t |=(c=itype (itype-has-gate c)))
5227 %union (lien cases.t |=(c=itype (itype-has-gate c)))
5166 %tag |
5228 %tag |
@@ -5179,6 +5241,7 @@
5179 ?: (itype-has-gate t) t
5241 ?: (itype-has-gate t) t
5180 ?- -.t
5242 ?- -.t
5181 %nvar [%atom %ud]
5243 %nvar [%atom %ud]
5244+ %collection [%collection name.t (turn args.t |=(c=itype (default-decimals c)))]
5182 %face [%face name.t $(t body.t)]
5245 %face [%face name.t $(t body.t)]
5183 %cell [%cell $(t hed.t) $(t tal.t)]
5246 %cell [%cell $(t hed.t) $(t tal.t)]
5184 * t
5247 * t
@@ -5197,6 +5260,7 @@
5197 %tag ~
5260 %tag ~
5198 %const ~
5261 %const ~
5199 %union (zing (turn (weld args.t cases.t) |=(c=itype (itype-vars c))))
5262 %union (zing (turn (weld args.t cases.t) |=(c=itype (itype-vars c))))
5263+ %collection (zing (turn args.t |=(c=itype (itype-vars c))))
5200 %face $(t body.t)
5264 %face $(t body.t)
5201 %fn (weld $(t sample.t) $(t product.t))
5265 %fn (weld $(t sample.t) $(t product.t))
5202 %cell (weld $(t hed.t) $(t tal.t))
5266 %cell (weld $(t hed.t) $(t tal.t))
@@ -5233,6 +5297,7 @@
5233 %tag t
5297 %tag t
5234 %const t
5298 %const t
5235 %union [%union (turn cases.t |=(c=itype (itype-rename c ren))) origin.t label.t (turn args.t |=(c=itype (itype-rename c ren)))]
5299 %union [%union (turn cases.t |=(c=itype (itype-rename c ren))) origin.t label.t (turn args.t |=(c=itype (itype-rename c ren)))]
5300+ %collection [%collection name.t (turn args.t |=(c=itype (itype-rename c ren)))]
5236 %face [%face name.t $(t body.t)]
5301 %face [%face name.t $(t body.t)]
5237 %fn [%fn $(t sample.t) $(t product.t)]
5302 %fn [%fn $(t sample.t) $(t product.t)]
5238 %cell [%cell $(t hed.t) $(t tal.t)]
5303 %cell [%cell $(t hed.t) $(t tal.t)]
@@ -5254,6 +5319,7 @@
5254 %tag |
5319 %tag |
5255 %const |
5320 %const |
5256 %union |((lien cases.t |=(c=itype (itype-var-is-atom n c))) (lien args.t |=(c=itype (itype-var-is-atom n c))))
5321 %union |((lien cases.t |=(c=itype (itype-var-is-atom n c))) (lien args.t |=(c=itype (itype-var-is-atom n c))))
5322+ %collection (lien args.t |=(c=itype (itype-var-is-atom n c)))
5257 %face $(t body.t)
5323 %face $(t body.t)
5258 %fn |($(t sample.t) $(t product.t))
5324 %fn |($(t sample.t) $(t product.t))
5259 %cell |($(t hed.t) $(t tal.t))
5325 %cell |($(t hed.t) $(t tal.t))
@@ -5345,6 +5411,18 @@
5345 =/ aura=@ta (@ta +<.node)
5411 =/ aura=@ta (@ta +<.node)
5346 ?. |(?=(?(%u %ud %ux %uv %t %ta %tas %p %da %dr) aura) =('tD' aura)) ~
5412 ?. |(?=(?(%u %ud %ux %uv %t %ta %tas %p %da %dr) aura) =('tD' aura)) ~
5347 `[%atom aura]
5413 `[%atom aura]
5414+ %apply
5415+ ?. ?=([%apply @ *] node) ~
5416+ =/ name=term (@tas +<.node)
5417+ =/ arity=@ud
5418+ ?: |(=(%list name) =(%unit name) =(%set name) =(%qeu name)) 1
5419+ ?: |(=(%map name) =(%mop name) =(%jar name) =(%jug name)) 2
5420+ 0
5421+ ?: =(arity 0) ~
5422+ =/ args=(unit (list itype)) (import-to-itypes +>.node)
5423+ ?~ args ~
5424+ ?. =(arity (lent u.args)) ~
5425+ `[%collection name u.args]
5348 %fork
5426 %fork
5349 =/ cases=(unit (list itype)) (import-to-itypes +.node)
5427 =/ cases=(unit (list itype)) (import-to-itypes +.node)
5350 ?~ cases ~
5428 ?~ cases ~
@@ -5484,6 +5562,7 @@
5484 ?~ alias ~
5562 ?~ alias ~
5485 `(crip "{(trip u.alias)}.{(trip face)}")
5563 `(crip "{(trip u.alias)}.{(trip face)}")
5486 [%union (turn cases.t |=(c=itype (itype-in-import c iface face))) origin.t label (turn args.t |=(c=itype (itype-in-import c iface face)))]
5564 [%union (turn cases.t |=(c=itype (itype-in-import c iface face))) origin.t label (turn args.t |=(c=itype (itype-in-import c iface face)))]
5565+ %collection [%collection name.t (turn args.t |=(c=itype (itype-in-import c iface face)))]
5487 %face [%face name.t $(t body.t)]
5566 %face [%face name.t $(t body.t)]
5488 %fn [%fn $(t sample.t) $(t product.t)]
5567 %fn [%fn $(t sample.t) $(t product.t)]
5489 %cell [%cell $(t hed.t) $(t tal.t)]
5568 %cell [%cell $(t hed.t) $(t tal.t)]
@@ -6140,6 +6219,7 @@
6140 ?~ label.t (show-itype-cases cases.t sub)
6219 ?~ label.t (show-itype-cases cases.t sub)
6141 ?~ args.t (trip u.label.t)
6220 ?~ args.t (trip u.label.t)
6142 "({(trip u.label.t)} {(show-itype-cases args.t sub)})"
6221 "({(trip u.label.t)} {(show-itype-cases args.t sub)})"
6222+ %collection "({(trip name.t)} {(show-itype-cases args.t sub)})"
6143 %face "[{(trip name.t)}={(show-itype-context body.t sub)}]"
6223 %face "[{(trip name.t)}={(show-itype-context body.t sub)}]"
6144 %fn "$-({(show-itype-context sample.t sub)} {(show-itype-context product.t sub)})"
6224 %fn "$-({(show-itype-context sample.t sub)} {(show-itype-context product.t sub)})"
6145 %cell "[{(show-itype-item hed.t sub)} {(show-itype-item tal.t sub)}]"
6225 %cell "[{(show-itype-item hed.t sub)} {(show-itype-item tal.t sub)}]"
@@ -6182,6 +6262,7 @@
6182 %tag |
6262 %tag |
6183 %const |
6263 %const |
6184 %union |((lien cases.typ |=(c=itype (itype-has-nvar c))) (lien args.typ |=(c=itype (itype-has-nvar c))))
6264 %union |((lien cases.typ |=(c=itype (itype-has-nvar c))) (lien args.typ |=(c=itype (itype-has-nvar c))))
6265+ %collection (lien args.typ |=(c=itype (itype-has-nvar c)))
6185 %face $(typ body.typ)
6266 %face $(typ body.typ)
6186 %fn |($(typ sample.typ) $(typ product.typ))
6267 %fn |($(typ sample.typ) $(typ product.typ))
6187 %cell |($(typ hed.typ) $(typ tal.typ))
6268 %cell |($(typ hed.typ) $(typ tal.typ))
@@ -6258,6 +6339,7 @@
6258 %tag |
6339 %tag |
6259 %const |
6340 %const |
6260 %union |((lien cases.t |=(c=itype (has-atom-var n c))) (lien args.t |=(c=itype (has-atom-var n c))))
6341 %union |((lien cases.t |=(c=itype (has-atom-var n c))) (lien args.t |=(c=itype (has-atom-var n c))))
6342+ %collection (lien args.t |=(c=itype (has-atom-var n c)))
6261 %face $(t body.t)
6343 %face $(t body.t)
6262 %fn |($(t sample.t) $(t product.t))
6344 %fn |($(t sample.t) $(t product.t))
6263 %cell |($(t hed.t) $(t tal.t))
6345 %cell |($(t hed.t) $(t tal.t))
tests/clay-fixtures/ford-nested-union-bridge-expected.txt+1−1
@@ -1 +1 @@
1−'partial inference; module not checked\0a++ value: $-([id=@ud value=([a=@ud b=@t] @ud)] ([a=@ud b=@t] @ud))'
1+'partial inference; module not checked\0a++ value: $-([id=@ud value=([a=@ud b=@t] @ud)] ([a=@ud b=@t] @ud))\0a++ values: $-([title=@t values=(list @ud)] (list @ud))'
tests/clay-fixtures/ford-nested-union-bridge.txt+3−2
@@ -6,6 +6,7 @@
6=/ jibb=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/lib/jibb/hoon)
6=/ jibb=vase .^(vase %ca /[(scot %p our.bowl)]/my-app/[(scot %da now)]/lib/jibb/hoon)
7=/ read-gate=vase (slap reader (ream 'read-named'))
7=/ read-gate=vase (slap reader (ream 'read-named'))
8=/ result=vase (slym read-gate [%import-fixture %nested -.src])
8=/ result=vase (slym read-gate [%import-fixture %nested -.src])
9+=/ sample-result=vase (slym read-gate [%import-fixture %sample -.src])
9=/ check-gate=vase (slap jibb (ream 'golden-types-imports'))
10=/ check-gate=vase (slap jibb (ream 'golden-types-imports'))
10−=/ text=@t '/- import-fixture\0a++ value |= x=nested.import-fixture value.x\0a'
11+=/ text=@t '/- import-fixture\0a++ value |= x=nested.import-fixture value.x\0a++ values |= x=sample.import-fixture values.x\0a'
11−(pure:m (slym check-gate [/ui/test/jibb text ~[[%import-fixture %nested +.result]]]))
12+(pure:m (slym check-gate [/ui/test/jibb text ~[[%import-fixture %nested +.result] [%import-fixture %sample +.sample-result]]]))
tests/golden/types-generic-face-inference/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Molds: "Faces are part of record types"; unnamed positions can take faces but two different explicit faces don't unify.
2+tests: A generic value fits a faced field with the same type variable, including union payloads and nested or repeated fields. Explicitly mismatched faces remain errors and differing-variable face propagation remains unsupported.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-generic-face-inference/source.jibbnew file+8
@@ -0,0 +1,8 @@
1++$ choice |$ [A B]
2+ [%one value=A]
3+ [%two value=B]
4+++ make |= x=A ^- (choice A B) [%one x]
5+++ record |= x=A ^- [first=A second=A] [x x]
6+++ nested |= x=A ^- [outer=[first=A second=A] rest=A] [[x x] x]
7+++ mismatch |= x=[left=@t rest=@ud] ^- [right=@t rest=@ud] x
8+++ uncertain |= x=A ^- [first=B rest=@t] [x "hi"]
tests/golden/types-generic-face-inference/tokens.txtnew file+134
@@ -0,0 +1,134 @@
1+1:1 glyph +$
2+1:4 name choice
3+1:11 glyph |$
4+1:14 glyph [
5+1:15 tight tvar A
6+1:17 tvar B
7+1:18 tight glyph ]
8+2:3 INDENT
9+2:3 glyph [
10+2:4 tight lit %one
11+2:9 name value
12+2:14 tight glyph =
13+2:15 tight tvar A
14+2:16 tight glyph ]
15+3:3 NEWLINE
16+3:3 glyph [
17+3:4 tight lit %two
18+3:9 name value
19+3:14 tight glyph =
20+3:15 tight tvar B
21+3:16 tight glyph ]
22+4:1 DEDENT
23+4:1 NEWLINE
24+4:1 glyph ++
25+4:4 name make
26+4:9 glyph |=
27+4:12 name x
28+4:13 tight glyph =
29+4:14 tight tvar A
30+4:16 glyph ^-
31+4:19 glyph (
32+4:20 tight name choice
33+4:27 tvar A
34+4:29 tvar B
35+4:30 tight glyph )
36+4:32 glyph [
37+4:33 tight lit %one
38+4:38 name x
39+4:39 tight glyph ]
40+5:1 NEWLINE
41+5:1 glyph ++
42+5:4 name record
43+5:11 glyph |=
44+5:14 name x
45+5:15 tight glyph =
46+5:16 tight tvar A
47+5:18 glyph ^-
48+5:21 glyph [
49+5:22 tight name first
50+5:27 tight glyph =
51+5:28 tight tvar A
52+5:30 name second
53+5:36 tight glyph =
54+5:37 tight tvar A
55+5:38 tight glyph ]
56+5:40 glyph [
57+5:41 tight name x
58+5:43 name x
59+5:44 tight glyph ]
60+6:1 NEWLINE
61+6:1 glyph ++
62+6:4 name nested
63+6:11 glyph |=
64+6:14 name x
65+6:15 tight glyph =
66+6:16 tight tvar A
67+6:18 glyph ^-
68+6:21 glyph [
69+6:22 tight name outer
70+6:27 tight glyph =
71+6:28 tight glyph [
72+6:29 tight name first
73+6:34 tight glyph =
74+6:35 tight tvar A
75+6:37 name second
76+6:43 tight glyph =
77+6:44 tight tvar A
78+6:45 tight glyph ]
79+6:47 name rest
80+6:51 tight glyph =
81+6:52 tight tvar A
82+6:53 tight glyph ]
83+6:55 glyph [
84+6:56 tight glyph [
85+6:57 tight name x
86+6:59 name x
87+6:60 tight glyph ]
88+6:62 name x
89+6:63 tight glyph ]
90+7:1 NEWLINE
91+7:1 glyph ++
92+7:4 name mismatch
93+7:13 glyph |=
94+7:16 name x
95+7:17 tight glyph =
96+7:18 tight glyph [
97+7:19 tight name left
98+7:23 tight glyph =
99+7:24 tight aura @t
100+7:27 name rest
101+7:31 tight glyph =
102+7:32 tight aura @ud
103+7:35 tight glyph ]
104+7:37 glyph ^-
105+7:40 glyph [
106+7:41 tight name right
107+7:46 tight glyph =
108+7:47 tight aura @t
109+7:50 name rest
110+7:54 tight glyph =
111+7:55 tight aura @ud
112+7:58 tight glyph ]
113+7:60 name x
114+8:1 NEWLINE
115+8:1 glyph ++
116+8:4 name uncertain
117+8:14 glyph |=
118+8:17 name x
119+8:18 tight glyph =
120+8:19 tight tvar A
121+8:21 glyph ^-
122+8:24 glyph [
123+8:25 tight name first
124+8:30 tight glyph =
125+8:31 tight tvar B
126+8:33 name rest
127+8:37 tight glyph =
128+8:38 tight aura @t
129+8:40 tight glyph ]
130+8:42 glyph [
131+8:43 tight name x
132+8:45 str "hi"
133+8:49 tight glyph ]
134+8:50 NEWLINE
tests/golden/types-generic-face-inference/tree.txtnew file+56
@@ -0,0 +1,56 @@
1+(module
2+ (mold 1:1 choice
3+ (generic 1:11 A B
4+ (union 2:3
5+ (cell 2:3
6+ (const 2:4 %one)
7+ (face 2:9 value (tvar 2:15 A)))
8+ (cell 3:3
9+ (const 3:4 %two)
10+ (face 3:9 value (tvar 3:15 B))))))
11+ (value 4:1 make
12+ (gate 4:9
13+ (face 4:12 x (tvar 4:14 A))
14+ (cast 4:16
15+ (apply 4:19 choice (tvar 4:27 A) (tvar 4:29 B))
16+ (tuple 4:32 (lit 4:33 %one) (wing 4:38 x)))))
17+ (value 5:1 record
18+ (gate 5:11
19+ (face 5:14 x (tvar 5:16 A))
20+ (cast 5:18
21+ (cell 5:21
22+ (face 5:22 first (tvar 5:28 A))
23+ (face 5:30 second (tvar 5:37 A)))
24+ (tuple 5:40 (wing 5:41 x) (wing 5:43 x)))))
25+ (value 6:1 nested
26+ (gate 6:11
27+ (face 6:14 x (tvar 6:16 A))
28+ (cast 6:18
29+ (cell 6:21
30+ (face 6:22 outer
31+ (cell 6:28
32+ (face 6:29 first (tvar 6:35 A))
33+ (face 6:37 second (tvar 6:44 A))))
34+ (face 6:47 rest (tvar 6:52 A)))
35+ (tuple 6:55
36+ (tuple 6:56 (wing 6:57 x) (wing 6:59 x))
37+ (wing 6:62 x)))))
38+ (value 7:1 mismatch
39+ (gate 7:13
40+ (face 7:16 x
41+ (cell 7:18
42+ (face 7:19 left (aura 7:24 @t))
43+ (face 7:27 rest (aura 7:32 @ud))))
44+ (cast 7:37
45+ (cell 7:40
46+ (face 7:41 right (aura 7:47 @t))
47+ (face 7:50 rest (aura 7:55 @ud)))
48+ (wing 7:60 x))))
49+ (value 8:1 uncertain
50+ (gate 8:14
51+ (face 8:17 x (tvar 8:19 A))
52+ (cast 8:21
53+ (cell 8:24
54+ (face 8:25 first (tvar 8:31 B))
55+ (face 8:33 rest (aura 8:38 @t)))
56+ (tuple 8:42 (wing 8:43 x) (str 8:45 "hi"))))))
tests/golden/types-generic-face-inference/types.txtnew file+13
@@ -0,0 +1,13 @@
1+partial inference; module not checked
2++$ choice: cases proven disjoint; mold not checked
3+++ make: $-(A (choice A B))
4+++ record: $-(A [first=A second=A])
5+++ nested: $-(A [outer=[first=A second=A] rest=A])
6+++ mismatch: cast mold and expression type do not unify
7+/tests/golden/types-generic-face-inference/source.jibb:7:40: cast mold has type [right=@t rest=@ud]
8+++ mismatch |= x=[left=@t rest=@ud] ^- [right=@t rest=@ud] x
9+ ^
10+/tests/golden/types-generic-face-inference/source.jibb:7:60: expression has type [left=@t rest=@ud]
11+++ mismatch |= x=[left=@t rest=@ud] ^- [right=@t rest=@ud] x
12+ ^
13+++ uncertain: cast constraint is not supported by partial inference
tests/golden/types-generic-union-alias-face/about.txt+1−1
@@ -1,4 +1,4 @@
1source: Grammar, Molds: generic molds are applied with their arguments and faces are part of record types.
1source: Grammar, Molds: generic molds are applied with their arguments and faces are part of record types.
2−tests: A swapped imported alias handles concrete tagged payloads; the variable-dependent record-face case remains unsupported until its occurs-check and face propagation are represented.
2+tests: A swapped imported alias handles concrete tagged payloads; a generic payload with the same explicit variable receives its field face; an incompatible concrete payload fails.
3expect: parses
3expect: parses
4expect-types: a partial inference report
4expect-types: a partial inference report
tests/golden/types-generic-union-alias-face/types.txt+1−1
@@ -1,6 +1,6 @@
1partial inference; module not checked
1partial inference; module not checked
2+$ relay: not checked
2+$ relay: not checked
3−++ make: cast constraint is not supported by partial inference
3+++ make: $-(A (choice.base B A))
4++ reveal: $-((choice.base A B) (choice.base A B))
4++ reveal: $-((choice.base A B) (choice.base A B))
5++ with-text: (choice.base @p @t)
5++ with-text: (choice.base @p @t)
6++ with-ship: cast mold and expression type do not unify
6++ with-ship: cast mold and expression type do not unify
tests/golden/types-generic-union-alias/about.txt+1−1
@@ -1,4 +1,4 @@
1source: Grammar, Molds: generic molds are applied with their arguments; Modules: "Everything is exported and read through the import's face".
1source: Grammar, Molds: generic molds are applied with their arguments; Modules: "Everything is exported and read through the import's face".
2−tests: Generic aliases swap or repeat a union's arguments, ignore an alias parameter, and keep the original union identity; a local alias and a merge of distinct capitals are handled conservatively.
2+tests: Generic aliases swap or repeat a union's arguments, ignore an alias parameter, and keep the original union identity; local aliases retain their scope; a merge of distinct capitals remains unsupported.
3expect: parses
3expect: parses
4expect-types: a partial inference report
4expect-types: a partial inference report
tests/golden/types-generic-union-alias/types.txt+1−1
@@ -11,6 +11,6 @@ partial inference; module not checked
11++ ghost-b: (choice @t @p)
11++ ghost-b: (choice @t @p)
12++ use-ghost: $-((choice @t @p) (choice @t @p))
12++ use-ghost: $-((choice @t @p) (choice @t @p))
13++ interchange: (choice @t @p)
13++ interchange: (choice @t @p)
14−++ local: cast constraint is not supported by partial inference
14+++ local: $-(A (choice A @p))
15++ local-pass: $-((choice A @p) (choice A @p))
15++ local-pass: $-((choice A @p) (choice A @p))
16++ local-shadow: $-(A (choice @t @p))
16++ local-shadow: $-(A (choice @t @p))
tests/golden/types-generic-union-transitive/about.txt+1−1
@@ -1,4 +1,4 @@
1source: Grammar, Modules: "Everything is exported and read through the import's face"; Molds: generic molds.
1source: Grammar, Modules: "Everything is exported and read through the import's face"; Molds: generic molds.
2−tests: A concrete value from a transitive alias and uses of the alias retain the underlying union origin, but the partial printer reports its unavailable name rather than hiding generic arguments.
2+tests: Concrete and generic values from a transitive alias and uses of the alias retain the underlying union origin, but the partial printer reports its unavailable name rather than hiding generic arguments.
3expect: parses
3expect: parses
4expect-types: a partial inference report
4expect-types: a partial inference report
tests/golden/types-generic-union-transitive/module-trees.txt+7−1
@@ -18,4 +18,10 @@
18 (value 3:1 sample
18 (value 3:1 sample
19 (cast 3:11
19 (cast 3:11
20 (apply 3:14 relay (aura 3:21 @t) (aura 3:24 @p))
20 (apply 3:14 relay (aura 3:21 @t) (aura 3:24 @p))
21− (tuple 3:28 (lit 3:29 %ok) (lit 3:33 ~zod)))))
21+ (tuple 3:28 (lit 3:29 %ok) (lit 3:33 ~zod))))
22+ (value 4:1 make
23+ (gate 4:9
24+ (face 4:12 x (tvar 4:14 A))
25+ (cast 4:16
26+ (apply 4:19 relay (tvar 4:26 A) (tvar 4:28 B))
27+ (tuple 4:31 (lit 4:32 %err) (wing 4:37 x))))))
tests/golden/types-generic-union-transitive/modules/ui/mid.jibb+1
@@ -1,3 +1,4 @@
1/= base /ui/base
1/= base /ui/base
2+$ relay |$ [A B] (choice.base B A)
2+$ relay |$ [A B] (choice.base B A)
3++ sample ^- (relay @t @p) [%ok ~zod]
3++ sample ^- (relay @t @p) [%ok ~zod]
4+++ make |= x=A ^- (relay A B) [%err x]
tests/golden/types-generic-union-transitive/source.jibb+1
@@ -2,3 +2,4 @@
2++ concrete ^- (relay.mid @t @p) [%ok ~zod]
2++ concrete ^- (relay.mid @t @p) [%ok ~zod]
3++ via sample.mid
3++ via sample.mid
4++ generic |= x=(relay.mid A B) x
4++ generic |= x=(relay.mid A B) x
5+++ via-generic (make.mid "hi")
tests/golden/types-generic-union-transitive/tokens.txt+8−1
@@ -33,4 +33,11 @@
334:30 tvar B
334:30 tvar B
344:31 tight glyph )
344:31 tight glyph )
354:33 name x
354:33 name x
36+5:1 NEWLINE
37+5:1 glyph ++
38+5:4 name via-generic
39+5:16 glyph (
40+5:17 tight wing make.mid
41+5:26 str "hi"
42+5:30 tight glyph )
36−4:34 NEWLINE
43+5:31 NEWLINE
tests/golden/types-generic-union-transitive/tree.txt+4−1
@@ -9,4 +9,7 @@
9 (gate 4:12
9 (gate 4:12
10 (face 4:15 x
10 (face 4:15 x
11 (apply 4:17 relay.mid (tvar 4:28 A) (tvar 4:30 B)))
11 (apply 4:17 relay.mid (tvar 4:28 A) (tvar 4:30 B)))
12− (wing 4:33 x))))
12+ (wing 4:33 x)))
13+ (value 5:1 via-generic
14+ (group 5:16
15+ (call 5:17 (wing 5:17 make.mid) (str 5:26 "hi")))))
tests/golden/types-generic-union-transitive/types.txt+1
@@ -2,3 +2,4 @@ partial inference; module not checked
2++ concrete: generic union name is not available in this scope
2++ concrete: generic union name is not available in this scope
3++ via: generic union name is not available in this scope
3++ via: generic union name is not available in this scope
4++ generic: generic union name is not available in this scope
4++ generic: generic union name is not available in this scope
5+++ via-generic: generic union name is not available in this scope
tests/lib/jibb-bridge.hoon+10
@@ -31,6 +31,16 @@
31 [%fixture %nested (read %nested)]
31 [%fixture %nested (read %nested)]
32 [%fixture %constant (read %constant)]
32 [%fixture %constant (read %constant)]
33 [%fixture %choice (read %choice)]
33 [%fixture %choice (read %choice)]
34+ [%fixture %texts (read %texts)]
35+ [%fixture %numbers (read %numbers)]
36+ [%fixture %maybe (read %maybe)]
37+ [%fixture %tagged-list (read %tagged-list)]
38+ [%fixture %buckets (read %buckets)]
39+ [%fixture %collection-rec (read %collection-rec)]
40+ [%fixture %bad-kind [%& [%apply %unknown ~[[%atom %t ~]]]]]
41+ [%fixture %raw-rec [%& [%ref %fixture %chain]]]
42+ [%fixture %bad-arity [%& [%apply %list ~[[%atom %t ~] [%atom %ud ~]]]]]
43+ [%fixture %bad-argument [%& [%apply %list ~[[%fork ~[[%atom %tas [~ %a]] [%atom %tas [~ %a]]]]]]]]
34 [%fixture %nested-choice (read %nested-choice)]
44 [%fixture %nested-choice (read %nested-choice)]
35 [%fixture %collapsed (read %collapsed)]
45 [%fixture %collapsed (read %collapsed)]
36 [%fixture %dollar (read %dollar)]
46 [%fixture %dollar (read %dollar)]
tests/lib/jibb.hoon+478−472
@@ -1319,393 +1319,397 @@
1319/* tok-404 %txt /tests/golden/types-generic-arity/tokens/txt
1319/* tok-404 %txt /tests/golden/types-generic-arity/tokens/txt
1320/* tre-404 %txt /tests/golden/types-generic-arity/tree/txt
1320/* tre-404 %txt /tests/golden/types-generic-arity/tree/txt
1321/* typ-404 %txt /tests/golden/types-generic-arity/types/txt
1321/* typ-404 %txt /tests/golden/types-generic-arity/types/txt
1322−/* src-405 %jibb /tests/golden/types-generic-gates/source/jibb
1322+/* src-405 %jibb /tests/golden/types-generic-face-inference/source/jibb
1323−/* tok-405 %txt /tests/golden/types-generic-gates/tokens/txt
1323+/* tok-405 %txt /tests/golden/types-generic-face-inference/tokens/txt
1324−/* tre-405 %txt /tests/golden/types-generic-gates/tree/txt
1324+/* tre-405 %txt /tests/golden/types-generic-face-inference/tree/txt
1325−/* typ-405 %txt /tests/golden/types-generic-gates/types/txt
1325+/* typ-405 %txt /tests/golden/types-generic-face-inference/types/txt
1326−/* src-406 %jibb /tests/golden/types-generic-import-reverse/source/jibb
1326+/* src-406 %jibb /tests/golden/types-generic-gates/source/jibb
1327−/* tok-406 %txt /tests/golden/types-generic-import-reverse/tokens/txt
1327+/* tok-406 %txt /tests/golden/types-generic-gates/tokens/txt
1328−/* tre-406 %txt /tests/golden/types-generic-import-reverse/tree/txt
1328+/* tre-406 %txt /tests/golden/types-generic-gates/tree/txt
1329−/* mod-406-1 %jibb /tests/golden/types-generic-import-reverse/modules/ui/lib/jibb
1329+/* typ-406 %txt /tests/golden/types-generic-gates/types/txt
1330−/* typ-406 %txt /tests/golden/types-generic-import-reverse/types/txt
1330+/* src-407 %jibb /tests/golden/types-generic-import-reverse/source/jibb
1331−/* mtre-406 %txt /tests/golden/types-generic-import-reverse/module-trees/txt
1331+/* tok-407 %txt /tests/golden/types-generic-import-reverse/tokens/txt
1332−/* src-407 %jibb /tests/golden/types-generic-lexical-alias/source/jibb
1332+/* tre-407 %txt /tests/golden/types-generic-import-reverse/tree/txt
1333−/* tok-407 %txt /tests/golden/types-generic-lexical-alias/tokens/txt
1333+/* mod-407-1 %jibb /tests/golden/types-generic-import-reverse/modules/ui/lib/jibb
1334−/* tre-407 %txt /tests/golden/types-generic-lexical-alias/tree/txt
1334+/* typ-407 %txt /tests/golden/types-generic-import-reverse/types/txt
1335−/* typ-407 %txt /tests/golden/types-generic-lexical-alias/types/txt
1335+/* mtre-407 %txt /tests/golden/types-generic-import-reverse/module-trees/txt
1336−/* src-408 %jibb /tests/golden/types-generic-local-parameter/source/jibb
1336+/* src-408 %jibb /tests/golden/types-generic-lexical-alias/source/jibb
1337−/* tok-408 %txt /tests/golden/types-generic-local-parameter/tokens/txt
1337+/* tok-408 %txt /tests/golden/types-generic-lexical-alias/tokens/txt
1338−/* tre-408 %txt /tests/golden/types-generic-local-parameter/tree/txt
1338+/* tre-408 %txt /tests/golden/types-generic-lexical-alias/tree/txt
1339−/* typ-408 %txt /tests/golden/types-generic-local-parameter/types/txt
1339+/* typ-408 %txt /tests/golden/types-generic-lexical-alias/types/txt
1340−/* src-409 %jibb /tests/golden/types-generic-local-scope/source/jibb
1340+/* src-409 %jibb /tests/golden/types-generic-local-parameter/source/jibb
1341−/* tok-409 %txt /tests/golden/types-generic-local-scope/tokens/txt
1341+/* tok-409 %txt /tests/golden/types-generic-local-parameter/tokens/txt
1342−/* tre-409 %txt /tests/golden/types-generic-local-scope/tree/txt
1342+/* tre-409 %txt /tests/golden/types-generic-local-parameter/tree/txt
1343−/* typ-409 %txt /tests/golden/types-generic-local-scope/types/txt
1343+/* typ-409 %txt /tests/golden/types-generic-local-parameter/types/txt
1344−/* src-410 %jibb /tests/golden/types-generic-module/source/jibb
1344+/* src-410 %jibb /tests/golden/types-generic-local-scope/source/jibb
1345−/* tok-410 %txt /tests/golden/types-generic-module/tokens/txt
1345+/* tok-410 %txt /tests/golden/types-generic-local-scope/tokens/txt
1346−/* tre-410 %txt /tests/golden/types-generic-module/tree/txt
1346+/* tre-410 %txt /tests/golden/types-generic-local-scope/tree/txt
1347−/* mod-410-1 %jibb /tests/golden/types-generic-module/modules/ui/lib/jibb
1347+/* typ-410 %txt /tests/golden/types-generic-local-scope/types/txt
1348−/* typ-410 %txt /tests/golden/types-generic-module/types/txt
1348+/* src-411 %jibb /tests/golden/types-generic-module/source/jibb
1349−/* mtre-410 %txt /tests/golden/types-generic-module/module-trees/txt
1349+/* tok-411 %txt /tests/golden/types-generic-module/tokens/txt
1350−/* src-411 %jibb /tests/golden/types-generic-nested-scope/source/jibb
1350+/* tre-411 %txt /tests/golden/types-generic-module/tree/txt
1351−/* tok-411 %txt /tests/golden/types-generic-nested-scope/tokens/txt
1351+/* mod-411-1 %jibb /tests/golden/types-generic-module/modules/ui/lib/jibb
1352−/* tre-411 %txt /tests/golden/types-generic-nested-scope/tree/txt
1352+/* typ-411 %txt /tests/golden/types-generic-module/types/txt
1353−/* typ-411 %txt /tests/golden/types-generic-nested-scope/types/txt
1353+/* mtre-411 %txt /tests/golden/types-generic-module/module-trees/txt
1354−/* src-412 %jibb /tests/golden/types-generic-parameters/source/jibb
1354+/* src-412 %jibb /tests/golden/types-generic-nested-scope/source/jibb
1355−/* tok-412 %txt /tests/golden/types-generic-parameters/tokens/txt
1355+/* tok-412 %txt /tests/golden/types-generic-nested-scope/tokens/txt
1356−/* tre-412 %txt /tests/golden/types-generic-parameters/tree/txt
1356+/* tre-412 %txt /tests/golden/types-generic-nested-scope/tree/txt
1357−/* typ-412 %txt /tests/golden/types-generic-parameters/types/txt
1357+/* typ-412 %txt /tests/golden/types-generic-nested-scope/types/txt
1358−/* src-413 %jibb /tests/golden/types-generic-record/source/jibb
1358+/* src-413 %jibb /tests/golden/types-generic-parameters/source/jibb
1359−/* tok-413 %txt /tests/golden/types-generic-record/tokens/txt
1359+/* tok-413 %txt /tests/golden/types-generic-parameters/tokens/txt
1360−/* tre-413 %txt /tests/golden/types-generic-record/tree/txt
1360+/* tre-413 %txt /tests/golden/types-generic-parameters/tree/txt
1361−/* typ-413 %txt /tests/golden/types-generic-record/types/txt
1361+/* typ-413 %txt /tests/golden/types-generic-parameters/types/txt
1362−/* src-414 %jibb /tests/golden/types-generic-recursive-union/source/jibb
1362+/* src-414 %jibb /tests/golden/types-generic-record/source/jibb
1363−/* tok-414 %txt /tests/golden/types-generic-recursive-union/tokens/txt
1363+/* tok-414 %txt /tests/golden/types-generic-record/tokens/txt
1364−/* tre-414 %txt /tests/golden/types-generic-recursive-union/tree/txt
1364+/* tre-414 %txt /tests/golden/types-generic-record/tree/txt
1365−/* typ-414 %txt /tests/golden/types-generic-recursive-union/types/txt
1365+/* typ-414 %txt /tests/golden/types-generic-record/types/txt
1366−/* src-415 %jibb /tests/golden/types-generic-repeated/source/jibb
1366+/* src-415 %jibb /tests/golden/types-generic-recursive-union/source/jibb
1367−/* tok-415 %txt /tests/golden/types-generic-repeated/tokens/txt
1367+/* tok-415 %txt /tests/golden/types-generic-recursive-union/tokens/txt
1368−/* tre-415 %txt /tests/golden/types-generic-repeated/tree/txt
1368+/* tre-415 %txt /tests/golden/types-generic-recursive-union/tree/txt
1369−/* typ-415 %txt /tests/golden/types-generic-repeated/types/txt
1369+/* typ-415 %txt /tests/golden/types-generic-recursive-union/types/txt
1370−/* src-416 %jibb /tests/golden/types-generic-union-alias/source/jibb
1370+/* src-416 %jibb /tests/golden/types-generic-repeated/source/jibb
1371−/* tok-416 %txt /tests/golden/types-generic-union-alias/tokens/txt
1371+/* tok-416 %txt /tests/golden/types-generic-repeated/tokens/txt
1372−/* tre-416 %txt /tests/golden/types-generic-union-alias/tree/txt
1372+/* tre-416 %txt /tests/golden/types-generic-repeated/tree/txt
1373−/* typ-416 %txt /tests/golden/types-generic-union-alias/types/txt
1373+/* typ-416 %txt /tests/golden/types-generic-repeated/types/txt
1374−/* src-417 %jibb /tests/golden/types-generic-union-alias-face/source/jibb
1374+/* src-417 %jibb /tests/golden/types-generic-union-alias/source/jibb
1375−/* tok-417 %txt /tests/golden/types-generic-union-alias-face/tokens/txt
1375+/* tok-417 %txt /tests/golden/types-generic-union-alias/tokens/txt
1376−/* tre-417 %txt /tests/golden/types-generic-union-alias-face/tree/txt
1376+/* tre-417 %txt /tests/golden/types-generic-union-alias/tree/txt
1377−/* mod-417-1 %jibb /tests/golden/types-generic-union-alias-face/modules/ui/base/jibb
1377+/* typ-417 %txt /tests/golden/types-generic-union-alias/types/txt
1378−/* typ-417 %txt /tests/golden/types-generic-union-alias-face/types/txt
1378+/* src-418 %jibb /tests/golden/types-generic-union-alias-face/source/jibb
1379−/* mtre-417 %txt /tests/golden/types-generic-union-alias-face/module-trees/txt
1379+/* tok-418 %txt /tests/golden/types-generic-union-alias-face/tokens/txt
1380−/* src-418 %jibb /tests/golden/types-generic-union-capitals/source/jibb
1380+/* tre-418 %txt /tests/golden/types-generic-union-alias-face/tree/txt
1381−/* tok-418 %txt /tests/golden/types-generic-union-capitals/tokens/txt
1381+/* mod-418-1 %jibb /tests/golden/types-generic-union-alias-face/modules/ui/base/jibb
1382−/* tre-418 %txt /tests/golden/types-generic-union-capitals/tree/txt
1382+/* typ-418 %txt /tests/golden/types-generic-union-alias-face/types/txt
1383−/* typ-418 %txt /tests/golden/types-generic-union-capitals/types/txt
1383+/* mtre-418 %txt /tests/golden/types-generic-union-alias-face/module-trees/txt
1384−/* src-419 %jibb /tests/golden/types-generic-union-errors/source/jibb
1384+/* src-419 %jibb /tests/golden/types-generic-union-capitals/source/jibb
1385−/* tok-419 %txt /tests/golden/types-generic-union-errors/tokens/txt
1385+/* tok-419 %txt /tests/golden/types-generic-union-capitals/tokens/txt
1386−/* tre-419 %txt /tests/golden/types-generic-union-errors/tree/txt
1386+/* tre-419 %txt /tests/golden/types-generic-union-capitals/tree/txt
1387−/* typ-419 %txt /tests/golden/types-generic-union-errors/types/txt
1387+/* typ-419 %txt /tests/golden/types-generic-union-capitals/types/txt
1388−/* src-420 %jibb /tests/golden/types-generic-union-escaping/source/jibb
1388+/* src-420 %jibb /tests/golden/types-generic-union-errors/source/jibb
1389−/* tok-420 %txt /tests/golden/types-generic-union-escaping/tokens/txt
1389+/* tok-420 %txt /tests/golden/types-generic-union-errors/tokens/txt
1390−/* tre-420 %txt /tests/golden/types-generic-union-escaping/tree/txt
1390+/* tre-420 %txt /tests/golden/types-generic-union-errors/tree/txt
1391−/* mod-420-1 %jibb /tests/golden/types-generic-union-escaping/modules/ui/base/jibb
1391+/* typ-420 %txt /tests/golden/types-generic-union-errors/types/txt
1392−/* mod-420-2 %jibb /tests/golden/types-generic-union-escaping/modules/ui/mid/jibb
1392+/* src-421 %jibb /tests/golden/types-generic-union-escaping/source/jibb
1393−/* typ-420 %txt /tests/golden/types-generic-union-escaping/types/txt
1393+/* tok-421 %txt /tests/golden/types-generic-union-escaping/tokens/txt
1394−/* mtre-420 %txt /tests/golden/types-generic-union-escaping/module-trees/txt
1394+/* tre-421 %txt /tests/golden/types-generic-union-escaping/tree/txt
1395−/* src-421 %jibb /tests/golden/types-generic-union-import/source/jibb
1395+/* mod-421-1 %jibb /tests/golden/types-generic-union-escaping/modules/ui/base/jibb
1396−/* tok-421 %txt /tests/golden/types-generic-union-import/tokens/txt
1396+/* mod-421-2 %jibb /tests/golden/types-generic-union-escaping/modules/ui/mid/jibb
1397−/* tre-421 %txt /tests/golden/types-generic-union-import/tree/txt
1397+/* typ-421 %txt /tests/golden/types-generic-union-escaping/types/txt
1398−/* mod-421-1 %jibb /tests/golden/types-generic-union-import/modules/ui/shared/jibb
1398+/* mtre-421 %txt /tests/golden/types-generic-union-escaping/module-trees/txt
1399−/* mod-421-2 %jibb /tests/golden/types-generic-union-import/modules/ui/twin/jibb
1399+/* src-422 %jibb /tests/golden/types-generic-union-import/source/jibb
1400−/* typ-421 %txt /tests/golden/types-generic-union-import/types/txt
1400+/* tok-422 %txt /tests/golden/types-generic-union-import/tokens/txt
1401−/* mtre-421 %txt /tests/golden/types-generic-union-import/module-trees/txt
1401+/* tre-422 %txt /tests/golden/types-generic-union-import/tree/txt
1402−/* src-422 %jibb /tests/golden/types-generic-union-local/source/jibb
1402+/* mod-422-1 %jibb /tests/golden/types-generic-union-import/modules/ui/shared/jibb
1403−/* tok-422 %txt /tests/golden/types-generic-union-local/tokens/txt
1403+/* mod-422-2 %jibb /tests/golden/types-generic-union-import/modules/ui/twin/jibb
1404−/* tre-422 %txt /tests/golden/types-generic-union-local/tree/txt
1404+/* typ-422 %txt /tests/golden/types-generic-union-import/types/txt
1405−/* typ-422 %txt /tests/golden/types-generic-union-local/types/txt
1405+/* mtre-422 %txt /tests/golden/types-generic-union-import/module-trees/txt
1406−/* src-423 %jibb /tests/golden/types-generic-union-transitive/source/jibb
1406+/* src-423 %jibb /tests/golden/types-generic-union-local/source/jibb
1407−/* tok-423 %txt /tests/golden/types-generic-union-transitive/tokens/txt
1407+/* tok-423 %txt /tests/golden/types-generic-union-local/tokens/txt
1408−/* tre-423 %txt /tests/golden/types-generic-union-transitive/tree/txt
1408+/* tre-423 %txt /tests/golden/types-generic-union-local/tree/txt
1409−/* mod-423-1 %jibb /tests/golden/types-generic-union-transitive/modules/ui/base/jibb
1409+/* typ-423 %txt /tests/golden/types-generic-union-local/types/txt
1410−/* mod-423-2 %jibb /tests/golden/types-generic-union-transitive/modules/ui/mid/jibb
1410+/* src-424 %jibb /tests/golden/types-generic-union-transitive/source/jibb
1411−/* typ-423 %txt /tests/golden/types-generic-union-transitive/types/txt
1411+/* tok-424 %txt /tests/golden/types-generic-union-transitive/tokens/txt
1412−/* mtre-423 %txt /tests/golden/types-generic-union-transitive/module-trees/txt
1412+/* tre-424 %txt /tests/golden/types-generic-union-transitive/tree/txt
1413−/* src-424 %jibb /tests/golden/types-import-mark/source/jibb
1413+/* mod-424-1 %jibb /tests/golden/types-generic-union-transitive/modules/ui/base/jibb
1414−/* tok-424 %txt /tests/golden/types-import-mark/tokens/txt
1414+/* mod-424-2 %jibb /tests/golden/types-generic-union-transitive/modules/ui/mid/jibb
1415−/* tre-424 %txt /tests/golden/types-import-mark/tree/txt
1415+/* typ-424 %txt /tests/golden/types-generic-union-transitive/types/txt
1416−/* typ-424 %txt /tests/golden/types-import-mark/types/txt
1416+/* mtre-424 %txt /tests/golden/types-generic-union-transitive/module-trees/txt
1417−/* imp-424-1 %txt /tests/golden/types-import-mark/sur/fixture/txt
1417+/* src-425 %jibb /tests/golden/types-import-mark/source/jibb
1418−/* mark-424-1 %txt /tests/golden/types-import-mark/mar/label/txt
1418+/* tok-425 %txt /tests/golden/types-import-mark/tokens/txt
1419−/* src-425 %jibb /tests/golden/types-import-mark-record/source/jibb
1419+/* tre-425 %txt /tests/golden/types-import-mark/tree/txt
1420−/* tok-425 %txt /tests/golden/types-import-mark-record/tokens/txt
1420+/* typ-425 %txt /tests/golden/types-import-mark/types/txt
1421−/* tre-425 %txt /tests/golden/types-import-mark-record/tree/txt
1421+/* imp-425-1 %txt /tests/golden/types-import-mark/sur/fixture/txt
1422−/* typ-425 %txt /tests/golden/types-import-mark-record/types/txt
1422+/* mark-425-1 %txt /tests/golden/types-import-mark/mar/label/txt
1423−/* mark-425-1 %txt /tests/golden/types-import-mark-record/mar/note/txt
1423+/* src-426 %jibb /tests/golden/types-import-mark-record/source/jibb
1424−/* mark-425-2 %txt /tests/golden/types-import-mark-record/mar/choice/txt
1424+/* tok-426 %txt /tests/golden/types-import-mark-record/tokens/txt
1425−/* src-426 %jibb /tests/golden/types-import-missing-mold/source/jibb
1425+/* tre-426 %txt /tests/golden/types-import-mark-record/tree/txt
1426−/* tok-426 %txt /tests/golden/types-import-missing-mold/tokens/txt
1426+/* typ-426 %txt /tests/golden/types-import-mark-record/types/txt
1427−/* tre-426 %txt /tests/golden/types-import-missing-mold/tree/txt
1427+/* mark-426-1 %txt /tests/golden/types-import-mark-record/mar/note/txt
1428−/* typ-426 %txt /tests/golden/types-import-missing-mold/types/txt
1428+/* mark-426-2 %txt /tests/golden/types-import-mark-record/mar/choice/txt
1429−/* imp-426-1 %txt /tests/golden/types-import-missing-mold/sur/fixture/txt
1429+/* src-427 %jibb /tests/golden/types-import-missing-mold/source/jibb
1430−/* src-427 %jibb /tests/golden/types-import-sur/source/jibb
1430+/* tok-427 %txt /tests/golden/types-import-missing-mold/tokens/txt
1431−/* tok-427 %txt /tests/golden/types-import-sur/tokens/txt
1431+/* tre-427 %txt /tests/golden/types-import-missing-mold/tree/txt
1432−/* tre-427 %txt /tests/golden/types-import-sur/tree/txt
1432+/* typ-427 %txt /tests/golden/types-import-missing-mold/types/txt
1433−/* typ-427 %txt /tests/golden/types-import-sur/types/txt
1433+/* imp-427-1 %txt /tests/golden/types-import-missing-mold/sur/fixture/txt
1434−/* imp-427-1 %txt /tests/golden/types-import-sur/sur/fixture/txt
1434+/* src-428 %jibb /tests/golden/types-import-sur/source/jibb
1435−/* imp-427-2 %txt /tests/golden/types-import-sur/sur/fixture/txt
1435+/* tok-428 %txt /tests/golden/types-import-sur/tokens/txt
1436−/* src-428 %jibb /tests/golden/types-import-sur-record-graph/source/jibb
1436+/* tre-428 %txt /tests/golden/types-import-sur/tree/txt
1437−/* tok-428 %txt /tests/golden/types-import-sur-record-graph/tokens/txt
1437+/* typ-428 %txt /tests/golden/types-import-sur/types/txt
1438−/* tre-428 %txt /tests/golden/types-import-sur-record-graph/tree/txt
1438+/* imp-428-1 %txt /tests/golden/types-import-sur/sur/fixture/txt
1439−/* mod-428-1 %jibb /tests/golden/types-import-sur-record-graph/modules/ui/lib/jibb
1439+/* imp-428-2 %txt /tests/golden/types-import-sur/sur/fixture/txt
1440−/* typ-428 %txt /tests/golden/types-import-sur-record-graph/types/txt
1440+/* src-429 %jibb /tests/golden/types-import-sur-record-graph/source/jibb
1441−/* imp-428-1 %txt /tests/golden/types-import-sur-record-graph/sur/fixture/txt
1441+/* tok-429 %txt /tests/golden/types-import-sur-record-graph/tokens/txt
1442−/* mtre-428 %txt /tests/golden/types-import-sur-record-graph/module-trees/txt
1442+/* tre-429 %txt /tests/golden/types-import-sur-record-graph/tree/txt
1443−/* src-429 %jibb /tests/golden/types-module-fixtures/source/jibb
1443+/* mod-429-1 %jibb /tests/golden/types-import-sur-record-graph/modules/ui/lib/jibb
1444−/* tok-429 %txt /tests/golden/types-module-fixtures/tokens/txt
1444+/* typ-429 %txt /tests/golden/types-import-sur-record-graph/types/txt
1445−/* tre-429 %txt /tests/golden/types-module-fixtures/tree/txt
1445+/* imp-429-1 %txt /tests/golden/types-import-sur-record-graph/sur/fixture/txt
1446−/* mod-429-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1446+/* mtre-429 %txt /tests/golden/types-import-sur-record-graph/module-trees/txt
1447−/* mod-429-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1447+/* src-430 %jibb /tests/golden/types-module-fixtures/source/jibb
1448−/* typ-429 %txt /tests/golden/types-module-fixtures/types/txt
1448+/* tok-430 %txt /tests/golden/types-module-fixtures/tokens/txt
1449−/* mtre-429 %txt /tests/golden/types-module-fixtures/module-trees/txt
1449+/* tre-430 %txt /tests/golden/types-module-fixtures/tree/txt
1450−/* src-430 %jibb /tests/golden/types-module-mixed/source/jibb
1450+/* mod-430-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1451−/* tok-430 %txt /tests/golden/types-module-mixed/tokens/txt
1451+/* mod-430-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1452−/* tre-430 %txt /tests/golden/types-module-mixed/tree/txt
1452+/* typ-430 %txt /tests/golden/types-module-fixtures/types/txt
1453−/* mod-430-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1453+/* mtre-430 %txt /tests/golden/types-module-fixtures/module-trees/txt
1454−/* typ-430 %txt /tests/golden/types-module-mixed/types/txt
1454+/* src-431 %jibb /tests/golden/types-module-mixed/source/jibb
1455−/* imp-430-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1455+/* tok-431 %txt /tests/golden/types-module-mixed/tokens/txt
1456−/* mark-430-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1456+/* tre-431 %txt /tests/golden/types-module-mixed/tree/txt
1457−/* mtre-430 %txt /tests/golden/types-module-mixed/module-trees/txt
1457+/* mod-431-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1458−/* src-431 %jibb /tests/golden/types-partial-apply/source/jibb
1458+/* typ-431 %txt /tests/golden/types-module-mixed/types/txt
1459−/* tok-431 %txt /tests/golden/types-partial-apply/tokens/txt
1459+/* imp-431-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1460−/* tre-431 %txt /tests/golden/types-partial-apply/tree/txt
1460+/* mark-431-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1461−/* typ-431 %txt /tests/golden/types-partial-apply/types/txt
1461+/* mtre-431 %txt /tests/golden/types-module-mixed/module-trees/txt
1462−/* src-432 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1462+/* src-432 %jibb /tests/golden/types-partial-apply/source/jibb
1463−/* tok-432 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1463+/* tok-432 %txt /tests/golden/types-partial-apply/tokens/txt
1464−/* tre-432 %txt /tests/golden/types-partial-atom-alias/tree/txt
1464+/* tre-432 %txt /tests/golden/types-partial-apply/tree/txt
1465−/* typ-432 %txt /tests/golden/types-partial-atom-alias/types/txt
1465+/* typ-432 %txt /tests/golden/types-partial-apply/types/txt
1466−/* src-433 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1466+/* src-433 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1467−/* tok-433 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1467+/* tok-433 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1468−/* tre-433 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1468+/* tre-433 %txt /tests/golden/types-partial-atom-alias/tree/txt
1469−/* typ-433 %txt /tests/golden/types-partial-atom-constraint/types/txt
1469+/* typ-433 %txt /tests/golden/types-partial-atom-alias/types/txt
1470−/* src-434 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1470+/* src-434 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1471−/* tok-434 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1471+/* tok-434 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1472−/* tre-434 %txt /tests/golden/types-partial-atom-widening/tree/txt
1472+/* tre-434 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1473−/* typ-434 %txt /tests/golden/types-partial-atom-widening/types/txt
1473+/* typ-434 %txt /tests/golden/types-partial-atom-constraint/types/txt
1474−/* src-435 %jibb /tests/golden/types-partial-aura/source/jibb
1474+/* src-435 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1475−/* tok-435 %txt /tests/golden/types-partial-aura/tokens/txt
1475+/* tok-435 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1476−/* tre-435 %txt /tests/golden/types-partial-aura/tree/txt
1476+/* tre-435 %txt /tests/golden/types-partial-atom-widening/tree/txt
1477−/* typ-435 %txt /tests/golden/types-partial-aura/types/txt
1477+/* typ-435 %txt /tests/golden/types-partial-atom-widening/types/txt
1478−/* src-436 %jibb /tests/golden/types-partial-aura-family/source/jibb
1478+/* src-436 %jibb /tests/golden/types-partial-aura/source/jibb
1479−/* tok-436 %txt /tests/golden/types-partial-aura-family/tokens/txt
1479+/* tok-436 %txt /tests/golden/types-partial-aura/tokens/txt
1480−/* tre-436 %txt /tests/golden/types-partial-aura-family/tree/txt
1480+/* tre-436 %txt /tests/golden/types-partial-aura/tree/txt
1481−/* typ-436 %txt /tests/golden/types-partial-aura-family/types/txt
1481+/* typ-436 %txt /tests/golden/types-partial-aura/types/txt
1482−/* src-437 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1482+/* src-437 %jibb /tests/golden/types-partial-aura-family/source/jibb
1483−/* tok-437 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1483+/* tok-437 %txt /tests/golden/types-partial-aura-family/tokens/txt
1484−/* tre-437 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1484+/* tre-437 %txt /tests/golden/types-partial-aura-family/tree/txt
1485−/* typ-437 %txt /tests/golden/types-partial-aura-generalization/types/txt
1485+/* typ-437 %txt /tests/golden/types-partial-aura-family/types/txt
1486−/* src-438 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1486+/* src-438 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1487−/* tok-438 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1487+/* tok-438 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1488−/* tre-438 %txt /tests/golden/types-partial-bare-atom/tree/txt
1488+/* tre-438 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1489−/* typ-438 %txt /tests/golden/types-partial-bare-atom/types/txt
1489+/* typ-438 %txt /tests/golden/types-partial-aura-generalization/types/txt
1490−/* src-439 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1490+/* src-439 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1491−/* tok-439 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1491+/* tok-439 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1492−/* tre-439 %txt /tests/golden/types-partial-branch-widening/tree/txt
1492+/* tre-439 %txt /tests/golden/types-partial-bare-atom/tree/txt
1493−/* typ-439 %txt /tests/golden/types-partial-branch-widening/types/txt
1493+/* typ-439 %txt /tests/golden/types-partial-bare-atom/types/txt
1494−/* src-440 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1494+/* src-440 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1495−/* tok-440 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1495+/* tok-440 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1496−/* tre-440 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1496+/* tre-440 %txt /tests/golden/types-partial-branch-widening/tree/txt
1497−/* typ-440 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1497+/* typ-440 %txt /tests/golden/types-partial-branch-widening/types/txt
1498−/* src-441 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1498+/* src-441 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1499−/* tok-441 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1499+/* tok-441 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1500−/* tre-441 %txt /tests/golden/types-partial-decimal-default/tree/txt
1500+/* tre-441 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1501−/* typ-441 %txt /tests/golden/types-partial-decimal-default/types/txt
1501+/* typ-441 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1502−/* src-442 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1502+/* src-442 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1503−/* tok-442 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1503+/* tok-442 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1504−/* tre-442 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1504+/* tre-442 %txt /tests/golden/types-partial-decimal-default/tree/txt
1505−/* typ-442 %txt /tests/golden/types-partial-dependency-chain/types/txt
1505+/* typ-442 %txt /tests/golden/types-partial-decimal-default/types/txt
1506−/* src-443 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1506+/* src-443 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1507−/* tok-443 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1507+/* tok-443 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1508−/* tre-443 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1508+/* tre-443 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1509−/* typ-443 %txt /tests/golden/types-partial-explicit-capital/types/txt
1509+/* typ-443 %txt /tests/golden/types-partial-dependency-chain/types/txt
1510−/* src-444 %jibb /tests/golden/types-partial-forward/source/jibb
1510+/* src-444 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1511−/* tok-444 %txt /tests/golden/types-partial-forward/tokens/txt
1511+/* tok-444 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1512−/* tre-444 %txt /tests/golden/types-partial-forward/tree/txt
1512+/* tre-444 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1513−/* typ-444 %txt /tests/golden/types-partial-forward/types/txt
1513+/* typ-444 %txt /tests/golden/types-partial-explicit-capital/types/txt
1514−/* src-445 %jibb /tests/golden/types-partial-generalization/source/jibb
1514+/* src-445 %jibb /tests/golden/types-partial-forward/source/jibb
1515−/* tok-445 %txt /tests/golden/types-partial-generalization/tokens/txt
1515+/* tok-445 %txt /tests/golden/types-partial-forward/tokens/txt
1516−/* tre-445 %txt /tests/golden/types-partial-generalization/tree/txt
1516+/* tre-445 %txt /tests/golden/types-partial-forward/tree/txt
1517−/* typ-445 %txt /tests/golden/types-partial-generalization/types/txt
1517+/* typ-445 %txt /tests/golden/types-partial-forward/types/txt
1518−/* src-446 %jibb /tests/golden/types-partial-identity/source/jibb
1518+/* src-446 %jibb /tests/golden/types-partial-generalization/source/jibb
1519−/* tok-446 %txt /tests/golden/types-partial-identity/tokens/txt
1519+/* tok-446 %txt /tests/golden/types-partial-generalization/tokens/txt
1520−/* tre-446 %txt /tests/golden/types-partial-identity/tree/txt
1520+/* tre-446 %txt /tests/golden/types-partial-generalization/tree/txt
1521−/* typ-446 %txt /tests/golden/types-partial-identity/types/txt
1521+/* typ-446 %txt /tests/golden/types-partial-generalization/types/txt
1522−/* src-447 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1522+/* src-447 %jibb /tests/golden/types-partial-identity/source/jibb
1523−/* tok-447 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1523+/* tok-447 %txt /tests/golden/types-partial-identity/tokens/txt
1524−/* tre-447 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1524+/* tre-447 %txt /tests/golden/types-partial-identity/tree/txt
1525−/* typ-447 %txt /tests/golden/types-partial-independent-atoms/types/txt
1525+/* typ-447 %txt /tests/golden/types-partial-identity/types/txt
1526−/* src-448 %jibb /tests/golden/types-partial-local-molds/source/jibb
1526+/* src-448 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1527−/* tok-448 %txt /tests/golden/types-partial-local-molds/tokens/txt
1527+/* tok-448 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1528−/* tre-448 %txt /tests/golden/types-partial-local-molds/tree/txt
1528+/* tre-448 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1529−/* typ-448 %txt /tests/golden/types-partial-local-molds/types/txt
1529+/* typ-448 %txt /tests/golden/types-partial-independent-atoms/types/txt
1530−/* src-449 %jibb /tests/golden/types-partial-locals/source/jibb
1530+/* src-449 %jibb /tests/golden/types-partial-local-molds/source/jibb
1531−/* tok-449 %txt /tests/golden/types-partial-locals/tokens/txt
1531+/* tok-449 %txt /tests/golden/types-partial-local-molds/tokens/txt
1532−/* tre-449 %txt /tests/golden/types-partial-locals/tree/txt
1532+/* tre-449 %txt /tests/golden/types-partial-local-molds/tree/txt
1533−/* typ-449 %txt /tests/golden/types-partial-locals/types/txt
1533+/* typ-449 %txt /tests/golden/types-partial-local-molds/types/txt
1534−/* src-450 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1534+/* src-450 %jibb /tests/golden/types-partial-locals/source/jibb
1535−/* tok-450 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1535+/* tok-450 %txt /tests/golden/types-partial-locals/tokens/txt
1536−/* tre-450 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1536+/* tre-450 %txt /tests/golden/types-partial-locals/tree/txt
1537−/* typ-450 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1537+/* typ-450 %txt /tests/golden/types-partial-locals/types/txt
1538−/* src-451 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1538+/* src-451 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1539−/* tok-451 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1539+/* tok-451 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1540−/* tre-451 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1540+/* tre-451 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1541−/* typ-451 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1541+/* typ-451 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1542−/* src-452 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1542+/* src-452 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1543−/* tok-452 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1543+/* tok-452 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1544−/* tre-452 %txt /tests/golden/types-partial-mold-composite/tree/txt
1544+/* tre-452 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1545−/* typ-452 %txt /tests/golden/types-partial-mold-composite/types/txt
1545+/* typ-452 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1546−/* src-453 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1546+/* src-453 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1547−/* tok-453 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1547+/* tok-453 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1548−/* tre-453 %txt /tests/golden/types-partial-mold-forward/tree/txt
1548+/* tre-453 %txt /tests/golden/types-partial-mold-composite/tree/txt
1549−/* typ-453 %txt /tests/golden/types-partial-mold-forward/types/txt
1549+/* typ-453 %txt /tests/golden/types-partial-mold-composite/types/txt
1550−/* src-454 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1550+/* src-454 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1551−/* tok-454 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1551+/* tok-454 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1552−/* tre-454 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1552+/* tre-454 %txt /tests/golden/types-partial-mold-forward/tree/txt
1553−/* typ-454 %txt /tests/golden/types-partial-mold-recursive/types/txt
1553+/* typ-454 %txt /tests/golden/types-partial-mold-forward/types/txt
1554−/* src-455 %jibb /tests/golden/types-partial-occurs/source/jibb
1554+/* src-455 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1555−/* tok-455 %txt /tests/golden/types-partial-occurs/tokens/txt
1555+/* tok-455 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1556−/* tre-455 %txt /tests/golden/types-partial-occurs/tree/txt
1556+/* tre-455 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1557−/* typ-455 %txt /tests/golden/types-partial-occurs/types/txt
1557+/* typ-455 %txt /tests/golden/types-partial-mold-recursive/types/txt
1558−/* src-456 %jibb /tests/golden/types-partial-projection/source/jibb
1558+/* src-456 %jibb /tests/golden/types-partial-occurs/source/jibb
1559−/* tok-456 %txt /tests/golden/types-partial-projection/tokens/txt
1559+/* tok-456 %txt /tests/golden/types-partial-occurs/tokens/txt
1560−/* tre-456 %txt /tests/golden/types-partial-projection/tree/txt
1560+/* tre-456 %txt /tests/golden/types-partial-occurs/tree/txt
1561−/* typ-456 %txt /tests/golden/types-partial-projection/types/txt
1561+/* typ-456 %txt /tests/golden/types-partial-occurs/types/txt
1562−/* src-457 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1562+/* src-457 %jibb /tests/golden/types-partial-projection/source/jibb
1563−/* tok-457 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1563+/* tok-457 %txt /tests/golden/types-partial-projection/tokens/txt
1564−/* tre-457 %txt /tests/golden/types-partial-shadow-global/tree/txt
1564+/* tre-457 %txt /tests/golden/types-partial-projection/tree/txt
1565−/* typ-457 %txt /tests/golden/types-partial-shadow-global/types/txt
1565+/* typ-457 %txt /tests/golden/types-partial-projection/types/txt
1566−/* src-458 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1566+/* src-458 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1567−/* tok-458 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1567+/* tok-458 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1568−/* tre-458 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1568+/* tre-458 %txt /tests/golden/types-partial-shadow-global/tree/txt
1569−/* typ-458 %txt /tests/golden/types-partial-shared-tvar/types/txt
1569+/* typ-458 %txt /tests/golden/types-partial-shadow-global/types/txt
1570−/* src-459 %jibb /tests/golden/types-partial-union-cases/source/jibb
1570+/* src-459 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1571−/* tok-459 %txt /tests/golden/types-partial-union-cases/tokens/txt
1571+/* tok-459 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1572−/* tre-459 %txt /tests/golden/types-partial-union-cases/tree/txt
1572+/* tre-459 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1573−/* typ-459 %txt /tests/golden/types-partial-union-cases/types/txt
1573+/* typ-459 %txt /tests/golden/types-partial-shared-tvar/types/txt
1574−/* src-460 %jibb /tests/golden/types-partial-union-edges/source/jibb
1574+/* src-460 %jibb /tests/golden/types-partial-union-cases/source/jibb
1575−/* tok-460 %txt /tests/golden/types-partial-union-edges/tokens/txt
1575+/* tok-460 %txt /tests/golden/types-partial-union-cases/tokens/txt
1576−/* tre-460 %txt /tests/golden/types-partial-union-edges/tree/txt
1576+/* tre-460 %txt /tests/golden/types-partial-union-cases/tree/txt
1577−/* typ-460 %txt /tests/golden/types-partial-union-edges/types/txt
1577+/* typ-460 %txt /tests/golden/types-partial-union-cases/types/txt
1578−/* src-461 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1578+/* src-461 %jibb /tests/golden/types-partial-union-edges/source/jibb
1579−/* tok-461 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1579+/* tok-461 %txt /tests/golden/types-partial-union-edges/tokens/txt
1580−/* tre-461 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1580+/* tre-461 %txt /tests/golden/types-partial-union-edges/tree/txt
1581−/* typ-461 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1581+/* typ-461 %txt /tests/golden/types-partial-union-edges/types/txt
1582−/* src-462 %jibb /tests/golden/types-record-bound-variable/source/jibb
1582+/* src-462 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1583−/* tok-462 %txt /tests/golden/types-record-bound-variable/tokens/txt
1583+/* tok-462 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1584−/* tre-462 %txt /tests/golden/types-record-bound-variable/tree/txt
1584+/* tre-462 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1585−/* typ-462 %txt /tests/golden/types-record-bound-variable/types/txt
1585+/* typ-462 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1586−/* src-463 %jibb /tests/golden/types-record-faces/source/jibb
1586+/* src-463 %jibb /tests/golden/types-record-bound-variable/source/jibb
1587−/* tok-463 %txt /tests/golden/types-record-faces/tokens/txt
1587+/* tok-463 %txt /tests/golden/types-record-bound-variable/tokens/txt
1588−/* tre-463 %txt /tests/golden/types-record-faces/tree/txt
1588+/* tre-463 %txt /tests/golden/types-record-bound-variable/tree/txt
1589−/* typ-463 %txt /tests/golden/types-record-faces/types/txt
1589+/* typ-463 %txt /tests/golden/types-record-bound-variable/types/txt
1590−/* src-464 %jibb /tests/golden/types-record-import/source/jibb
1590+/* src-464 %jibb /tests/golden/types-record-faces/source/jibb
1591−/* tok-464 %txt /tests/golden/types-record-import/tokens/txt
1591+/* tok-464 %txt /tests/golden/types-record-faces/tokens/txt
1592−/* tre-464 %txt /tests/golden/types-record-import/tree/txt
1592+/* tre-464 %txt /tests/golden/types-record-faces/tree/txt
1593−/* mod-464-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1593+/* typ-464 %txt /tests/golden/types-record-faces/types/txt
1594−/* typ-464 %txt /tests/golden/types-record-import/types/txt
1594+/* src-465 %jibb /tests/golden/types-record-import/source/jibb
1595−/* mtre-464 %txt /tests/golden/types-record-import/module-trees/txt
1595+/* tok-465 %txt /tests/golden/types-record-import/tokens/txt
1596−/* src-465 %jibb /tests/golden/types-record-local-scheme/source/jibb
1596+/* tre-465 %txt /tests/golden/types-record-import/tree/txt
1597−/* tok-465 %txt /tests/golden/types-record-local-scheme/tokens/txt
1597+/* mod-465-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1598−/* tre-465 %txt /tests/golden/types-record-local-scheme/tree/txt
1598+/* typ-465 %txt /tests/golden/types-record-import/types/txt
1599−/* typ-465 %txt /tests/golden/types-record-local-scheme/types/txt
1599+/* mtre-465 %txt /tests/golden/types-record-import/module-trees/txt
1600−/* src-466 %jibb /tests/golden/types-record-nested/source/jibb
1600+/* src-466 %jibb /tests/golden/types-record-local-scheme/source/jibb
1601−/* tok-466 %txt /tests/golden/types-record-nested/tokens/txt
1601+/* tok-466 %txt /tests/golden/types-record-local-scheme/tokens/txt
1602−/* tre-466 %txt /tests/golden/types-record-nested/tree/txt
1602+/* tre-466 %txt /tests/golden/types-record-local-scheme/tree/txt
1603−/* typ-466 %txt /tests/golden/types-record-nested/types/txt
1603+/* typ-466 %txt /tests/golden/types-record-local-scheme/types/txt
1604−/* src-467 %jibb /tests/golden/types-record-to-tuple/source/jibb
1604+/* src-467 %jibb /tests/golden/types-record-nested/source/jibb
1605−/* tok-467 %txt /tests/golden/types-record-to-tuple/tokens/txt
1605+/* tok-467 %txt /tests/golden/types-record-nested/tokens/txt
1606−/* tre-467 %txt /tests/golden/types-record-to-tuple/tree/txt
1606+/* tre-467 %txt /tests/golden/types-record-nested/tree/txt
1607−/* typ-467 %txt /tests/golden/types-record-to-tuple/types/txt
1607+/* typ-467 %txt /tests/golden/types-record-nested/types/txt
1608−/* src-468 %jibb /tests/golden/types-union-alias/source/jibb
1608+/* src-468 %jibb /tests/golden/types-record-to-tuple/source/jibb
1609−/* tok-468 %txt /tests/golden/types-union-alias/tokens/txt
1609+/* tok-468 %txt /tests/golden/types-record-to-tuple/tokens/txt
1610−/* tre-468 %txt /tests/golden/types-union-alias/tree/txt
1610+/* tre-468 %txt /tests/golden/types-record-to-tuple/tree/txt
1611−/* typ-468 %txt /tests/golden/types-union-alias/types/txt
1611+/* typ-468 %txt /tests/golden/types-record-to-tuple/types/txt
1612−/* src-469 %jibb /tests/golden/types-union-branch-context/source/jibb
1612+/* src-469 %jibb /tests/golden/types-union-alias/source/jibb
1613−/* tok-469 %txt /tests/golden/types-union-branch-context/tokens/txt
1613+/* tok-469 %txt /tests/golden/types-union-alias/tokens/txt
1614−/* tre-469 %txt /tests/golden/types-union-branch-context/tree/txt
1614+/* tre-469 %txt /tests/golden/types-union-alias/tree/txt
1615−/* typ-469 %txt /tests/golden/types-union-branch-context/types/txt
1615+/* typ-469 %txt /tests/golden/types-union-alias/types/txt
1616−/* src-470 %jibb /tests/golden/types-union-branch-pending/source/jibb
1616+/* src-470 %jibb /tests/golden/types-union-branch-context/source/jibb
1617−/* tok-470 %txt /tests/golden/types-union-branch-pending/tokens/txt
1617+/* tok-470 %txt /tests/golden/types-union-branch-context/tokens/txt
1618−/* tre-470 %txt /tests/golden/types-union-branch-pending/tree/txt
1618+/* tre-470 %txt /tests/golden/types-union-branch-context/tree/txt
1619−/* typ-470 %txt /tests/golden/types-union-branch-pending/types/txt
1619+/* typ-470 %txt /tests/golden/types-union-branch-context/types/txt
1620−/* src-471 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1620+/* src-471 %jibb /tests/golden/types-union-branch-pending/source/jibb
1621−/* tok-471 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1621+/* tok-471 %txt /tests/golden/types-union-branch-pending/tokens/txt
1622−/* tre-471 %txt /tests/golden/types-union-constructor-shape/tree/txt
1622+/* tre-471 %txt /tests/golden/types-union-branch-pending/tree/txt
1623−/* typ-471 %txt /tests/golden/types-union-constructor-shape/types/txt
1623+/* typ-471 %txt /tests/golden/types-union-branch-pending/types/txt
1624−/* src-472 %jibb /tests/golden/types-union-context-flow/source/jibb
1624+/* src-472 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1625−/* tok-472 %txt /tests/golden/types-union-context-flow/tokens/txt
1625+/* tok-472 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1626−/* tre-472 %txt /tests/golden/types-union-context-flow/tree/txt
1626+/* tre-472 %txt /tests/golden/types-union-constructor-shape/tree/txt
1627−/* typ-472 %txt /tests/golden/types-union-context-flow/types/txt
1627+/* typ-472 %txt /tests/golden/types-union-constructor-shape/types/txt
1628−/* src-473 %jibb /tests/golden/types-union-import/source/jibb
1628+/* src-473 %jibb /tests/golden/types-union-context-flow/source/jibb
1629−/* tok-473 %txt /tests/golden/types-union-import/tokens/txt
1629+/* tok-473 %txt /tests/golden/types-union-context-flow/tokens/txt
1630−/* tre-473 %txt /tests/golden/types-union-import/tree/txt
1630+/* tre-473 %txt /tests/golden/types-union-context-flow/tree/txt
1631−/* mod-473-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1631+/* typ-473 %txt /tests/golden/types-union-context-flow/types/txt
1632−/* typ-473 %txt /tests/golden/types-union-import/types/txt
1632+/* src-474 %jibb /tests/golden/types-union-import/source/jibb
1633−/* mtre-473 %txt /tests/golden/types-union-import/module-trees/txt
1633+/* tok-474 %txt /tests/golden/types-union-import/tokens/txt
1634−/* src-474 %jibb /tests/golden/types-union-local-pending/source/jibb
1634+/* tre-474 %txt /tests/golden/types-union-import/tree/txt
1635−/* tok-474 %txt /tests/golden/types-union-local-pending/tokens/txt
1635+/* mod-474-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1636−/* tre-474 %txt /tests/golden/types-union-local-pending/tree/txt
1636+/* typ-474 %txt /tests/golden/types-union-import/types/txt
1637−/* typ-474 %txt /tests/golden/types-union-local-pending/types/txt
1637+/* mtre-474 %txt /tests/golden/types-union-import/module-trees/txt
1638−/* src-475 %jibb /tests/golden/types-union-overlap/source/jibb
1638+/* src-475 %jibb /tests/golden/types-union-local-pending/source/jibb
1639−/* tok-475 %txt /tests/golden/types-union-overlap/tokens/txt
1639+/* tok-475 %txt /tests/golden/types-union-local-pending/tokens/txt
1640−/* tre-475 %txt /tests/golden/types-union-overlap/tree/txt
1640+/* tre-475 %txt /tests/golden/types-union-local-pending/tree/txt
1641−/* typ-475 %txt /tests/golden/types-union-overlap/types/txt
1641+/* typ-475 %txt /tests/golden/types-union-local-pending/types/txt
1642−/* src-476 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1642+/* src-476 %jibb /tests/golden/types-union-overlap/source/jibb
1643−/* tok-476 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1643+/* tok-476 %txt /tests/golden/types-union-overlap/tokens/txt
1644−/* tre-476 %txt /tests/golden/types-union-overlap-nested/tree/txt
1644+/* tre-476 %txt /tests/golden/types-union-overlap/tree/txt
1645−/* typ-476 %txt /tests/golden/types-union-overlap-nested/types/txt
1645+/* typ-476 %txt /tests/golden/types-union-overlap/types/txt
1646−/* src-477 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1646+/* src-477 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1647−/* tok-477 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1647+/* tok-477 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1648−/* tre-477 %txt /tests/golden/types-union-phantom-generic/tree/txt
1648+/* tre-477 %txt /tests/golden/types-union-overlap-nested/tree/txt
1649−/* typ-477 %txt /tests/golden/types-union-phantom-generic/types/txt
1649+/* typ-477 %txt /tests/golden/types-union-overlap-nested/types/txt
1650−/* src-478 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1650+/* src-478 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1651−/* tok-478 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1651+/* tok-478 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1652−/* tre-478 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1652+/* tre-478 %txt /tests/golden/types-union-phantom-generic/tree/txt
1653−/* mod-478-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1653+/* typ-478 %txt /tests/golden/types-union-phantom-generic/types/txt
1654−/* typ-478 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1654+/* src-479 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1655−/* mtre-478 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1655+/* tok-479 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1656−/* src-479 %jibb /tests/golden/types-union-print-distinct/source/jibb
1656+/* tre-479 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1657−/* tok-479 %txt /tests/golden/types-union-print-distinct/tokens/txt
1657+/* mod-479-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1658−/* tre-479 %txt /tests/golden/types-union-print-distinct/tree/txt
1658+/* typ-479 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1659−/* mod-479-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1659+/* mtre-479 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1660−/* mod-479-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1660+/* src-480 %jibb /tests/golden/types-union-print-distinct/source/jibb
1661−/* mod-479-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1661+/* tok-480 %txt /tests/golden/types-union-print-distinct/tokens/txt
1662−/* typ-479 %txt /tests/golden/types-union-print-distinct/types/txt
1662+/* tre-480 %txt /tests/golden/types-union-print-distinct/tree/txt
1663−/* mtre-479 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1663+/* mod-480-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1664−/* src-480 %jibb /tests/golden/types-union-print-escape/source/jibb
1664+/* mod-480-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1665−/* tok-480 %txt /tests/golden/types-union-print-escape/tokens/txt
1665+/* mod-480-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1666−/* tre-480 %txt /tests/golden/types-union-print-escape/tree/txt
1666+/* typ-480 %txt /tests/golden/types-union-print-distinct/types/txt
1667−/* typ-480 %txt /tests/golden/types-union-print-escape/types/txt
1667+/* mtre-480 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1668−/* src-481 %jibb /tests/golden/types-union-print-local/source/jibb
1668+/* src-481 %jibb /tests/golden/types-union-print-escape/source/jibb
1669−/* tok-481 %txt /tests/golden/types-union-print-local/tokens/txt
1669+/* tok-481 %txt /tests/golden/types-union-print-escape/tokens/txt
1670−/* tre-481 %txt /tests/golden/types-union-print-local/tree/txt
1670+/* tre-481 %txt /tests/golden/types-union-print-escape/tree/txt
1671−/* typ-481 %txt /tests/golden/types-union-print-local/types/txt
1671+/* typ-481 %txt /tests/golden/types-union-print-escape/types/txt
1672−/* src-482 %jibb /tests/golden/types-union-print-nested/source/jibb
1672+/* src-482 %jibb /tests/golden/types-union-print-local/source/jibb
1673−/* tok-482 %txt /tests/golden/types-union-print-nested/tokens/txt
1673+/* tok-482 %txt /tests/golden/types-union-print-local/tokens/txt
1674−/* tre-482 %txt /tests/golden/types-union-print-nested/tree/txt
1674+/* tre-482 %txt /tests/golden/types-union-print-local/tree/txt
1675−/* typ-482 %txt /tests/golden/types-union-print-nested/types/txt
1675+/* typ-482 %txt /tests/golden/types-union-print-local/types/txt
1676−/* src-483 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1676+/* src-483 %jibb /tests/golden/types-union-print-nested/source/jibb
1677−/* tok-483 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1677+/* tok-483 %txt /tests/golden/types-union-print-nested/tokens/txt
1678−/* tre-483 %txt /tests/golden/types-union-print-same-origin/tree/txt
1678+/* tre-483 %txt /tests/golden/types-union-print-nested/tree/txt
1679−/* mod-483-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1679+/* typ-483 %txt /tests/golden/types-union-print-nested/types/txt
1680−/* typ-483 %txt /tests/golden/types-union-print-same-origin/types/txt
1680+/* src-484 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1681−/* mtre-483 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1681+/* tok-484 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1682−/* src-484 %jibb /tests/golden/types-union-print-transitive/source/jibb
1682+/* tre-484 %txt /tests/golden/types-union-print-same-origin/tree/txt
1683−/* tok-484 %txt /tests/golden/types-union-print-transitive/tokens/txt
1683+/* mod-484-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1684−/* tre-484 %txt /tests/golden/types-union-print-transitive/tree/txt
1684+/* typ-484 %txt /tests/golden/types-union-print-same-origin/types/txt
1685−/* mod-484-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1685+/* mtre-484 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1686−/* mod-484-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1686+/* src-485 %jibb /tests/golden/types-union-print-transitive/source/jibb
1687−/* typ-484 %txt /tests/golden/types-union-print-transitive/types/txt
1687+/* tok-485 %txt /tests/golden/types-union-print-transitive/tokens/txt
1688−/* mtre-484 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1688+/* tre-485 %txt /tests/golden/types-union-print-transitive/tree/txt
1689−/* src-485 %jibb /tests/golden/types-union-singleton/source/jibb
1689+/* mod-485-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1690−/* tok-485 %txt /tests/golden/types-union-singleton/tokens/txt
1690+/* mod-485-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1691−/* tre-485 %txt /tests/golden/types-union-singleton/tree/txt
1691+/* typ-485 %txt /tests/golden/types-union-print-transitive/types/txt
1692−/* typ-485 %txt /tests/golden/types-union-singleton/types/txt
1692+/* mtre-485 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1693−/* src-486 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1693+/* src-486 %jibb /tests/golden/types-union-singleton/source/jibb
1694−/* tok-486 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1694+/* tok-486 %txt /tests/golden/types-union-singleton/tokens/txt
1695−/* tre-486 %txt /tests/golden/types-union-tag-atoms/tree/txt
1695+/* tre-486 %txt /tests/golden/types-union-singleton/tree/txt
1696−/* typ-486 %txt /tests/golden/types-union-tag-atoms/types/txt
1696+/* typ-486 %txt /tests/golden/types-union-singleton/types/txt
1697−/* src-487 %jibb /tests/golden/types-union-tags/source/jibb
1697+/* src-487 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1698−/* tok-487 %txt /tests/golden/types-union-tags/tokens/txt
1698+/* tok-487 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1699−/* tre-487 %txt /tests/golden/types-union-tags/tree/txt
1699+/* tre-487 %txt /tests/golden/types-union-tag-atoms/tree/txt
1700−/* typ-487 %txt /tests/golden/types-union-tags/types/txt
1700+/* typ-487 %txt /tests/golden/types-union-tag-atoms/types/txt
1701−/* src-488 %jibb /tests/golden/types-union-unresolved/source/jibb
1701+/* src-488 %jibb /tests/golden/types-union-tags/source/jibb
1702−/* tok-488 %txt /tests/golden/types-union-unresolved/tokens/txt
1702+/* tok-488 %txt /tests/golden/types-union-tags/tokens/txt
1703−/* tre-488 %txt /tests/golden/types-union-unresolved/tree/txt
1703+/* tre-488 %txt /tests/golden/types-union-tags/tree/txt
1704−/* typ-488 %txt /tests/golden/types-union-unresolved/types/txt
1704+/* typ-488 %txt /tests/golden/types-union-tags/types/txt
1705−/* src-489 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1705+/* src-489 %jibb /tests/golden/types-union-unresolved/source/jibb
1706−/* tok-489 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1706+/* tok-489 %txt /tests/golden/types-union-unresolved/tokens/txt
1707−/* tre-489 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1707+/* tre-489 %txt /tests/golden/types-union-unresolved/tree/txt
1708−/* typ-489 %txt /tests/golden/types-union-unresolved-flow/types/txt
1708+/* typ-489 %txt /tests/golden/types-union-unresolved/types/txt
1709+/* src-490 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1710+/* tok-490 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1711+/* tre-490 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1712+/* typ-490 %txt /tests/golden/types-union-unresolved-flow/types/txt
1709|%
1713|%
1710:: one arm per case
1714:: one arm per case
1711::
1715::
@@ -2517,176 +2521,178 @@
2517 (weld (check ~.prelude-unit-list-transforms src-403 `tok-403 `tre-403) (check-types ~.prelude-unit-list-transforms ~[%tests %golden ~.prelude-unit-list-transforms %source %jibb] src-403 `typ-403))
2521 (weld (check ~.prelude-unit-list-transforms src-403 `tok-403 `tre-403) (check-types ~.prelude-unit-list-transforms ~[%tests %golden ~.prelude-unit-list-transforms %source %jibb] src-403 `typ-403))
2518++ test-types-generic-arity
2522++ test-types-generic-arity
2519 (weld (check ~.types-generic-arity src-404 `tok-404 `tre-404) (check-types ~.types-generic-arity ~[%tests %golden ~.types-generic-arity %source %jibb] src-404 `typ-404))
2523 (weld (check ~.types-generic-arity src-404 `tok-404 `tre-404) (check-types ~.types-generic-arity ~[%tests %golden ~.types-generic-arity %source %jibb] src-404 `typ-404))
2524+++ test-types-generic-face-inference
2525+ (weld (check ~.types-generic-face-inference src-405 `tok-405 `tre-405) (check-types ~.types-generic-face-inference ~[%tests %golden ~.types-generic-face-inference %source %jibb] src-405 `typ-405))
2520++ test-types-generic-gates
2526++ test-types-generic-gates
2521− (weld (check ~.types-generic-gates src-405 `tok-405 `tre-405) (check-types ~.types-generic-gates ~[%tests %golden ~.types-generic-gates %source %jibb] src-405 `typ-405))
2527+ (weld (check ~.types-generic-gates src-406 `tok-406 `tre-406) (check-types ~.types-generic-gates ~[%tests %golden ~.types-generic-gates %source %jibb] src-406 `typ-406))
2522++ test-types-generic-import-reverse
2528++ test-types-generic-import-reverse
2523− (weld (weld (check ~.types-generic-import-reverse src-406 `tok-406 `tre-406) (check-module-types ~.types-generic-import-reverse ~[%tests %golden ~.types-generic-import-reverse %source %jibb] src-406 `typ-406 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-406-1]])) (check-module-trees ~.types-generic-import-reverse `mtre-406 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-406-1]]))
2529+ (weld (weld (check ~.types-generic-import-reverse src-407 `tok-407 `tre-407) (check-module-types ~.types-generic-import-reverse ~[%tests %golden ~.types-generic-import-reverse %source %jibb] src-407 `typ-407 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-407-1]])) (check-module-trees ~.types-generic-import-reverse `mtre-407 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-407-1]]))
2524++ test-types-generic-lexical-alias
2530++ test-types-generic-lexical-alias
2525− (weld (check ~.types-generic-lexical-alias src-407 `tok-407 `tre-407) (check-types ~.types-generic-lexical-alias ~[%tests %golden ~.types-generic-lexical-alias %source %jibb] src-407 `typ-407))
2531+ (weld (check ~.types-generic-lexical-alias src-408 `tok-408 `tre-408) (check-types ~.types-generic-lexical-alias ~[%tests %golden ~.types-generic-lexical-alias %source %jibb] src-408 `typ-408))
2526++ test-types-generic-local-parameter
2532++ test-types-generic-local-parameter
2527− (weld (check ~.types-generic-local-parameter src-408 `tok-408 `tre-408) (check-types ~.types-generic-local-parameter ~[%tests %golden ~.types-generic-local-parameter %source %jibb] src-408 `typ-408))
2533+ (weld (check ~.types-generic-local-parameter src-409 `tok-409 `tre-409) (check-types ~.types-generic-local-parameter ~[%tests %golden ~.types-generic-local-parameter %source %jibb] src-409 `typ-409))
2528++ test-types-generic-local-scope
2534++ test-types-generic-local-scope
2529− (weld (check ~.types-generic-local-scope src-409 `tok-409 `tre-409) (check-types ~.types-generic-local-scope ~[%tests %golden ~.types-generic-local-scope %source %jibb] src-409 `typ-409))
2535+ (weld (check ~.types-generic-local-scope src-410 `tok-410 `tre-410) (check-types ~.types-generic-local-scope ~[%tests %golden ~.types-generic-local-scope %source %jibb] src-410 `typ-410))
2530++ test-types-generic-module
2536++ test-types-generic-module
2531− (weld (weld (check ~.types-generic-module src-410 `tok-410 `tre-410) (check-module-types ~.types-generic-module ~[%tests %golden ~.types-generic-module %source %jibb] src-410 `typ-410 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-410-1]])) (check-module-trees ~.types-generic-module `mtre-410 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-410-1]]))
2537+ (weld (weld (check ~.types-generic-module src-411 `tok-411 `tre-411) (check-module-types ~.types-generic-module ~[%tests %golden ~.types-generic-module %source %jibb] src-411 `typ-411 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-411-1]])) (check-module-trees ~.types-generic-module `mtre-411 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-411-1]]))
2532++ test-types-generic-nested-scope
2538++ test-types-generic-nested-scope
2533− (weld (check ~.types-generic-nested-scope src-411 `tok-411 `tre-411) (check-types ~.types-generic-nested-scope ~[%tests %golden ~.types-generic-nested-scope %source %jibb] src-411 `typ-411))
2539+ (weld (check ~.types-generic-nested-scope src-412 `tok-412 `tre-412) (check-types ~.types-generic-nested-scope ~[%tests %golden ~.types-generic-nested-scope %source %jibb] src-412 `typ-412))
2534++ test-types-generic-parameters
2540++ test-types-generic-parameters
2535− (weld (check ~.types-generic-parameters src-412 `tok-412 `tre-412) (check-types ~.types-generic-parameters ~[%tests %golden ~.types-generic-parameters %source %jibb] src-412 `typ-412))
2541+ (weld (check ~.types-generic-parameters src-413 `tok-413 `tre-413) (check-types ~.types-generic-parameters ~[%tests %golden ~.types-generic-parameters %source %jibb] src-413 `typ-413))
2536++ test-types-generic-record
2542++ test-types-generic-record
2537− (weld (check ~.types-generic-record src-413 `tok-413 `tre-413) (check-types ~.types-generic-record ~[%tests %golden ~.types-generic-record %source %jibb] src-413 `typ-413))
2543+ (weld (check ~.types-generic-record src-414 `tok-414 `tre-414) (check-types ~.types-generic-record ~[%tests %golden ~.types-generic-record %source %jibb] src-414 `typ-414))
2538++ test-types-generic-recursive-union
2544++ test-types-generic-recursive-union
2539− (weld (check ~.types-generic-recursive-union src-414 `tok-414 `tre-414) (check-types ~.types-generic-recursive-union ~[%tests %golden ~.types-generic-recursive-union %source %jibb] src-414 `typ-414))
2545+ (weld (check ~.types-generic-recursive-union src-415 `tok-415 `tre-415) (check-types ~.types-generic-recursive-union ~[%tests %golden ~.types-generic-recursive-union %source %jibb] src-415 `typ-415))
2540++ test-types-generic-repeated
2546++ test-types-generic-repeated
2541− (weld (check ~.types-generic-repeated src-415 `tok-415 `tre-415) (check-types ~.types-generic-repeated ~[%tests %golden ~.types-generic-repeated %source %jibb] src-415 `typ-415))
2547+ (weld (check ~.types-generic-repeated src-416 `tok-416 `tre-416) (check-types ~.types-generic-repeated ~[%tests %golden ~.types-generic-repeated %source %jibb] src-416 `typ-416))
2542++ test-types-generic-union-alias
2548++ test-types-generic-union-alias
2543− (weld (check ~.types-generic-union-alias src-416 `tok-416 `tre-416) (check-types ~.types-generic-union-alias ~[%tests %golden ~.types-generic-union-alias %source %jibb] src-416 `typ-416))
2549+ (weld (check ~.types-generic-union-alias src-417 `tok-417 `tre-417) (check-types ~.types-generic-union-alias ~[%tests %golden ~.types-generic-union-alias %source %jibb] src-417 `typ-417))
2544++ test-types-generic-union-alias-face
2550++ test-types-generic-union-alias-face
2545− (weld (weld (check ~.types-generic-union-alias-face src-417 `tok-417 `tre-417) (check-module-types ~.types-generic-union-alias-face ~[%tests %golden ~.types-generic-union-alias-face %source %jibb] src-417 `typ-417 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-417-1]])) (check-module-trees ~.types-generic-union-alias-face `mtre-417 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-417-1]]))
2551+ (weld (weld (check ~.types-generic-union-alias-face src-418 `tok-418 `tre-418) (check-module-types ~.types-generic-union-alias-face ~[%tests %golden ~.types-generic-union-alias-face %source %jibb] src-418 `typ-418 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-418-1]])) (check-module-trees ~.types-generic-union-alias-face `mtre-418 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-418-1]]))
2546++ test-types-generic-union-capitals
2552++ test-types-generic-union-capitals
2547− (weld (check ~.types-generic-union-capitals src-418 `tok-418 `tre-418) (check-types ~.types-generic-union-capitals ~[%tests %golden ~.types-generic-union-capitals %source %jibb] src-418 `typ-418))
2553+ (weld (check ~.types-generic-union-capitals src-419 `tok-419 `tre-419) (check-types ~.types-generic-union-capitals ~[%tests %golden ~.types-generic-union-capitals %source %jibb] src-419 `typ-419))
2548++ test-types-generic-union-errors
2554++ test-types-generic-union-errors
2549− (weld (check ~.types-generic-union-errors src-419 `tok-419 `tre-419) (check-types ~.types-generic-union-errors ~[%tests %golden ~.types-generic-union-errors %source %jibb] src-419 `typ-419))
2555+ (weld (check ~.types-generic-union-errors src-420 `tok-420 `tre-420) (check-types ~.types-generic-union-errors ~[%tests %golden ~.types-generic-union-errors %source %jibb] src-420 `typ-420))
2550++ test-types-generic-union-escaping
2556++ test-types-generic-union-escaping
2551− (weld (weld (check ~.types-generic-union-escaping src-420 `tok-420 `tre-420) (check-module-types ~.types-generic-union-escaping ~[%tests %golden ~.types-generic-union-escaping %source %jibb] src-420 `typ-420 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-420-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-420-2]])) (check-module-trees ~.types-generic-union-escaping `mtre-420 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-420-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-420-2]]))
2557+ (weld (weld (check ~.types-generic-union-escaping src-421 `tok-421 `tre-421) (check-module-types ~.types-generic-union-escaping ~[%tests %golden ~.types-generic-union-escaping %source %jibb] src-421 `typ-421 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-421-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-421-2]])) (check-module-trees ~.types-generic-union-escaping `mtre-421 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-421-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-421-2]]))
2552++ test-types-generic-union-import
2558++ test-types-generic-union-import
2553− (weld (weld (check ~.types-generic-union-import src-421 `tok-421 `tre-421) (check-module-types ~.types-generic-union-import ~[%tests %golden ~.types-generic-union-import %source %jibb] src-421 `typ-421 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-421-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-421-2]])) (check-module-trees ~.types-generic-union-import `mtre-421 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-421-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-421-2]]))
2559+ (weld (weld (check ~.types-generic-union-import src-422 `tok-422 `tre-422) (check-module-types ~.types-generic-union-import ~[%tests %golden ~.types-generic-union-import %source %jibb] src-422 `typ-422 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-422-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-422-2]])) (check-module-trees ~.types-generic-union-import `mtre-422 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-422-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-422-2]]))
2554++ test-types-generic-union-local
2560++ test-types-generic-union-local
2555− (weld (check ~.types-generic-union-local src-422 `tok-422 `tre-422) (check-types ~.types-generic-union-local ~[%tests %golden ~.types-generic-union-local %source %jibb] src-422 `typ-422))
2561+ (weld (check ~.types-generic-union-local src-423 `tok-423 `tre-423) (check-types ~.types-generic-union-local ~[%tests %golden ~.types-generic-union-local %source %jibb] src-423 `typ-423))
2556++ test-types-generic-union-transitive
2562++ test-types-generic-union-transitive
2557− (weld (weld (check ~.types-generic-union-transitive src-423 `tok-423 `tre-423) (check-module-types ~.types-generic-union-transitive ~[%tests %golden ~.types-generic-union-transitive %source %jibb] src-423 `typ-423 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-423-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-423-2]])) (check-module-trees ~.types-generic-union-transitive `mtre-423 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-423-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-423-2]]))
2563+ (weld (weld (check ~.types-generic-union-transitive src-424 `tok-424 `tre-424) (check-module-types ~.types-generic-union-transitive ~[%tests %golden ~.types-generic-union-transitive %source %jibb] src-424 `typ-424 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-424-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-424-2]])) (check-module-trees ~.types-generic-union-transitive `mtre-424 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-424-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-424-2]]))
2558++ test-types-import-mark
2564++ test-types-import-mark
2559− (weld (check ~.types-import-mark src-424 `tok-424 `tre-424) (check-mark-types ~.types-import-mark ~[%tests %golden ~.types-import-mark %source %jibb] src-424 `typ-424 ~[[%fixture %title imp-424-1]] ~[[%label mark-424-1]]))
2565+ (weld (check ~.types-import-mark src-425 `tok-425 `tre-425) (check-mark-types ~.types-import-mark ~[%tests %golden ~.types-import-mark %source %jibb] src-425 `typ-425 ~[[%fixture %title imp-425-1]] ~[[%label mark-425-1]]))
2560++ test-types-import-mark-record
2566++ test-types-import-mark-record
2561− (weld (check ~.types-import-mark-record src-425 `tok-425 `tre-425) (check-mark-types ~.types-import-mark-record ~[%tests %golden ~.types-import-mark-record %source %jibb] src-425 `typ-425 ~ ~[[%note mark-425-1] [%choice mark-425-2]]))
2567+ (weld (check ~.types-import-mark-record src-426 `tok-426 `tre-426) (check-mark-types ~.types-import-mark-record ~[%tests %golden ~.types-import-mark-record %source %jibb] src-426 `typ-426 ~ ~[[%note mark-426-1] [%choice mark-426-2]]))
2562++ test-types-import-missing-mold
2568++ test-types-import-missing-mold
2563− (weld (check ~.types-import-missing-mold src-426 `tok-426 `tre-426) (check-import-types ~.types-import-missing-mold ~[%tests %golden ~.types-import-missing-mold %source %jibb] src-426 `typ-426 ~[[%fixture %missing imp-426-1]]))
2569+ (weld (check ~.types-import-missing-mold src-427 `tok-427 `tre-427) (check-import-types ~.types-import-missing-mold ~[%tests %golden ~.types-import-missing-mold %source %jibb] src-427 `typ-427 ~[[%fixture %missing imp-427-1]]))
2564++ test-types-import-sur
2570++ test-types-import-sur
2565− (weld (check ~.types-import-sur src-427 `tok-427 `tre-427) (check-import-types ~.types-import-sur ~[%tests %golden ~.types-import-sur %source %jibb] src-427 `typ-427 ~[[%fixture %title imp-427-1] [%fixture %pair imp-427-2]]))
2571+ (weld (check ~.types-import-sur src-428 `tok-428 `tre-428) (check-import-types ~.types-import-sur ~[%tests %golden ~.types-import-sur %source %jibb] src-428 `typ-428 ~[[%fixture %title imp-428-1] [%fixture %pair imp-428-2]]))
2566++ test-types-import-sur-record-graph
2572++ test-types-import-sur-record-graph
2567− (weld (weld (check ~.types-import-sur-record-graph src-428 `tok-428 `tre-428) (check-module-types ~.types-import-sur-record-graph ~[%tests %golden ~.types-import-sur-record-graph %source %jibb] src-428 `typ-428 ~[[%fixture %entry imp-428-1]] ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-428-1]])) (check-module-trees ~.types-import-sur-record-graph `mtre-428 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-428-1]]))
2573+ (weld (weld (check ~.types-import-sur-record-graph src-429 `tok-429 `tre-429) (check-module-types ~.types-import-sur-record-graph ~[%tests %golden ~.types-import-sur-record-graph %source %jibb] src-429 `typ-429 ~[[%fixture %entry imp-429-1]] ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-429-1]])) (check-module-trees ~.types-import-sur-record-graph `mtre-429 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-429-1]]))
2568++ test-types-module-fixtures
2574++ test-types-module-fixtures
2569− (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-429 `tok-429 `tre-429) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-429 `typ-429 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-429-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-429-2]])) (check-module-trees ~.types-module-fixtures `mtre-429 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-429-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-429-2]]))
2575+ (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-430 `tok-430 `tre-430) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-430 `typ-430 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-430-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-430-2]])) (check-module-trees ~.types-module-fixtures `mtre-430 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-430-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-430-2]]))
2570++ test-types-module-mixed
2576++ test-types-module-mixed
2571− (weld (weld (check ~.types-module-mixed src-430 `tok-430 `tre-430) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-430 `typ-430 ~[[%fixture %title imp-430-1]] ~[[%label mark-430-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-430-1]])) (check-module-trees ~.types-module-mixed `mtre-430 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-430-1]]))
2577+ (weld (weld (check ~.types-module-mixed src-431 `tok-431 `tre-431) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-431 `typ-431 ~[[%fixture %title imp-431-1]] ~[[%label mark-431-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-431-1]])) (check-module-trees ~.types-module-mixed `mtre-431 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-431-1]]))
2572++ test-types-partial-apply
2578++ test-types-partial-apply
2573− (weld (check ~.types-partial-apply src-431 `tok-431 `tre-431) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-431 `typ-431))
2579+ (weld (check ~.types-partial-apply src-432 `tok-432 `tre-432) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-432 `typ-432))
2574++ test-types-partial-atom-alias
2580++ test-types-partial-atom-alias
2575− (weld (check ~.types-partial-atom-alias src-432 `tok-432 `tre-432) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-432 `typ-432))
2581+ (weld (check ~.types-partial-atom-alias src-433 `tok-433 `tre-433) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-433 `typ-433))
2576++ test-types-partial-atom-constraint
2582++ test-types-partial-atom-constraint
2577− (weld (check ~.types-partial-atom-constraint src-433 `tok-433 `tre-433) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-433 `typ-433))
2583+ (weld (check ~.types-partial-atom-constraint src-434 `tok-434 `tre-434) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-434 `typ-434))
2578++ test-types-partial-atom-widening
2584++ test-types-partial-atom-widening
2579− (weld (check ~.types-partial-atom-widening src-434 `tok-434 `tre-434) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-434 `typ-434))
2585+ (weld (check ~.types-partial-atom-widening src-435 `tok-435 `tre-435) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-435 `typ-435))
2580++ test-types-partial-aura
2586++ test-types-partial-aura
2581− (weld (check ~.types-partial-aura src-435 `tok-435 `tre-435) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-435 `typ-435))
2587+ (weld (check ~.types-partial-aura src-436 `tok-436 `tre-436) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-436 `typ-436))
2582++ test-types-partial-aura-family
2588++ test-types-partial-aura-family
2583− (weld (check ~.types-partial-aura-family src-436 `tok-436 `tre-436) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-436 `typ-436))
2589+ (weld (check ~.types-partial-aura-family src-437 `tok-437 `tre-437) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-437 `typ-437))
2584++ test-types-partial-aura-generalization
2590++ test-types-partial-aura-generalization
2585− (weld (check ~.types-partial-aura-generalization src-437 `tok-437 `tre-437) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-437 `typ-437))
2591+ (weld (check ~.types-partial-aura-generalization src-438 `tok-438 `tre-438) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-438 `typ-438))
2586++ test-types-partial-bare-atom
2592++ test-types-partial-bare-atom
2587− (weld (check ~.types-partial-bare-atom src-438 `tok-438 `tre-438) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-438 `typ-438))
2593+ (weld (check ~.types-partial-bare-atom src-439 `tok-439 `tre-439) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-439 `typ-439))
2588++ test-types-partial-branch-widening
2594++ test-types-partial-branch-widening
2589− (weld (check ~.types-partial-branch-widening src-439 `tok-439 `tre-439) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-439 `typ-439))
2595+ (weld (check ~.types-partial-branch-widening src-440 `tok-440 `tre-440) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-440 `typ-440))
2590++ test-types-partial-conflicting-sites
2596++ test-types-partial-conflicting-sites
2591− (weld (check ~.types-partial-conflicting-sites src-440 `tok-440 `tre-440) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-440 `typ-440))
2597+ (weld (check ~.types-partial-conflicting-sites src-441 `tok-441 `tre-441) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-441 `typ-441))
2592++ test-types-partial-decimal-default
2598++ test-types-partial-decimal-default
2593− (weld (check ~.types-partial-decimal-default src-441 `tok-441 `tre-441) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-441 `typ-441))
2599+ (weld (check ~.types-partial-decimal-default src-442 `tok-442 `tre-442) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-442 `typ-442))
2594++ test-types-partial-dependency-chain
2600++ test-types-partial-dependency-chain
2595− (weld (check ~.types-partial-dependency-chain src-442 `tok-442 `tre-442) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-442 `typ-442))
2601+ (weld (check ~.types-partial-dependency-chain src-443 `tok-443 `tre-443) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-443 `typ-443))
2596++ test-types-partial-explicit-capital
2602++ test-types-partial-explicit-capital
2597− (weld (check ~.types-partial-explicit-capital src-443 `tok-443 `tre-443) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-443 `typ-443))
2603+ (weld (check ~.types-partial-explicit-capital src-444 `tok-444 `tre-444) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-444 `typ-444))
2598++ test-types-partial-forward
2604++ test-types-partial-forward
2599− (weld (check ~.types-partial-forward src-444 `tok-444 `tre-444) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-444 `typ-444))
2605+ (weld (check ~.types-partial-forward src-445 `tok-445 `tre-445) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-445 `typ-445))
2600++ test-types-partial-generalization
2606++ test-types-partial-generalization
2601− (weld (check ~.types-partial-generalization src-445 `tok-445 `tre-445) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-445 `typ-445))
2607+ (weld (check ~.types-partial-generalization src-446 `tok-446 `tre-446) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-446 `typ-446))
2602++ test-types-partial-identity
2608++ test-types-partial-identity
2603− (weld (check ~.types-partial-identity src-446 `tok-446 `tre-446) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-446 `typ-446))
2609+ (weld (check ~.types-partial-identity src-447 `tok-447 `tre-447) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-447 `typ-447))
2604++ test-types-partial-independent-atoms
2610++ test-types-partial-independent-atoms
2605− (weld (check ~.types-partial-independent-atoms src-447 `tok-447 `tre-447) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-447 `typ-447))
2611+ (weld (check ~.types-partial-independent-atoms src-448 `tok-448 `tre-448) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-448 `typ-448))
2606++ test-types-partial-local-molds
2612++ test-types-partial-local-molds
2607− (weld (check ~.types-partial-local-molds src-448 `tok-448 `tre-448) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-448 `typ-448))
2613+ (weld (check ~.types-partial-local-molds src-449 `tok-449 `tre-449) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-449 `typ-449))
2608++ test-types-partial-locals
2614++ test-types-partial-locals
2609− (weld (check ~.types-partial-locals src-449 `tok-449 `tre-449) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-449 `typ-449))
2615+ (weld (check ~.types-partial-locals src-450 `tok-450 `tre-450) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-450 `typ-450))
2610++ test-types-partial-many-atom-constraints
2616++ test-types-partial-many-atom-constraints
2611− (weld (check ~.types-partial-many-atom-constraints src-450 `tok-450 `tre-450) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-450 `typ-450))
2617+ (weld (check ~.types-partial-many-atom-constraints src-451 `tok-451 `tre-451) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-451 `typ-451))
2612++ test-types-partial-mold-bare-aura
2618++ test-types-partial-mold-bare-aura
2613− (weld (check ~.types-partial-mold-bare-aura src-451 `tok-451 `tre-451) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-451 `typ-451))
2619+ (weld (check ~.types-partial-mold-bare-aura src-452 `tok-452 `tre-452) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-452 `typ-452))
2614++ test-types-partial-mold-composite
2620++ test-types-partial-mold-composite
2615− (weld (check ~.types-partial-mold-composite src-452 `tok-452 `tre-452) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-452 `typ-452))
2621+ (weld (check ~.types-partial-mold-composite src-453 `tok-453 `tre-453) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-453 `typ-453))
2616++ test-types-partial-mold-forward
2622++ test-types-partial-mold-forward
2617− (weld (check ~.types-partial-mold-forward src-453 `tok-453 `tre-453) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-453 `typ-453))
2623+ (weld (check ~.types-partial-mold-forward src-454 `tok-454 `tre-454) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-454 `typ-454))
2618++ test-types-partial-mold-recursive
2624++ test-types-partial-mold-recursive
2619− (weld (check ~.types-partial-mold-recursive src-454 `tok-454 `tre-454) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-454 `typ-454))
2625+ (weld (check ~.types-partial-mold-recursive src-455 `tok-455 `tre-455) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-455 `typ-455))
2620++ test-types-partial-occurs
2626++ test-types-partial-occurs
2621− (weld (check ~.types-partial-occurs src-455 `tok-455 `tre-455) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-455 `typ-455))
2627+ (weld (check ~.types-partial-occurs src-456 `tok-456 `tre-456) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-456 `typ-456))
2622++ test-types-partial-projection
2628++ test-types-partial-projection
2623− (weld (check ~.types-partial-projection src-456 `tok-456 `tre-456) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-456 `typ-456))
2629+ (weld (check ~.types-partial-projection src-457 `tok-457 `tre-457) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-457 `typ-457))
2624++ test-types-partial-shadow-global
2630++ test-types-partial-shadow-global
2625− (weld (check ~.types-partial-shadow-global src-457 `tok-457 `tre-457) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-457 `typ-457))
2631+ (weld (check ~.types-partial-shadow-global src-458 `tok-458 `tre-458) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-458 `typ-458))
2626++ test-types-partial-shared-tvar
2632++ test-types-partial-shared-tvar
2627− (weld (check ~.types-partial-shared-tvar src-458 `tok-458 `tre-458) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-458 `typ-458))
2633+ (weld (check ~.types-partial-shared-tvar src-459 `tok-459 `tre-459) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-459 `typ-459))
2628++ test-types-partial-union-cases
2634++ test-types-partial-union-cases
2629− (weld (check ~.types-partial-union-cases src-459 `tok-459 `tre-459) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-459 `typ-459))
2635+ (weld (check ~.types-partial-union-cases src-460 `tok-460 `tre-460) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-460 `typ-460))
2630++ test-types-partial-union-edges
2636++ test-types-partial-union-edges
2631− (weld (check ~.types-partial-union-edges src-460 `tok-460 `tre-460) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-460 `typ-460))
2637+ (weld (check ~.types-partial-union-edges src-461 `tok-461 `tre-461) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-461 `typ-461))
2632++ test-types-partial-unresolved-tag
2638++ test-types-partial-unresolved-tag
2633− (weld (check ~.types-partial-unresolved-tag src-461 `tok-461 `tre-461) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-461 `typ-461))
2639+ (weld (check ~.types-partial-unresolved-tag src-462 `tok-462 `tre-462) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-462 `typ-462))
2634++ test-types-record-bound-variable
2640++ test-types-record-bound-variable
2635− (weld (check ~.types-record-bound-variable src-462 `tok-462 `tre-462) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-462 `typ-462))
2641+ (weld (check ~.types-record-bound-variable src-463 `tok-463 `tre-463) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-463 `typ-463))
2636++ test-types-record-faces
2642++ test-types-record-faces
2637− (weld (check ~.types-record-faces src-463 `tok-463 `tre-463) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-463 `typ-463))
2643+ (weld (check ~.types-record-faces src-464 `tok-464 `tre-464) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-464 `typ-464))
2638++ test-types-record-import
2644++ test-types-record-import
2639− (weld (weld (check ~.types-record-import src-464 `tok-464 `tre-464) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-464 `typ-464 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-464-1]])) (check-module-trees ~.types-record-import `mtre-464 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-464-1]]))
2645+ (weld (weld (check ~.types-record-import src-465 `tok-465 `tre-465) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-465 `typ-465 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-465-1]])) (check-module-trees ~.types-record-import `mtre-465 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-465-1]]))
2640++ test-types-record-local-scheme
2646++ test-types-record-local-scheme
2641− (weld (check ~.types-record-local-scheme src-465 `tok-465 `tre-465) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-465 `typ-465))
2647+ (weld (check ~.types-record-local-scheme src-466 `tok-466 `tre-466) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-466 `typ-466))
2642++ test-types-record-nested
2648++ test-types-record-nested
2643− (weld (check ~.types-record-nested src-466 `tok-466 `tre-466) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-466 `typ-466))
2649+ (weld (check ~.types-record-nested src-467 `tok-467 `tre-467) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-467 `typ-467))
2644++ test-types-record-to-tuple
2650++ test-types-record-to-tuple
2645− (weld (check ~.types-record-to-tuple src-467 `tok-467 `tre-467) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-467 `typ-467))
2651+ (weld (check ~.types-record-to-tuple src-468 `tok-468 `tre-468) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-468 `typ-468))
2646++ test-types-union-alias
2652++ test-types-union-alias
2647− (weld (check ~.types-union-alias src-468 `tok-468 `tre-468) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-468 `typ-468))
2653+ (weld (check ~.types-union-alias src-469 `tok-469 `tre-469) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-469 `typ-469))
2648++ test-types-union-branch-context
2654++ test-types-union-branch-context
2649− (weld (check ~.types-union-branch-context src-469 `tok-469 `tre-469) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-469 `typ-469))
2655+ (weld (check ~.types-union-branch-context src-470 `tok-470 `tre-470) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-470 `typ-470))
2650++ test-types-union-branch-pending
2656++ test-types-union-branch-pending
2651− (weld (check ~.types-union-branch-pending src-470 `tok-470 `tre-470) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-470 `typ-470))
2657+ (weld (check ~.types-union-branch-pending src-471 `tok-471 `tre-471) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-471 `typ-471))
2652++ test-types-union-constructor-shape
2658++ test-types-union-constructor-shape
2653− (weld (check ~.types-union-constructor-shape src-471 `tok-471 `tre-471) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-471 `typ-471))
2659+ (weld (check ~.types-union-constructor-shape src-472 `tok-472 `tre-472) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-472 `typ-472))
2654++ test-types-union-context-flow
2660++ test-types-union-context-flow
2655− (weld (check ~.types-union-context-flow src-472 `tok-472 `tre-472) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-472 `typ-472))
2661+ (weld (check ~.types-union-context-flow src-473 `tok-473 `tre-473) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-473 `typ-473))
2656++ test-types-union-import
2662++ test-types-union-import
2657− (weld (weld (check ~.types-union-import src-473 `tok-473 `tre-473) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-473 `typ-473 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-473-1]])) (check-module-trees ~.types-union-import `mtre-473 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-473-1]]))
2663+ (weld (weld (check ~.types-union-import src-474 `tok-474 `tre-474) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-474 `typ-474 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-474-1]])) (check-module-trees ~.types-union-import `mtre-474 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-474-1]]))
2658++ test-types-union-local-pending
2664++ test-types-union-local-pending
2659− (weld (check ~.types-union-local-pending src-474 `tok-474 `tre-474) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-474 `typ-474))
2665+ (weld (check ~.types-union-local-pending src-475 `tok-475 `tre-475) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-475 `typ-475))
2660++ test-types-union-overlap
2666++ test-types-union-overlap
2661− (weld (check ~.types-union-overlap src-475 `tok-475 `tre-475) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-475 `typ-475))
2667+ (weld (check ~.types-union-overlap src-476 `tok-476 `tre-476) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-476 `typ-476))
2662++ test-types-union-overlap-nested
2668++ test-types-union-overlap-nested
2663− (weld (check ~.types-union-overlap-nested src-476 `tok-476 `tre-476) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-476 `typ-476))
2669+ (weld (check ~.types-union-overlap-nested src-477 `tok-477 `tre-477) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-477 `typ-477))
2664++ test-types-union-phantom-generic
2670++ test-types-union-phantom-generic
2665− (weld (check ~.types-union-phantom-generic src-477 `tok-477 `tre-477) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-477 `typ-477))
2671+ (weld (check ~.types-union-phantom-generic src-478 `tok-478 `tre-478) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-478 `typ-478))
2666++ test-types-union-print-cross-namespace
2672++ test-types-union-print-cross-namespace
2667− (weld (weld (check ~.types-union-print-cross-namespace src-478 `tok-478 `tre-478) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-478 `typ-478 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-478-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-478 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-478-1]]))
2673+ (weld (weld (check ~.types-union-print-cross-namespace src-479 `tok-479 `tre-479) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-479 `typ-479 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-479 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]]))
2668++ test-types-union-print-distinct
2674++ test-types-union-print-distinct
2669− (weld (weld (check ~.types-union-print-distinct src-479 `tok-479 `tre-479) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-479 `typ-479 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-479-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-479-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-479-3]])) (check-module-trees ~.types-union-print-distinct `mtre-479 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-479-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-479-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-479-3]]))
2675+ (weld (weld (check ~.types-union-print-distinct src-480 `tok-480 `tre-480) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-480 `typ-480 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-480-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-480-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-480-3]])) (check-module-trees ~.types-union-print-distinct `mtre-480 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-480-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-480-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-480-3]]))
2670++ test-types-union-print-escape
2676++ test-types-union-print-escape
2671− (weld (check ~.types-union-print-escape src-480 `tok-480 `tre-480) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-480 `typ-480))
2677+ (weld (check ~.types-union-print-escape src-481 `tok-481 `tre-481) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-481 `typ-481))
2672++ test-types-union-print-local
2678++ test-types-union-print-local
2673− (weld (check ~.types-union-print-local src-481 `tok-481 `tre-481) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-481 `typ-481))
2679+ (weld (check ~.types-union-print-local src-482 `tok-482 `tre-482) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-482 `typ-482))
2674++ test-types-union-print-nested
2680++ test-types-union-print-nested
2675− (weld (check ~.types-union-print-nested src-482 `tok-482 `tre-482) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-482 `typ-482))
2681+ (weld (check ~.types-union-print-nested src-483 `tok-483 `tre-483) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-483 `typ-483))
2676++ test-types-union-print-same-origin
2682++ test-types-union-print-same-origin
2677− (weld (weld (check ~.types-union-print-same-origin src-483 `tok-483 `tre-483) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-483 `typ-483 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-483-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-483 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-483-1]]))
2683+ (weld (weld (check ~.types-union-print-same-origin src-484 `tok-484 `tre-484) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-484 `typ-484 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-484-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-484 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-484-1]]))
2678++ test-types-union-print-transitive
2684++ test-types-union-print-transitive
2679− (weld (weld (check ~.types-union-print-transitive src-484 `tok-484 `tre-484) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-484 `typ-484 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-484-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-484-2]])) (check-module-trees ~.types-union-print-transitive `mtre-484 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-484-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-484-2]]))
2685+ (weld (weld (check ~.types-union-print-transitive src-485 `tok-485 `tre-485) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-485 `typ-485 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-485-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-485-2]])) (check-module-trees ~.types-union-print-transitive `mtre-485 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-485-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-485-2]]))
2680++ test-types-union-singleton
2686++ test-types-union-singleton
2681− (weld (check ~.types-union-singleton src-485 `tok-485 `tre-485) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-485 `typ-485))
2687+ (weld (check ~.types-union-singleton src-486 `tok-486 `tre-486) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-486 `typ-486))
2682++ test-types-union-tag-atoms
2688++ test-types-union-tag-atoms
2683− (weld (check ~.types-union-tag-atoms src-486 `tok-486 `tre-486) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-486 `typ-486))
2689+ (weld (check ~.types-union-tag-atoms src-487 `tok-487 `tre-487) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-487 `typ-487))
2684++ test-types-union-tags
2690++ test-types-union-tags
2685− (weld (check ~.types-union-tags src-487 `tok-487 `tre-487) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-487 `typ-487))
2691+ (weld (check ~.types-union-tags src-488 `tok-488 `tre-488) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-488 `typ-488))
2686++ test-types-union-unresolved
2692++ test-types-union-unresolved
2687− (weld (check ~.types-union-unresolved src-488 `tok-488 `tre-488) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-488 `typ-488))
2693+ (weld (check ~.types-union-unresolved src-489 `tok-489 `tre-489) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-489 `typ-489))
2688++ test-types-union-unresolved-flow
2694++ test-types-union-unresolved-flow
2689− (weld (check ~.types-union-unresolved-flow src-489 `tok-489 `tre-489) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-489 `typ-489))
2695+ (weld (check ~.types-union-unresolved-flow src-490 `tok-490 `tre-490) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-490 `typ-490))
2690::
2696::
2691:: +check: run golden:jibb on a case and compare both outputs
2697:: +check: run golden:jibb on a case and compare both outputs
2692::
2698::
tests/type-import/about.txt+4−2
@@ -4,8 +4,10 @@ forks whose supplied cases overlap, but a graph alone cannot reveal source
4cases Hoon already collapsed. This fixture compiles a small /sur against zuse,
4cases Hoon already collapsed. This fixture compiles a small /sur against zuse,
5selects its molds, and passes the actual reader results to the inference
5selects its molds, and passes the actual reader results to the inference
6fragment. It checks fixed atoms, valid term singletons including Hoon `%$`,
6fragment. It checks fixed atoms, valid term singletons including Hoon `%$`,
7−nested faced records
7+nested faced records, unnamed unions, and opaque standard collections.
8−and unnamed unions, including matching and mismatched casts. Forged
8+Matching and mismatched collections, nested union arguments, and malformed
9+collection names and arities are covered; Jibb-written collection molds and
10+recursive references remain unsupported. Forged
9unsupported, malformed, singleton and overlapping forks are rejected; the
11unsupported, malformed, singleton and overlapping forks are rejected; the
10reader itself rejects an overlapping source union before Hoon can collapse it.
12reader itself rejects an overlapping source union before Hoon can collapse it.
11A missing import and a duplicate supplied mold fail closed. The types output
13A missing import and a duplicate supplied mold fail closed. The types output
tests/type-import/expected.txt+24
@@ -35,4 +35,28 @@ partial inference; module not checked
35++ dollar: $-(%$ %$)
35++ dollar: $-(%$ %$)
36++ dollar-choice: $-((%$ %yes) (%$ %yes))
36++ dollar-choice: $-((%$ %yes) (%$ %yes))
37++ dollar-value: %$ %yes
37++ dollar-value: %$ %yes
38+++ text-list: $-((list @t) (list @t))
39+++ nested-tags: $-((list ([%x @ud] [%y @t])) (list ([%x @ud] [%y @t])))
40+++ get-items: $-([items=(list @t) slots=(unit @ud)] (list @t))
41+++ same-list: $-((list @t) (list @t))
42+++ wrong-item: call's sample and argument types do not unify
43+/test.jibb:30:37: called gate has type $-((list @t) (list @t))
44+++ wrong-item |= x=numbers.fixture (text-list x)
45+ ^
46+/test.jibb:30:47: argument has type (list @ud)
47+++ wrong-item |= x=numbers.fixture (text-list x)
48+ ^
49+++ wrong-kind: call's sample and argument types do not unify
50+/test.jibb:31:35: called gate has type $-((list @t) (list @t))
51+++ wrong-kind |= x=maybe.fixture (text-list x)
52+ ^
53+/test.jibb:31:45: argument has type (unit @t)
54+++ wrong-kind |= x=maybe.fixture (text-list x)
55+ ^
56+++ bad-kind: sample mold is not supported by partial inference
57+++ bad-arity: sample mold is not supported by partial inference
58+++ bad-argument: sample mold is not supported by partial inference
59+++ bucket-id: $-((map @ud @t) (map @ud @t))
60+++ raw-rec: sample mold is not supported by partial inference
61+++ direct-list: cast mold is not supported by partial inference
38reader-collapsed: error: a Hoon union has overlapping cases
62reader-collapsed: error: a Hoon union has overlapping cases
tests/type-import/source.txt+12
@@ -23,3 +23,15 @@
23++ dollar |= x=dollar.fixture x
23++ dollar |= x=dollar.fixture x
24++ dollar-choice |= x=dollar-choice.fixture x
24++ dollar-choice |= x=dollar-choice.fixture x
25++ dollar-value ^- dollar-choice.fixture %$
25++ dollar-value ^- dollar-choice.fixture %$
26+++ text-list |= x=texts.fixture x
27+++ nested-tags |= x=tagged-list.fixture x
28+++ get-items |= x=collection-rec.fixture items.x
29+++ same-list |= x=texts.fixture (text-list x)
30+++ wrong-item |= x=numbers.fixture (text-list x)
31+++ wrong-kind |= x=maybe.fixture (text-list x)
32+++ bad-kind |= x=bad-kind.fixture x
33+++ bad-arity |= x=bad-arity.fixture x
34+++ bad-argument |= x=bad-argument.fixture x
35+++ bucket-id |= x=buckets.fixture x
36+++ raw-rec |= x=raw-rec.fixture x
37+++ direct-list |= x=texts.fixture ^- (list @t) x
tests/type-import/sur.txt+6
@@ -9,4 +9,10 @@
9+$ collapsed $?([%x @ud] [%x @ud])
9+$ collapsed $?([%x @ud] [%x @ud])
10+$ dollar %$
10+$ dollar %$
11+$ dollar-choice ?(%$ %yes)
11+$ dollar-choice ?(%$ %yes)
12++$ texts (list @t)
13++$ numbers (list @ud)
14++$ maybe (unit @t)
15++$ tagged-list (list $?([%x @ud] [%y @t]))
16++$ buckets (map @ud @t)
17++$ collection-rec [items=(list @t) slots=(unit @ud)]
12--
18--