on master help sign in
Infer multi-argument calls
c7082e0iko
docs/compiler.md+2
@@ -60,6 +60,8 @@ The inference fragment supports fixed auras, unrestricted `@`, one-way widening
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
63+Multi-argument calls form one right-nested sample: `f a b c` supplies `[a [b c]]`, with the last argument able to be a cell itself. The fragment fits the complete sample, preserving known faces and shared variables. Known sample positions can provide list or union context to arguments; unknown sample shapes use ordinary inference and some contextual forms remain unsupported. For a definite mismatch, the diagnostic points to a specific argument when it can establish which one failed; otherwise it reports the combined sample.
64+
63A list literal can be inferred when a cast or known gate sample supplies a list type and the supplied prelude has the validated standard list definition. Empty, nonempty and nested literals work, including contextual union tags in elements; mismatched elements report the item and expected type. Imported Hoon lists share this representation. Under the same known context, `~` and zero-valued term literals fit an empty list, and a two-item unfaced cell `[head tail]` is a cons; cons cells and list literals can be nested. Mismatched heads or tails report both sites. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. Faced or longer cells, uncontextualized construction, and a missing or altered prelude list remain unsupported. For a known standard list with a supported element type, it also infers a complete two-arm branch using `~` and `[item rest]`, in either order. The binders have the element and list types and cannot shadow or duplicate names. Unknown subjects, unsupported element types, other patterns and incomplete arms remain unsupported.
65A list literal can be inferred when a cast or known gate sample supplies a list type and the supplied prelude has the validated standard list definition. Empty, nonempty and nested literals work, including contextual union tags in elements; mismatched elements report the item and expected type. Imported Hoon lists share this representation. Under the same known context, `~` and zero-valued term literals fit an empty list, and a two-item unfaced cell `[head tail]` is a cons; cons cells and list literals can be nested. Mismatched heads or tails report both sites. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. Faced or longer cells, uncontextualized construction, and a missing or altered prelude list remain unsupported. For a known standard list with a supported element type, it also infers a complete two-arm branch using `~` and `[item rest]`, in either order. The binders have the element and list types and cannot shadow or duplicate names. Unknown subjects, unsupported element types, other patterns and incomplete arms remain unsupported.
64
66
65A known union of `~` and a null-headed cell can be matched by `~` and `[~ value]` arms in either order. The payload binder is checked for shadowing. Unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported; this fragment infers the prelude’s `fall` and `need` signatures.
67A known union of `~` and a null-headed cell can be matched by `~` and `[~ value]` arms in either order. The payload binder is checked for shadowing. Unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported; this fragment infers the prelude’s `fall` and `need` signatures.
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, 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. The source-validated standard prelude `list` mold shares this representation with imported lists; other Jibb-written collection molds and prelude collection operations are not yet connected; malformed names and arities fail closed. Selected self-recursive `/sur` molds cross as opaque module-and-name identities; aliases, foreign references, recursive marks, unfolding and construction remain unsupported. 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, as @iko confirmed for imported `$%`, `$?` and `$^`, 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 a source-derived partial prelude interface, 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, selected single self-recursive top-level gates, 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 and unit-shaped branches in casts and known union-sample calls, including nested branches. A recursive gate uses one monomorphic self reference while its body is inferred, then generalizes after the body is checked; subsequent uses instantiate it independently. For a complete loobean branch with one direct self-call arm, a separately inferred closed base type can seed the recursive result before the whole body is checked. Open or pending base types do not seed it; other branch shapes remain subject to the fragment’s existing limits. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Reporting repeats inference for a recursive gate, so its performance cost remains unmeasured. Contextual null-headed cells fit their cases, but do not supply a `|=%$` constructor; unresolved nulls remain pending and are reported separately from tags. A known union of `~` and a null-headed cell supports a complete `~` / `[~ value]` branch in either order, including shadow checks; unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported. This fragment infers the prelude’s `fall` and `need` signatures. With the validated prelude list and a known cast or gate sample, empty, nonempty and nested list literals infer their element types, including contextual union tags; a mismatched element names both sites. In that context `~` and zero-valued terms fit an empty list, and two-item unfaced cells form cons lists, including nested cons and imported-list contexts; invalid heads or tails name both sites. Faced or longer cells and a missing or altered prelude list fail closed. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. For a known standard list with a supported element type, a complete `~` / `[item rest]` branch infers the element and tail types in either arm order and checks binders for shadowing. Uncontextualized list construction, unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. 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. Forced equality of distinct written capitals now reports both source sites, following @iko’s decision; forcing one to a concrete type remains unsupported. Imported record spines with repeated faces fail closed where used, but only with a generic unsupported diagnostic. Hoon may erase unfaced nested-cell boundaries, so the check can conservatively reject valid names in distinct erased scopes. 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`, `rear` and the newly agreed shared-type `clap`, 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. The source-validated standard prelude `list` mold shares this representation with imported lists; other Jibb-written collection molds and prelude collection operations are not yet connected; malformed names and arities fail closed. Selected self-recursive `/sur` molds cross as opaque module-and-name identities; aliases, foreign references, recursive marks, unfolding and construction remain unsupported. 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, as @iko confirmed for imported `$%`, `$?` and `$^`, 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 a source-derived partial prelude interface, 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, selected single self-recursive top-level gates, 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 and unit-shaped branches in casts and known union-sample calls, including nested branches. Multi-argument calls form a right-nested sample, retain known faces and shared type variables, and can use known sample positions to contextualize list and union arguments. A definite mismatch points to the failing argument when the fragment can establish it, otherwise to the combined sample; unsupported contextual forms still fail closed. A recursive gate uses one monomorphic self reference while its body is inferred, then generalizes after the body is checked; subsequent uses instantiate it independently. For a complete loobean branch with one direct self-call arm, a separately inferred closed base type can seed the recursive result before the whole body is checked. Open or pending base types do not seed it; other branch shapes remain subject to the fragment’s existing limits. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Reporting repeats inference for a recursive gate, so its performance cost remains unmeasured. Contextual null-headed cells fit their cases, but do not supply a `|=%$` constructor; unresolved nulls remain pending and are reported separately from tags. A known union of `~` and a null-headed cell supports a complete `~` / `[~ value]` branch in either order, including shadow checks; unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported. This fragment infers the prelude’s `fall` and `need` signatures. With the validated prelude list and a known cast or gate sample, empty, nonempty and nested list literals infer their element types, including contextual union tags; a mismatched element names both sites. In that context `~` and zero-valued terms fit an empty list, and two-item unfaced cells form cons lists, including nested cons and imported-list contexts; invalid heads or tails name both sites. Faced or longer cells and a missing or altered prelude list fail closed. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. For a known standard list with a supported element type, a complete `~` / `[item rest]` branch infers the element and tail types in either arm order and checks binders for shadowing. Uncontextualized list construction, unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. 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. Forced equality of distinct written capitals now reports both source sites, following @iko’s decision; forcing one to a concrete type remains unsupported. Imported record spines with repeated faces fail closed where used, but only with a generic unsupported diagnostic. Hoon may erase unfaced nested-cell boundaries, so the check can conservatively reject valid names in distinct erased scopes. 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`, `rear` and the newly agreed shared-type `clap`, 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
24The shared prelude interface reserves every name present in the supplied vendored source and makes only supported inferred entries available, including `list`, `unit`, `same`, `fall` and `need`. Unsupported entries such as most list helpers remain reserved but unavailable. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. Preparation rejects empty, malformed, conflicting or import-bearing source; the prepared value is trusted and must come unchanged from `+prepare-prelude`. The module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship. The source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
24The shared prelude interface reserves every name present in the supplied vendored source and makes only supported inferred entries available, including `list`, `unit`, `same`, `fall` and `need`. Unsupported entries such as most list helpers remain reserved but unavailable. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. Preparation rejects empty, malformed, conflicting or import-bearing source; the prepared value is trusted and must come unchanged from `+prepare-prelude`. The module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship. The source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
25
25
@@ -39,8 +39,8 @@ What the plan asks for, and where it is:
39
39
40Besides the plan's list:
40Besides the plan's list:
41
41
42−- 508 golden cases: 292 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.
42+- 510 golden cases: 294 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.
43−- The 508-case corpus passed under `urbit eval` in 56.0 s. The fake ship passed all 513 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 28.1 s for sync and 54.9 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.
43+- The 510-case corpus passed under `urbit eval` in 57.8 s. The fake ship passed all 515 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 28.2 s for sync and 33.9 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.
44- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
44- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
45- 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.
45- 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.
46- 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).
46- 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).
@@ -85,14 +85,15 @@ Besides the plan's list:
85| 671fe72 | 2026-10-30 | Infer contextual list nulls and cons cells |
85| 671fe72 | 2026-10-30 | Infer contextual list nulls and cons cells |
86| 7e69436 | 2026-10-30 | Infer selected self-recursive gates |
86| 7e69436 | 2026-10-30 | Infer selected self-recursive gates |
87| 9ab52e8 | 2026-10-30 | Infer recursive branches with closed base types |
87| 9ab52e8 | 2026-10-30 | Infer recursive branches with closed base types |
88−| This change | 2026-10-30 | Propagate list context and apply settled type decisions |
88+| d782b45 | 2026-10-30 | Propagate list context and apply settled type decisions |
89+| This change | 2026-10-30 | Infer multi-argument calls |
89
90
90## Checking it
91## Checking it
91
92
92On a machine set up as [development.md](development.md) says:
93On a machine set up as [development.md](development.md) says:
93
94
94```
95```
95−tools/golden # 508 cases under urbit eval
96+tools/golden # 510 cases under urbit eval
96tools/importer-test # the Hoon importer fixture projection
97tools/importer-test # the Hoon importer fixture projection
97tools/type-import-test # the importer/checker bridge fixture
98tools/type-import-test # the importer/checker bridge fixture
98tools/type-mark-test # the mark/checker bridge fixture
99tools/type-mark-test # the mark/checker bridge fixture
@@ -102,7 +103,7 @@ tools/testdata/selftest # the tools themselves
102tools/doc-blocks docs/spec # the doc's examples are golden cases
103tools/doc-blocks docs/spec # the doc's examples are golden cases
103tools/ship start
104tools/ship start
104tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
105tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
105−tools/ship test # the same 508 cases as -test arms on the ship
106+tools/ship test # the same 510 cases as -test arms on the ship
106tools/testdata/ship-selftest
107tools/testdata/ship-selftest
107tools/ship check-commit # |commit stores .jibb files
108tools/ship check-commit # |commit stores .jibb files
108tools/clay-fixtures # example /sur files and marks build through Clay
109tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+69−3
@@ -5226,7 +5226,7 @@
5226 problems
5226 problems
5227::
5227::
5228:: The expression inference below is deliberately a fragment: bindings,
5228:: The expression inference below is deliberately a fragment: bindings,
5229−:: simple gates, unary calls, fixed-aura literals, and plain strings. The
5229+:: simple gates, calls, fixed-aura literals, and plain strings. The
5230:: result for unsupported syntax is a diagnostic, never a checked module.
5230:: result for unsupported syntax is a diagnostic, never a checked module.
5231::
5231::
5232+$ ischeme [typ=itype vars=(list @ud)]
5232+$ ischeme [typ=itype vars=(list @ud)]
@@ -6565,11 +6565,14 @@
6565 [%& [%fn typ.p.sam typ.p.body] state.p.body]
6565 [%& [%fn typ.p.sam typ.p.body] state.p.body]
6566 %call
6566 %call
6567 ?~ args.e [%| ["call has no argument" ~]]
6567 ?~ args.e [%| ["call has no argument" ~]]
6568− ?^ t.args.e [%| ["multiple arguments are not supported by partial inference" ~]]
6569 =/ head=iresult $(e head.e)
6568 =/ head=iresult $(e head.e)
6570 ?: ?=(%| -.head) head
6569 ?: ?=(%| -.head) head
6571 =/ head-type=itype (itype-walk typ.p.head sub.state.p.head)
6570 =/ head-type=itype (itype-walk typ.p.head sub.state.p.head)
6572 =/ arg=iresult
6571 =/ arg=iresult
6572+ ?^ t.args.e
6573+ ?: ?=(%fn -.head-type)
6574+ (infer-call-context-args args.e sample.head-type env state.p.head (span-of head.e))
6575+ (infer-simple-items (turn args.e |=(a=expr [(span-of a) ~ a])) env state.p.head)
6573 ?: &(?=(%fn -.head-type) ?=(%union -.sample.head-type) (context-union-branch i.args.e))
6576 ?: &(?=(%fn -.head-type) ?=(%union -.sample.head-type) (context-union-branch i.args.e))
6574 (infer-union-context i.args.e sample.head-type env state.p.head (span-of head.e))
6577 (infer-union-context i.args.e sample.head-type env state.p.head (span-of head.e))
6575 ?: &(?=(%fn -.head-type) ?=(%collection -.sample.head-type) =(%list name.sample.head-type) (context-union-branch i.args.e))
6578 ?: &(?=(%fn -.head-type) ?=(%collection -.sample.head-type) =(%list name.sample.head-type) (context-union-branch i.args.e))
@@ -6584,7 +6587,13 @@
6584 =/ fit=ifit (itype-fit typ.p.arg sample.ht sub.st next.st)
6587 =/ fit=ifit (itype-fit typ.p.arg sample.ht sub.st next.st)
6585 ?: ?=(%unknown -.fit) [%| ["call constraint is not supported by partial inference" ~]]
6588 ?: ?=(%unknown -.fit) [%| ["call constraint is not supported by partial inference" ~]]
6586 ?: ?=(%bad -.fit)
6589 ?: ?=(%bad -.fit)
6590+ =/ bad=(unit [at=span typ=itype])
6591+ ?~(t.args.e ~ (call-error-site args.e typ.p.arg sample.ht sub.st next.st))
6592+ =/ whole-args=span
6593+ ?~(t.args.e (span-of i.args.e) [beg:(span-of i.args.e) end:(span-of (rear args.e))])
6594+ =/ arg-at=span ?~(bad whole-args at.u.bad)
6595+ =/ arg-type=itype ?~(bad typ.p.arg typ.u.bad)
6587− [%| ["call's sample and argument types do not unify" ~[[(span-of head.e) (site-type-note "called gate" ht sub.st)] [(span-of i.args.e) (site-type-note "argument" typ.p.arg sub.st)]]]]
6596+ [%| ["call's sample and argument types do not unify" ~[[(span-of head.e) (site-type-note "called gate" ht sub.st)] [arg-at (site-type-note "argument" arg-type sub.st)]]]]
6588 ?: &((itype-has-face typ.p.arg sub.fit) (itype-face-asym typ.p.arg sample.ht sub.fit) (itype-output-may-be-cell product.ht sub.fit))
6597 ?: &((itype-has-face typ.p.arg sub.fit) (itype-face-asym typ.p.arg sample.ht sub.fit) (itype-output-may-be-cell product.ht sub.fit))
6589 [%| ["call result face propagation is not supported by partial inference" ~]]
6598 [%| ["call result face propagation is not supported by partial inference" ~]]
6590 [%& product.ht st(sub sub.fit, next next.fit)]
6599 [%& product.ht st(sub sub.fit, next next.fit)]
@@ -6596,6 +6605,63 @@
6596 * [%| ["expression is not supported by partial inference" ~]]
6605 * [%| ["expression is not supported by partial inference" ~]]
6597 ==
6606 ==
6598::
6607::
6608+:: Locate a definite failing argument after the complete sample fit has
6609+:: failed. If an intermediate fit is uncertain, retain the whole argument
6610+:: span rather than assigning blame to a particular argument.
6611+::
6612+++ call-error-site
6613+ |= [args=(list expr) actual=itype expected=itype sub=isub next=@ud]
6614+ ^- (unit [at=span typ=itype])
6615+ ?~ args ~
6616+ =/ original=[left=itype right=itype] [actual expected]
6617+ ?: |(?=(%var -.left.original) ?=(%avar -.left.original) ?=(%nvar -.left.original) ?=(%var -.right.original) ?=(%avar -.right.original) ?=(%nvar -.right.original)) ~
6618+ =. actual (itype-walk actual sub)
6619+ =. expected (itype-walk expected sub)
6620+ ?: &(?=(%face -.expected) !?=(%face -.actual))
6621+ $(expected body.expected)
6622+ ?~ t.args
6623+ =/ fit=ifit (itype-fit actual expected sub next)
6624+ ?. ?=(%bad -.fit) ~
6625+ `[(span-of i.args) (itype-normalize actual sub)]
6626+ ?. &(?=(%cell -.actual) ?=(%cell -.expected)) ~
6627+ =/ first=ifit (itype-fit hed.actual hed.expected sub next)
6628+ ?: ?=(%bad -.first) `[(span-of i.args) (itype-normalize hed.actual sub)]
6629+ ?: ?=(%unknown -.first) ~
6630+ $(args t.args, actual tal.actual, expected tal.expected, sub sub.first, next next.first)
6631+::
6632+:: Context can help each argument while the final fit still checks the
6633+:: complete right-nested sample, including any faces on its positions.
6634+::
6635+++ infer-call-context-arg
6636+ |= [e=expr expected=itype env=ienv state=istate context=span]
6637+ ^- iresult
6638+ =/ target=itype (itype-walk expected sub.state)
6639+ |-
6640+ ?: ?=(%face -.target) $(target (itype-walk body.target sub.state))
6641+ ?: &(?=(%union -.target) (context-union-branch e))
6642+ (infer-union-context e target env state context)
6643+ ?: &(?=(%collection -.target) =(%list name.target) (context-union-branch e))
6644+ (infer-union-context e target env state context)
6645+ ?: &(?=(%collection -.target) =(%list name.target) (context-list-expression e))
6646+ (infer-list-context e target env state context)
6647+ (infer-fragment e env state)
6648+::
6649+++ infer-call-context-args
6650+ |= [args=(list expr) expected=itype env=ienv state=istate context=span]
6651+ ^- iresult
6652+ ?~ args [%| ["call has no argument" ~]]
6653+ ?~ t.args (infer-call-context-arg i.args expected env state context)
6654+ =/ target=itype (itype-walk expected sub.state)
6655+ |-
6656+ ?: ?=(%face -.target) $(target (itype-walk body.target sub.state))
6657+ ?. ?=(%cell -.target)
6658+ (infer-simple-items (turn args |=(a=expr [(span-of a) ~ a])) env state)
6659+ =/ head=iresult (infer-call-context-arg i.args hed.target env state context)
6660+ ?: ?=(%| -.head) head
6661+ =/ tail=iresult (infer-call-context-args t.args tal.target env state.p.head context)
6662+ ?: ?=(%| -.tail) tail
6663+ [%& [%cell typ.p.head typ.p.tail] state.p.tail]
6664+::
6599:: Tuple and record expressions preserve their explicitly written faces.
6665:: Tuple and record expressions preserve their explicitly written faces.
6600::
6666::
6601++ infer-simple-items
6667++ infer-simple-items
tests/golden/types-multi-call/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Expressions: "Call: `f a b`; parentheses only group." Molds: "Faces are part of the type"; type variables generalize per `++`.
2+tests: Multi-argument calls form right-nested samples, retain faces, contextual list and union arguments, shared variables and pending constraints, and infer a suitable unknown callee. Wrong arguments, capital merges and occurs checks report their sites.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-multi-call/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the source-validated prelude.
tests/golden/types-multi-call/source.jibbnew file+42
@@ -0,0 +1,42 @@
1++$ msg
2+ %add
3+ [%noted text=@t]
4++$ typed [%typed text=@t]
5+++ two |= p=[@t @p] p
6+++ three |= p=[@t @p ?] p
7+++ two-call (two "hi" ~zod)
8+++ three-call (three "hi" ~zod %.y)
9+++ rest-call (three "hi" [~zod %.y])
10+++ named |= [label=@t ship=@p] [label ship]
11+++ named-call (named "hi" ~zod)
12+++ repeated |= p=[A A] p
13+++ same-text (repeated "a" "b")
14+++ different (repeated "a" ~zod)
15+++ accepts |= p=[msg (list @t)] p
16+++ contextual (accepts %add ~["hi"])
17+++ cons-context (accepts %add ["hi" ~])
18+++ constructor |= p=[$-(@t typed) @t] p
19+++ constructor-call (constructor |=%typed "hi")
20+++ invalid-item (accepts %add ~[~zod])
21+++ wrong-later (three "hi" ~zod "bad")
22+++ too-few (three "hi" ~zod)
23+++ too-many (two "hi" ~zod %.y)
24+++ unknown |= f (f "hi" ~zod)
25+++ capped |= [a=A b=B] (repeated a b)
26+++ occurs |= f (f f f)
27+++ recurse |= p=[@t @p]
28+ ?- %.y
29+ %.y p
30+ %.n (recurse "hi" ~zod)
31+++ pending
32+ ~& %unknown
33+ (two "hi" ~zod)
34+++ pending-null
35+ ~& ~
36+ (two "hi" ~zod)
37+++ unknown-context |= f (f %add ~["hi"])
38+++ named-mismatch (named [other="hi" ship=~zod])
39+++ wrong-first (three ~zod ~zod %.y)
40+++ uncertain-target |= p=[A @p] p
41+++ uncertain-failure (uncertain-target "hi" "bad")
42+++ uncertain-tag (uncertain-target %mystery "bad")
tests/golden/types-multi-call/tokens.txtnew file+370
@@ -0,0 +1,370 @@
1+1:1 glyph +$
2+1:4 name msg
3+2:3 INDENT
4+2:3 lit %add
5+3:3 NEWLINE
6+3:3 glyph [
7+3:4 tight lit %noted
8+3:11 name text
9+3:15 tight glyph =
10+3:16 tight aura @t
11+3:18 tight glyph ]
12+4:1 DEDENT
13+4:1 NEWLINE
14+4:1 glyph +$
15+4:4 name typed
16+4:10 glyph [
17+4:11 tight lit %typed
18+4:18 name text
19+4:22 tight glyph =
20+4:23 tight aura @t
21+4:25 tight glyph ]
22+5:1 NEWLINE
23+5:1 glyph ++
24+5:4 name two
25+5:8 glyph |=
26+5:11 name p
27+5:12 tight glyph =
28+5:13 tight glyph [
29+5:14 tight aura @t
30+5:17 aura @p
31+5:19 tight glyph ]
32+5:21 name p
33+6:1 NEWLINE
34+6:1 glyph ++
35+6:4 name three
36+6:10 glyph |=
37+6:13 name p
38+6:14 tight glyph =
39+6:15 tight glyph [
40+6:16 tight aura @t
41+6:19 aura @p
42+6:22 glyph ?
43+6:23 tight glyph ]
44+6:25 name p
45+7:1 NEWLINE
46+7:1 glyph ++
47+7:4 name two-call
48+7:13 glyph (
49+7:14 tight name two
50+7:18 str "hi"
51+7:23 lit ~zod
52+7:27 tight glyph )
53+8:1 NEWLINE
54+8:1 glyph ++
55+8:4 name three-call
56+8:15 glyph (
57+8:16 tight name three
58+8:22 str "hi"
59+8:27 lit ~zod
60+8:32 lit %.y
61+8:35 tight glyph )
62+9:1 NEWLINE
63+9:1 glyph ++
64+9:4 name rest-call
65+9:14 glyph (
66+9:15 tight name three
67+9:21 str "hi"
68+9:26 glyph [
69+9:27 tight lit ~zod
70+9:32 lit %.y
71+9:35 tight glyph ]
72+9:36 tight glyph )
73+10:1 NEWLINE
74+10:1 glyph ++
75+10:4 name named
76+10:10 glyph |=
77+10:13 glyph [
78+10:14 tight name label
79+10:19 tight glyph =
80+10:20 tight aura @t
81+10:23 name ship
82+10:27 tight glyph =
83+10:28 tight aura @p
84+10:30 tight glyph ]
85+10:32 glyph [
86+10:33 tight name label
87+10:39 name ship
88+10:43 tight glyph ]
89+11:1 NEWLINE
90+11:1 glyph ++
91+11:4 name named-call
92+11:15 glyph (
93+11:16 tight name named
94+11:22 str "hi"
95+11:27 lit ~zod
96+11:31 tight glyph )
97+12:1 NEWLINE
98+12:1 glyph ++
99+12:4 name repeated
100+12:13 glyph |=
101+12:16 name p
102+12:17 tight glyph =
103+12:18 tight glyph [
104+12:19 tight tvar A
105+12:21 tvar A
106+12:22 tight glyph ]
107+12:24 name p
108+13:1 NEWLINE
109+13:1 glyph ++
110+13:4 name same-text
111+13:14 glyph (
112+13:15 tight name repeated
113+13:24 str "a"
114+13:28 str "b"
115+13:31 tight glyph )
116+14:1 NEWLINE
117+14:1 glyph ++
118+14:4 name different
119+14:14 glyph (
120+14:15 tight name repeated
121+14:24 str "a"
122+14:28 lit ~zod
123+14:32 tight glyph )
124+15:1 NEWLINE
125+15:1 glyph ++
126+15:4 name accepts
127+15:12 glyph |=
128+15:15 name p
129+15:16 tight glyph =
130+15:17 tight glyph [
131+15:18 tight name msg
132+15:22 glyph (
133+15:23 tight name list
134+15:28 aura @t
135+15:30 tight glyph )
136+15:31 tight glyph ]
137+15:33 name p
138+16:1 NEWLINE
139+16:1 glyph ++
140+16:4 name contextual
141+16:15 glyph (
142+16:16 tight name accepts
143+16:24 lit %add
144+16:29 glyph ~[
145+16:31 tight str "hi"
146+16:35 tight glyph ]
147+16:36 tight glyph )
148+17:1 NEWLINE
149+17:1 glyph ++
150+17:4 name cons-context
151+17:17 glyph (
152+17:18 tight name accepts
153+17:26 lit %add
154+17:31 glyph [
155+17:32 tight str "hi"
156+17:37 lit ~
157+17:38 tight glyph ]
158+17:39 tight glyph )
159+18:1 NEWLINE
160+18:1 glyph ++
161+18:4 name constructor
162+18:16 glyph |=
163+18:19 name p
164+18:20 tight glyph =
165+18:21 tight glyph [
166+18:22 tight glyph $-(
167+18:25 tight aura @t
168+18:28 name typed
169+18:33 tight glyph )
170+18:35 aura @t
171+18:37 tight glyph ]
172+18:39 name p
173+19:1 NEWLINE
174+19:1 glyph ++
175+19:4 name constructor-call
176+19:21 glyph (
177+19:22 tight name constructor
178+19:34 glyph |=
179+19:36 tight lit %typed
180+19:43 str "hi"
181+19:47 tight glyph )
182+20:1 NEWLINE
183+20:1 glyph ++
184+20:4 name invalid-item
185+20:17 glyph (
186+20:18 tight name accepts
187+20:26 lit %add
188+20:31 glyph ~[
189+20:33 tight lit ~zod
190+20:37 tight glyph ]
191+20:38 tight glyph )
192+21:1 NEWLINE
193+21:1 glyph ++
194+21:4 name wrong-later
195+21:16 glyph (
196+21:17 tight name three
197+21:23 str "hi"
198+21:28 lit ~zod
199+21:33 str "bad"
200+21:38 tight glyph )
201+22:1 NEWLINE
202+22:1 glyph ++
203+22:4 name too-few
204+22:12 glyph (
205+22:13 tight name three
206+22:19 str "hi"
207+22:24 lit ~zod
208+22:28 tight glyph )
209+23:1 NEWLINE
210+23:1 glyph ++
211+23:4 name too-many
212+23:13 glyph (
213+23:14 tight name two
214+23:18 str "hi"
215+23:23 lit ~zod
216+23:28 lit %.y
217+23:31 tight glyph )
218+24:1 NEWLINE
219+24:1 glyph ++
220+24:4 name unknown
221+24:12 glyph |=
222+24:15 name f
223+24:17 glyph (
224+24:18 tight name f
225+24:20 str "hi"
226+24:25 lit ~zod
227+24:29 tight glyph )
228+25:1 NEWLINE
229+25:1 glyph ++
230+25:4 name capped
231+25:11 glyph |=
232+25:14 glyph [
233+25:15 tight name a
234+25:16 tight glyph =
235+25:17 tight tvar A
236+25:19 name b
237+25:20 tight glyph =
238+25:21 tight tvar B
239+25:22 tight glyph ]
240+25:24 glyph (
241+25:25 tight name repeated
242+25:34 name a
243+25:36 name b
244+25:37 tight glyph )
245+26:1 NEWLINE
246+26:1 glyph ++
247+26:4 name occurs
248+26:11 glyph |=
249+26:14 name f
250+26:16 glyph (
251+26:17 tight name f
252+26:19 name f
253+26:21 name f
254+26:22 tight glyph )
255+27:1 NEWLINE
256+27:1 glyph ++
257+27:4 name recurse
258+27:12 glyph |=
259+27:15 name p
260+27:16 tight glyph =
261+27:17 tight glyph [
262+27:18 tight aura @t
263+27:21 aura @p
264+27:23 tight glyph ]
265+28:3 INDENT
266+28:3 glyph ?-
267+28:6 lit %.y
268+29:5 INDENT
269+29:5 lit %.y
270+29:9 name p
271+30:5 NEWLINE
272+30:5 lit %.n
273+30:9 glyph (
274+30:10 tight name recurse
275+30:18 str "hi"
276+30:23 lit ~zod
277+30:27 tight glyph )
278+31:1 DEDENT
279+31:1 DEDENT
280+31:1 NEWLINE
281+31:1 glyph ++
282+31:4 name pending
283+32:3 INDENT
284+32:3 glyph ~&
285+32:6 lit %unknown
286+33:5 INDENT
287+33:5 glyph (
288+33:6 tight name two
289+33:10 str "hi"
290+33:15 lit ~zod
291+33:19 tight glyph )
292+34:1 DEDENT
293+34:1 DEDENT
294+34:1 NEWLINE
295+34:1 glyph ++
296+34:4 name pending-null
297+35:3 INDENT
298+35:3 glyph ~&
299+35:6 lit ~
300+36:5 INDENT
301+36:5 glyph (
302+36:6 tight name two
303+36:10 str "hi"
304+36:15 lit ~zod
305+36:19 tight glyph )
306+37:1 DEDENT
307+37:1 DEDENT
308+37:1 NEWLINE
309+37:1 glyph ++
310+37:4 name unknown-context
311+37:20 glyph |=
312+37:23 name f
313+37:25 glyph (
314+37:26 tight name f
315+37:28 lit %add
316+37:33 glyph ~[
317+37:35 tight str "hi"
318+37:39 tight glyph ]
319+37:40 tight glyph )
320+38:1 NEWLINE
321+38:1 glyph ++
322+38:4 name named-mismatch
323+38:19 glyph (
324+38:20 tight name named
325+38:26 glyph [
326+38:27 tight name other
327+38:32 tight glyph =
328+38:33 tight str "hi"
329+38:38 name ship
330+38:42 tight glyph =
331+38:43 tight lit ~zod
332+38:47 tight glyph ]
333+38:48 tight glyph )
334+39:1 NEWLINE
335+39:1 glyph ++
336+39:4 name wrong-first
337+39:16 glyph (
338+39:17 tight name three
339+39:23 lit ~zod
340+39:28 lit ~zod
341+39:33 lit %.y
342+39:36 tight glyph )
343+40:1 NEWLINE
344+40:1 glyph ++
345+40:4 name uncertain-target
346+40:21 glyph |=
347+40:24 name p
348+40:25 tight glyph =
349+40:26 tight glyph [
350+40:27 tight tvar A
351+40:29 aura @p
352+40:31 tight glyph ]
353+40:33 name p
354+41:1 NEWLINE
355+41:1 glyph ++
356+41:4 name uncertain-failure
357+41:22 glyph (
358+41:23 tight name uncertain-target
359+41:40 str "hi"
360+41:45 str "bad"
361+41:50 tight glyph )
362+42:1 NEWLINE
363+42:1 glyph ++
364+42:4 name uncertain-tag
365+42:18 glyph (
366+42:19 tight name uncertain-target
367+42:36 lit %mystery
368+42:45 str "bad"
369+42:50 tight glyph )
370+42:51 NEWLINE
tests/golden/types-multi-call/tree.txtnew file+169
@@ -0,0 +1,169 @@
1+(module
2+ (mold 1:1 msg
3+ (union 2:3
4+ (const 2:3 %add)
5+ (cell 3:3
6+ (const 3:4 %noted)
7+ (face 3:11 text (aura 3:16 @t)))))
8+ (mold 4:1 typed
9+ (cell 4:10
10+ (const 4:11 %typed)
11+ (face 4:18 text (aura 4:23 @t))))
12+ (value 5:1 two
13+ (gate 5:8
14+ (face 5:11 p
15+ (cell 5:13 (aura 5:14 @t) (aura 5:17 @p)))
16+ (wing 5:21 p)))
17+ (value 6:1 three
18+ (gate 6:10
19+ (face 6:13 p
20+ (cell 6:15 (aura 6:16 @t) (aura 6:19 @p) (flag 6:22)))
21+ (wing 6:25 p)))
22+ (value 7:1 two-call
23+ (group 7:13
24+ (call 7:14 (wing 7:14 two) (str 7:18 "hi") (lit 7:23 ~zod))))
25+ (value 8:1 three-call
26+ (group 8:15
27+ (call 8:16 (wing 8:16 three) (str 8:22 "hi") (lit 8:27 ~zod) (lit 8:32 %.y))))
28+ (value 9:1 rest-call
29+ (group 9:14
30+ (call 9:15
31+ (wing 9:15 three)
32+ (str 9:21 "hi")
33+ (tuple 9:26 (lit 9:27 ~zod) (lit 9:32 %.y)))))
34+ (value 10:1 named
35+ (gate 10:10
36+ (cell 10:13
37+ (face 10:14 label (aura 10:20 @t))
38+ (face 10:23 ship (aura 10:28 @p)))
39+ (tuple 10:32 (wing 10:33 label) (wing 10:39 ship))))
40+ (value 11:1 named-call
41+ (group 11:15
42+ (call 11:16 (wing 11:16 named) (str 11:22 "hi") (lit 11:27 ~zod))))
43+ (value 12:1 repeated
44+ (gate 12:13
45+ (face 12:16 p
46+ (cell 12:18 (tvar 12:19 A) (tvar 12:21 A)))
47+ (wing 12:24 p)))
48+ (value 13:1 same-text
49+ (group 13:14
50+ (call 13:15 (wing 13:15 repeated) (str 13:24 "a") (str 13:28 "b"))))
51+ (value 14:1 different
52+ (group 14:14
53+ (call 14:15 (wing 14:15 repeated) (str 14:24 "a") (lit 14:28 ~zod))))
54+ (value 15:1 accepts
55+ (gate 15:12
56+ (face 15:15 p
57+ (cell 15:17
58+ (ref 15:18 msg)
59+ (apply 15:22 list (aura 15:28 @t))))
60+ (wing 15:33 p)))
61+ (value 16:1 contextual
62+ (group 16:15
63+ (call 16:16
64+ (wing 16:16 accepts)
65+ (lit 16:24 %add)
66+ (list 16:29 (str 16:31 "hi")))))
67+ (value 17:1 cons-context
68+ (group 17:17
69+ (call 17:18
70+ (wing 17:18 accepts)
71+ (lit 17:26 %add)
72+ (tuple 17:31 (str 17:32 "hi") (lit 17:37 ~)))))
73+ (value 18:1 constructor
74+ (gate 18:16
75+ (face 18:19 p
76+ (cell 18:21
77+ (fn 18:22 (aura 18:25 @t) (ref 18:28 typed))
78+ (aura 18:35 @t)))
79+ (wing 18:39 p)))
80+ (value 19:1 constructor-call
81+ (group 19:21
82+ (call 19:22 (wing 19:22 constructor) (ctor 19:34 %typed) (str 19:43 "hi"))))
83+ (value 20:1 invalid-item
84+ (group 20:17
85+ (call 20:18
86+ (wing 20:18 accepts)
87+ (lit 20:26 %add)
88+ (list 20:31 (lit 20:33 ~zod)))))
89+ (value 21:1 wrong-later
90+ (group 21:16
91+ (call 21:17 (wing 21:17 three) (str 21:23 "hi") (lit 21:28 ~zod) (str 21:33 "bad"))))
92+ (value 22:1 too-few
93+ (group 22:12
94+ (call 22:13 (wing 22:13 three) (str 22:19 "hi") (lit 22:24 ~zod))))
95+ (value 23:1 too-many
96+ (group 23:13
97+ (call 23:14 (wing 23:14 two) (str 23:18 "hi") (lit 23:23 ~zod) (lit 23:28 %.y))))
98+ (value 24:1 unknown
99+ (gate 24:12
100+ (bind 24:15 f)
101+ (group 24:17
102+ (call 24:18 (wing 24:18 f) (str 24:20 "hi") (lit 24:25 ~zod)))))
103+ (value 25:1 capped
104+ (gate 25:11
105+ (cell 25:14
106+ (face 25:15 a (tvar 25:17 A))
107+ (face 25:19 b (tvar 25:21 B)))
108+ (group 25:24
109+ (call 25:25 (wing 25:25 repeated) (wing 25:34 a) (wing 25:36 b)))))
110+ (value 26:1 occurs
111+ (gate 26:11
112+ (bind 26:14 f)
113+ (group 26:16
114+ (call 26:17 (wing 26:17 f) (wing 26:19 f) (wing 26:21 f)))))
115+ (value 27:1 recurse
116+ (gate 27:12
117+ (face 27:15 p
118+ (cell 27:17 (aura 27:18 @t) (aura 27:21 @p)))
119+ (body 28:3
120+ (branch 28:3
121+ (lit 28:6 %.y)
122+ (arm 29:5 (lit 29:5 %.y) (wing 29:9 p))
123+ (arm 30:5
124+ (lit 30:5 %.n)
125+ (group 30:9
126+ (call 30:10 (wing 30:10 recurse) (str 30:18 "hi") (lit 30:23 ~zod))))))))
127+ (value 31:1 pending
128+ (body 32:3
129+ (trace 32:3
130+ (lit 32:6 %unknown)
131+ (body 33:5
132+ (group 33:5
133+ (call 33:6 (wing 33:6 two) (str 33:10 "hi") (lit 33:15 ~zod)))))))
134+ (value 34:1 pending-null
135+ (body 35:3
136+ (trace 35:3
137+ (lit 35:6 ~)
138+ (body 36:5
139+ (group 36:5
140+ (call 36:6 (wing 36:6 two) (str 36:10 "hi") (lit 36:15 ~zod)))))))
141+ (value 37:1 unknown-context
142+ (gate 37:20
143+ (bind 37:23 f)
144+ (group 37:25
145+ (call 37:26
146+ (wing 37:26 f)
147+ (lit 37:28 %add)
148+ (list 37:33 (str 37:35 "hi"))))))
149+ (value 38:1 named-mismatch
150+ (group 38:19
151+ (call 38:20
152+ (wing 38:20 named)
153+ (tuple 38:26
154+ (face 38:27 other (str 38:33 "hi"))
155+ (face 38:38 ship (lit 38:43 ~zod))))))
156+ (value 39:1 wrong-first
157+ (group 39:16
158+ (call 39:17 (wing 39:17 three) (lit 39:23 ~zod) (lit 39:28 ~zod) (lit 39:33 %.y))))
159+ (value 40:1 uncertain-target
160+ (gate 40:21
161+ (face 40:24 p
162+ (cell 40:26 (tvar 40:27 A) (aura 40:29 @p)))
163+ (wing 40:33 p)))
164+ (value 41:1 uncertain-failure
165+ (group 41:22
166+ (call 41:23 (wing 41:23 uncertain-target) (str 41:40 "hi") (str 41:45 "bad"))))
167+ (value 42:1 uncertain-tag
168+ (group 42:18
169+ (call 42:19 (wing 42:19 uncertain-target) (lit 42:36 %mystery) (str 42:45 "bad")))))
tests/golden/types-multi-call/types.txtnew file+100
@@ -0,0 +1,100 @@
1+partial inference; module not checked
2++$ msg: cases proven disjoint; mold not checked
3++$ typed: not checked
4+++ two: $-([@t @p] [@t @p])
5+++ three: $-([@t [@p ?]] [@t [@p ?]])
6+++ two-call: [@t @p]
7+++ three-call: [@t [@p ?]]
8+++ rest-call: [@t [@p ?]]
9+++ named: $-([label=@t ship=@p] [@t @p])
10+++ named-call: [@t @p]
11+++ repeated: $-([A A] [A A])
12+++ same-text: [@t @t]
13+++ different: call's sample and argument types do not unify
14+/tests/golden/types-multi-call/source.jibb:14:15: called gate has type $-([A A] [A A])
15+++ different (repeated "a" ~zod)
16+ ^
17+/tests/golden/types-multi-call/source.jibb:14:24: argument has type [@t @p]
18+++ different (repeated "a" ~zod)
19+ ^
20+++ accepts: $-([msg (list @t)] [msg (list @t)])
21+++ contextual: [msg (list @t)]
22+++ cons-context: [msg (list @t)]
23+++ constructor: $-([$-(@t [%typed text=@t]) @t] [$-(@t [%typed text=@t]) @t])
24+++ constructor-call: [$-(@t [%typed text=@t]) @t]
25+++ invalid-item: list item does not fit its expected type
26+/tests/golden/types-multi-call/source.jibb:20:18: expected item has type @t
27+++ invalid-item (accepts %add ~[~zod])
28+ ^
29+/tests/golden/types-multi-call/source.jibb:20:33: list item has type @p
30+++ invalid-item (accepts %add ~[~zod])
31+ ^
32+++ wrong-later: call's sample and argument types do not unify
33+/tests/golden/types-multi-call/source.jibb:21:17: called gate has type $-([@t [@p ?]] [@t [@p ?]])
34+++ wrong-later (three "hi" ~zod "bad")
35+ ^
36+/tests/golden/types-multi-call/source.jibb:21:33: argument has type @t
37+++ wrong-later (three "hi" ~zod "bad")
38+ ^
39+++ too-few: call's sample and argument types do not unify
40+/tests/golden/types-multi-call/source.jibb:22:13: called gate has type $-([@t [@p ?]] [@t [@p ?]])
41+++ too-few (three "hi" ~zod)
42+ ^
43+/tests/golden/types-multi-call/source.jibb:22:24: argument has type @p
44+++ too-few (three "hi" ~zod)
45+ ^
46+++ too-many: call's sample and argument types do not unify
47+/tests/golden/types-multi-call/source.jibb:23:14: called gate has type $-([@t @p] [@t @p])
48+++ too-many (two "hi" ~zod %.y)
49+ ^
50+/tests/golden/types-multi-call/source.jibb:23:18: argument has type [@t [@p ?]]
51+++ too-many (two "hi" ~zod %.y)
52+ ^
53+++ unknown: $-($-([@t @p] A) A)
54+++ capped: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
55+/tests/golden/types-multi-call/source.jibb:25:17: first type variable
56+++ capped |= [a=A b=B] (repeated a b)
57+ ^
58+/tests/golden/types-multi-call/source.jibb:25:21: second type variable
59+++ capped |= [a=A b=B] (repeated a b)
60+ ^
61+++ occurs: call's sample and argument types do not unify
62+/tests/golden/types-multi-call/source.jibb:26:17: called gate
63+++ occurs |= f (f f f)
64+ ^
65+/tests/golden/types-multi-call/source.jibb:26:19: argument has type [A A]
66+++ occurs |= f (f f f)
67+ ^
68+++ recurse: $-([@t @p] [@t @p])
69+++ pending: tag needs context in partial inference
70+++ pending-null: `~` needs context in partial inference
71+++ unknown-context: expression is not supported by partial inference
72+++ named-mismatch: call's sample and argument types do not unify
73+/tests/golden/types-multi-call/source.jibb:38:20: called gate has type $-([label=@t ship=@p] [@t @p])
74+++ named-mismatch (named [other="hi" ship=~zod])
75+ ^
76+/tests/golden/types-multi-call/source.jibb:38:26: argument has type [other=@t ship=@p]
77+++ named-mismatch (named [other="hi" ship=~zod])
78+ ^
79+++ wrong-first: call's sample and argument types do not unify
80+/tests/golden/types-multi-call/source.jibb:39:17: called gate has type $-([@t [@p ?]] [@t [@p ?]])
81+++ wrong-first (three ~zod ~zod %.y)
82+ ^
83+/tests/golden/types-multi-call/source.jibb:39:23: argument has type @p
84+++ wrong-first (three ~zod ~zod %.y)
85+ ^
86+++ uncertain-target: $-([A @p] [A @p])
87+++ uncertain-failure: call's sample and argument types do not unify
88+/tests/golden/types-multi-call/source.jibb:41:23: called gate has type $-([A @p] [A @p])
89+++ uncertain-failure (uncertain-target "hi" "bad")
90+ ^
91+/tests/golden/types-multi-call/source.jibb:41:45: argument has type @t
92+++ uncertain-failure (uncertain-target "hi" "bad")
93+ ^
94+++ uncertain-tag: call's sample and argument types do not unify
95+/tests/golden/types-multi-call/source.jibb:42:19: called gate has type $-([A @p] [A @p])
96+++ uncertain-tag (uncertain-target %mystery "bad")
97+ ^
98+/tests/golden/types-multi-call/source.jibb:42:45: argument has type @t
99+++ uncertain-tag (uncertain-target %mystery "bad")
100+ ^
tests/golden/types-multi-import/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Modules: "Everything is exported and read through the import's face"; Expressions: "Call: `f a b`; parentheses only group."
2+tests: A library's multi-argument gate receives direct, contextual union and list arguments; wrong later arguments and invalid union tags fail with locations.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-multi-import/module-trees.txtnew file+16
@@ -0,0 +1,16 @@
1+/ui/lib.jibb
2+(module
3+ (mold 1:1 msg
4+ (union 2:3 (const 2:3 %add) (const 3:3 %remove)))
5+ (value 4:1 take
6+ (gate 4:9
7+ (face 4:12 p
8+ (cell 4:14 (aura 4:15 @t) (aura 4:18 @p)))
9+ (wing 4:22 p)))
10+ (value 5:1 combine
11+ (gate 5:12
12+ (face 5:15 p
13+ (cell 5:17
14+ (ref 5:18 msg)
15+ (apply 5:22 list (aura 5:28 @t))))
16+ (wing 5:33 p))))
tests/golden/types-multi-import/modules.txtnew file+1
@@ -0,0 +1 @@
1+/ui/lib.jibb
tests/golden/types-multi-import/modules/ui/lib.jibbnew file+5
@@ -0,0 +1,5 @@
1++$ msg
2+ %add
3+ %remove
4+++ take |= p=[@t @p] p
5+++ combine |= p=[msg (list @t)] p
tests/golden/types-multi-import/source.jibbnew file+5
@@ -0,0 +1,5 @@
1+/= lib /ui/lib
2+++ good (take.lib "hi" ~zod)
3+++ contextual (combine.lib %add ~["hi"])
4+++ bad-later (take.lib "hi" "no")
5+++ bad-tag (combine.lib %wrong ~["hi"])
tests/golden/types-multi-import/tokens.txtnew file+43
@@ -0,0 +1,43 @@
1+1:1 glyph /=
2+1:5 name lib
3+1:9 glyph /
4+1:10 tight knot ui
5+1:12 tight glyph /
6+1:13 tight knot lib
7+2:1 NEWLINE
8+2:1 glyph ++
9+2:4 name good
10+2:9 glyph (
11+2:10 tight wing take.lib
12+2:19 str "hi"
13+2:24 lit ~zod
14+2:28 tight glyph )
15+3:1 NEWLINE
16+3:1 glyph ++
17+3:4 name contextual
18+3:15 glyph (
19+3:16 tight wing combine.lib
20+3:28 lit %add
21+3:33 glyph ~[
22+3:35 tight str "hi"
23+3:39 tight glyph ]
24+3:40 tight glyph )
25+4:1 NEWLINE
26+4:1 glyph ++
27+4:4 name bad-later
28+4:14 glyph (
29+4:15 tight wing take.lib
30+4:24 str "hi"
31+4:29 str "no"
32+4:33 tight glyph )
33+5:1 NEWLINE
34+5:1 glyph ++
35+5:4 name bad-tag
36+5:12 glyph (
37+5:13 tight wing combine.lib
38+5:25 lit %wrong
39+5:32 glyph ~[
40+5:34 tight str "hi"
41+5:38 tight glyph ]
42+5:39 tight glyph )
43+5:40 NEWLINE
tests/golden/types-multi-import/tree.txtnew file+20
@@ -0,0 +1,20 @@
1+(module
2+ (jibb 1:1 lib /ui/lib)
3+ (value 2:1 good
4+ (group 2:9
5+ (call 2:10 (wing 2:10 take.lib) (str 2:19 "hi") (lit 2:24 ~zod))))
6+ (value 3:1 contextual
7+ (group 3:15
8+ (call 3:16
9+ (wing 3:16 combine.lib)
10+ (lit 3:28 %add)
11+ (list 3:33 (str 3:35 "hi")))))
12+ (value 4:1 bad-later
13+ (group 4:14
14+ (call 4:15 (wing 4:15 take.lib) (str 4:24 "hi") (str 4:29 "no"))))
15+ (value 5:1 bad-tag
16+ (group 5:12
17+ (call 5:13
18+ (wing 5:13 combine.lib)
19+ (lit 5:25 %wrong)
20+ (list 5:32 (str 5:34 "hi"))))))
tests/golden/types-multi-import/types.txtnew file+17
@@ -0,0 +1,17 @@
1+partial inference; module not checked
2+++ good: [@t @p]
3+++ contextual: [msg.lib (list @t)]
4+++ bad-later: call's sample and argument types do not unify
5+/tests/golden/types-multi-import/source.jibb:4:15: called gate has type $-([@t @p] [@t @p])
6+++ bad-later (take.lib "hi" "no")
7+ ^
8+/tests/golden/types-multi-import/source.jibb:4:29: argument has type @t
9+++ bad-later (take.lib "hi" "no")
10+ ^
11+++ bad-tag: call's sample and argument types do not unify
12+/tests/golden/types-multi-import/source.jibb:5:13: called gate
13+++ bad-tag (combine.lib %wrong ~["hi"])
14+ ^
15+/tests/golden/types-multi-import/source.jibb:5:25: argument
16+++ bad-tag (combine.lib %wrong ~["hi"])
17+ ^
tests/lib/jibb.hoon+372−358
@@ -1503,296 +1503,306 @@
1503/* imp-440-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1503/* imp-440-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1504/* mark-440-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1504/* mark-440-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1505/* mtre-440 %txt /tests/golden/types-module-mixed/module-trees/txt
1505/* mtre-440 %txt /tests/golden/types-module-mixed/module-trees/txt
1506−/* src-441 %jibb /tests/golden/types-null-context/source/jibb
1506+/* src-441 %jibb /tests/golden/types-multi-call/source/jibb
1507−/* tok-441 %txt /tests/golden/types-null-context/tokens/txt
1507+/* tok-441 %txt /tests/golden/types-multi-call/tokens/txt
1508−/* tre-441 %txt /tests/golden/types-null-context/tree/txt
1508+/* tre-441 %txt /tests/golden/types-multi-call/tree/txt
1509−/* typ-441 %txt /tests/golden/types-null-context/types/txt
1509+/* typ-441 %txt /tests/golden/types-multi-call/types/txt
1510−/* src-442 %jibb /tests/golden/types-null-overlap/source/jibb
1510+/* src-442 %jibb /tests/golden/types-multi-import/source/jibb
1511−/* tok-442 %txt /tests/golden/types-null-overlap/tokens/txt
1511+/* tok-442 %txt /tests/golden/types-multi-import/tokens/txt
1512−/* tre-442 %txt /tests/golden/types-null-overlap/tree/txt
1512+/* tre-442 %txt /tests/golden/types-multi-import/tree/txt
1513−/* typ-442 %txt /tests/golden/types-null-overlap/types/txt
1513+/* mod-442-1 %jibb /tests/golden/types-multi-import/modules/ui/lib/jibb
1514−/* src-443 %jibb /tests/golden/types-null-unresolved/source/jibb
1514+/* typ-442 %txt /tests/golden/types-multi-import/types/txt
1515−/* tok-443 %txt /tests/golden/types-null-unresolved/tokens/txt
1515+/* mtre-442 %txt /tests/golden/types-multi-import/module-trees/txt
1516−/* tre-443 %txt /tests/golden/types-null-unresolved/tree/txt
1516+/* src-443 %jibb /tests/golden/types-null-context/source/jibb
1517−/* typ-443 %txt /tests/golden/types-null-unresolved/types/txt
1517+/* tok-443 %txt /tests/golden/types-null-context/tokens/txt
1518−/* src-444 %jibb /tests/golden/types-partial-apply/source/jibb
1518+/* tre-443 %txt /tests/golden/types-null-context/tree/txt
1519−/* tok-444 %txt /tests/golden/types-partial-apply/tokens/txt
1519+/* typ-443 %txt /tests/golden/types-null-context/types/txt
1520−/* tre-444 %txt /tests/golden/types-partial-apply/tree/txt
1520+/* src-444 %jibb /tests/golden/types-null-overlap/source/jibb
1521−/* typ-444 %txt /tests/golden/types-partial-apply/types/txt
1521+/* tok-444 %txt /tests/golden/types-null-overlap/tokens/txt
1522−/* src-445 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1522+/* tre-444 %txt /tests/golden/types-null-overlap/tree/txt
1523−/* tok-445 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1523+/* typ-444 %txt /tests/golden/types-null-overlap/types/txt
1524−/* tre-445 %txt /tests/golden/types-partial-atom-alias/tree/txt
1524+/* src-445 %jibb /tests/golden/types-null-unresolved/source/jibb
1525−/* typ-445 %txt /tests/golden/types-partial-atom-alias/types/txt
1525+/* tok-445 %txt /tests/golden/types-null-unresolved/tokens/txt
1526−/* src-446 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1526+/* tre-445 %txt /tests/golden/types-null-unresolved/tree/txt
1527−/* tok-446 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1527+/* typ-445 %txt /tests/golden/types-null-unresolved/types/txt
1528−/* tre-446 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1528+/* src-446 %jibb /tests/golden/types-partial-apply/source/jibb
1529−/* typ-446 %txt /tests/golden/types-partial-atom-constraint/types/txt
1529+/* tok-446 %txt /tests/golden/types-partial-apply/tokens/txt
1530−/* src-447 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1530+/* tre-446 %txt /tests/golden/types-partial-apply/tree/txt
1531−/* tok-447 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1531+/* typ-446 %txt /tests/golden/types-partial-apply/types/txt
1532−/* tre-447 %txt /tests/golden/types-partial-atom-widening/tree/txt
1532+/* src-447 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1533−/* typ-447 %txt /tests/golden/types-partial-atom-widening/types/txt
1533+/* tok-447 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1534−/* src-448 %jibb /tests/golden/types-partial-aura/source/jibb
1534+/* tre-447 %txt /tests/golden/types-partial-atom-alias/tree/txt
1535−/* tok-448 %txt /tests/golden/types-partial-aura/tokens/txt
1535+/* typ-447 %txt /tests/golden/types-partial-atom-alias/types/txt
1536−/* tre-448 %txt /tests/golden/types-partial-aura/tree/txt
1536+/* src-448 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1537−/* typ-448 %txt /tests/golden/types-partial-aura/types/txt
1537+/* tok-448 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1538−/* src-449 %jibb /tests/golden/types-partial-aura-family/source/jibb
1538+/* tre-448 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1539−/* tok-449 %txt /tests/golden/types-partial-aura-family/tokens/txt
1539+/* typ-448 %txt /tests/golden/types-partial-atom-constraint/types/txt
1540−/* tre-449 %txt /tests/golden/types-partial-aura-family/tree/txt
1540+/* src-449 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1541−/* typ-449 %txt /tests/golden/types-partial-aura-family/types/txt
1541+/* tok-449 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1542−/* src-450 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1542+/* tre-449 %txt /tests/golden/types-partial-atom-widening/tree/txt
1543−/* tok-450 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1543+/* typ-449 %txt /tests/golden/types-partial-atom-widening/types/txt
1544−/* tre-450 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1544+/* src-450 %jibb /tests/golden/types-partial-aura/source/jibb
1545−/* typ-450 %txt /tests/golden/types-partial-aura-generalization/types/txt
1545+/* tok-450 %txt /tests/golden/types-partial-aura/tokens/txt
1546−/* src-451 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1546+/* tre-450 %txt /tests/golden/types-partial-aura/tree/txt
1547−/* tok-451 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1547+/* typ-450 %txt /tests/golden/types-partial-aura/types/txt
1548−/* tre-451 %txt /tests/golden/types-partial-bare-atom/tree/txt
1548+/* src-451 %jibb /tests/golden/types-partial-aura-family/source/jibb
1549−/* typ-451 %txt /tests/golden/types-partial-bare-atom/types/txt
1549+/* tok-451 %txt /tests/golden/types-partial-aura-family/tokens/txt
1550−/* src-452 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1550+/* tre-451 %txt /tests/golden/types-partial-aura-family/tree/txt
1551−/* tok-452 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1551+/* typ-451 %txt /tests/golden/types-partial-aura-family/types/txt
1552−/* tre-452 %txt /tests/golden/types-partial-branch-widening/tree/txt
1552+/* src-452 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1553−/* typ-452 %txt /tests/golden/types-partial-branch-widening/types/txt
1553+/* tok-452 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1554−/* src-453 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1554+/* tre-452 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1555−/* tok-453 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1555+/* typ-452 %txt /tests/golden/types-partial-aura-generalization/types/txt
1556−/* tre-453 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1556+/* src-453 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1557−/* typ-453 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1557+/* tok-453 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1558−/* src-454 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1558+/* tre-453 %txt /tests/golden/types-partial-bare-atom/tree/txt
1559−/* tok-454 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1559+/* typ-453 %txt /tests/golden/types-partial-bare-atom/types/txt
1560−/* tre-454 %txt /tests/golden/types-partial-decimal-default/tree/txt
1560+/* src-454 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1561−/* typ-454 %txt /tests/golden/types-partial-decimal-default/types/txt
1561+/* tok-454 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1562−/* src-455 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1562+/* tre-454 %txt /tests/golden/types-partial-branch-widening/tree/txt
1563−/* tok-455 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1563+/* typ-454 %txt /tests/golden/types-partial-branch-widening/types/txt
1564−/* tre-455 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1564+/* src-455 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1565−/* typ-455 %txt /tests/golden/types-partial-dependency-chain/types/txt
1565+/* tok-455 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1566−/* src-456 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1566+/* tre-455 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1567−/* tok-456 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1567+/* typ-455 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1568−/* tre-456 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1568+/* src-456 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1569−/* typ-456 %txt /tests/golden/types-partial-explicit-capital/types/txt
1569+/* tok-456 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1570−/* src-457 %jibb /tests/golden/types-partial-forward/source/jibb
1570+/* tre-456 %txt /tests/golden/types-partial-decimal-default/tree/txt
1571−/* tok-457 %txt /tests/golden/types-partial-forward/tokens/txt
1571+/* typ-456 %txt /tests/golden/types-partial-decimal-default/types/txt
1572−/* tre-457 %txt /tests/golden/types-partial-forward/tree/txt
1572+/* src-457 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1573−/* typ-457 %txt /tests/golden/types-partial-forward/types/txt
1573+/* tok-457 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1574−/* src-458 %jibb /tests/golden/types-partial-generalization/source/jibb
1574+/* tre-457 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1575−/* tok-458 %txt /tests/golden/types-partial-generalization/tokens/txt
1575+/* typ-457 %txt /tests/golden/types-partial-dependency-chain/types/txt
1576−/* tre-458 %txt /tests/golden/types-partial-generalization/tree/txt
1576+/* src-458 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1577−/* typ-458 %txt /tests/golden/types-partial-generalization/types/txt
1577+/* tok-458 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1578−/* src-459 %jibb /tests/golden/types-partial-identity/source/jibb
1578+/* tre-458 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1579−/* tok-459 %txt /tests/golden/types-partial-identity/tokens/txt
1579+/* typ-458 %txt /tests/golden/types-partial-explicit-capital/types/txt
1580−/* tre-459 %txt /tests/golden/types-partial-identity/tree/txt
1580+/* src-459 %jibb /tests/golden/types-partial-forward/source/jibb
1581−/* typ-459 %txt /tests/golden/types-partial-identity/types/txt
1581+/* tok-459 %txt /tests/golden/types-partial-forward/tokens/txt
1582−/* src-460 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1582+/* tre-459 %txt /tests/golden/types-partial-forward/tree/txt
1583−/* tok-460 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1583+/* typ-459 %txt /tests/golden/types-partial-forward/types/txt
1584−/* tre-460 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1584+/* src-460 %jibb /tests/golden/types-partial-generalization/source/jibb
1585−/* typ-460 %txt /tests/golden/types-partial-independent-atoms/types/txt
1585+/* tok-460 %txt /tests/golden/types-partial-generalization/tokens/txt
1586−/* src-461 %jibb /tests/golden/types-partial-local-molds/source/jibb
1586+/* tre-460 %txt /tests/golden/types-partial-generalization/tree/txt
1587−/* tok-461 %txt /tests/golden/types-partial-local-molds/tokens/txt
1587+/* typ-460 %txt /tests/golden/types-partial-generalization/types/txt
1588−/* tre-461 %txt /tests/golden/types-partial-local-molds/tree/txt
1588+/* src-461 %jibb /tests/golden/types-partial-identity/source/jibb
1589−/* typ-461 %txt /tests/golden/types-partial-local-molds/types/txt
1589+/* tok-461 %txt /tests/golden/types-partial-identity/tokens/txt
1590−/* src-462 %jibb /tests/golden/types-partial-locals/source/jibb
1590+/* tre-461 %txt /tests/golden/types-partial-identity/tree/txt
1591−/* tok-462 %txt /tests/golden/types-partial-locals/tokens/txt
1591+/* typ-461 %txt /tests/golden/types-partial-identity/types/txt
1592−/* tre-462 %txt /tests/golden/types-partial-locals/tree/txt
1592+/* src-462 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1593−/* typ-462 %txt /tests/golden/types-partial-locals/types/txt
1593+/* tok-462 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1594−/* src-463 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1594+/* tre-462 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1595−/* tok-463 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1595+/* typ-462 %txt /tests/golden/types-partial-independent-atoms/types/txt
1596−/* tre-463 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1596+/* src-463 %jibb /tests/golden/types-partial-local-molds/source/jibb
1597−/* typ-463 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1597+/* tok-463 %txt /tests/golden/types-partial-local-molds/tokens/txt
1598−/* src-464 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1598+/* tre-463 %txt /tests/golden/types-partial-local-molds/tree/txt
1599−/* tok-464 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1599+/* typ-463 %txt /tests/golden/types-partial-local-molds/types/txt
1600−/* tre-464 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1600+/* src-464 %jibb /tests/golden/types-partial-locals/source/jibb
1601−/* typ-464 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1601+/* tok-464 %txt /tests/golden/types-partial-locals/tokens/txt
1602−/* src-465 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1602+/* tre-464 %txt /tests/golden/types-partial-locals/tree/txt
1603−/* tok-465 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1603+/* typ-464 %txt /tests/golden/types-partial-locals/types/txt
1604−/* tre-465 %txt /tests/golden/types-partial-mold-composite/tree/txt
1604+/* src-465 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1605−/* typ-465 %txt /tests/golden/types-partial-mold-composite/types/txt
1605+/* tok-465 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1606−/* src-466 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1606+/* tre-465 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1607−/* tok-466 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1607+/* typ-465 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1608−/* tre-466 %txt /tests/golden/types-partial-mold-forward/tree/txt
1608+/* src-466 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1609−/* typ-466 %txt /tests/golden/types-partial-mold-forward/types/txt
1609+/* tok-466 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1610−/* src-467 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1610+/* tre-466 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1611−/* tok-467 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1611+/* typ-466 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1612−/* tre-467 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1612+/* src-467 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1613−/* typ-467 %txt /tests/golden/types-partial-mold-recursive/types/txt
1613+/* tok-467 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1614−/* src-468 %jibb /tests/golden/types-partial-occurs/source/jibb
1614+/* tre-467 %txt /tests/golden/types-partial-mold-composite/tree/txt
1615−/* tok-468 %txt /tests/golden/types-partial-occurs/tokens/txt
1615+/* typ-467 %txt /tests/golden/types-partial-mold-composite/types/txt
1616−/* tre-468 %txt /tests/golden/types-partial-occurs/tree/txt
1616+/* src-468 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1617−/* typ-468 %txt /tests/golden/types-partial-occurs/types/txt
1617+/* tok-468 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1618−/* src-469 %jibb /tests/golden/types-partial-projection/source/jibb
1618+/* tre-468 %txt /tests/golden/types-partial-mold-forward/tree/txt
1619−/* tok-469 %txt /tests/golden/types-partial-projection/tokens/txt
1619+/* typ-468 %txt /tests/golden/types-partial-mold-forward/types/txt
1620−/* tre-469 %txt /tests/golden/types-partial-projection/tree/txt
1620+/* src-469 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1621−/* typ-469 %txt /tests/golden/types-partial-projection/types/txt
1621+/* tok-469 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1622−/* src-470 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1622+/* tre-469 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1623−/* tok-470 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1623+/* typ-469 %txt /tests/golden/types-partial-mold-recursive/types/txt
1624−/* tre-470 %txt /tests/golden/types-partial-shadow-global/tree/txt
1624+/* src-470 %jibb /tests/golden/types-partial-occurs/source/jibb
1625−/* typ-470 %txt /tests/golden/types-partial-shadow-global/types/txt
1625+/* tok-470 %txt /tests/golden/types-partial-occurs/tokens/txt
1626−/* src-471 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1626+/* tre-470 %txt /tests/golden/types-partial-occurs/tree/txt
1627−/* tok-471 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1627+/* typ-470 %txt /tests/golden/types-partial-occurs/types/txt
1628−/* tre-471 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1628+/* src-471 %jibb /tests/golden/types-partial-projection/source/jibb
1629−/* typ-471 %txt /tests/golden/types-partial-shared-tvar/types/txt
1629+/* tok-471 %txt /tests/golden/types-partial-projection/tokens/txt
1630−/* src-472 %jibb /tests/golden/types-partial-union-cases/source/jibb
1630+/* tre-471 %txt /tests/golden/types-partial-projection/tree/txt
1631−/* tok-472 %txt /tests/golden/types-partial-union-cases/tokens/txt
1631+/* typ-471 %txt /tests/golden/types-partial-projection/types/txt
1632−/* tre-472 %txt /tests/golden/types-partial-union-cases/tree/txt
1632+/* src-472 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1633−/* typ-472 %txt /tests/golden/types-partial-union-cases/types/txt
1633+/* tok-472 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1634−/* src-473 %jibb /tests/golden/types-partial-union-edges/source/jibb
1634+/* tre-472 %txt /tests/golden/types-partial-shadow-global/tree/txt
1635−/* tok-473 %txt /tests/golden/types-partial-union-edges/tokens/txt
1635+/* typ-472 %txt /tests/golden/types-partial-shadow-global/types/txt
1636−/* tre-473 %txt /tests/golden/types-partial-union-edges/tree/txt
1636+/* src-473 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1637−/* typ-473 %txt /tests/golden/types-partial-union-edges/types/txt
1637+/* tok-473 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1638−/* src-474 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1638+/* tre-473 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1639−/* tok-474 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1639+/* typ-473 %txt /tests/golden/types-partial-shared-tvar/types/txt
1640−/* tre-474 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1640+/* src-474 %jibb /tests/golden/types-partial-union-cases/source/jibb
1641−/* typ-474 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1641+/* tok-474 %txt /tests/golden/types-partial-union-cases/tokens/txt
1642−/* src-475 %jibb /tests/golden/types-prelude-direct/source/jibb
1642+/* tre-474 %txt /tests/golden/types-partial-union-cases/tree/txt
1643−/* tok-475 %txt /tests/golden/types-prelude-direct/tokens/txt
1643+/* typ-474 %txt /tests/golden/types-partial-union-cases/types/txt
1644−/* tre-475 %txt /tests/golden/types-prelude-direct/tree/txt
1644+/* src-475 %jibb /tests/golden/types-partial-union-edges/source/jibb
1645−/* typ-475 %txt /tests/golden/types-prelude-direct/types/txt
1645+/* tok-475 %txt /tests/golden/types-partial-union-edges/tokens/txt
1646−/* src-476 %jibb /tests/golden/types-prelude-interface/source/jibb
1646+/* tre-475 %txt /tests/golden/types-partial-union-edges/tree/txt
1647−/* tok-476 %txt /tests/golden/types-prelude-interface/tokens/txt
1647+/* typ-475 %txt /tests/golden/types-partial-union-edges/types/txt
1648−/* tre-476 %txt /tests/golden/types-prelude-interface/tree/txt
1648+/* src-476 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1649−/* mod-476-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1649+/* tok-476 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1650−/* mod-476-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1650+/* tre-476 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1651−/* typ-476 %txt /tests/golden/types-prelude-interface/types/txt
1651+/* typ-476 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1652−/* mtre-476 %txt /tests/golden/types-prelude-interface/module-trees/txt
1652+/* src-477 %jibb /tests/golden/types-prelude-direct/source/jibb
1653−/* src-477 %jibb /tests/golden/types-record-bound-variable/source/jibb
1653+/* tok-477 %txt /tests/golden/types-prelude-direct/tokens/txt
1654−/* tok-477 %txt /tests/golden/types-record-bound-variable/tokens/txt
1654+/* tre-477 %txt /tests/golden/types-prelude-direct/tree/txt
1655−/* tre-477 %txt /tests/golden/types-record-bound-variable/tree/txt
1655+/* typ-477 %txt /tests/golden/types-prelude-direct/types/txt
1656−/* typ-477 %txt /tests/golden/types-record-bound-variable/types/txt
1656+/* src-478 %jibb /tests/golden/types-prelude-interface/source/jibb
1657−/* src-478 %jibb /tests/golden/types-record-faces/source/jibb
1657+/* tok-478 %txt /tests/golden/types-prelude-interface/tokens/txt
1658−/* tok-478 %txt /tests/golden/types-record-faces/tokens/txt
1658+/* tre-478 %txt /tests/golden/types-prelude-interface/tree/txt
1659−/* tre-478 %txt /tests/golden/types-record-faces/tree/txt
1659+/* mod-478-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1660−/* typ-478 %txt /tests/golden/types-record-faces/types/txt
1660+/* mod-478-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1661−/* src-479 %jibb /tests/golden/types-record-import/source/jibb
1661+/* typ-478 %txt /tests/golden/types-prelude-interface/types/txt
1662−/* tok-479 %txt /tests/golden/types-record-import/tokens/txt
1662+/* mtre-478 %txt /tests/golden/types-prelude-interface/module-trees/txt
1663−/* tre-479 %txt /tests/golden/types-record-import/tree/txt
1663+/* src-479 %jibb /tests/golden/types-record-bound-variable/source/jibb
1664−/* mod-479-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1664+/* tok-479 %txt /tests/golden/types-record-bound-variable/tokens/txt
1665−/* typ-479 %txt /tests/golden/types-record-import/types/txt
1665+/* tre-479 %txt /tests/golden/types-record-bound-variable/tree/txt
1666−/* mtre-479 %txt /tests/golden/types-record-import/module-trees/txt
1666+/* typ-479 %txt /tests/golden/types-record-bound-variable/types/txt
1667−/* src-480 %jibb /tests/golden/types-record-local-scheme/source/jibb
1667+/* src-480 %jibb /tests/golden/types-record-faces/source/jibb
1668−/* tok-480 %txt /tests/golden/types-record-local-scheme/tokens/txt
1668+/* tok-480 %txt /tests/golden/types-record-faces/tokens/txt
1669−/* tre-480 %txt /tests/golden/types-record-local-scheme/tree/txt
1669+/* tre-480 %txt /tests/golden/types-record-faces/tree/txt
1670−/* typ-480 %txt /tests/golden/types-record-local-scheme/types/txt
1670+/* typ-480 %txt /tests/golden/types-record-faces/types/txt
1671−/* src-481 %jibb /tests/golden/types-record-nested/source/jibb
1671+/* src-481 %jibb /tests/golden/types-record-import/source/jibb
1672−/* tok-481 %txt /tests/golden/types-record-nested/tokens/txt
1672+/* tok-481 %txt /tests/golden/types-record-import/tokens/txt
1673−/* tre-481 %txt /tests/golden/types-record-nested/tree/txt
1673+/* tre-481 %txt /tests/golden/types-record-import/tree/txt
1674−/* typ-481 %txt /tests/golden/types-record-nested/types/txt
1674+/* mod-481-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1675−/* src-482 %jibb /tests/golden/types-record-to-tuple/source/jibb
1675+/* typ-481 %txt /tests/golden/types-record-import/types/txt
1676−/* tok-482 %txt /tests/golden/types-record-to-tuple/tokens/txt
1676+/* mtre-481 %txt /tests/golden/types-record-import/module-trees/txt
1677−/* tre-482 %txt /tests/golden/types-record-to-tuple/tree/txt
1677+/* src-482 %jibb /tests/golden/types-record-local-scheme/source/jibb
1678−/* typ-482 %txt /tests/golden/types-record-to-tuple/types/txt
1678+/* tok-482 %txt /tests/golden/types-record-local-scheme/tokens/txt
1679−/* src-483 %jibb /tests/golden/types-recursive-branch/source/jibb
1679+/* tre-482 %txt /tests/golden/types-record-local-scheme/tree/txt
1680−/* tok-483 %txt /tests/golden/types-recursive-branch/tokens/txt
1680+/* typ-482 %txt /tests/golden/types-record-local-scheme/types/txt
1681−/* tre-483 %txt /tests/golden/types-recursive-branch/tree/txt
1681+/* src-483 %jibb /tests/golden/types-record-nested/source/jibb
1682−/* typ-483 %txt /tests/golden/types-recursive-branch/types/txt
1682+/* tok-483 %txt /tests/golden/types-record-nested/tokens/txt
1683−/* src-484 %jibb /tests/golden/types-recursive-gate/source/jibb
1683+/* tre-483 %txt /tests/golden/types-record-nested/tree/txt
1684−/* tok-484 %txt /tests/golden/types-recursive-gate/tokens/txt
1684+/* typ-483 %txt /tests/golden/types-record-nested/types/txt
1685−/* tre-484 %txt /tests/golden/types-recursive-gate/tree/txt
1685+/* src-484 %jibb /tests/golden/types-record-to-tuple/source/jibb
1686−/* typ-484 %txt /tests/golden/types-recursive-gate/types/txt
1686+/* tok-484 %txt /tests/golden/types-record-to-tuple/tokens/txt
1687−/* src-485 %jibb /tests/golden/types-union-alias/source/jibb
1687+/* tre-484 %txt /tests/golden/types-record-to-tuple/tree/txt
1688−/* tok-485 %txt /tests/golden/types-union-alias/tokens/txt
1688+/* typ-484 %txt /tests/golden/types-record-to-tuple/types/txt
1689−/* tre-485 %txt /tests/golden/types-union-alias/tree/txt
1689+/* src-485 %jibb /tests/golden/types-recursive-branch/source/jibb
1690−/* typ-485 %txt /tests/golden/types-union-alias/types/txt
1690+/* tok-485 %txt /tests/golden/types-recursive-branch/tokens/txt
1691−/* src-486 %jibb /tests/golden/types-union-branch-context/source/jibb
1691+/* tre-485 %txt /tests/golden/types-recursive-branch/tree/txt
1692−/* tok-486 %txt /tests/golden/types-union-branch-context/tokens/txt
1692+/* typ-485 %txt /tests/golden/types-recursive-branch/types/txt
1693−/* tre-486 %txt /tests/golden/types-union-branch-context/tree/txt
1693+/* src-486 %jibb /tests/golden/types-recursive-gate/source/jibb
1694−/* typ-486 %txt /tests/golden/types-union-branch-context/types/txt
1694+/* tok-486 %txt /tests/golden/types-recursive-gate/tokens/txt
1695−/* src-487 %jibb /tests/golden/types-union-branch-pending/source/jibb
1695+/* tre-486 %txt /tests/golden/types-recursive-gate/tree/txt
1696−/* tok-487 %txt /tests/golden/types-union-branch-pending/tokens/txt
1696+/* typ-486 %txt /tests/golden/types-recursive-gate/types/txt
1697−/* tre-487 %txt /tests/golden/types-union-branch-pending/tree/txt
1697+/* src-487 %jibb /tests/golden/types-union-alias/source/jibb
1698−/* typ-487 %txt /tests/golden/types-union-branch-pending/types/txt
1698+/* tok-487 %txt /tests/golden/types-union-alias/tokens/txt
1699−/* src-488 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1699+/* tre-487 %txt /tests/golden/types-union-alias/tree/txt
1700−/* tok-488 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1700+/* typ-487 %txt /tests/golden/types-union-alias/types/txt
1701−/* tre-488 %txt /tests/golden/types-union-constructor-shape/tree/txt
1701+/* src-488 %jibb /tests/golden/types-union-branch-context/source/jibb
1702−/* typ-488 %txt /tests/golden/types-union-constructor-shape/types/txt
1702+/* tok-488 %txt /tests/golden/types-union-branch-context/tokens/txt
1703−/* src-489 %jibb /tests/golden/types-union-context-flow/source/jibb
1703+/* tre-488 %txt /tests/golden/types-union-branch-context/tree/txt
1704−/* tok-489 %txt /tests/golden/types-union-context-flow/tokens/txt
1704+/* typ-488 %txt /tests/golden/types-union-branch-context/types/txt
1705−/* tre-489 %txt /tests/golden/types-union-context-flow/tree/txt
1705+/* src-489 %jibb /tests/golden/types-union-branch-pending/source/jibb
1706−/* typ-489 %txt /tests/golden/types-union-context-flow/types/txt
1706+/* tok-489 %txt /tests/golden/types-union-branch-pending/tokens/txt
1707−/* src-490 %jibb /tests/golden/types-union-import/source/jibb
1707+/* tre-489 %txt /tests/golden/types-union-branch-pending/tree/txt
1708−/* tok-490 %txt /tests/golden/types-union-import/tokens/txt
1708+/* typ-489 %txt /tests/golden/types-union-branch-pending/types/txt
1709−/* tre-490 %txt /tests/golden/types-union-import/tree/txt
1709+/* src-490 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1710−/* mod-490-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1710+/* tok-490 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1711−/* typ-490 %txt /tests/golden/types-union-import/types/txt
1711+/* tre-490 %txt /tests/golden/types-union-constructor-shape/tree/txt
1712−/* mtre-490 %txt /tests/golden/types-union-import/module-trees/txt
1712+/* typ-490 %txt /tests/golden/types-union-constructor-shape/types/txt
1713−/* src-491 %jibb /tests/golden/types-union-local-pending/source/jibb
1713+/* src-491 %jibb /tests/golden/types-union-context-flow/source/jibb
1714−/* tok-491 %txt /tests/golden/types-union-local-pending/tokens/txt
1714+/* tok-491 %txt /tests/golden/types-union-context-flow/tokens/txt
1715−/* tre-491 %txt /tests/golden/types-union-local-pending/tree/txt
1715+/* tre-491 %txt /tests/golden/types-union-context-flow/tree/txt
1716−/* typ-491 %txt /tests/golden/types-union-local-pending/types/txt
1716+/* typ-491 %txt /tests/golden/types-union-context-flow/types/txt
1717−/* src-492 %jibb /tests/golden/types-union-overlap/source/jibb
1717+/* src-492 %jibb /tests/golden/types-union-import/source/jibb
1718−/* tok-492 %txt /tests/golden/types-union-overlap/tokens/txt
1718+/* tok-492 %txt /tests/golden/types-union-import/tokens/txt
1719−/* tre-492 %txt /tests/golden/types-union-overlap/tree/txt
1719+/* tre-492 %txt /tests/golden/types-union-import/tree/txt
1720−/* typ-492 %txt /tests/golden/types-union-overlap/types/txt
1720+/* mod-492-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1721−/* src-493 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1721+/* typ-492 %txt /tests/golden/types-union-import/types/txt
1722−/* tok-493 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1722+/* mtre-492 %txt /tests/golden/types-union-import/module-trees/txt
1723−/* tre-493 %txt /tests/golden/types-union-overlap-nested/tree/txt
1723+/* src-493 %jibb /tests/golden/types-union-local-pending/source/jibb
1724−/* typ-493 %txt /tests/golden/types-union-overlap-nested/types/txt
1724+/* tok-493 %txt /tests/golden/types-union-local-pending/tokens/txt
1725−/* src-494 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1725+/* tre-493 %txt /tests/golden/types-union-local-pending/tree/txt
1726−/* tok-494 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1726+/* typ-493 %txt /tests/golden/types-union-local-pending/types/txt
1727−/* tre-494 %txt /tests/golden/types-union-phantom-generic/tree/txt
1727+/* src-494 %jibb /tests/golden/types-union-overlap/source/jibb
1728−/* typ-494 %txt /tests/golden/types-union-phantom-generic/types/txt
1728+/* tok-494 %txt /tests/golden/types-union-overlap/tokens/txt
1729−/* src-495 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1729+/* tre-494 %txt /tests/golden/types-union-overlap/tree/txt
1730−/* tok-495 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1730+/* typ-494 %txt /tests/golden/types-union-overlap/types/txt
1731−/* tre-495 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1731+/* src-495 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1732−/* mod-495-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1732+/* tok-495 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1733−/* typ-495 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1733+/* tre-495 %txt /tests/golden/types-union-overlap-nested/tree/txt
1734−/* mtre-495 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1734+/* typ-495 %txt /tests/golden/types-union-overlap-nested/types/txt
1735−/* src-496 %jibb /tests/golden/types-union-print-distinct/source/jibb
1735+/* src-496 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1736−/* tok-496 %txt /tests/golden/types-union-print-distinct/tokens/txt
1736+/* tok-496 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1737−/* tre-496 %txt /tests/golden/types-union-print-distinct/tree/txt
1737+/* tre-496 %txt /tests/golden/types-union-phantom-generic/tree/txt
1738−/* mod-496-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1738+/* typ-496 %txt /tests/golden/types-union-phantom-generic/types/txt
1739−/* mod-496-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1739+/* src-497 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1740−/* mod-496-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1740+/* tok-497 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1741−/* typ-496 %txt /tests/golden/types-union-print-distinct/types/txt
1741+/* tre-497 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1742−/* mtre-496 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1742+/* mod-497-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1743−/* src-497 %jibb /tests/golden/types-union-print-escape/source/jibb
1743+/* typ-497 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1744−/* tok-497 %txt /tests/golden/types-union-print-escape/tokens/txt
1744+/* mtre-497 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1745−/* tre-497 %txt /tests/golden/types-union-print-escape/tree/txt
1745+/* src-498 %jibb /tests/golden/types-union-print-distinct/source/jibb
1746−/* typ-497 %txt /tests/golden/types-union-print-escape/types/txt
1746+/* tok-498 %txt /tests/golden/types-union-print-distinct/tokens/txt
1747−/* src-498 %jibb /tests/golden/types-union-print-local/source/jibb
1747+/* tre-498 %txt /tests/golden/types-union-print-distinct/tree/txt
1748−/* tok-498 %txt /tests/golden/types-union-print-local/tokens/txt
1748+/* mod-498-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1749−/* tre-498 %txt /tests/golden/types-union-print-local/tree/txt
1749+/* mod-498-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1750−/* typ-498 %txt /tests/golden/types-union-print-local/types/txt
1750+/* mod-498-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1751−/* src-499 %jibb /tests/golden/types-union-print-nested/source/jibb
1751+/* typ-498 %txt /tests/golden/types-union-print-distinct/types/txt
1752−/* tok-499 %txt /tests/golden/types-union-print-nested/tokens/txt
1752+/* mtre-498 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1753−/* tre-499 %txt /tests/golden/types-union-print-nested/tree/txt
1753+/* src-499 %jibb /tests/golden/types-union-print-escape/source/jibb
1754−/* typ-499 %txt /tests/golden/types-union-print-nested/types/txt
1754+/* tok-499 %txt /tests/golden/types-union-print-escape/tokens/txt
1755−/* src-500 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1755+/* tre-499 %txt /tests/golden/types-union-print-escape/tree/txt
1756−/* tok-500 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1756+/* typ-499 %txt /tests/golden/types-union-print-escape/types/txt
1757−/* tre-500 %txt /tests/golden/types-union-print-same-origin/tree/txt
1757+/* src-500 %jibb /tests/golden/types-union-print-local/source/jibb
1758−/* mod-500-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1758+/* tok-500 %txt /tests/golden/types-union-print-local/tokens/txt
1759−/* typ-500 %txt /tests/golden/types-union-print-same-origin/types/txt
1759+/* tre-500 %txt /tests/golden/types-union-print-local/tree/txt
1760−/* mtre-500 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1760+/* typ-500 %txt /tests/golden/types-union-print-local/types/txt
1761−/* src-501 %jibb /tests/golden/types-union-print-transitive/source/jibb
1761+/* src-501 %jibb /tests/golden/types-union-print-nested/source/jibb
1762−/* tok-501 %txt /tests/golden/types-union-print-transitive/tokens/txt
1762+/* tok-501 %txt /tests/golden/types-union-print-nested/tokens/txt
1763−/* tre-501 %txt /tests/golden/types-union-print-transitive/tree/txt
1763+/* tre-501 %txt /tests/golden/types-union-print-nested/tree/txt
1764−/* mod-501-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1764+/* typ-501 %txt /tests/golden/types-union-print-nested/types/txt
1765−/* mod-501-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1765+/* src-502 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1766−/* typ-501 %txt /tests/golden/types-union-print-transitive/types/txt
1766+/* tok-502 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1767−/* mtre-501 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1767+/* tre-502 %txt /tests/golden/types-union-print-same-origin/tree/txt
1768−/* src-502 %jibb /tests/golden/types-union-singleton/source/jibb
1768+/* mod-502-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1769−/* tok-502 %txt /tests/golden/types-union-singleton/tokens/txt
1769+/* typ-502 %txt /tests/golden/types-union-print-same-origin/types/txt
1770−/* tre-502 %txt /tests/golden/types-union-singleton/tree/txt
1770+/* mtre-502 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1771−/* typ-502 %txt /tests/golden/types-union-singleton/types/txt
1771+/* src-503 %jibb /tests/golden/types-union-print-transitive/source/jibb
1772−/* src-503 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1772+/* tok-503 %txt /tests/golden/types-union-print-transitive/tokens/txt
1773−/* tok-503 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1773+/* tre-503 %txt /tests/golden/types-union-print-transitive/tree/txt
1774−/* tre-503 %txt /tests/golden/types-union-tag-atoms/tree/txt
1774+/* mod-503-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1775−/* typ-503 %txt /tests/golden/types-union-tag-atoms/types/txt
1775+/* mod-503-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1776−/* src-504 %jibb /tests/golden/types-union-tags/source/jibb
1776+/* typ-503 %txt /tests/golden/types-union-print-transitive/types/txt
1777−/* tok-504 %txt /tests/golden/types-union-tags/tokens/txt
1777+/* mtre-503 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1778−/* tre-504 %txt /tests/golden/types-union-tags/tree/txt
1778+/* src-504 %jibb /tests/golden/types-union-singleton/source/jibb
1779−/* typ-504 %txt /tests/golden/types-union-tags/types/txt
1779+/* tok-504 %txt /tests/golden/types-union-singleton/tokens/txt
1780−/* src-505 %jibb /tests/golden/types-union-unresolved/source/jibb
1780+/* tre-504 %txt /tests/golden/types-union-singleton/tree/txt
1781−/* tok-505 %txt /tests/golden/types-union-unresolved/tokens/txt
1781+/* typ-504 %txt /tests/golden/types-union-singleton/types/txt
1782−/* tre-505 %txt /tests/golden/types-union-unresolved/tree/txt
1782+/* src-505 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1783−/* typ-505 %txt /tests/golden/types-union-unresolved/types/txt
1783+/* tok-505 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1784−/* src-506 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1784+/* tre-505 %txt /tests/golden/types-union-tag-atoms/tree/txt
1785−/* tok-506 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1785+/* typ-505 %txt /tests/golden/types-union-tag-atoms/types/txt
1786−/* tre-506 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1786+/* src-506 %jibb /tests/golden/types-union-tags/source/jibb
1787−/* typ-506 %txt /tests/golden/types-union-unresolved-flow/types/txt
1787+/* tok-506 %txt /tests/golden/types-union-tags/tokens/txt
1788−/* src-507 %jibb /tests/golden/types-unit-context/source/jibb
1788+/* tre-506 %txt /tests/golden/types-union-tags/tree/txt
1789−/* tok-507 %txt /tests/golden/types-unit-context/tokens/txt
1789+/* typ-506 %txt /tests/golden/types-union-tags/types/txt
1790−/* tre-507 %txt /tests/golden/types-unit-context/tree/txt
1790+/* src-507 %jibb /tests/golden/types-union-unresolved/source/jibb
1791−/* typ-507 %txt /tests/golden/types-unit-context/types/txt
1791+/* tok-507 %txt /tests/golden/types-union-unresolved/tokens/txt
1792−/* src-508 %jibb /tests/golden/types-unit-patterns/source/jibb
1792+/* tre-507 %txt /tests/golden/types-union-unresolved/tree/txt
1793−/* tok-508 %txt /tests/golden/types-unit-patterns/tokens/txt
1793+/* typ-507 %txt /tests/golden/types-union-unresolved/types/txt
1794−/* tre-508 %txt /tests/golden/types-unit-patterns/tree/txt
1794+/* src-508 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1795−/* typ-508 %txt /tests/golden/types-unit-patterns/types/txt
1795+/* tok-508 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1796+/* tre-508 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1797+/* typ-508 %txt /tests/golden/types-union-unresolved-flow/types/txt
1798+/* src-509 %jibb /tests/golden/types-unit-context/source/jibb
1799+/* tok-509 %txt /tests/golden/types-unit-context/tokens/txt
1800+/* tre-509 %txt /tests/golden/types-unit-context/tree/txt
1801+/* typ-509 %txt /tests/golden/types-unit-context/types/txt
1802+/* src-510 %jibb /tests/golden/types-unit-patterns/source/jibb
1803+/* tok-510 %txt /tests/golden/types-unit-patterns/tokens/txt
1804+/* tre-510 %txt /tests/golden/types-unit-patterns/tree/txt
1805+/* typ-510 %txt /tests/golden/types-unit-patterns/types/txt
1796=/ prepared-prelude (prepare-prelude:jibb prelude-source)
1806=/ prepared-prelude (prepare-prelude:jibb prelude-source)
1797|%
1807|%
1798:: one arm per case
1808:: one arm per case
@@ -2677,142 +2687,146 @@
2677 (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-439 `tok-439 `tre-439) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-439 `typ-439 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-439-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-439-2]])) (check-module-trees ~.types-module-fixtures `mtre-439 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-439-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-439-2]]))
2687 (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-439 `tok-439 `tre-439) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-439 `typ-439 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-439-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-439-2]])) (check-module-trees ~.types-module-fixtures `mtre-439 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-439-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-439-2]]))
2678++ test-types-module-mixed
2688++ test-types-module-mixed
2679 (weld (weld (check ~.types-module-mixed src-440 `tok-440 `tre-440) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-440 `typ-440 ~[[%fixture %title imp-440-1]] ~[[%label mark-440-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-440-1]])) (check-module-trees ~.types-module-mixed `mtre-440 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-440-1]]))
2689 (weld (weld (check ~.types-module-mixed src-440 `tok-440 `tre-440) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-440 `typ-440 ~[[%fixture %title imp-440-1]] ~[[%label mark-440-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-440-1]])) (check-module-trees ~.types-module-mixed `mtre-440 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-440-1]]))
2690+++ test-types-multi-call
2691+ (weld (check ~.types-multi-call src-441 `tok-441 `tre-441) (check-module-types ~.types-multi-call ~[%tests %golden ~.types-multi-call %source %jibb] src-441 `typ-441 ~ ~ ~))
2692+++ test-types-multi-import
2693+ (weld (weld (check ~.types-multi-import src-442 `tok-442 `tre-442) (check-module-types ~.types-multi-import ~[%tests %golden ~.types-multi-import %source %jibb] src-442 `typ-442 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-442-1]])) (check-module-trees ~.types-multi-import `mtre-442 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-442-1]]))
2680++ test-types-null-context
2694++ test-types-null-context
2681− (weld (check ~.types-null-context src-441 `tok-441 `tre-441) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-441 `typ-441))
2695+ (weld (check ~.types-null-context src-443 `tok-443 `tre-443) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-443 `typ-443))
2682++ test-types-null-overlap
2696++ test-types-null-overlap
2683− (weld (check ~.types-null-overlap src-442 `tok-442 `tre-442) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-442 `typ-442))
2697+ (weld (check ~.types-null-overlap src-444 `tok-444 `tre-444) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-444 `typ-444))
2684++ test-types-null-unresolved
2698++ test-types-null-unresolved
2685− (weld (check ~.types-null-unresolved src-443 `tok-443 `tre-443) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-443 `typ-443))
2699+ (weld (check ~.types-null-unresolved src-445 `tok-445 `tre-445) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-445 `typ-445))
2686++ test-types-partial-apply
2700++ test-types-partial-apply
2687− (weld (check ~.types-partial-apply src-444 `tok-444 `tre-444) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-444 `typ-444))
2701+ (weld (check ~.types-partial-apply src-446 `tok-446 `tre-446) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-446 `typ-446))
2688++ test-types-partial-atom-alias
2702++ test-types-partial-atom-alias
2689− (weld (check ~.types-partial-atom-alias src-445 `tok-445 `tre-445) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-445 `typ-445))
2703+ (weld (check ~.types-partial-atom-alias src-447 `tok-447 `tre-447) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-447 `typ-447))
2690++ test-types-partial-atom-constraint
2704++ test-types-partial-atom-constraint
2691− (weld (check ~.types-partial-atom-constraint src-446 `tok-446 `tre-446) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-446 `typ-446))
2705+ (weld (check ~.types-partial-atom-constraint src-448 `tok-448 `tre-448) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-448 `typ-448))
2692++ test-types-partial-atom-widening
2706++ test-types-partial-atom-widening
2693− (weld (check ~.types-partial-atom-widening src-447 `tok-447 `tre-447) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-447 `typ-447))
2707+ (weld (check ~.types-partial-atom-widening src-449 `tok-449 `tre-449) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-449 `typ-449))
2694++ test-types-partial-aura
2708++ test-types-partial-aura
2695− (weld (check ~.types-partial-aura src-448 `tok-448 `tre-448) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-448 `typ-448))
2709+ (weld (check ~.types-partial-aura src-450 `tok-450 `tre-450) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-450 `typ-450))
2696++ test-types-partial-aura-family
2710++ test-types-partial-aura-family
2697− (weld (check ~.types-partial-aura-family src-449 `tok-449 `tre-449) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-449 `typ-449))
2711+ (weld (check ~.types-partial-aura-family src-451 `tok-451 `tre-451) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-451 `typ-451))
2698++ test-types-partial-aura-generalization
2712++ test-types-partial-aura-generalization
2699− (weld (check ~.types-partial-aura-generalization src-450 `tok-450 `tre-450) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-450 `typ-450))
2713+ (weld (check ~.types-partial-aura-generalization src-452 `tok-452 `tre-452) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-452 `typ-452))
2700++ test-types-partial-bare-atom
2714++ test-types-partial-bare-atom
2701− (weld (check ~.types-partial-bare-atom src-451 `tok-451 `tre-451) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-451 `typ-451))
2715+ (weld (check ~.types-partial-bare-atom src-453 `tok-453 `tre-453) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-453 `typ-453))
2702++ test-types-partial-branch-widening
2716++ test-types-partial-branch-widening
2703− (weld (check ~.types-partial-branch-widening src-452 `tok-452 `tre-452) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-452 `typ-452))
2717+ (weld (check ~.types-partial-branch-widening src-454 `tok-454 `tre-454) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-454 `typ-454))
2704++ test-types-partial-conflicting-sites
2718++ test-types-partial-conflicting-sites
2705− (weld (check ~.types-partial-conflicting-sites src-453 `tok-453 `tre-453) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-453 `typ-453))
2719+ (weld (check ~.types-partial-conflicting-sites src-455 `tok-455 `tre-455) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-455 `typ-455))
2706++ test-types-partial-decimal-default
2720++ test-types-partial-decimal-default
2707− (weld (check ~.types-partial-decimal-default src-454 `tok-454 `tre-454) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-454 `typ-454))
2721+ (weld (check ~.types-partial-decimal-default src-456 `tok-456 `tre-456) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-456 `typ-456))
2708++ test-types-partial-dependency-chain
2722++ test-types-partial-dependency-chain
2709− (weld (check ~.types-partial-dependency-chain src-455 `tok-455 `tre-455) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-455 `typ-455))
2723+ (weld (check ~.types-partial-dependency-chain src-457 `tok-457 `tre-457) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-457 `typ-457))
2710++ test-types-partial-explicit-capital
2724++ test-types-partial-explicit-capital
2711− (weld (check ~.types-partial-explicit-capital src-456 `tok-456 `tre-456) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-456 `typ-456))
2725+ (weld (check ~.types-partial-explicit-capital src-458 `tok-458 `tre-458) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-458 `typ-458))
2712++ test-types-partial-forward
2726++ test-types-partial-forward
2713− (weld (check ~.types-partial-forward src-457 `tok-457 `tre-457) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-457 `typ-457))
2727+ (weld (check ~.types-partial-forward src-459 `tok-459 `tre-459) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-459 `typ-459))
2714++ test-types-partial-generalization
2728++ test-types-partial-generalization
2715− (weld (check ~.types-partial-generalization src-458 `tok-458 `tre-458) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-458 `typ-458))
2729+ (weld (check ~.types-partial-generalization src-460 `tok-460 `tre-460) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-460 `typ-460))
2716++ test-types-partial-identity
2730++ test-types-partial-identity
2717− (weld (check ~.types-partial-identity src-459 `tok-459 `tre-459) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-459 `typ-459))
2731+ (weld (check ~.types-partial-identity src-461 `tok-461 `tre-461) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-461 `typ-461))
2718++ test-types-partial-independent-atoms
2732++ test-types-partial-independent-atoms
2719− (weld (check ~.types-partial-independent-atoms src-460 `tok-460 `tre-460) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-460 `typ-460))
2733+ (weld (check ~.types-partial-independent-atoms src-462 `tok-462 `tre-462) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-462 `typ-462))
2720++ test-types-partial-local-molds
2734++ test-types-partial-local-molds
2721− (weld (check ~.types-partial-local-molds src-461 `tok-461 `tre-461) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-461 `typ-461))
2735+ (weld (check ~.types-partial-local-molds src-463 `tok-463 `tre-463) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-463 `typ-463))
2722++ test-types-partial-locals
2736++ test-types-partial-locals
2723− (weld (check ~.types-partial-locals src-462 `tok-462 `tre-462) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-462 `typ-462))
2737+ (weld (check ~.types-partial-locals src-464 `tok-464 `tre-464) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-464 `typ-464))
2724++ test-types-partial-many-atom-constraints
2738++ test-types-partial-many-atom-constraints
2725− (weld (check ~.types-partial-many-atom-constraints src-463 `tok-463 `tre-463) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-463 `typ-463))
2739+ (weld (check ~.types-partial-many-atom-constraints src-465 `tok-465 `tre-465) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-465 `typ-465))
2726++ test-types-partial-mold-bare-aura
2740++ test-types-partial-mold-bare-aura
2727− (weld (check ~.types-partial-mold-bare-aura src-464 `tok-464 `tre-464) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-464 `typ-464))
2741+ (weld (check ~.types-partial-mold-bare-aura src-466 `tok-466 `tre-466) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-466 `typ-466))
2728++ test-types-partial-mold-composite
2742++ test-types-partial-mold-composite
2729− (weld (check ~.types-partial-mold-composite src-465 `tok-465 `tre-465) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-465 `typ-465))
2743+ (weld (check ~.types-partial-mold-composite src-467 `tok-467 `tre-467) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-467 `typ-467))
2730++ test-types-partial-mold-forward
2744++ test-types-partial-mold-forward
2731− (weld (check ~.types-partial-mold-forward src-466 `tok-466 `tre-466) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-466 `typ-466))
2745+ (weld (check ~.types-partial-mold-forward src-468 `tok-468 `tre-468) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-468 `typ-468))
2732++ test-types-partial-mold-recursive
2746++ test-types-partial-mold-recursive
2733− (weld (check ~.types-partial-mold-recursive src-467 `tok-467 `tre-467) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-467 `typ-467))
2747+ (weld (check ~.types-partial-mold-recursive src-469 `tok-469 `tre-469) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-469 `typ-469))
2734++ test-types-partial-occurs
2748++ test-types-partial-occurs
2735− (weld (check ~.types-partial-occurs src-468 `tok-468 `tre-468) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-468 `typ-468))
2749+ (weld (check ~.types-partial-occurs src-470 `tok-470 `tre-470) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-470 `typ-470))
2736++ test-types-partial-projection
2750++ test-types-partial-projection
2737− (weld (check ~.types-partial-projection src-469 `tok-469 `tre-469) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-469 `typ-469))
2751+ (weld (check ~.types-partial-projection src-471 `tok-471 `tre-471) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-471 `typ-471))
2738++ test-types-partial-shadow-global
2752++ test-types-partial-shadow-global
2739− (weld (check ~.types-partial-shadow-global src-470 `tok-470 `tre-470) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-470 `typ-470))
2753+ (weld (check ~.types-partial-shadow-global src-472 `tok-472 `tre-472) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-472 `typ-472))
2740++ test-types-partial-shared-tvar
2754++ test-types-partial-shared-tvar
2741− (weld (check ~.types-partial-shared-tvar src-471 `tok-471 `tre-471) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-471 `typ-471))
2755+ (weld (check ~.types-partial-shared-tvar src-473 `tok-473 `tre-473) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-473 `typ-473))
2742++ test-types-partial-union-cases
2756++ test-types-partial-union-cases
2743− (weld (check ~.types-partial-union-cases src-472 `tok-472 `tre-472) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-472 `typ-472))
2757+ (weld (check ~.types-partial-union-cases src-474 `tok-474 `tre-474) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-474 `typ-474))
2744++ test-types-partial-union-edges
2758++ test-types-partial-union-edges
2745− (weld (check ~.types-partial-union-edges src-473 `tok-473 `tre-473) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-473 `typ-473))
2759+ (weld (check ~.types-partial-union-edges src-475 `tok-475 `tre-475) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-475 `typ-475))
2746++ test-types-partial-unresolved-tag
2760++ test-types-partial-unresolved-tag
2747− (weld (check ~.types-partial-unresolved-tag src-474 `tok-474 `tre-474) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-474 `typ-474))
2761+ (weld (check ~.types-partial-unresolved-tag src-476 `tok-476 `tre-476) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-476 `typ-476))
2748++ test-types-prelude-direct
2762++ test-types-prelude-direct
2749− (weld (check ~.types-prelude-direct src-475 `tok-475 `tre-475) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-475 `typ-475 ~ ~ ~))
2763+ (weld (check ~.types-prelude-direct src-477 `tok-477 `tre-477) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-477 `typ-477 ~ ~ ~))
2750++ test-types-prelude-interface
2764++ test-types-prelude-interface
2751− (weld (weld (check ~.types-prelude-interface src-476 `tok-476 `tre-476) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-476 `typ-476 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-476-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-476-2]])) (check-module-trees ~.types-prelude-interface `mtre-476 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-476-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-476-2]]))
2765+ (weld (weld (check ~.types-prelude-interface src-478 `tok-478 `tre-478) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-478 `typ-478 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-478-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-478-2]])) (check-module-trees ~.types-prelude-interface `mtre-478 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-478-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-478-2]]))
2752++ test-types-record-bound-variable
2766++ test-types-record-bound-variable
2753− (weld (check ~.types-record-bound-variable src-477 `tok-477 `tre-477) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-477 `typ-477))
2767+ (weld (check ~.types-record-bound-variable src-479 `tok-479 `tre-479) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-479 `typ-479))
2754++ test-types-record-faces
2768++ test-types-record-faces
2755− (weld (check ~.types-record-faces src-478 `tok-478 `tre-478) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-478 `typ-478))
2769+ (weld (check ~.types-record-faces src-480 `tok-480 `tre-480) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-480 `typ-480))
2756++ test-types-record-import
2770++ test-types-record-import
2757− (weld (weld (check ~.types-record-import src-479 `tok-479 `tre-479) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-479 `typ-479 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]])) (check-module-trees ~.types-record-import `mtre-479 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]]))
2771+ (weld (weld (check ~.types-record-import src-481 `tok-481 `tre-481) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-481 `typ-481 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]])) (check-module-trees ~.types-record-import `mtre-481 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]]))
2758++ test-types-record-local-scheme
2772++ test-types-record-local-scheme
2759− (weld (check ~.types-record-local-scheme src-480 `tok-480 `tre-480) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-480 `typ-480))
2773+ (weld (check ~.types-record-local-scheme src-482 `tok-482 `tre-482) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-482 `typ-482))
2760++ test-types-record-nested
2774++ test-types-record-nested
2761− (weld (check ~.types-record-nested src-481 `tok-481 `tre-481) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-481 `typ-481))
2775+ (weld (check ~.types-record-nested src-483 `tok-483 `tre-483) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-483 `typ-483))
2762++ test-types-record-to-tuple
2776++ test-types-record-to-tuple
2763− (weld (check ~.types-record-to-tuple src-482 `tok-482 `tre-482) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-482 `typ-482))
2777+ (weld (check ~.types-record-to-tuple src-484 `tok-484 `tre-484) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-484 `typ-484))
2764++ test-types-recursive-branch
2778++ test-types-recursive-branch
2765− (weld (check ~.types-recursive-branch src-483 `tok-483 `tre-483) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-483 `typ-483 ~ ~ ~))
2779+ (weld (check ~.types-recursive-branch src-485 `tok-485 `tre-485) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-485 `typ-485 ~ ~ ~))
2766++ test-types-recursive-gate
2780++ test-types-recursive-gate
2767− (weld (check ~.types-recursive-gate src-484 `tok-484 `tre-484) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-484 `typ-484))
2781+ (weld (check ~.types-recursive-gate src-486 `tok-486 `tre-486) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-486 `typ-486))
2768++ test-types-union-alias
2782++ test-types-union-alias
2769− (weld (check ~.types-union-alias src-485 `tok-485 `tre-485) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-485 `typ-485))
2783+ (weld (check ~.types-union-alias src-487 `tok-487 `tre-487) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-487 `typ-487))
2770++ test-types-union-branch-context
2784++ test-types-union-branch-context
2771− (weld (check ~.types-union-branch-context src-486 `tok-486 `tre-486) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-486 `typ-486))
2785+ (weld (check ~.types-union-branch-context src-488 `tok-488 `tre-488) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-488 `typ-488))
2772++ test-types-union-branch-pending
2786++ test-types-union-branch-pending
2773− (weld (check ~.types-union-branch-pending src-487 `tok-487 `tre-487) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-487 `typ-487))
2787+ (weld (check ~.types-union-branch-pending src-489 `tok-489 `tre-489) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-489 `typ-489))
2774++ test-types-union-constructor-shape
2788++ test-types-union-constructor-shape
2775− (weld (check ~.types-union-constructor-shape src-488 `tok-488 `tre-488) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-488 `typ-488))
2789+ (weld (check ~.types-union-constructor-shape src-490 `tok-490 `tre-490) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-490 `typ-490))
2776++ test-types-union-context-flow
2790++ test-types-union-context-flow
2777− (weld (check ~.types-union-context-flow src-489 `tok-489 `tre-489) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-489 `typ-489))
2791+ (weld (check ~.types-union-context-flow src-491 `tok-491 `tre-491) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-491 `typ-491))
2778++ test-types-union-import
2792++ test-types-union-import
2779− (weld (weld (check ~.types-union-import src-490 `tok-490 `tre-490) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-490 `typ-490 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-490-1]])) (check-module-trees ~.types-union-import `mtre-490 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-490-1]]))
2793+ (weld (weld (check ~.types-union-import src-492 `tok-492 `tre-492) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-492 `typ-492 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-492-1]])) (check-module-trees ~.types-union-import `mtre-492 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-492-1]]))
2780++ test-types-union-local-pending
2794++ test-types-union-local-pending
2781− (weld (check ~.types-union-local-pending src-491 `tok-491 `tre-491) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-491 `typ-491))
2795+ (weld (check ~.types-union-local-pending src-493 `tok-493 `tre-493) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-493 `typ-493))
2782++ test-types-union-overlap
2796++ test-types-union-overlap
2783− (weld (check ~.types-union-overlap src-492 `tok-492 `tre-492) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-492 `typ-492))
2797+ (weld (check ~.types-union-overlap src-494 `tok-494 `tre-494) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-494 `typ-494))
2784++ test-types-union-overlap-nested
2798++ test-types-union-overlap-nested
2785− (weld (check ~.types-union-overlap-nested src-493 `tok-493 `tre-493) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-493 `typ-493))
2799+ (weld (check ~.types-union-overlap-nested src-495 `tok-495 `tre-495) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-495 `typ-495))
2786++ test-types-union-phantom-generic
2800++ test-types-union-phantom-generic
2787− (weld (check ~.types-union-phantom-generic src-494 `tok-494 `tre-494) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-494 `typ-494))
2801+ (weld (check ~.types-union-phantom-generic src-496 `tok-496 `tre-496) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-496 `typ-496))
2788++ test-types-union-print-cross-namespace
2802++ test-types-union-print-cross-namespace
2789− (weld (weld (check ~.types-union-print-cross-namespace src-495 `tok-495 `tre-495) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-495 `typ-495 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-495-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-495 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-495-1]]))
2803+ (weld (weld (check ~.types-union-print-cross-namespace src-497 `tok-497 `tre-497) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-497 `typ-497 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-497-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-497 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-497-1]]))
2790++ test-types-union-print-distinct
2804++ test-types-union-print-distinct
2791− (weld (weld (check ~.types-union-print-distinct src-496 `tok-496 `tre-496) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-496 `typ-496 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-496-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-496-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-496-3]])) (check-module-trees ~.types-union-print-distinct `mtre-496 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-496-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-496-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-496-3]]))
2805+ (weld (weld (check ~.types-union-print-distinct src-498 `tok-498 `tre-498) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-498 `typ-498 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-498-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-498-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-498-3]])) (check-module-trees ~.types-union-print-distinct `mtre-498 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-498-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-498-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-498-3]]))
2792++ test-types-union-print-escape
2806++ test-types-union-print-escape
2793− (weld (check ~.types-union-print-escape src-497 `tok-497 `tre-497) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-497 `typ-497))
2807+ (weld (check ~.types-union-print-escape src-499 `tok-499 `tre-499) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-499 `typ-499))
2794++ test-types-union-print-local
2808++ test-types-union-print-local
2795− (weld (check ~.types-union-print-local src-498 `tok-498 `tre-498) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-498 `typ-498))
2809+ (weld (check ~.types-union-print-local src-500 `tok-500 `tre-500) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-500 `typ-500))
2796++ test-types-union-print-nested
2810++ test-types-union-print-nested
2797− (weld (check ~.types-union-print-nested src-499 `tok-499 `tre-499) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-499 `typ-499))
2811+ (weld (check ~.types-union-print-nested src-501 `tok-501 `tre-501) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-501 `typ-501))
2798++ test-types-union-print-same-origin
2812++ test-types-union-print-same-origin
2799− (weld (weld (check ~.types-union-print-same-origin src-500 `tok-500 `tre-500) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-500 `typ-500 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-500-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-500 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-500-1]]))
2813+ (weld (weld (check ~.types-union-print-same-origin src-502 `tok-502 `tre-502) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-502 `typ-502 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-502-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-502 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-502-1]]))
2800++ test-types-union-print-transitive
2814++ test-types-union-print-transitive
2801− (weld (weld (check ~.types-union-print-transitive src-501 `tok-501 `tre-501) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-501 `typ-501 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-501-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-501-2]])) (check-module-trees ~.types-union-print-transitive `mtre-501 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-501-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-501-2]]))
2815+ (weld (weld (check ~.types-union-print-transitive src-503 `tok-503 `tre-503) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-503 `typ-503 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-503-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-503-2]])) (check-module-trees ~.types-union-print-transitive `mtre-503 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-503-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-503-2]]))
2802++ test-types-union-singleton
2816++ test-types-union-singleton
2803− (weld (check ~.types-union-singleton src-502 `tok-502 `tre-502) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-502 `typ-502))
2817+ (weld (check ~.types-union-singleton src-504 `tok-504 `tre-504) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-504 `typ-504))
2804++ test-types-union-tag-atoms
2818++ test-types-union-tag-atoms
2805− (weld (check ~.types-union-tag-atoms src-503 `tok-503 `tre-503) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-503 `typ-503))
2819+ (weld (check ~.types-union-tag-atoms src-505 `tok-505 `tre-505) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-505 `typ-505))
2806++ test-types-union-tags
2820++ test-types-union-tags
2807− (weld (check ~.types-union-tags src-504 `tok-504 `tre-504) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-504 `typ-504))
2821+ (weld (check ~.types-union-tags src-506 `tok-506 `tre-506) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-506 `typ-506))
2808++ test-types-union-unresolved
2822++ test-types-union-unresolved
2809− (weld (check ~.types-union-unresolved src-505 `tok-505 `tre-505) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-505 `typ-505))
2823+ (weld (check ~.types-union-unresolved src-507 `tok-507 `tre-507) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-507 `typ-507))
2810++ test-types-union-unresolved-flow
2824++ test-types-union-unresolved-flow
2811− (weld (check ~.types-union-unresolved-flow src-506 `tok-506 `tre-506) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-506 `typ-506))
2825+ (weld (check ~.types-union-unresolved-flow src-508 `tok-508 `tre-508) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-508 `typ-508))
2812++ test-types-unit-context
2826++ test-types-unit-context
2813− (weld (check ~.types-unit-context src-507 `tok-507 `tre-507) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-507 `typ-507))
2827+ (weld (check ~.types-unit-context src-509 `tok-509 `tre-509) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-509 `typ-509))
2814++ test-types-unit-patterns
2828++ test-types-unit-patterns
2815− (weld (check ~.types-unit-patterns src-508 `tok-508 `tre-508) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-508 `typ-508))
2829+ (weld (check ~.types-unit-patterns src-510 `tok-510 `tre-510) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-510 `typ-510))
2816::
2830::
2817:: +check: run golden:jibb on a case and compare both outputs
2831:: +check: run golden:jibb on a case and compare both outputs
2818::
2832::