on master help sign in
Report missing union tags and infer unit helpers
a140383iko
docs/compiler.md+3−1
@@ -60,6 +60,8 @@ The inference fragment supports fixed auras, unrestricted `@`, one-way widening
60
60
61String interpolation infers its pieces in order and preserves substitutions and pending constraints. A piece with a known atom aura, unrestricted `@`, or a tape `(list @tD)` is accepted; an isolated decimal literal takes its normal `@ud` default. A known cell reports that it needs a printer, and an explicitly generic atom asks for an aura at its use site. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported in this fragment.
61String interpolation infers its pieces in order and preserves substitutions and pending constraints. A piece with a known atom aura, unrestricted `@`, or a tape `(list @tD)` is accepted; an isolated decimal literal takes its normal `@ud` default. A known cell reports that it needs a printer, and an explicitly generic atom asks for an aura at its use site. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported in this fragment.
62
62
63+A bare tag that provably matches no case of a known union reports the union and tag sites. This covers casts, single-argument calls, contextual unit payloads, list items and supported branch arms, including unnamed imported unions. Existing tags whose shape or payload does not fit retain the ordinary mismatch; unresolved tags stay pending.
64+
63A change can replace uniquely named fields on a fully known, faced record spine, including through a nested wing. Replacements receive the field type as context, substitutions and pending constraints are retained, and the resulting type remains the original record. Missing fields, empty changes and definite replacement mismatches report sites; the expected-type site is the edit, since the original field declaration location is not retained. Unknown or partly unfaced spines, ambiguous fields and repeated edits remain unsupported. A cast to a known record also supplies field context to a tuple or record initializer, including nested list and union fields. The expected-type site is the cast mold; the original field declaration location is not retained. The cart-store example’s `init` and `update` infer in this fragment; store kind and declaration checking remain unfinished.
65A change can replace uniquely named fields on a fully known, faced record spine, including through a nested wing. Replacements receive the field type as context, substitutions and pending constraints are retained, and the resulting type remains the original record. Missing fields, empty changes and definite replacement mismatches report sites; the expected-type site is the edit, since the original field declaration location is not retained. Unknown or partly unfaced spines, ambiguous fields and repeated edits remain unsupported. A cast to a known record also supplies field context to a tuple or record initializer, including nested list and union fields. The expected-type site is the cast mold; the original field declaration location is not retained. The cart-store example’s `init` and `update` infer in this fragment; store kind and declaration checking remain unfinished.
64
66
65For 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.
67For 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.
@@ -68,7 +70,7 @@ Multi-argument calls form one right-nested sample: `f a b c` supplies `[a [b c]]
68
70
69A 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. A known gate sample also supplies context to corresponding positions of a single tuple or record argument, including nested cells; a zero literal can therefore fit a list position. A bound zero constant still remains unsupported rather than a definite mismatch, and an unknown callee does not supply context. 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.
71A 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. A known gate sample also supplies context to corresponding positions of a single tuple or record argument, including nested cells; a zero literal can therefore fit a list position. A bound zero constant still remains unsupported rather than a definite mismatch, and an unknown callee does not supply context. 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.
70
72
71−A backtick constructs a unit when the supplied prelude has the validated standard `unit` template. Its payload is inferred normally, retaining pending literals and generic variables; nested units work and the prelude’s `some` becomes available. A known unit in a cast, call, list item or record field supplies its payload context, including nested units and lists; definite mismatches identify the payload and context. Unrelated union identities, some variable-dependent fits, and missing or altered prelude templates remain unsupported.
73+A backtick constructs a unit when the supplied prelude has the validated standard `unit` template. Its payload is inferred normally, retaining pending literals and generic variables; nested units work and the prelude’s `some` becomes available. With ordinary result annotations, its `bind`, `biff`, `both` and `flit` also infer. A known unit in a cast, call, list item or record field supplies its payload context, including nested units and lists; definite mismatches identify the payload and context. Unrelated union identities, some variable-dependent fits, and missing or altered prelude templates remain unsupported.
72
74
73A 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.
75A 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.
74
76
docs/open-questions.md+3−1
@@ -18,7 +18,7 @@ On 2026-10-30, @iko adopted gate-free `eq` arguments and map and set keys, treat
18
18
19## Questions milestone 2 raises
19## Questions milestone 2 raises
20
20
21−Found while writing [prompts/milestone-2.md](prompts/milestone-2.md), checking it against the doc's examples, and building the checker. The numbering is retained so existing references stay valid. Questions 3 and 18 remain open; the other questions are settled.
21+Found while writing [prompts/milestone-2.md](prompts/milestone-2.md), checking it against the doc's examples, and building the checker. The numbering is retained so existing references stay valid. Questions 3, 18 and 24 remain open; the other questions are settled.
22
22
231. **Settled: how the prelude identifies jetted functions.** On 2026-10-30, @iko said the prelude functions have working Jibb implementations, and the compiler recognizes their shapes and uses the Hoon versions so jets can fire.
231. **Settled: how the prelude identifies jetted functions.** On 2026-10-30, @iko said the prelude functions have working Jibb implementations, and the compiler recognizes their shapes and uses the Hoon versions so jets can fire.
242. **Settled: how the prelude keeps helpers private.** On 2026-10-30, @iko chose a separate internal prelude module imported by the prelude, without exposing the imported helpers.
242. **Settled: how the prelude keeps helpers private.** On 2026-10-30, @iko chose a separate internal prelude module imported by the prelude, without exposing the imported helpers.
@@ -44,6 +44,8 @@ Found while writing [prompts/milestone-2.md](prompts/milestone-2.md), checking i
4422. **Settled: overlapping imported `$%` and `$?` cases.** On 2026-10-30, @iko confirmed that the general union disjointness rule rejects imported `$%` and `$?` cases that overlap as nouns where the type is used, as it does for `$^`. The importer rejects recognizable overlaps and fails closed when it cannot verify them.
4422. **Settled: overlapping imported `$%` and `$?` cases.** On 2026-10-30, @iko confirmed that the general union disjointness rule rejects imported `$%` and `$?` cases that overlap as nouns where the type is used, as it does for `$^`. The importer rejects recognizable overlaps and fails closed when it cannot verify them.
4523. **Settled: converging explicit capitals.** On 2026-10-30, @iko chose that a body cannot force two separately written capitals to be equal. For `++ repeated |= x=(choice A A) x`, `++ f |= x=(choice A B) (repeated x)` is an error; use `A` in both positions when the type must be shared. This also applies across local captures and within generic mold applications.
4523. **Settled: converging explicit capitals.** On 2026-10-30, @iko chose that a body cannot force two separately written capitals to be equal. For `++ repeated |= x=(choice A A) x`, `++ f |= x=(choice A B) (repeated x)` is an error; use `A` in both positions when the type must be shared. This also applies across local captures and within generic mold applications.
46
46
47+24. **How the internal prelude provides opaque types.** The public prelude needs an opaque `poke` type, but Jibb has no syntax to declare an opaque type in its private internal module. Should the internal module instead be a compiler-provided private interface that the prelude imports and re-exports, or should Jibb gain syntax for private opaque declarations? @iko has been asked; the answer is pending. The separate internal module and private primitives were already agreed in questions 2 and 14.
48+
47## Grammar questions never put to the doc's author
49## Grammar questions never put to the doc's author
48
50
49In milestone 1 the parser met about thirty places where the doc could be read more than one way. Twelve went to @iko on 2026-10-30 and are rows of the Decisions tab. These were not asked. For each, the parser follows the reading below, and some are marked "(doc question)" in the library's notes. None changes what a valid program means, except where a reading makes something an error.
51In milestone 1 the parser met about thirty places where the doc could be read more than one way. Twelve went to @iko on 2026-10-30 and are rows of the Decisions tab. These were not asked. For each, the parser follows the reading below, and some are marked "(doc question)" in the library's notes. None changes what a valid program means, except where a reading makes something an error.
docs/prelude-inventory.md+1−1
@@ -20,7 +20,7 @@ Hoon `+$` arms are marked **mold** below; `++` arms can be gates, doors or mold
20
20
21`biff`, `bind`, `bond`, `both`, `clap`, `clef`, `drop`, `fall`, `flit`, `hunt`, `lift`, `mate`, `need`, `some`.
21`biff`, `bind`, `bond`, `both`, `clap`, `clef`, `drop`, `fall`, `flit`, `hunt`, `lift`, `mate`, `need`, `some`.
22
22
23−The following is an audit of the Hoon 135 bodies, not a completed Jibb interface. The partial checker infers `fall`, `need` and `some`; the remaining written implementations have been parsed, but complete checker validation remains outstanding. Backend validation remains outstanding for all of them.
23+The following is an audit of the Hoon 135 bodies, not a completed Jibb interface. The partial checker infers `fall`, `need`, `some`, `bind`, `biff`, `both` and `flit`; the remaining written implementations have been parsed, but complete checker validation remains outstanding. Backend validation remains outstanding for all of them.
24
24
25| Name | Hoon behavior | Jibb status |
25| Name | Hoon behavior | Jibb status |
26| --- | --- | --- |
26| --- | --- | --- |
docs/prompts/milestone-2.md+1−1
@@ -49,7 +49,7 @@ And from the plan's Risks:
49
49
50## First steps
50## First steps
51
51
52−1. **Specify the prelude inventory.** The checker needs the prelude's complete exported inventory and signatures; include all names from the listed Hoon library sections except explicitly excluded groups, as `docs/open-questions.md` question 3 records. The prelude imports private helpers and low-level primitives from a separate internal module without exposing them; its public foundational gates are implemented in Jibb on those primitives.
52+1. **Specify the prelude inventory.** The checker needs the prelude's complete exported inventory and signatures; include all names from the listed Hoon library sections except explicitly excluded groups, as `docs/open-questions.md` question 3 records. The prelude imports private helpers and low-level primitives from a separate internal module without exposing them; its public foundational gates are implemented in Jibb on those primitives. How that module supplies opaque types such as `poke` is still awaiting @iko’s answer: question 24 records the alternatives of a compiler-provided private interface or syntax for private opaque declarations.
53
53
54 The plan's three core-language rules were adopted: gate-free `eq` arguments and map and set keys, with gates opaque for union matching; jetted prelude functions taking gates; and rejection of a non-gate value that depends on itself even through a gate.
54 The plan's three core-language rules were adopted: gate-free `eq` arguments and map and set keys, with gates opaque for union matching; jetted prelude functions taking gates; and rejection of a non-gate value that depends on itself even through a gate.
552. **Start the importer early**, as the plan's Risks ask: first on a small `/sur` file, then on Tlon's. "Suggested design" below has a way in.
552. **Start the importer early**, as the plan's Risks ask: first on a small `/sur` file, then on Tlon's. "Suggested design" below has a way in.
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 most prelude collection operations remain unsupported; 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. Opt-in structured reader APIs preserve successful graphs and distinguish definite unsupported-aura and core evidence from failures the reader cannot prove; unverified union disjointness and name-only vase recognition remain unsupported. They revalidate and re-walk failed types. An opt-in partial checker entry point consumes unchanged reader results and reports definite aura or core errors at imported mold use sites when their inputs are unique. Ordered replay covers nested cell samples, record and function casts, and non-generic same-module aliases; unsupported prefixes, cycles and shadowing stop it. Union molds, generic applications, transitive modules and unsupported reader outcomes remain generic. Replay repeats inference and may add work. 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 and local 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. For a supported recursive gate, the checker infers the sample first and uses its exact type, including field faces, for one monomorphic self reference. It generalizes after the body is checked; subsequent uses instantiate it independently. Incompatible recursive arguments can report the gate and argument sites. 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. A supported single local recursive gate also uses a monomorphic self reference and generalizes variables free of the enclosing environment after checking its body; captured variables remain shared. The checker collects written capitals per `++` before inference, excluding nested definitions: a capital used in an enclosing definition is shared with its locals even when written later, while a capital introduced only in a local definition is generalized there. Sibling locals can introduce independent capitals with the same spelling; generic mold parameters keep their own scope. Top-level groups of syntactic gates are inferred together with monomorphic placeholders and shared substitutions, then generalized only after the whole group checks; downstream uses and library interfaces instantiate those schemes independently. A dependency graph identifies groups with two iterative depth-first passes; its conservative local-reference edges can reject otherwise valid programs. Local mutual groups, polymorphic recursion, value cycles, unresolved literal constraints and unresolved branch joins remain unsupported. Reporting repeats inference for a single recursive gate outside a group; grouped reports use the stored schemes. Its performance cost remains unmeasured. String interpolation accepts known atom auras, unrestricted `@`, tapes and isolated decimal literals; a known cell asks for a printer, and an explicitly generic atom asks for an aura. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported. A known closed union with two or more arms supports patterns that provably cover or exclude each remaining case, including payload binders, imported and generic cases, and binder-free catch-alls. Partial boolean patterns can split known `?` positions into their two noun values, up to 64 alternatives across the union; binders retain their original case type. Missing alternatives and covered arms are reported. Other partial patterns, expansions above the limit, binders spanning distinct cases, differing arm result types, some complex two-arm subjects and contextual union-pattern branches remain unsupported. The Grammar’s `step` block infers in this fragment, but its module is not yet checked. Known faced records support uniquely named field changes, including nested wings, with field context passed to replacements and the original record type retained. Missing fields, empty changes and definite mismatches report sites; the expected-type site is the edit because the original field declaration location is not retained. Unknown or partly unfaced spines, ambiguous fields and repeated edits remain unsupported. A known record cast supplies field context to its tuple or record initializer, including nested list and union fields; mismatch diagnostics use the cast mold because the original field declaration location is not retained. The cart-store example’s `init` and `update` now infer, while its kind, declarations and full module remain unchecked. Backtick unit construction uses the validated standard prelude unit template, infers its payload without losing pending constraints, and makes the prelude’s `some` available. A known unit in a cast, call, list item or record field supplies context to its payload, including nested units and lists; mismatches identify the payload and context. Unrelated union identities, some variable-dependent fits, and missing or altered prelude unit templates remain unsupported. 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. A known gate sample also supplies context to matching positions in a single tuple or record argument, including nested cells; zero literals can fit list positions. A bound zero constant remains unsupported rather than a definite mismatch, and an unknown callee does not supply context. 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; mutually recursive local groups and recursive 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 most prelude collection operations remain unsupported; 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. Opt-in structured reader APIs preserve successful graphs and distinguish definite unsupported-aura and core evidence from failures the reader cannot prove; unverified union disjointness and name-only vase recognition remain unsupported. They revalidate and re-walk failed types. An opt-in partial checker entry point consumes unchanged reader results and reports definite aura or core errors at imported mold use sites when their inputs are unique. Ordered replay covers nested cell samples, record and function casts, and non-generic same-module aliases; unsupported prefixes, cycles and shadowing stop it. Union molds, generic applications, transitive modules and unsupported reader outcomes remain generic. Replay repeats inference and may add work. 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 and local 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. For a supported recursive gate, the checker infers the sample first and uses its exact type, including field faces, for one monomorphic self reference. It generalizes after the body is checked; subsequent uses instantiate it independently. Incompatible recursive arguments can report the gate and argument sites. 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. A supported single local recursive gate also uses a monomorphic self reference and generalizes variables free of the enclosing environment after checking its body; captured variables remain shared. The checker collects written capitals per `++` before inference, excluding nested definitions: a capital used in an enclosing definition is shared with its locals even when written later, while a capital introduced only in a local definition is generalized there. Sibling locals can introduce independent capitals with the same spelling; generic mold parameters keep their own scope. Top-level groups of syntactic gates are inferred together with monomorphic placeholders and shared substitutions, then generalized only after the whole group checks; downstream uses and library interfaces instantiate those schemes independently. A dependency graph identifies groups with two iterative depth-first passes; its conservative local-reference edges can reject otherwise valid programs. Local mutual groups, polymorphic recursion, value cycles, unresolved literal constraints and unresolved branch joins remain unsupported. Reporting repeats inference for a single recursive gate outside a group; grouped reports use the stored schemes. Its performance cost remains unmeasured. String interpolation accepts known atom auras, unrestricted `@`, tapes and isolated decimal literals; a known cell asks for a printer, and an explicitly generic atom asks for an aura. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported. A known closed union with two or more arms supports patterns that provably cover or exclude each remaining case, including payload binders, imported and generic cases, and binder-free catch-alls. Partial boolean patterns can split known `?` positions into their two noun values, up to 64 alternatives across the union; binders retain their original case type. Missing alternatives and covered arms are reported. Other partial patterns, expansions above the limit, binders spanning distinct cases, differing arm result types, some complex two-arm subjects and contextual union-pattern branches remain unsupported. The Grammar’s `step` block infers in this fragment, but its module is not yet checked. A bare tag proved absent from a known union reports the union and tag sites in casts, single-argument calls, unit payloads, list items and supported branch arms; imported unnamed unions print their cases. Known faced records support uniquely named field changes, including nested wings, with field context passed to replacements and the original record type retained. Missing fields, empty changes and definite mismatches report sites; the expected-type site is the edit because the original field declaration location is not retained. Unknown or partly unfaced spines, ambiguous fields and repeated edits remain unsupported. A known record cast supplies field context to its tuple or record initializer, including nested list and union fields; mismatch diagnostics use the cast mold because the original field declaration location is not retained. The cart-store example’s `init` and `update` now infer, while its kind, declarations and full module remain unchecked. Backtick unit construction uses the validated standard prelude unit template, infers its payload without losing pending constraints, and makes the prelude’s `some` available. Ordinary result annotations also let its `bind`, `biff`, `both` and `flit` infer. A known unit in a cast, call, list item or record field supplies context to its payload, including nested units and lists; mismatches identify the payload and context. Unrelated union identities, some variable-dependent fits, and missing or altered prelude unit templates remain unsupported. 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. A known gate sample also supplies context to matching positions in a single tuple or record argument, including nested cells; zero literals can fit list positions. A bound zero constant remains unsupported rather than a definite mismatch, and an unknown callee does not supply context. 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; mutually recursive local groups and recursive 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`, `need`, `lure`, `weld`, `snoc` and `turn`. The validated standard `list` mold is injected when the prelude’s own gates are inferred; `weld` and `turn` have ordinary explicit result casts. An absent or altered `list` is not injected, and an altered declaration cannot leak through direct or transitive mold aliases. List-dependent prelude mold aliases remain unsupported because their templates are prepared before injection. Unsupported entries such as most list helpers remain reserved but unavailable; backend validation of the helpers remains outstanding. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. 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`, `need`, `lure`, `weld`, `snoc` and `turn`. The validated standard `list` mold is injected when the prelude’s own gates are inferred; `weld` and `turn` have ordinary explicit result casts. An absent or altered `list` is not injected, and an altered declaration cannot leak through direct or transitive mold aliases. List-dependent prelude mold aliases remain unsupported because their templates are prepared before injection. Unsupported entries such as most list helpers remain reserved but unavailable; backend validation of the helpers remains outstanding. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. 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−- 535 golden cases: 319 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+- 539 golden cases: 323 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 535-case corpus passed under `urbit eval` in 62.4 s. The fake ship passed all 541 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 32.8 s for sync and 39.4 s for tests. The importer golden compares 149 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 539-case corpus passed under `urbit eval` in 63.0 s. The fake ship passed all 545 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 37.7 s for sync and 18.5 s for tests. The importer golden compares 149 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).
@@ -98,14 +98,15 @@ Besides the plan's list:
98| 9dd35c8 | 2026-10-31 | Match finite boolean refinements of union cases |
98| 9dd35c8 | 2026-10-31 | Match finite boolean refinements of union cases |
99| 54852d4 | 2026-10-31 | Contextualize tuple calls and infer known record changes |
99| 54852d4 | 2026-10-31 | Contextualize tuple calls and infer known record changes |
100| 0bc5113 | 2026-10-31 | Contextualize record initializers and infer unit construction |
100| 0bc5113 | 2026-10-31 | Contextualize record initializers and infer unit construction |
101−| This change | 2026-10-31 | Contextualize unit payloads in casts, calls and nested values |
101+| 264a436 | 2026-10-31 | Contextualize unit payloads in casts, calls and nested values |
102+| This change | 2026-10-31 | Report missing union tags and infer prelude unit helpers |
102
103
103## Checking it
104## Checking it
104
105
105On a machine set up as [development.md](development.md) says:
106On a machine set up as [development.md](development.md) says:
106
107
107```
108```
108−tools/golden # 535 cases under urbit eval
109+tools/golden # 539 cases under urbit eval
109tools/importer-test # the Hoon importer fixture projection
110tools/importer-test # the Hoon importer fixture projection
110tools/type-import-test # the importer/checker bridge fixture
111tools/type-import-test # the importer/checker bridge fixture
111tools/type-mark-test # the mark/checker bridge fixture
112tools/type-mark-test # the mark/checker bridge fixture
@@ -115,7 +116,7 @@ tools/testdata/selftest # the tools themselves
115tools/doc-blocks docs/spec # the doc's examples are golden cases
116tools/doc-blocks docs/spec # the doc's examples are golden cases
116tools/ship start
117tools/ship start
117tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
118tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
118−tools/ship test # the same 535 cases as -test arms on the ship
119+tools/ship test # the same 539 cases as -test arms on the ship
119tools/testdata/ship-selftest
120tools/testdata/ship-selftest
120tools/ship check-commit # |commit stores .jibb files
121tools/ship check-commit # |commit stores .jibb files
121tools/clay-fixtures # example /sur files and marks build through Clay
122tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+64−2
@@ -6454,6 +6454,8 @@
6454 [%| ["branch list constraint is not supported by partial inference" ~]]
6454 [%| ["branch list constraint is not supported by partial inference" ~]]
6455 [%| ["branch union constraint is not supported by partial inference" ~]]
6455 [%| ["branch union constraint is not supported by partial inference" ~]]
6456 ?: ?=(%bad -.fit)
6456 ?: ?=(%bad -.fit)
6457+ =/ missing=(unit idiag) (missing-union-tag e expected sub.state.p.value context)
6458+ ?^ missing [%| u.missing]
6457 ?: &(?=(%collection -.expected) =(%list name.expected))
6459 ?: &(?=(%collection -.expected) =(%list name.expected))
6458 [%| ["branch arm does not fit its expected list" ~[[context "expected list"] [(span-of e) "branch arm"]]]]
6460 [%| ["branch arm does not fit its expected list" ~[[context "expected list"] [(span-of e) "branch arm"]]]]
6459 [%| ["branch arm does not fit its expected union" ~[[context "expected union"] [(span-of e) "branch arm"]]]]
6461 [%| ["branch arm does not fit its expected union" ~[[context "expected union"] [(span-of e) "branch arm"]]]]
@@ -6530,6 +6532,8 @@
6530 =/ fit=ifit (itype-fit typ.p.value target sub.state.p.value next.state.p.value)
6532 =/ fit=ifit (itype-fit typ.p.value target sub.state.p.value next.state.p.value)
6531 ?: ?=(%unknown -.fit) [%| ["list item constraint is not supported by partial inference" ~]]
6533 ?: ?=(%unknown -.fit) [%| ["list item constraint is not supported by partial inference" ~]]
6532 ?: ?=(%bad -.fit)
6534 ?: ?=(%bad -.fit)
6535+ =/ missing=(unit idiag) (missing-union-tag i.items target sub.state.p.value context)
6536+ ?^ missing [%| u.missing]
6533 [%| ["list item does not fit its expected type" ~[[context (site-type-note "expected item" target sub.state.p.value)] [(span-of i.items) (site-type-note "list item" typ.p.value sub.state.p.value)]]]]
6537 [%| ["list item does not fit its expected type" ~[[context (site-type-note "expected item" target sub.state.p.value)] [(span-of i.items) (site-type-note "list item" typ.p.value sub.state.p.value)]]]]
6534 $(items t.items, state state.p.value(sub sub.fit, next next.fit))
6538 $(items t.items, state state.p.value(sub sub.fit, next next.fit))
6535::
6539::
@@ -6949,6 +6953,56 @@
6949 [%union ~[nil [%cell nil [%face %u [%var v]]]] `[at %unit] `%unit ~[[%var v]]]
6953 [%union ~[nil [%cell nil [%face %u [%var v]]]] `[at %unit] `%unit ~[[%var v]]]
6950 =(typ.template expected)
6954 =(typ.template expected)
6951::
6955::
6956+:: A named missing-case diagnostic needs more than a failed fit: a case
6957+:: with that tag but the wrong payload is not a missing case. Unknown
6958+:: shapes and atom types that accept terms keep the proof conservative.
6959++$ itag-presence ?(%yes %no %maybe)
6960+++ tag-presence-cases
6961+ |= [cases=(list itype) value=@ sub=isub]
6962+ ^- itag-presence
6963+ ?~ cases %no
6964+ =/ first=itag-presence (tag-presence i.cases value sub)
6965+ ?: =(%yes first) %yes
6966+ =/ rest=itag-presence $(cases t.cases)
6967+ ?: =(%yes rest) %yes
6968+ ?: |(=(%maybe first) =(%maybe rest)) %maybe
6969+ %no
6970+::
6971+++ tag-presence
6972+ |= [t=itype value=@ sub=isub]
6973+ ^- itag-presence
6974+ =. t (itype-walk t sub)
6975+ ?- -.t
6976+ %const ?:(=(value val.literal.t) %yes %no)
6977+ %flag ?:(|(=(value 0) =(value 1)) %yes %no)
6978+ %atom ?:(|(=(%tas aura.t) =(%ta aura.t)) %maybe %no)
6979+ %face $(t body.t)
6980+ %cell
6981+ =/ first=itag-presence $(t hed.t)
6982+ ?: =(%yes first) %yes
6983+ =/ rest=itag-presence $(t tal.t)
6984+ ?: =(%yes rest) %yes
6985+ ?: |(=(%maybe first) =(%maybe rest)) %maybe
6986+ %no
6987+ %union (tag-presence-cases cases.t value sub)
6988+ * %maybe
6989+ ==
6990+::
6991+++ missing-union-tag
6992+ |= [e=expr expected=itype sub=isub context=span]
6993+ ^- (unit idiag)
6994+ ?. ?=(%lit -.e) ~
6995+ ?. =(%term form.lit.e) ~
6996+ =. expected (itype-walk expected sub)
6997+ |-
6998+ ?: ?=(%face -.expected) $(expected (itype-walk body.expected sub))
6999+ ?. ?=(%union -.expected) ~
7000+ ?. =(%no (tag-presence-cases cases.expected val.lit.e sub)) ~
7001+ =/ label=tape
7002+ ?~ label.expected "union {(show-itype expected sub)}"
7003+ (show-itype expected sub)
7004+ `["{label} has no case `{(trip txt.lit.e)}`" ~[[context "expected union"] [(span-of e) "tag"]]]
7005+::
6952++ infer-fragment
7006++ infer-fragment
6953 |= [e=expr env=ienv state=istate]
7007 |= [e=expr env=ienv state=istate]
6954 ^- iresult
7008 ^- iresult
@@ -7087,6 +7141,8 @@
7087 =/ fit=ifit (itype-fit typ.p.value typ.u.target sub.state.p.value next.state.p.value)
7141 =/ fit=ifit (itype-fit typ.p.value typ.u.target sub.state.p.value next.state.p.value)
7088 ?: ?=(%unknown -.fit) [%| ["cast constraint is not supported by partial inference" ~]]
7142 ?: ?=(%unknown -.fit) [%| ["cast constraint is not supported by partial inference" ~]]
7089 ?: ?=(%bad -.fit)
7143 ?: ?=(%bad -.fit)
7144+ =/ missing=(unit idiag) (missing-union-tag val.e typ.u.target sub.state.p.value at.shape.e)
7145+ ?^ missing [%| u.missing]
7090 [%| ["cast mold and expression type do not unify" ~[[at.shape.e (site-type-note "cast mold" typ.u.target sub.state.p.value)] [(span-of val.e) (site-type-note "expression" typ.p.value sub.state.p.value)]]]]
7146 [%| ["cast mold and expression type do not unify" ~[[at.shape.e (site-type-note "cast mold" typ.u.target sub.state.p.value)] [(span-of val.e) (site-type-note "expression" typ.p.value sub.state.p.value)]]]]
7091 =/ merged=itype (itype-merge-faces typ.p.value typ.u.target sub.fit)
7147 =/ merged=itype (itype-merge-faces typ.p.value typ.u.target sub.fit)
7092 [%& merged state.p.value(sub sub.fit, next next.fit)]
7148 [%& merged state.p.value(sub sub.fit, next next.fit)]
@@ -7129,10 +7185,14 @@
7129 =/ fit=ifit (itype-fit typ.p.arg sample.ht sub.st next.st)
7185 =/ fit=ifit (itype-fit typ.p.arg sample.ht sub.st next.st)
7130 ?: ?=(%unknown -.fit) [%| ["call constraint is not supported by partial inference" ~]]
7186 ?: ?=(%unknown -.fit) [%| ["call constraint is not supported by partial inference" ~]]
7131 ?: ?=(%bad -.fit)
7187 ?: ?=(%bad -.fit)
7188+ ?~ t.args.e
7189+ =/ missing=(unit idiag) (missing-union-tag i.args.e sample.ht sub.st (span-of head.e))
7190+ ?^ missing [%| u.missing]
7191+ [%| ["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)]]]]
7132 =/ bad=(unit [at=span typ=itype])
7192 =/ bad=(unit [at=span typ=itype])
7133− ?~(t.args.e ~ (call-error-site args.e typ.p.arg sample.ht sub.st next.st))
7193+ (call-error-site args.e typ.p.arg sample.ht sub.st next.st)
7134 =/ whole-args=span
7194 =/ whole-args=span
7135− ?~(t.args.e (span-of i.args.e) [beg:(span-of i.args.e) end:(span-of (rear args.e))])
7195+ [beg:(span-of i.args.e) end:(span-of (rear args.e))]
7136 =/ arg-at=span ?~(bad whole-args at.u.bad)
7196 =/ arg-at=span ?~(bad whole-args at.u.bad)
7137 =/ arg-type=itype ?~(bad typ.p.arg typ.u.bad)
7197 =/ arg-type=itype ?~(bad typ.p.arg typ.u.bad)
7138 [%| ["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)]]]]
7198 [%| ["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)]]]]
@@ -7199,6 +7259,8 @@
7199 =/ fit=ifit (itype-fit typ.p.value payload sub.state.p.value next.state.p.value)
7259 =/ fit=ifit (itype-fit typ.p.value payload sub.state.p.value next.state.p.value)
7200 ?: ?=(%unknown -.fit) [%| ["unit payload constraint is not supported by partial inference" ~]]
7260 ?: ?=(%unknown -.fit) [%| ["unit payload constraint is not supported by partial inference" ~]]
7201 ?: ?=(%bad -.fit)
7261 ?: ?=(%bad -.fit)
7262+ =/ missing=(unit idiag) (missing-union-tag val.e payload sub.state.p.value context)
7263+ ?^ missing [%| u.missing]
7202 [%| ["unit payload does not fit its expected type" ~[[context (site-type-note "expected unit payload" payload sub.state.p.value)] [(span-of val.e) (site-type-note "payload" typ.p.value sub.state.p.value)]]]]
7264 [%| ["unit payload does not fit its expected type" ~[[context (site-type-note "expected unit payload" payload sub.state.p.value)] [(span-of val.e) (site-type-note "payload" typ.p.value sub.state.p.value)]]]]
7203 [%& expected state.p.value(sub sub.fit, next next.fit)]
7265 [%& expected state.p.value(sub sub.fit, next next.fit)]
7204::
7266::
jibb-dev/lib/jibb/prelude.jibb+7−6
@@ -146,21 +146,21 @@
146
146
147++ bind |= args=[(unit A) $-(A B)]
147++ bind |= args=[(unit A) $-(A B)]
148 ?- args
148 ?- args
149− [maybe f]
149+ [maybe f] ^- (unit B)
150 ?- maybe
150 ?- maybe
151 ~ ~
151 ~ ~
152 [~ value] `(f value)
152 [~ value] `(f value)
153
153
154++ biff |= args=[(unit A) $-(A (unit B))]
154++ biff |= args=[(unit A) $-(A (unit B))]
155 ?- args
155 ?- args
156− [maybe f]
156+ [maybe f] ^- (unit B)
157 ?- maybe
157 ?- maybe
158 ~ ~
158 ~ ~
159 [~ value] (f value)
159 [~ value] (f value)
160
160
161++ both |= args=[(unit A) (unit B)]
161++ both |= args=[(unit A) (unit B)]
162 ?- args
162 ?- args
163− [first second]
163+ [first second] ^- (unit [A B])
164 ?- first
164 ?- first
165 ~ ~
165 ~ ~
166 [~ a]
166 [~ a]
@@ -244,9 +244,10 @@
244
244
245++ flit |= predicate=$-(A ?)
245++ flit |= predicate=$-(A ?)
246 |= value=A
246 |= value=A
247+ ^- (unit A)
247− ?- (predicate value)
248+ ?- (predicate value)
248− %.y `value
249+ %.y `value
249− %.n ~
250+ %.n ~
250
251
251++ murn |= args=[(list A) $-(A (unit B))]
252++ murn |= args=[(list A) $-(A (unit B))]
252 ?- args
253 ?- args
tests/golden/prelude-unit-list-transforms/source.jibb+7−6
@@ -146,21 +146,21 @@
146
146
147++ bind |= args=[(unit A) $-(A B)]
147++ bind |= args=[(unit A) $-(A B)]
148 ?- args
148 ?- args
149− [maybe f]
149+ [maybe f] ^- (unit B)
150 ?- maybe
150 ?- maybe
151 ~ ~
151 ~ ~
152 [~ value] `(f value)
152 [~ value] `(f value)
153
153
154++ biff |= args=[(unit A) $-(A (unit B))]
154++ biff |= args=[(unit A) $-(A (unit B))]
155 ?- args
155 ?- args
156− [maybe f]
156+ [maybe f] ^- (unit B)
157 ?- maybe
157 ?- maybe
158 ~ ~
158 ~ ~
159 [~ value] (f value)
159 [~ value] (f value)
160
160
161++ both |= args=[(unit A) (unit B)]
161++ both |= args=[(unit A) (unit B)]
162 ?- args
162 ?- args
163− [first second]
163+ [first second] ^- (unit [A B])
164 ?- first
164 ?- first
165 ~ ~
165 ~ ~
166 [~ a]
166 [~ a]
@@ -244,9 +244,10 @@
244
244
245++ flit |= predicate=$-(A ?)
245++ flit |= predicate=$-(A ?)
246 |= value=A
246 |= value=A
247+ ^- (unit A)
247− ?- (predicate value)
248+ ?- (predicate value)
248− %.y `value
249+ %.y `value
249− %.n ~
250+ %.n ~
250
251
251++ murn |= args=[(list A) $-(A (unit B))]
252++ murn |= args=[(list A) $-(A (unit B))]
252 ?- args
253 ?- args
tests/golden/prelude-unit-list-transforms/tokens.txt+255−230
@@ -901,6 +901,11 @@
901149:6 tight name maybe
901149:6 tight name maybe
902149:12 name f
902149:12 name f
903149:13 tight glyph ]
903149:13 tight glyph ]
904+149:15 glyph ^-
905+149:18 glyph (
906+149:19 tight name unit
907+149:24 tvar B
908+149:25 tight glyph )
904150:7 INDENT
909150:7 INDENT
905150:7 glyph ?-
910150:7 glyph ?-
906150:10 name maybe
911150:10 name maybe
@@ -948,6 +953,11 @@
948156:6 tight name maybe
953156:6 tight name maybe
949156:12 name f
954156:12 name f
950156:13 tight glyph ]
955156:13 tight glyph ]
956+156:15 glyph ^-
957+156:18 glyph (
958+156:19 tight name unit
959+156:24 tvar B
960+156:25 tight glyph )
951157:7 INDENT
961157:7 INDENT
952157:7 glyph ?-
962157:7 glyph ?-
953157:10 name maybe
963157:10 name maybe
@@ -991,6 +1001,14 @@
991163:6 tight name first
1001163:6 tight name first
992163:12 name second
1002163:12 name second
993163:18 tight glyph ]
1003163:18 tight glyph ]
1004+163:20 glyph ^-
1005+163:23 glyph (
1006+163:24 tight name unit
1007+163:29 glyph [
1008+163:30 tight tvar A
1009+163:32 tvar B
1010+163:33 tight glyph ]
1011+163:34 tight glyph )
994164:7 INDENT
1012164:7 INDENT
995164:7 glyph ?-
1013164:7 glyph ?-
996164:10 name first
1014164:10 name first
@@ -1524,235 +1542,242 @@
1524246:11 tight glyph =
1542246:11 tight glyph =
1525246:12 tight tvar A
1543246:12 tight tvar A
1526247:5 INDENT
1544247:5 INDENT
1527−247:5 glyph ?-
1545+247:5 glyph ^-
1528247:8 glyph (
1546247:8 glyph (
1529−247:9 tight name predicate
1547+247:9 tight name unit
1530−247:19 name value
1548+247:14 tvar A
1531−247:24 tight glyph )
1549+247:15 tight glyph )
1532248:7 INDENT
1550248:7 INDENT
1551+248:7 glyph ?-
1552+248:10 glyph (
1553+248:11 tight name predicate
1554+248:21 name value
1555+248:26 tight glyph )
1556+249:9 INDENT
1533−248:7 lit %.y
1557+249:9 lit %.y
1534−248:11 glyph `
1558+249:13 glyph `
1535−248:12 tight name value
1559+249:14 tight name value
1536−249:7 NEWLINE
1560+250:9 NEWLINE
1537−249:7 lit %.n
1561+250:9 lit %.n
1538−249:11 lit ~
1562+250:13 lit ~
1563+252:1 DEDENT
1539−251:1 DEDENT
1564+252:1 DEDENT
1540−251:1 DEDENT
1565+252:1 DEDENT
1541−251:1 DEDENT
1566+252:1 DEDENT
1542−251:1 NEWLINE
1567+252:1 NEWLINE
1543−251:1 glyph ++
1568+252:1 glyph ++
1544−251:4 name murn
1569+252:4 name murn
1545−251:9 glyph |=
1570+252:9 glyph |=
1546−251:12 name args
1571+252:12 name args
1547−251:16 tight glyph =
1572+252:16 tight glyph =
1548−251:17 tight glyph [
1573+252:17 tight glyph [
1549−251:18 tight glyph (
1574+252:18 tight glyph (
1550−251:19 tight name list
1575+252:19 tight name list
1551−251:24 tvar A
1576+252:24 tvar A
1552−251:25 tight glyph )
1577+252:25 tight glyph )
1553−251:27 glyph $-(
1578+252:27 glyph $-(
1554−251:30 tight tvar A
1579+252:30 tight tvar A
1555−251:32 glyph (
1580+252:32 glyph (
1556−251:33 tight name unit
1581+252:33 tight name unit
1557−251:38 tvar B
1582+252:38 tvar B
1558−251:39 tight glyph )
1583+252:39 tight glyph )
1559−251:40 tight glyph )
1584+252:40 tight glyph )
1560−251:41 tight glyph ]
1585+252:41 tight glyph ]
1561−252:3 INDENT
1586+253:3 INDENT
1562−252:3 glyph ?-
1587+253:3 glyph ?-
1563−252:6 name args
1588+253:6 name args
1564−253:5 INDENT
1589+254:5 INDENT
1565−253:5 glyph [
1590+254:5 glyph [
1566−253:6 tight name xs
1591+254:6 tight name xs
1567−253:9 name f
1592+254:9 name f
1568−253:10 tight glyph ]
1593+254:10 tight glyph ]
1569−254:7 INDENT
1594+255:7 INDENT
1570−254:7 glyph ?-
1595+255:7 glyph ?-
1571−254:10 name xs
1596+255:10 name xs
1572−255:9 INDENT
1597+256:9 INDENT
1573−255:9 lit ~
1598+256:9 lit ~
1574−255:11 lit ~
1599+256:11 lit ~
1575−256:9 NEWLINE
1600+257:9 NEWLINE
1576−256:9 glyph [
1601+257:9 glyph [
1577−256:10 tight name item
1602+257:10 tight name item
1578−256:15 name rest
1603+257:15 name rest
1579−256:19 tight glyph ]
1604+257:19 tight glyph ]
1580−257:11 INDENT
1605+258:11 INDENT
1581−257:11 glyph ?-
1606+258:11 glyph ?-
1582−257:14 glyph (
1607+258:14 glyph (
1583−257:15 tight name f
1608+258:15 tight name f
1584−257:17 name item
1609+258:17 name item
1585−257:21 tight glyph )
1610+258:21 tight glyph )
1586−258:13 INDENT
1611+259:13 INDENT
1587−258:13 lit ~
1612+259:13 lit ~
1588−258:15 glyph (
1613+259:15 glyph (
1589−258:16 tight name murn
1614+259:16 tight name murn
1590−258:21 name rest
1615+259:21 name rest
1591−258:26 name f
1616+259:26 name f
1592−258:27 tight glyph )
1617+259:27 tight glyph )
1593−259:13 NEWLINE
1618+260:13 NEWLINE
1594−259:13 glyph [
1619+260:13 glyph [
1595−259:14 tight lit ~
1620+260:14 tight lit ~
1596−259:16 name value
1621+260:16 name value
1597−259:21 tight glyph ]
1622+260:21 tight glyph ]
1598−259:23 glyph [
1623+260:23 glyph [
1599−259:24 tight name value
1624+260:24 tight name value
1600−259:30 glyph (
1625+260:30 glyph (
1601−259:31 tight name murn
1626+260:31 tight name murn
1602−259:36 name rest
1627+260:36 name rest
1603−259:41 name f
1628+260:41 name f
1604−259:42 tight glyph )
1629+260:42 tight glyph )
1605−259:43 tight glyph ]
1630+260:43 tight glyph ]
1606−261:1 DEDENT
1631+262:1 DEDENT
1607−261:1 DEDENT
1632+262:1 DEDENT
1608−261:1 DEDENT
1633+262:1 DEDENT
1609−261:1 DEDENT
1634+262:1 DEDENT
1610−261:1 DEDENT
1635+262:1 DEDENT
1611−261:1 DEDENT
1636+262:1 DEDENT
1612−261:1 NEWLINE
1637+262:1 NEWLINE
1613−261:1 glyph ++
1638+262:1 glyph ++
1614−261:4 name join
1639+262:4 name join
1615−261:9 glyph |=
1640+262:9 glyph |=
1616−261:12 name args
1641+262:12 name args
1617−261:16 tight glyph =
1642+262:16 tight glyph =
1618−261:17 tight glyph [
1643+262:17 tight glyph [
1619−261:18 tight tvar A
1644+262:18 tight tvar A
1620−261:20 glyph (
1645+262:20 glyph (
1621−261:21 tight name list
1646+262:21 tight name list
1622−261:26 tvar A
1647+262:26 tvar A
1623−261:27 tight glyph )
1648+262:27 tight glyph )
1624−261:28 tight glyph ]
1649+262:28 tight glyph ]
1625−262:3 INDENT
1650+263:3 INDENT
1626−262:3 glyph ?-
1651+263:3 glyph ?-
1627−262:6 name args
1652+263:6 name args
1628−263:5 INDENT
1653+264:5 INDENT
1629−263:5 glyph [
1654+264:5 glyph [
1630−263:6 tight name separator
1655+264:6 tight name separator
1631−263:16 name xs
1656+264:16 name xs
1632−263:18 tight glyph ]
1657+264:18 tight glyph ]
1633−264:7 INDENT
1658+265:7 INDENT
1634−264:7 glyph ?-
1659+265:7 glyph ?-
1635−264:10 name xs
1660+265:10 name xs
1636−265:9 INDENT
1661+266:9 INDENT
1637−265:9 lit ~
1662+266:9 lit ~
1638−265:11 lit ~
1663+266:11 lit ~
1639−266:9 NEWLINE
1664+267:9 NEWLINE
1640−266:9 glyph [
1665+267:9 glyph [
1641−266:10 tight name item
1666+267:10 tight name item
1642−266:15 name rest
1667+267:15 name rest
1643−266:19 tight glyph ]
1668+267:19 tight glyph ]
1644−267:11 INDENT
1669+268:11 INDENT
1645−267:11 glyph ?-
1670+268:11 glyph ?-
1646−267:14 name rest
1671+268:14 name rest
1647−268:13 INDENT
1672+269:13 INDENT
1648−268:13 lit ~
1673+269:13 lit ~
1649−268:15 glyph [
1674+269:15 glyph [
1650−268:16 tight name item
1675+269:16 tight name item
1651−268:21 lit ~
1676+269:21 lit ~
1652−268:22 tight glyph ]
1677+269:22 tight glyph ]
1653−269:13 NEWLINE
1678+270:13 NEWLINE
1654−269:13 glyph [
1679+270:13 glyph [
1655−269:14 tight name next
1680+270:14 tight name next
1656−269:19 name more
1681+270:19 name more
1657−269:23 tight glyph ]
1682+270:23 tight glyph ]
1658−269:25 glyph [
1683+270:25 glyph [
1659−269:26 tight name item
1684+270:26 tight name item
1660−269:31 glyph [
1685+270:31 glyph [
1661−269:32 tight name separator
1686+270:32 tight name separator
1662−269:42 glyph (
1687+270:42 glyph (
1663−269:43 tight name join
1688+270:43 tight name join
1664−269:48 name separator
1689+270:48 name separator
1665−269:58 name rest
1690+270:58 name rest
1666−269:62 tight glyph )
1691+270:62 tight glyph )
1667−269:63 tight glyph ]
1692+270:63 tight glyph ]
1668−269:64 tight glyph ]
1693+270:64 tight glyph ]
1669−271:1 DEDENT
1694+272:1 DEDENT
1670−271:1 DEDENT
1695+272:1 DEDENT
1671−271:1 DEDENT
1696+272:1 DEDENT
1672−271:1 DEDENT
1697+272:1 DEDENT
1673−271:1 DEDENT
1698+272:1 DEDENT
1674−271:1 DEDENT
1699+272:1 DEDENT
1675−271:1 NEWLINE
1700+272:1 NEWLINE
1676−271:1 glyph ++
1701+272:1 glyph ++
1677−271:4 name snip
1702+272:4 name snip
1678−271:9 glyph |=
1703+272:9 glyph |=
1679−271:12 name xs
1704+272:12 name xs
1680−271:14 tight glyph =
1705+272:14 tight glyph =
1681−271:15 tight glyph (
1706+272:15 tight glyph (
1682−271:16 tight name list
1707+272:16 tight name list
1683−271:21 tvar A
1708+272:21 tvar A
1684−271:22 tight glyph )
1709+272:22 tight glyph )
1685−272:3 INDENT
1710+273:3 INDENT
1686−272:3 glyph ?-
1711+273:3 glyph ?-
1687−272:6 name xs
1712+273:6 name xs
1688−273:5 INDENT
1713+274:5 INDENT
1689−273:5 lit ~
1714+274:5 lit ~
1690−273:7 lit ~
1715+274:7 lit ~
1691−274:5 NEWLINE
1716+275:5 NEWLINE
1692−274:5 glyph [
1717+275:5 glyph [
1693−274:6 tight name item
1718+275:6 tight name item
1694−274:11 name rest
1719+275:11 name rest
1695−274:15 tight glyph ]
1720+275:15 tight glyph ]
1696−275:7 INDENT
1721+276:7 INDENT
1697−275:7 glyph ?-
1722+276:7 glyph ?-
1698−275:10 name rest
1723+276:10 name rest
1699−276:9 INDENT
1724+277:9 INDENT
1700−276:9 lit ~
1725+277:9 lit ~
1701−276:11 lit ~
1726+277:11 lit ~
1702−277:9 NEWLINE
1727+278:9 NEWLINE
1703−277:9 glyph [
1728+278:9 glyph [
1704−277:10 tight name next
1729+278:10 tight name next
1705−277:15 name more
1730+278:15 name more
1706−277:19 tight glyph ]
1731+278:19 tight glyph ]
1707−277:21 glyph [
1732+278:21 glyph [
1708−277:22 tight name item
1733+278:22 tight name item
1709−277:27 glyph (
1734+278:27 glyph (
1710−277:28 tight name snip
1735+278:28 tight name snip
1711−277:33 name rest
1736+278:33 name rest
1712−277:37 tight glyph )
1737+278:37 tight glyph )
1713−277:38 tight glyph ]
1738+278:38 tight glyph ]
1714−279:1 DEDENT
1739+280:1 DEDENT
1715−279:1 DEDENT
1740+280:1 DEDENT
1716−279:1 DEDENT
1741+280:1 DEDENT
1717−279:1 DEDENT
1742+280:1 DEDENT
1718−279:1 NEWLINE
1743+280:1 NEWLINE
1719−279:1 glyph ++
1744+280:1 glyph ++
1720−279:4 name rear
1745+280:4 name rear
1721−279:9 glyph |=
1746+280:9 glyph |=
1722−279:12 name xs
1747+280:12 name xs
1723−279:14 tight glyph =
1748+280:14 tight glyph =
1724−279:15 tight glyph (
1749+280:15 tight glyph (
1725−279:16 tight name list
1750+280:16 tight name list
1726−279:21 tvar A
1751+280:21 tvar A
1727−279:22 tight glyph )
1752+280:22 tight glyph )
1728−280:3 INDENT
1753+281:3 INDENT
1729−280:3 glyph ?-
1754+281:3 glyph ?-
1730−280:6 name xs
1755+281:6 name xs
1731−281:5 INDENT
1756+282:5 INDENT
1732−281:5 lit ~
1757+282:5 lit ~
1733−281:7 glyph !!
1758+282:7 glyph !!
1734−282:5 NEWLINE
1759+283:5 NEWLINE
1735−282:5 glyph [
1760+283:5 glyph [
1736−282:6 tight name item
1761+283:6 tight name item
1737−282:11 name rest
1762+283:11 name rest
1738−282:15 tight glyph ]
1763+283:15 tight glyph ]
1739−283:7 INDENT
1764+284:7 INDENT
1740−283:7 glyph ?-
1765+284:7 glyph ?-
1741−283:10 name rest
1766+284:10 name rest
1742−284:9 INDENT
1767+285:9 INDENT
1743−284:9 lit ~
1768+285:9 lit ~
1744−284:11 name item
1769+285:11 name item
1745−285:9 NEWLINE
1770+286:9 NEWLINE
1746−285:9 glyph [
1771+286:9 glyph [
1747−285:10 tight name next
1772+286:10 tight name next
1748−285:15 name more
1773+286:15 name more
1749−285:19 tight glyph ]
1774+286:19 tight glyph ]
1750−285:21 glyph (
1775+286:21 glyph (
1751−285:22 tight name rear
1776+286:22 tight name rear
1752−285:27 name rest
1777+286:27 name rest
1753−285:31 tight glyph )
1778+286:31 tight glyph )
1754−285:32 DEDENT
1779+286:32 DEDENT
1755−285:32 DEDENT
1780+286:32 DEDENT
1756−285:32 DEDENT
1781+286:32 DEDENT
1757−285:32 DEDENT
1782+286:32 DEDENT
1758−285:32 NEWLINE
1783+286:32 NEWLINE
tests/golden/prelude-unit-list-transforms/tree.txt+148−138
@@ -366,15 +366,17 @@
366 (wing 148:6 args)
366 (wing 148:6 args)
367 (arm 149:5
367 (arm 149:5
368 (cell 149:5 (bind 149:6 maybe) (bind 149:12 f))
368 (cell 149:5 (bind 149:6 maybe) (bind 149:12 f))
369+ (cast 149:15
370+ (apply 149:18 unit (tvar 149:24 B))
369− (body 150:7
371+ (body 150:7
370− (branch 150:7
372+ (branch 150:7
371− (wing 150:10 maybe)
373+ (wing 150:10 maybe)
372− (arm 151:9 (lit 151:9 ~) (lit 151:11 ~))
374+ (arm 151:9 (lit 151:9 ~) (lit 151:11 ~))
373− (arm 152:9
375+ (arm 152:9
374− (cell 152:9 (lit 152:10 ~) (bind 152:12 value))
376+ (cell 152:9 (lit 152:10 ~) (bind 152:12 value))
375− (unit 152:19
377+ (unit 152:19
376− (group 152:20
378+ (group 152:20
377− (call 152:21 (wing 152:21 f) (wing 152:23 value))))))))))))
379+ (call 152:21 (wing 152:21 f) (wing 152:23 value)))))))))))))
378 (value 154:1 biff
380 (value 154:1 biff
379 (gate 154:9
381 (gate 154:9
380 (face 154:12 args
382 (face 154:12 args
@@ -388,14 +390,16 @@
388 (wing 155:6 args)
390 (wing 155:6 args)
389 (arm 156:5
391 (arm 156:5
390 (cell 156:5 (bind 156:6 maybe) (bind 156:12 f))
392 (cell 156:5 (bind 156:6 maybe) (bind 156:12 f))
393+ (cast 156:15
394+ (apply 156:18 unit (tvar 156:24 B))
391− (body 157:7
395+ (body 157:7
392− (branch 157:7
396+ (branch 157:7
393− (wing 157:10 maybe)
397+ (wing 157:10 maybe)
394− (arm 158:9 (lit 158:9 ~) (lit 158:11 ~))
398+ (arm 158:9 (lit 158:9 ~) (lit 158:11 ~))
395− (arm 159:9
399+ (arm 159:9
396− (cell 159:9 (lit 159:10 ~) (bind 159:12 value))
400+ (cell 159:9 (lit 159:10 ~) (bind 159:12 value))
397− (group 159:19
401+ (group 159:19
398− (call 159:20 (wing 159:20 f) (wing 159:22 value)))))))))))
402+ (call 159:20 (wing 159:20 f) (wing 159:22 value))))))))))))
399 (value 161:1 both
403 (value 161:1 both
400 (gate 161:9
404 (gate 161:9
401 (face 161:12 args
405 (face 161:12 args
@@ -407,20 +411,23 @@
407 (wing 162:6 args)
411 (wing 162:6 args)
408 (arm 163:5
412 (arm 163:5
409 (cell 163:5 (bind 163:6 first) (bind 163:12 second))
413 (cell 163:5 (bind 163:6 first) (bind 163:12 second))
414+ (cast 163:20
415+ (apply 163:23 unit
416+ (cell 163:29 (tvar 163:30 A) (tvar 163:32 B)))
410− (body 164:7
417+ (body 164:7
411− (branch 164:7
418+ (branch 164:7
412− (wing 164:10 first)
419+ (wing 164:10 first)
413− (arm 165:9 (lit 165:9 ~) (lit 165:11 ~))
420+ (arm 165:9 (lit 165:9 ~) (lit 165:11 ~))
414− (arm 166:9
421+ (arm 166:9
415− (cell 166:9 (lit 166:10 ~) (bind 166:12 a))
422+ (cell 166:9 (lit 166:10 ~) (bind 166:12 a))
416− (body 167:11
423+ (body 167:11
417− (branch 167:11
424+ (branch 167:11
418− (wing 167:14 second)
425+ (wing 167:14 second)
419− (arm 168:13 (lit 168:13 ~) (lit 168:15 ~))
426+ (arm 168:13 (lit 168:13 ~) (lit 168:15 ~))
420− (arm 169:13
427+ (arm 169:13
421− (cell 169:13 (lit 169:14 ~) (bind 169:16 b))
428+ (cell 169:13 (lit 169:14 ~) (bind 169:16 b))
422− (unit 169:19
429+ (unit 169:19
423− (tuple 169:20 (wing 169:21 a) (wing 169:23 b))))))))))))))
430+ (tuple 169:20 (wing 169:21 a) (wing 169:23 b)))))))))))))))
424 (value 171:1 clap
431 (value 171:1 clap
425 (gate 171:9
432 (gate 171:9
426 (face 171:12 args
433 (face 171:12 args
@@ -653,112 +660,115 @@
653 (gate 246:3
660 (gate 246:3
654 (face 246:6 value (tvar 246:12 A))
661 (face 246:6 value (tvar 246:12 A))
655 (body 247:5
662 (body 247:5
656− (branch 247:5
663+ (cast 247:5
657− (group 247:8
664+ (apply 247:8 unit (tvar 247:14 A))
665+ (body 248:7
666+ (branch 248:7
667+ (group 248:10
658− (call 247:9 (wing 247:9 predicate) (wing 247:19 value)))
668+ (call 248:11 (wing 248:11 predicate) (wing 248:21 value)))
659− (arm 248:7
669+ (arm 249:9
660− (lit 248:7 %.y)
670+ (lit 249:9 %.y)
661− (unit 248:11 (wing 248:12 value)))
671+ (unit 249:13 (wing 249:14 value)))
662− (arm 249:7 (lit 249:7 %.n) (lit 249:11 ~))))))))
672+ (arm 250:9 (lit 250:9 %.n) (lit 250:13 ~))))))))))
663− (value 251:1 murn
673+ (value 252:1 murn
664− (gate 251:9
674+ (gate 252:9
665− (face 251:12 args
675+ (face 252:12 args
666− (cell 251:17
676+ (cell 252:17
667− (apply 251:18 list (tvar 251:24 A))
677+ (apply 252:18 list (tvar 252:24 A))
668− (fn 251:27
678+ (fn 252:27
669− (tvar 251:30 A)
679+ (tvar 252:30 A)
670− (apply 251:32 unit (tvar 251:38 B)))))
680+ (apply 252:32 unit (tvar 252:38 B)))))
671− (body 252:3
681+ (body 253:3
672− (branch 252:3
682+ (branch 253:3
673− (wing 252:6 args)
683+ (wing 253:6 args)
674− (arm 253:5
684+ (arm 254:5
675− (cell 253:5 (bind 253:6 xs) (bind 253:9 f))
685+ (cell 254:5 (bind 254:6 xs) (bind 254:9 f))
676− (body 254:7
686+ (body 255:7
677− (branch 254:7
687+ (branch 255:7
678− (wing 254:10 xs)
688+ (wing 255:10 xs)
679− (arm 255:9 (lit 255:9 ~) (lit 255:11 ~))
689+ (arm 256:9 (lit 256:9 ~) (lit 256:11 ~))
680− (arm 256:9
690+ (arm 257:9
681− (cell 256:9 (bind 256:10 item) (bind 256:15 rest))
691+ (cell 257:9 (bind 257:10 item) (bind 257:15 rest))
682− (body 257:11
692+ (body 258:11
683− (branch 257:11
693+ (branch 258:11
684− (group 257:14
694+ (group 258:14
685− (call 257:15 (wing 257:15 f) (wing 257:17 item)))
695+ (call 258:15 (wing 258:15 f) (wing 258:17 item)))
686− (arm 258:13
687− (lit 258:13 ~)
688− (group 258:15
689− (call 258:16 (wing 258:16 murn) (wing 258:21 rest) (wing 258:26 f))))
690 (arm 259:13
696 (arm 259:13
697+ (lit 259:13 ~)
698+ (group 259:15
699+ (call 259:16 (wing 259:16 murn) (wing 259:21 rest) (wing 259:26 f))))
700+ (arm 260:13
691− (cell 259:13 (lit 259:14 ~) (bind 259:16 value))
701+ (cell 260:13 (lit 260:14 ~) (bind 260:16 value))
692− (tuple 259:23
702+ (tuple 260:23
693− (wing 259:24 value)
703+ (wing 260:24 value)
694− (group 259:30
704+ (group 260:30
695− (call 259:31 (wing 259:31 murn) (wing 259:36 rest) (wing 259:41 f)))))))))))))))
705+ (call 260:31 (wing 260:31 murn) (wing 260:36 rest) (wing 260:41 f)))))))))))))))
696− (value 261:1 join
706+ (value 262:1 join
697− (gate 261:9
707+ (gate 262:9
698− (face 261:12 args
708+ (face 262:12 args
699− (cell 261:17
709+ (cell 262:17
700− (tvar 261:18 A)
710+ (tvar 262:18 A)
701− (apply 261:20 list (tvar 261:26 A))))
711+ (apply 262:20 list (tvar 262:26 A))))
702− (body 262:3
712+ (body 263:3
703− (branch 262:3
713+ (branch 263:3
704− (wing 262:6 args)
714+ (wing 263:6 args)
705− (arm 263:5
715+ (arm 264:5
706− (cell 263:5 (bind 263:6 separator) (bind 263:16 xs))
716+ (cell 264:5 (bind 264:6 separator) (bind 264:16 xs))
707− (body 264:7
717+ (body 265:7
708− (branch 264:7
718+ (branch 265:7
709− (wing 264:10 xs)
719+ (wing 265:10 xs)
710− (arm 265:9 (lit 265:9 ~) (lit 265:11 ~))
720+ (arm 266:9 (lit 266:9 ~) (lit 266:11 ~))
711− (arm 266:9
721+ (arm 267:9
712− (cell 266:9 (bind 266:10 item) (bind 266:15 rest))
722+ (cell 267:9 (bind 267:10 item) (bind 267:15 rest))
713− (body 267:11
723+ (body 268:11
714− (branch 267:11
724+ (branch 268:11
715− (wing 267:14 rest)
725+ (wing 268:14 rest)
716− (arm 268:13
717− (lit 268:13 ~)
718− (tuple 268:15 (wing 268:16 item) (lit 268:21 ~)))
719 (arm 269:13
726 (arm 269:13
727+ (lit 269:13 ~)
728+ (tuple 269:15 (wing 269:16 item) (lit 269:21 ~)))
729+ (arm 270:13
720− (cell 269:13 (bind 269:14 next) (bind 269:19 more))
730+ (cell 270:13 (bind 270:14 next) (bind 270:19 more))
721− (tuple 269:25
731+ (tuple 270:25
722− (wing 269:26 item)
732+ (wing 270:26 item)
723− (tuple 269:31
733+ (tuple 270:31
724− (wing 269:32 separator)
734+ (wing 270:32 separator)
725− (group 269:42
735+ (group 270:42
726− (call 269:43 (wing 269:43 join) (wing 269:48 separator) (wing 269:58 rest))))))))))))))))
736+ (call 270:43 (wing 270:43 join) (wing 270:48 separator) (wing 270:58 rest))))))))))))))))
727− (value 271:1 snip
737+ (value 272:1 snip
728− (gate 271:9
738+ (gate 272:9
729− (face 271:12 xs
739+ (face 272:12 xs
730− (apply 271:15 list (tvar 271:21 A)))
740+ (apply 272:15 list (tvar 272:21 A)))
731− (body 272:3
741+ (body 273:3
732− (branch 272:3
742+ (branch 273:3
733− (wing 272:6 xs)
743+ (wing 273:6 xs)
734− (arm 273:5 (lit 273:5 ~) (lit 273:7 ~))
744+ (arm 274:5 (lit 274:5 ~) (lit 274:7 ~))
735− (arm 274:5
745+ (arm 275:5
736− (cell 274:5 (bind 274:6 item) (bind 274:11 rest))
746+ (cell 275:5 (bind 275:6 item) (bind 275:11 rest))
737− (body 275:7
747+ (body 276:7
738− (branch 275:7
748+ (branch 276:7
739− (wing 275:10 rest)
749+ (wing 276:10 rest)
740− (arm 276:9 (lit 276:9 ~) (lit 276:11 ~))
750+ (arm 277:9 (lit 277:9 ~) (lit 277:11 ~))
741− (arm 277:9
751+ (arm 278:9
742− (cell 277:9 (bind 277:10 next) (bind 277:15 more))
752+ (cell 278:9 (bind 278:10 next) (bind 278:15 more))
743− (tuple 277:21
753+ (tuple 278:21
744− (wing 277:22 item)
754+ (wing 278:22 item)
745− (group 277:27
755+ (group 278:27
746− (call 277:28 (wing 277:28 snip) (wing 277:33 rest))))))))))))
756+ (call 278:28 (wing 278:28 snip) (wing 278:33 rest))))))))))))
747− (value 279:1 rear
757+ (value 280:1 rear
748− (gate 279:9
758+ (gate 280:9
749− (face 279:12 xs
759+ (face 280:12 xs
750− (apply 279:15 list (tvar 279:21 A)))
760+ (apply 280:15 list (tvar 280:21 A)))
751− (body 280:3
761+ (body 281:3
752− (branch 280:3
762+ (branch 281:3
753− (wing 280:6 xs)
763+ (wing 281:6 xs)
754− (arm 281:5 (lit 281:5 ~) (crash 281:7))
764+ (arm 282:5 (lit 282:5 ~) (crash 282:7))
755− (arm 282:5
765+ (arm 283:5
756− (cell 282:5 (bind 282:6 item) (bind 282:11 rest))
766+ (cell 283:5 (bind 283:6 item) (bind 283:11 rest))
757− (body 283:7
767+ (body 284:7
758− (branch 283:7
768+ (branch 284:7
759− (wing 283:10 rest)
769+ (wing 284:10 rest)
760− (arm 284:9 (lit 284:9 ~) (wing 284:11 item))
770+ (arm 285:9 (lit 285:9 ~) (wing 285:11 item))
761− (arm 285:9
771+ (arm 286:9
762− (cell 285:9 (bind 285:10 next) (bind 285:15 more))
772+ (cell 286:9 (bind 286:10 next) (bind 286:15 more))
763− (group 285:21
773+ (group 286:21
764− (call 285:22 (wing 285:22 rear) (wing 285:27 rest))))))))))))
774+ (call 286:22 (wing 286:22 rear) (wing 286:27 rest))))))))))))
tests/golden/prelude-unit-list-transforms/types.txt+1−1
@@ -41,7 +41,7 @@ partial inference; module not checked
41++ flop: sample mold is not supported by partial inference
41++ flop: sample mold is not supported by partial inference
42++ drop: unit branch results need unsupported inference
42++ drop: unit branch results need unsupported inference
43++ bind: unit construction needs the standard prelude in partial inference
43++ bind: unit construction needs the standard prelude in partial inference
44−++ biff: unit branch results need unsupported inference
44+++ biff: $-([(unit A) $-(A (unit B))] (unit B))
45++ both: unit construction needs the standard prelude in partial inference
45++ both: unit construction needs the standard prelude in partial inference
46++ clap: branch pattern is not supported by partial inference
46++ clap: branch pattern is not supported by partial inference
47++ clef: branch pattern is not supported by partial inference
47++ clef: branch pattern is not supported by partial inference
tests/golden/types-generic-union-errors/types.txt+3−3
@@ -9,11 +9,11 @@ partial inference; module not checked
9 ^
9 ^
10++ few: sample mold is not supported by partial inference
10++ few: sample mold is not supported by partial inference
11++ many: sample mold is not supported by partial inference
11++ many: sample mold is not supported by partial inference
12−++ bad-tag: cast mold and expression type do not unify
12+++ bad-tag: (choice @t @p) has no case `%missing`
13−/tests/golden/types-generic-union-errors/source.jibb:9:15: cast mold
13+/tests/golden/types-generic-union-errors/source.jibb:9:15: expected union
14++ bad-tag ^- (choice @t @p) %missing
14++ bad-tag ^- (choice @t @p) %missing
15 ^
15 ^
16−/tests/golden/types-generic-union-errors/source.jibb:9:30: expression
16+/tests/golden/types-generic-union-errors/source.jibb:9:30: tag
17++ bad-tag ^- (choice @t @p) %missing
17++ bad-tag ^- (choice @t @p) %missing
18 ^
18 ^
19++ bad-payload: cast mold and expression type do not unify
19++ bad-payload: cast mold and expression type do not unify
tests/golden/types-missing-tag-context/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Tag resolution: an unmatched literal is an error naming its union, such as "msg has no case %submitt".
2+tests: A definitely absent tag names the known union and both sites. Existing tags with incompatible shape retain the usual mismatch; unconstrained or discarded tags remain pending. Partial inference stays conservative for unproven shapes.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-missing-tag-context/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use prepared prelude.
tests/golden/types-missing-tag-context/source.jibbnew file+17
@@ -0,0 +1,17 @@
1++$ msg
2+ %go
3+ [%typed text=@t]
4+++ items ^- (list msg) ~[%go %missing]
5+++ existing ^- (list msg) ~[%typed]
6+++ arm |= x=? ^- msg
7+ ?- x
8+ %.y %go
9+ %.n %missing
10+++ existing-arm |= x=? ^- msg
11+ ?- x
12+ %.y %go
13+ %.n %typed
14+++ unrelated
15+ ~& %other
16+ ^- msg %go
17+++ unit ^- (unit msg) `%missing
tests/golden/types-missing-tag-context/tokens.txtnew file+98
@@ -0,0 +1,98 @@
1+1:1 glyph +$
2+1:4 name msg
3+2:3 INDENT
4+2:3 lit %go
5+3:3 NEWLINE
6+3:3 glyph [
7+3:4 tight lit %typed
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 items
16+4:10 glyph ^-
17+4:13 glyph (
18+4:14 tight name list
19+4:19 name msg
20+4:22 tight glyph )
21+4:24 glyph ~[
22+4:26 tight lit %go
23+4:30 lit %missing
24+4:38 tight glyph ]
25+5:1 NEWLINE
26+5:1 glyph ++
27+5:4 name existing
28+5:13 glyph ^-
29+5:16 glyph (
30+5:17 tight name list
31+5:22 name msg
32+5:25 tight glyph )
33+5:27 glyph ~[
34+5:29 tight lit %typed
35+5:35 tight glyph ]
36+6:1 NEWLINE
37+6:1 glyph ++
38+6:4 name arm
39+6:8 glyph |=
40+6:11 name x
41+6:12 tight glyph =
42+6:13 tight glyph ?
43+6:15 glyph ^-
44+6:18 name msg
45+7:3 INDENT
46+7:3 glyph ?-
47+7:6 name x
48+8:5 INDENT
49+8:5 lit %.y
50+8:9 lit %go
51+9:5 NEWLINE
52+9:5 lit %.n
53+9:9 lit %missing
54+10:1 DEDENT
55+10:1 DEDENT
56+10:1 NEWLINE
57+10:1 glyph ++
58+10:4 name existing-arm
59+10:17 glyph |=
60+10:20 name x
61+10:21 tight glyph =
62+10:22 tight glyph ?
63+10:24 glyph ^-
64+10:27 name msg
65+11:3 INDENT
66+11:3 glyph ?-
67+11:6 name x
68+12:5 INDENT
69+12:5 lit %.y
70+12:9 lit %go
71+13:5 NEWLINE
72+13:5 lit %.n
73+13:9 lit %typed
74+14:1 DEDENT
75+14:1 DEDENT
76+14:1 NEWLINE
77+14:1 glyph ++
78+14:4 name unrelated
79+15:3 INDENT
80+15:3 glyph ~&
81+15:6 lit %other
82+16:5 INDENT
83+16:5 glyph ^-
84+16:8 name msg
85+16:12 lit %go
86+17:1 DEDENT
87+17:1 DEDENT
88+17:1 NEWLINE
89+17:1 glyph ++
90+17:4 name unit
91+17:9 glyph ^-
92+17:12 glyph (
93+17:13 tight name unit
94+17:18 name msg
95+17:21 tight glyph )
96+17:23 glyph `
97+17:24 tight lit %missing
98+17:32 NEWLINE
tests/golden/types-missing-tag-context/tree.txtnew file+45
@@ -0,0 +1,45 @@
1+(module
2+ (mold 1:1 msg
3+ (union 2:3
4+ (const 2:3 %go)
5+ (cell 3:3
6+ (const 3:4 %typed)
7+ (face 3:11 text (aura 3:16 @t)))))
8+ (value 4:1 items
9+ (cast 4:10
10+ (apply 4:13 list (ref 4:19 msg))
11+ (list 4:24 (lit 4:26 %go) (lit 4:30 %missing))))
12+ (value 5:1 existing
13+ (cast 5:13
14+ (apply 5:16 list (ref 5:22 msg))
15+ (list 5:27 (lit 5:29 %typed))))
16+ (value 6:1 arm
17+ (gate 6:8
18+ (face 6:11 x (flag 6:13))
19+ (cast 6:15
20+ (ref 6:18 msg)
21+ (body 7:3
22+ (branch 7:3
23+ (wing 7:6 x)
24+ (arm 8:5 (lit 8:5 %.y) (lit 8:9 %go))
25+ (arm 9:5 (lit 9:5 %.n) (lit 9:9 %missing)))))))
26+ (value 10:1 existing-arm
27+ (gate 10:17
28+ (face 10:20 x (flag 10:22))
29+ (cast 10:24
30+ (ref 10:27 msg)
31+ (body 11:3
32+ (branch 11:3
33+ (wing 11:6 x)
34+ (arm 12:5 (lit 12:5 %.y) (lit 12:9 %go))
35+ (arm 13:5 (lit 13:5 %.n) (lit 13:9 %typed)))))))
36+ (value 14:1 unrelated
37+ (body 15:3
38+ (trace 15:3
39+ (lit 15:6 %other)
40+ (body 16:5
41+ (cast 16:5 (ref 16:8 msg) (lit 16:12 %go))))))
42+ (value 17:1 unit
43+ (cast 17:9
44+ (apply 17:12 unit (ref 17:18 msg))
45+ (unit 17:23 (lit 17:24 %missing)))))
tests/golden/types-missing-tag-context/types.txtnew file+38
@@ -0,0 +1,38 @@
1+partial inference; module not checked
2++$ msg: cases proven disjoint; mold not checked
3+++ items: msg has no case `%missing`
4+/tests/golden/types-missing-tag-context/source.jibb:4:13: expected union
5+++ items ^- (list msg) ~[%go %missing]
6+ ^
7+/tests/golden/types-missing-tag-context/source.jibb:4:30: tag
8+++ items ^- (list msg) ~[%go %missing]
9+ ^
10+++ existing: list item does not fit its expected type
11+/tests/golden/types-missing-tag-context/source.jibb:5:16: expected item
12+++ existing ^- (list msg) ~[%typed]
13+ ^
14+/tests/golden/types-missing-tag-context/source.jibb:5:29: list item
15+++ existing ^- (list msg) ~[%typed]
16+ ^
17+++ arm: msg has no case `%missing`
18+/tests/golden/types-missing-tag-context/source.jibb:6:18: expected union
19+++ arm |= x=? ^- msg
20+ ^
21+/tests/golden/types-missing-tag-context/source.jibb:9:9: tag
22+ %.n %missing
23+ ^
24+++ existing-arm: branch arm does not fit its expected union
25+/tests/golden/types-missing-tag-context/source.jibb:10:27: expected union
26+++ existing-arm |= x=? ^- msg
27+ ^
28+/tests/golden/types-missing-tag-context/source.jibb:13:9: branch arm
29+ %.n %typed
30+ ^
31+++ unrelated: tag needs context in partial inference
32+++ unit: msg has no case `%missing`
33+/tests/golden/types-missing-tag-context/source.jibb:17:12: expected union
34+++ unit ^- (unit msg) `%missing
35+ ^
36+/tests/golden/types-missing-tag-context/source.jibb:17:24: tag
37+++ unit ^- (unit msg) `%missing
38+ ^
tests/golden/types-missing-tag-imported/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Tag resolution: an unmatched literal names the union; Overview, Importing Hoon types: Hoon unions can import without a Jibb name.
2+tests: A real imported Hoon union prints its cases in the missing-tag diagnostic, and a nested unnamed union retains its field context. Unsupported conversions remain partial.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-missing-tag-imported/imports.txtnew file+2
@@ -0,0 +1,2 @@
1+fixture choice
2+fixture nested-choice
tests/golden/types-missing-tag-imported/source.jibbnew file+6
@@ -0,0 +1,6 @@
1+/- fixture
2+++ good ^- choice.fixture %yes
3+++ bad ^- choice.fixture %other
4+++ nested |= x=nested-choice.fixture ^- @t text.x
5+++ get-status |= x=nested-choice.fixture status.x
6+++ via-field |= x=nested-choice.fixture ^- choice.fixture status.x
tests/golden/types-missing-tag-imported/sur/fixture.txtnew file+21
@@ -0,0 +1,21 @@
1+|%
2++$ title @t
3++$ pair [@ud @t]
4++$ faced [name=@t age=@ud]
5++$ nested [entry=faced number=@ud]
6++$ constant %yes
7++$ choice ?(%yes %no)
8++$ nested-choice [status=?(%approve %deny) text=@t]
9++$ collapsed $?([%x @ud] [%x @ud])
10++$ dollar %$
11++$ dollar-choice ?(%$ %yes)
12++$ texts (list @t)
13++$ numbers (list @ud)
14++$ maybe (unit @t)
15++$ tagged-list (list $?([%x @ud] [%y @t]))
16++$ buckets (map @ud @t)
17++$ collection-rec [items=(list @t) slots=(unit @ud)]
18++$ chain $@(~ [value=@ud next=chain])
19++$ other $@(~ [value=@ud next=other])
20++$ alias chain
21+--
tests/golden/types-missing-tag-imported/tokens.txtnew file+43
@@ -0,0 +1,43 @@
1+1:1 glyph /-
2+1:4 name fixture
3+2:1 NEWLINE
4+2:1 glyph ++
5+2:4 name good
6+2:9 glyph ^-
7+2:12 wing choice.fixture
8+2:27 lit %yes
9+3:1 NEWLINE
10+3:1 glyph ++
11+3:4 name bad
12+3:8 glyph ^-
13+3:11 wing choice.fixture
14+3:26 lit %other
15+4:1 NEWLINE
16+4:1 glyph ++
17+4:4 name nested
18+4:11 glyph |=
19+4:14 name x
20+4:15 tight glyph =
21+4:16 tight wing nested-choice.fixture
22+4:38 glyph ^-
23+4:41 aura @t
24+4:44 wing text.x
25+5:1 NEWLINE
26+5:1 glyph ++
27+5:4 name get-status
28+5:15 glyph |=
29+5:18 name x
30+5:19 tight glyph =
31+5:20 tight wing nested-choice.fixture
32+5:42 wing status.x
33+6:1 NEWLINE
34+6:1 glyph ++
35+6:4 name via-field
36+6:14 glyph |=
37+6:17 name x
38+6:18 tight glyph =
39+6:19 tight wing nested-choice.fixture
40+6:41 glyph ^-
41+6:44 wing choice.fixture
42+6:59 wing status.x
43+6:67 NEWLINE
tests/golden/types-missing-tag-imported/tree.txtnew file+18
@@ -0,0 +1,18 @@
1+(module
2+ (sur 1:1 fixture)
3+ (value 2:1 good
4+ (cast 2:9 (ref 2:12 choice.fixture) (lit 2:27 %yes)))
5+ (value 3:1 bad
6+ (cast 3:8 (ref 3:11 choice.fixture) (lit 3:26 %other)))
7+ (value 4:1 nested
8+ (gate 4:11
9+ (face 4:14 x (ref 4:16 nested-choice.fixture))
10+ (cast 4:38 (aura 4:41 @t) (wing 4:44 text.x))))
11+ (value 5:1 get-status
12+ (gate 5:15
13+ (face 5:18 x (ref 5:20 nested-choice.fixture))
14+ (wing 5:42 status.x)))
15+ (value 6:1 via-field
16+ (gate 6:14
17+ (face 6:17 x (ref 6:19 nested-choice.fixture))
18+ (cast 6:41 (ref 6:44 choice.fixture) (wing 6:59 status.x)))))
tests/golden/types-missing-tag-imported/types.txtnew file+12
@@ -0,0 +1,12 @@
1+partial inference; module not checked
2+++ good: %no %yes
3+++ bad: union %no %yes has no case `%other`
4+/tests/golden/types-missing-tag-imported/source.jibb:3:11: expected union
5+++ bad ^- choice.fixture %other
6+ ^
7+/tests/golden/types-missing-tag-imported/source.jibb:3:26: tag
8+++ bad ^- choice.fixture %other
9+ ^
10+++ nested: $-([status=(%deny %approve) text=@t] @t)
11+++ get-status: $-([status=(%deny %approve) text=@t] (%deny %approve))
12+++ via-field: cast constraint is not supported by partial inference
tests/golden/types-missing-tag-named/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Tag resolution: an unmatched literal is an error naming its union, such as "msg has no case %submitt".
2+tests: A definitely absent tag names the known union and both sites. Existing tags with incompatible shape retain the usual mismatch; unconstrained or discarded tags remain pending. Partial inference stays conservative for unproven shapes.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-missing-tag-named/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use prepared prelude.
tests/golden/types-missing-tag-named/source.jibbnew file+23
@@ -0,0 +1,23 @@
1++$ msg
2+ [%typed text=@t]
3+ %add
4++$ choice |$ [A]
5+ [%some value=A]
6+ %none
7++$ wrapped [%wrapper payload=msg]
8+++ good ^- msg %add
9+++ bad ^- msg %submitt
10+++ good-head ^- msg [%typed "ok"]
11+++ bad-head ^- msg [%other "ok"]
12+++ payload ^- msg [%typed ~zod]
13+++ tag-only ^- msg %typed
14+++ nested ^- wrapped [%wrapper %submitt]
15+++ generic ^- (choice @t) %missing
16+++ generic-payload ^- (choice @t) [%some ~zod]
17+++ take |= x=msg "ok"
18+++ call (take %submitt)
19+++ absent %submitt
20+++ discarded
21+ ~& %submitt
22+ ^- msg %add
23+++ generic-unknown |= x=A ^- A %submitt
tests/golden/types-missing-tag-named/tokens.txtnew file+155
@@ -0,0 +1,155 @@
1+1:1 glyph +$
2+1:4 name msg
3+2:3 INDENT
4+2:3 glyph [
5+2:4 tight lit %typed
6+2:11 name text
7+2:15 tight glyph =
8+2:16 tight aura @t
9+2:18 tight glyph ]
10+3:3 NEWLINE
11+3:3 lit %add
12+4:1 DEDENT
13+4:1 NEWLINE
14+4:1 glyph +$
15+4:4 name choice
16+4:11 glyph |$
17+4:14 glyph [
18+4:15 tight tvar A
19+4:16 tight glyph ]
20+5:3 INDENT
21+5:3 glyph [
22+5:4 tight lit %some
23+5:10 name value
24+5:15 tight glyph =
25+5:16 tight tvar A
26+5:17 tight glyph ]
27+6:3 NEWLINE
28+6:3 lit %none
29+7:1 DEDENT
30+7:1 NEWLINE
31+7:1 glyph +$
32+7:4 name wrapped
33+7:12 glyph [
34+7:13 tight lit %wrapper
35+7:22 name payload
36+7:29 tight glyph =
37+7:30 tight name msg
38+7:33 tight glyph ]
39+8:1 NEWLINE
40+8:1 glyph ++
41+8:4 name good
42+8:9 glyph ^-
43+8:12 name msg
44+8:16 lit %add
45+9:1 NEWLINE
46+9:1 glyph ++
47+9:4 name bad
48+9:8 glyph ^-
49+9:11 name msg
50+9:15 lit %submitt
51+10:1 NEWLINE
52+10:1 glyph ++
53+10:4 name good-head
54+10:14 glyph ^-
55+10:17 name msg
56+10:21 glyph [
57+10:22 tight lit %typed
58+10:29 str "ok"
59+10:33 tight glyph ]
60+11:1 NEWLINE
61+11:1 glyph ++
62+11:4 name bad-head
63+11:13 glyph ^-
64+11:16 name msg
65+11:20 glyph [
66+11:21 tight lit %other
67+11:28 str "ok"
68+11:32 tight glyph ]
69+12:1 NEWLINE
70+12:1 glyph ++
71+12:4 name payload
72+12:12 glyph ^-
73+12:15 name msg
74+12:19 glyph [
75+12:20 tight lit %typed
76+12:27 lit ~zod
77+12:31 tight glyph ]
78+13:1 NEWLINE
79+13:1 glyph ++
80+13:4 name tag-only
81+13:13 glyph ^-
82+13:16 name msg
83+13:20 lit %typed
84+14:1 NEWLINE
85+14:1 glyph ++
86+14:4 name nested
87+14:11 glyph ^-
88+14:14 name wrapped
89+14:22 glyph [
90+14:23 tight lit %wrapper
91+14:32 lit %submitt
92+14:40 tight glyph ]
93+15:1 NEWLINE
94+15:1 glyph ++
95+15:4 name generic
96+15:12 glyph ^-
97+15:15 glyph (
98+15:16 tight name choice
99+15:23 aura @t
100+15:25 tight glyph )
101+15:27 lit %missing
102+16:1 NEWLINE
103+16:1 glyph ++
104+16:4 name generic-payload
105+16:20 glyph ^-
106+16:23 glyph (
107+16:24 tight name choice
108+16:31 aura @t
109+16:33 tight glyph )
110+16:35 glyph [
111+16:36 tight lit %some
112+16:42 lit ~zod
113+16:46 tight glyph ]
114+17:1 NEWLINE
115+17:1 glyph ++
116+17:4 name take
117+17:9 glyph |=
118+17:12 name x
119+17:13 tight glyph =
120+17:14 tight name msg
121+17:18 str "ok"
122+18:1 NEWLINE
123+18:1 glyph ++
124+18:4 name call
125+18:9 glyph (
126+18:10 tight name take
127+18:15 lit %submitt
128+18:23 tight glyph )
129+19:1 NEWLINE
130+19:1 glyph ++
131+19:4 name absent
132+19:11 lit %submitt
133+20:1 NEWLINE
134+20:1 glyph ++
135+20:4 name discarded
136+21:3 INDENT
137+21:3 glyph ~&
138+21:6 lit %submitt
139+22:5 INDENT
140+22:5 glyph ^-
141+22:8 name msg
142+22:12 lit %add
143+23:1 DEDENT
144+23:1 DEDENT
145+23:1 NEWLINE
146+23:1 glyph ++
147+23:4 name generic-unknown
148+23:20 glyph |=
149+23:23 name x
150+23:24 tight glyph =
151+23:25 tight tvar A
152+23:27 glyph ^-
153+23:30 tvar A
154+23:32 lit %submitt
155+23:40 NEWLINE
tests/golden/types-missing-tag-named/tree.txtnew file+66
@@ -0,0 +1,66 @@
1+(module
2+ (mold 1:1 msg
3+ (union 2:3
4+ (cell 2:3
5+ (const 2:4 %typed)
6+ (face 2:11 text (aura 2:16 @t)))
7+ (const 3:3 %add)))
8+ (mold 4:1 choice
9+ (generic 4:11 A
10+ (union 5:3
11+ (cell 5:3
12+ (const 5:4 %some)
13+ (face 5:10 value (tvar 5:16 A)))
14+ (const 6:3 %none))))
15+ (mold 7:1 wrapped
16+ (cell 7:12
17+ (const 7:13 %wrapper)
18+ (face 7:22 payload (ref 7:30 msg))))
19+ (value 8:1 good
20+ (cast 8:9 (ref 8:12 msg) (lit 8:16 %add)))
21+ (value 9:1 bad
22+ (cast 9:8 (ref 9:11 msg) (lit 9:15 %submitt)))
23+ (value 10:1 good-head
24+ (cast 10:14
25+ (ref 10:17 msg)
26+ (tuple 10:21 (lit 10:22 %typed) (str 10:29 "ok"))))
27+ (value 11:1 bad-head
28+ (cast 11:13
29+ (ref 11:16 msg)
30+ (tuple 11:20 (lit 11:21 %other) (str 11:28 "ok"))))
31+ (value 12:1 payload
32+ (cast 12:12
33+ (ref 12:15 msg)
34+ (tuple 12:19 (lit 12:20 %typed) (lit 12:27 ~zod))))
35+ (value 13:1 tag-only
36+ (cast 13:13 (ref 13:16 msg) (lit 13:20 %typed)))
37+ (value 14:1 nested
38+ (cast 14:11
39+ (ref 14:14 wrapped)
40+ (tuple 14:22 (lit 14:23 %wrapper) (lit 14:32 %submitt))))
41+ (value 15:1 generic
42+ (cast 15:12
43+ (apply 15:15 choice (aura 15:23 @t))
44+ (lit 15:27 %missing)))
45+ (value 16:1 generic-payload
46+ (cast 16:20
47+ (apply 16:23 choice (aura 16:31 @t))
48+ (tuple 16:35 (lit 16:36 %some) (lit 16:42 ~zod))))
49+ (value 17:1 take
50+ (gate 17:9
51+ (face 17:12 x (ref 17:14 msg))
52+ (str 17:18 "ok")))
53+ (value 18:1 call
54+ (group 18:9
55+ (call 18:10 (wing 18:10 take) (lit 18:15 %submitt))))
56+ (value 19:1 absent (lit 19:11 %submitt))
57+ (value 20:1 discarded
58+ (body 21:3
59+ (trace 21:3
60+ (lit 21:6 %submitt)
61+ (body 22:5
62+ (cast 22:5 (ref 22:8 msg) (lit 22:12 %add))))))
63+ (value 23:1 generic-unknown
64+ (gate 23:20
65+ (face 23:23 x (tvar 23:25 A))
66+ (cast 23:27 (tvar 23:30 A) (lit 23:32 %submitt)))))
tests/golden/types-missing-tag-named/types.txtnew file+66
@@ -0,0 +1,66 @@
1+partial inference; module not checked
2++$ msg: cases proven disjoint; mold not checked
3++$ choice: cases proven disjoint; mold not checked
4++$ wrapped: not checked
5+++ good: msg
6+++ bad: msg has no case `%submitt`
7+/tests/golden/types-missing-tag-named/source.jibb:9:11: expected union
8+++ bad ^- msg %submitt
9+ ^
10+/tests/golden/types-missing-tag-named/source.jibb:9:15: tag
11+++ bad ^- msg %submitt
12+ ^
13+++ good-head: msg
14+++ bad-head: cast mold and expression type do not unify
15+/tests/golden/types-missing-tag-named/source.jibb:11:16: cast mold
16+++ bad-head ^- msg [%other "ok"]
17+ ^
18+/tests/golden/types-missing-tag-named/source.jibb:11:20: expression
19+++ bad-head ^- msg [%other "ok"]
20+ ^
21+++ payload: cast mold and expression type do not unify
22+/tests/golden/types-missing-tag-named/source.jibb:12:15: cast mold
23+++ payload ^- msg [%typed ~zod]
24+ ^
25+/tests/golden/types-missing-tag-named/source.jibb:12:19: expression
26+++ payload ^- msg [%typed ~zod]
27+ ^
28+++ tag-only: cast mold and expression type do not unify
29+/tests/golden/types-missing-tag-named/source.jibb:13:16: cast mold
30+++ tag-only ^- msg %typed
31+ ^
32+/tests/golden/types-missing-tag-named/source.jibb:13:20: expression
33+++ tag-only ^- msg %typed
34+ ^
35+++ nested: cast mold and expression type do not unify
36+/tests/golden/types-missing-tag-named/source.jibb:14:14: cast mold
37+++ nested ^- wrapped [%wrapper %submitt]
38+ ^
39+/tests/golden/types-missing-tag-named/source.jibb:14:22: expression
40+++ nested ^- wrapped [%wrapper %submitt]
41+ ^
42+++ generic: (choice @t) has no case `%missing`
43+/tests/golden/types-missing-tag-named/source.jibb:15:15: expected union
44+++ generic ^- (choice @t) %missing
45+ ^
46+/tests/golden/types-missing-tag-named/source.jibb:15:27: tag
47+++ generic ^- (choice @t) %missing
48+ ^
49+++ generic-payload: cast mold and expression type do not unify
50+/tests/golden/types-missing-tag-named/source.jibb:16:23: cast mold
51+++ generic-payload ^- (choice @t) [%some ~zod]
52+ ^
53+/tests/golden/types-missing-tag-named/source.jibb:16:35: expression
54+++ generic-payload ^- (choice @t) [%some ~zod]
55+ ^
56+++ take: $-(msg @t)
57+++ call: msg has no case `%submitt`
58+/tests/golden/types-missing-tag-named/source.jibb:18:10: expected union
59+++ call (take %submitt)
60+ ^
61+/tests/golden/types-missing-tag-named/source.jibb:18:15: tag
62+++ call (take %submitt)
63+ ^
64+++ absent: tag needs context in partial inference
65+++ discarded: tag needs context in partial inference
66+++ generic-unknown: explicit capital constraints are not supported by partial inference
tests/golden/types-prelude-unit-helpers/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Overview, Prelude: Hoon standard-library gates are regrouped into the prelude, with Jibb implementations.
2+tests: The actual prelude exposes bind, biff, both and flit with independently instantiated unit payloads. A mismatched gate argument reports both sites, and an unrelated tag stays pending. clap and clef remain unsupported.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-prelude-unit-helpers/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the prepared prelude.
tests/golden/types-prelude-unit-helpers/source.jibbnew file+11
@@ -0,0 +1,11 @@
1+++ bind-text (bind `"hi" |=(x x))
2+++ bind-ship (bind `~zod |=(x x))
3+++ biff-text (biff `"hi" |=(x `x))
4+++ both-mixed (both `"hi" `~zod)
5+++ clap-text (clap `"hi" `"there" |=(p=[@t @t] "yes"))
6+++ clef-mixed (clef `"hi" `~zod |=(p=[@t @p] `"ok"))
7+++ flit-text ((flit |=(x=@t %.y)) "hi")
8+++ wrong (bind `~zod |=(x=@t x))
9+++ pending
10+ ~& %open
11+ (both `"hi" `~zod)
tests/golden/types-prelude-unit-helpers/tokens.txtnew file+131
@@ -0,0 +1,131 @@
1+1:1 glyph ++
2+1:4 name bind-text
3+1:14 glyph (
4+1:15 tight name bind
5+1:20 glyph `
6+1:21 tight str "hi"
7+1:26 glyph |=(
8+1:29 tight name x
9+1:31 name x
10+1:32 tight glyph )
11+1:33 tight glyph )
12+2:1 NEWLINE
13+2:1 glyph ++
14+2:4 name bind-ship
15+2:14 glyph (
16+2:15 tight name bind
17+2:20 glyph `
18+2:21 tight lit ~zod
19+2:26 glyph |=(
20+2:29 tight name x
21+2:31 name x
22+2:32 tight glyph )
23+2:33 tight glyph )
24+3:1 NEWLINE
25+3:1 glyph ++
26+3:4 name biff-text
27+3:14 glyph (
28+3:15 tight name biff
29+3:20 glyph `
30+3:21 tight str "hi"
31+3:26 glyph |=(
32+3:29 tight name x
33+3:31 glyph `
34+3:32 tight name x
35+3:33 tight glyph )
36+3:34 tight glyph )
37+4:1 NEWLINE
38+4:1 glyph ++
39+4:4 name both-mixed
40+4:15 glyph (
41+4:16 tight name both
42+4:21 glyph `
43+4:22 tight str "hi"
44+4:27 glyph `
45+4:28 tight lit ~zod
46+4:32 tight glyph )
47+5:1 NEWLINE
48+5:1 glyph ++
49+5:4 name clap-text
50+5:14 glyph (
51+5:15 tight name clap
52+5:20 glyph `
53+5:21 tight str "hi"
54+5:26 glyph `
55+5:27 tight str "there"
56+5:35 glyph |=(
57+5:38 tight name p
58+5:39 tight glyph =
59+5:40 tight glyph [
60+5:41 tight aura @t
61+5:44 aura @t
62+5:46 tight glyph ]
63+5:48 str "yes"
64+5:53 tight glyph )
65+5:54 tight glyph )
66+6:1 NEWLINE
67+6:1 glyph ++
68+6:4 name clef-mixed
69+6:15 glyph (
70+6:16 tight name clef
71+6:21 glyph `
72+6:22 tight str "hi"
73+6:27 glyph `
74+6:28 tight lit ~zod
75+6:33 glyph |=(
76+6:36 tight name p
77+6:37 tight glyph =
78+6:38 tight glyph [
79+6:39 tight aura @t
80+6:42 aura @p
81+6:44 tight glyph ]
82+6:46 glyph `
83+6:47 tight str "ok"
84+6:51 tight glyph )
85+6:52 tight glyph )
86+7:1 NEWLINE
87+7:1 glyph ++
88+7:4 name flit-text
89+7:14 glyph (
90+7:15 tight glyph (
91+7:16 tight name flit
92+7:21 glyph |=(
93+7:24 tight name x
94+7:25 tight glyph =
95+7:26 tight aura @t
96+7:29 lit %.y
97+7:32 tight glyph )
98+7:33 tight glyph )
99+7:35 str "hi"
100+7:39 tight glyph )
101+8:1 NEWLINE
102+8:1 glyph ++
103+8:4 name wrong
104+8:10 glyph (
105+8:11 tight name bind
106+8:16 glyph `
107+8:17 tight lit ~zod
108+8:22 glyph |=(
109+8:25 tight name x
110+8:26 tight glyph =
111+8:27 tight aura @t
112+8:30 name x
113+8:31 tight glyph )
114+8:32 tight glyph )
115+9:1 NEWLINE
116+9:1 glyph ++
117+9:4 name pending
118+10:3 INDENT
119+10:3 glyph ~&
120+10:6 lit %open
121+11:5 INDENT
122+11:5 glyph (
123+11:6 tight name both
124+11:11 glyph `
125+11:12 tight str "hi"
126+11:17 glyph `
127+11:18 tight lit ~zod
128+11:22 tight glyph )
129+11:23 DEDENT
130+11:23 DEDENT
131+11:23 NEWLINE
tests/golden/types-prelude-unit-helpers/tree.txtnew file+75
@@ -0,0 +1,75 @@
1+(module
2+ (value 1:1 bind-text
3+ (group 1:14
4+ (call 1:15
5+ (wing 1:15 bind)
6+ (unit 1:20 (str 1:21 "hi"))
7+ (gate-wide 1:26 (bind 1:29 x) (wing 1:31 x)))))
8+ (value 2:1 bind-ship
9+ (group 2:14
10+ (call 2:15
11+ (wing 2:15 bind)
12+ (unit 2:20 (lit 2:21 ~zod))
13+ (gate-wide 2:26 (bind 2:29 x) (wing 2:31 x)))))
14+ (value 3:1 biff-text
15+ (group 3:14
16+ (call 3:15
17+ (wing 3:15 biff)
18+ (unit 3:20 (str 3:21 "hi"))
19+ (gate-wide 3:26
20+ (bind 3:29 x)
21+ (unit 3:31 (wing 3:32 x))))))
22+ (value 4:1 both-mixed
23+ (group 4:15
24+ (call 4:16
25+ (wing 4:16 both)
26+ (unit 4:21 (str 4:22 "hi"))
27+ (unit 4:27 (lit 4:28 ~zod)))))
28+ (value 5:1 clap-text
29+ (group 5:14
30+ (call 5:15
31+ (wing 5:15 clap)
32+ (unit 5:20 (str 5:21 "hi"))
33+ (unit 5:26 (str 5:27 "there"))
34+ (gate-wide 5:35
35+ (face 5:38 p
36+ (cell 5:40 (aura 5:41 @t) (aura 5:44 @t)))
37+ (str 5:48 "yes")))))
38+ (value 6:1 clef-mixed
39+ (group 6:15
40+ (call 6:16
41+ (wing 6:16 clef)
42+ (unit 6:21 (str 6:22 "hi"))
43+ (unit 6:27 (lit 6:28 ~zod))
44+ (gate-wide 6:33
45+ (face 6:36 p
46+ (cell 6:38 (aura 6:39 @t) (aura 6:42 @p)))
47+ (unit 6:46 (str 6:47 "ok"))))))
48+ (value 7:1 flit-text
49+ (group 7:14
50+ (call 7:15
51+ (group 7:15
52+ (call 7:16
53+ (wing 7:16 flit)
54+ (gate-wide 7:21
55+ (face 7:24 x (aura 7:26 @t))
56+ (lit 7:29 %.y))))
57+ (str 7:35 "hi"))))
58+ (value 8:1 wrong
59+ (group 8:10
60+ (call 8:11
61+ (wing 8:11 bind)
62+ (unit 8:16 (lit 8:17 ~zod))
63+ (gate-wide 8:22
64+ (face 8:25 x (aura 8:27 @t))
65+ (wing 8:30 x)))))
66+ (value 9:1 pending
67+ (body 10:3
68+ (trace 10:3
69+ (lit 10:6 %open)
70+ (body 11:5
71+ (group 11:5
72+ (call 11:6
73+ (wing 11:6 both)
74+ (unit 11:11 (str 11:12 "hi"))
75+ (unit 11:17 (lit 11:18 ~zod)))))))))
tests/golden/types-prelude-unit-helpers/types.txtnew file+16
@@ -0,0 +1,16 @@
1+partial inference; module not checked
2+++ bind-text: (unit @t)
3+++ bind-ship: (unit @p)
4+++ biff-text: (unit @t)
5+++ both-mixed: (unit [@t @p])
6+++ clap-text: name is not available to partial inference
7+++ clef-mixed: name is not available to partial inference
8+++ flit-text: (unit @t)
9+++ wrong: call's sample and argument types do not unify
10+/tests/golden/types-prelude-unit-helpers/source.jibb:8:11: called gate
11+++ wrong (bind `~zod |=(x=@t x))
12+ ^
13+/tests/golden/types-prelude-unit-helpers/source.jibb:8:22: argument has type $-(@t @t)
14+++ wrong (bind `~zod |=(x=@t x))
15+ ^
16+++ pending: tag needs context in partial inference
tests/golden/types-union-branch-context/types.txt+4−4
@@ -2,18 +2,18 @@ partial inference; module not checked
2+$ msg: cases proven disjoint; mold not checked
2+$ msg: cases proven disjoint; mold not checked
3++ choose: $-(? msg)
3++ choose: $-(? msg)
4++ records: $-(? msg)
4++ records: $-(? msg)
5−++ bad: branch arm does not fit its expected union
5+++ bad: msg has no case `%missing`
6/tests/golden/types-union-branch-context/source.jibb:16:6: expected union
6/tests/golden/types-union-branch-context/source.jibb:16:6: expected union
7 ^- msg
7 ^- msg
8 ^
8 ^
9−/tests/golden/types-union-branch-context/source.jibb:19:11: branch arm
9+/tests/golden/types-union-branch-context/source.jibb:19:11: tag
10 %.n %missing
10 %.n %missing
11 ^
11 ^
12−++ bad-first: branch arm does not fit its expected union
12+++ bad-first: msg has no case `%missing`
13/tests/golden/types-union-branch-context/source.jibb:21:6: expected union
13/tests/golden/types-union-branch-context/source.jibb:21:6: expected union
14 ^- msg
14 ^- msg
15 ^
15 ^
16−/tests/golden/types-union-branch-context/source.jibb:23:11: branch arm
16+/tests/golden/types-union-branch-context/source.jibb:23:11: tag
17 %.y %missing
17 %.y %missing
18 ^
18 ^
19++ nested: $-(? msg)
19++ nested: $-(? msg)
tests/golden/types-union-tags/types.txt+3−3
@@ -2,10 +2,10 @@ partial inference; module not checked
2+$ msg: cases proven disjoint; mold not checked
2+$ msg: cases proven disjoint; mold not checked
3++ simple: msg
3++ simple: msg
4++ record: msg
4++ record: msg
5−++ wrong: cast mold and expression type do not unify
5+++ wrong: msg has no case `%missing`
6−/tests/golden/types-union-tags/source.jibb:6:13: cast mold
6+/tests/golden/types-union-tags/source.jibb:6:13: expected union
7++ wrong ^- msg %missing
7++ wrong ^- msg %missing
8 ^
8 ^
9−/tests/golden/types-union-tags/source.jibb:6:17: expression
9+/tests/golden/types-union-tags/source.jibb:6:17: tag
10++ wrong ^- msg %missing
10++ wrong ^- msg %missing
11 ^
11 ^
tests/golden/types-unit-construction/types.txt+3−3
@@ -9,11 +9,11 @@ partial inference; module not checked
9++ same-first: (unit @t)
9++ same-first: (unit @t)
10++ same-second: (unit @p)
10++ same-second: (unit @p)
11++ ctx: (unit msg)
11++ ctx: (unit msg)
12−++ bad-tag: unit payload does not fit its expected type
12+++ bad-tag: msg has no case `%bad`
13−/tests/golden/types-unit-construction/source.jibb:17:15: expected unit payload
13+/tests/golden/types-unit-construction/source.jibb:17:15: expected union
14++ bad-tag ^- (unit msg) `%bad
14++ bad-tag ^- (unit msg) `%bad
15 ^
15 ^
16−/tests/golden/types-unit-construction/source.jibb:17:27: payload
16+/tests/golden/types-unit-construction/source.jibb:17:27: tag
17++ bad-tag ^- (unit msg) `%bad
17++ bad-tag ^- (unit msg) `%bad
18 ^
18 ^
19++ missing-tag: tag needs context in partial inference
19++ missing-tag: tag needs context in partial inference
tests/golden/types-unit-context/types.txt+12−12
@@ -3,11 +3,11 @@ partial inference; module not checked
3+$ mimic: cases proven disjoint; mold not checked
3+$ mimic: cases proven disjoint; mold not checked
4+$ record: not checked
4+$ record: not checked
5++ valid: (unit msg)
5++ valid: (unit msg)
6−++ invalid: unit payload does not fit its expected type
6+++ invalid: msg has no case `%bad`
7−/tests/golden/types-unit-context/source.jibb:9:15: expected unit payload
7+/tests/golden/types-unit-context/source.jibb:9:15: expected union
8++ invalid ^- (unit msg) `%bad
8++ invalid ^- (unit msg) `%bad
9 ^
9 ^
10−/tests/golden/types-unit-context/source.jibb:9:27: payload
10+/tests/golden/types-unit-context/source.jibb:9:27: tag
11++ invalid ^- (unit msg) `%bad
11++ invalid ^- (unit msg) `%bad
12 ^
12 ^
13++ str: (unit @t)
13++ str: (unit @t)
@@ -36,19 +36,19 @@ partial inference; module not checked
36 ^
36 ^
37++ accept: $-((unit msg) (unit msg))
37++ accept: $-((unit msg) (unit msg))
38++ call: (unit msg)
38++ call: (unit msg)
39−++ bad-call: unit payload does not fit its expected type
39+++ bad-call: msg has no case `%bad`
40−/tests/golden/types-unit-context/source.jibb:18:14: expected unit payload
40+/tests/golden/types-unit-context/source.jibb:18:14: expected union
41++ bad-call (accept `%bad)
41++ bad-call (accept `%bad)
42 ^
42 ^
43−/tests/golden/types-unit-context/source.jibb:18:22: payload
43+/tests/golden/types-unit-context/source.jibb:18:22: tag
44++ bad-call (accept `%bad)
44++ bad-call (accept `%bad)
45 ^
45 ^
46++ field: [u=(unit msg) xs=(list (unit @t))]
46++ field: [u=(unit msg) xs=(list (unit @t))]
47−++ field-bad: unit payload does not fit its expected type
47+++ field-bad: msg has no case `%bad`
48−/tests/golden/types-unit-context/source.jibb:20:17: expected unit payload
48+/tests/golden/types-unit-context/source.jibb:20:17: expected union
49++ field-bad ^- record [`%bad ~[`"hi"]]
49++ field-bad ^- record [`%bad ~[`"hi"]]
50 ^
50 ^
51−/tests/golden/types-unit-context/source.jibb:20:26: payload
51+/tests/golden/types-unit-context/source.jibb:20:26: tag
52++ field-bad ^- record [`%bad ~[`"hi"]]
52++ field-bad ^- record [`%bad ~[`"hi"]]
53 ^
53 ^
54++ mimic-mismatch: cast constraint is not supported by partial inference
54++ mimic-mismatch: cast constraint is not supported by partial inference
@@ -85,11 +85,11 @@ partial inference; module not checked
85++ contextual: $-(A [a=A b=(unit A)])
85++ contextual: $-(A [a=A b=(unit A)])
86++ contextual-bad: explicit capital constraints are not supported by partial inference
86++ contextual-bad: explicit capital constraints are not supported by partial inference
87++ nested-units: (list (unit msg))
87++ nested-units: (list (unit msg))
88−++ nested-units-bad: unit payload does not fit its expected type
88+++ nested-units-bad: msg has no case `%oops`
89−/tests/golden/types-unit-context/source.jibb:43:24: expected unit payload
89+/tests/golden/types-unit-context/source.jibb:43:24: expected union
90++ nested-units-bad ^- (list (unit msg)) ~[`%go `%oops]
90++ nested-units-bad ^- (list (unit msg)) ~[`%go `%oops]
91 ^
91 ^
92−/tests/golden/types-unit-context/source.jibb:43:50: payload
92+/tests/golden/types-unit-context/source.jibb:43:50: tag
93++ nested-units-bad ^- (list (unit msg)) ~[`%go `%oops]
93++ nested-units-bad ^- (list (unit msg)) ~[`%go `%oops]
94 ^
94 ^
95++ case-discarded: tag needs context in partial inference
95++ case-discarded: tag needs context in partial inference
tests/lib/jibb.hoon+531−505
@@ -1502,417 +1502,435 @@
1502/* tok-441 %txt /tests/golden/types-local-recursive/tokens/txt
1502/* tok-441 %txt /tests/golden/types-local-recursive/tokens/txt
1503/* tre-441 %txt /tests/golden/types-local-recursive/tree/txt
1503/* tre-441 %txt /tests/golden/types-local-recursive/tree/txt
1504/* typ-441 %txt /tests/golden/types-local-recursive/types/txt
1504/* typ-441 %txt /tests/golden/types-local-recursive/types/txt
1505−/* src-442 %jibb /tests/golden/types-module-fixtures/source/jibb
1505+/* src-442 %jibb /tests/golden/types-missing-tag-context/source/jibb
1506−/* tok-442 %txt /tests/golden/types-module-fixtures/tokens/txt
1506+/* tok-442 %txt /tests/golden/types-missing-tag-context/tokens/txt
1507−/* tre-442 %txt /tests/golden/types-module-fixtures/tree/txt
1507+/* tre-442 %txt /tests/golden/types-missing-tag-context/tree/txt
1508−/* mod-442-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1508+/* typ-442 %txt /tests/golden/types-missing-tag-context/types/txt
1509−/* mod-442-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1509+/* src-443 %jibb /tests/golden/types-missing-tag-imported/source/jibb
1510−/* typ-442 %txt /tests/golden/types-module-fixtures/types/txt
1510+/* tok-443 %txt /tests/golden/types-missing-tag-imported/tokens/txt
1511−/* mtre-442 %txt /tests/golden/types-module-fixtures/module-trees/txt
1511+/* tre-443 %txt /tests/golden/types-missing-tag-imported/tree/txt
1512−/* src-443 %jibb /tests/golden/types-module-mixed/source/jibb
1512+/* typ-443 %txt /tests/golden/types-missing-tag-imported/types/txt
1513−/* tok-443 %txt /tests/golden/types-module-mixed/tokens/txt
1513+/* imp-443-1 %txt /tests/golden/types-missing-tag-imported/sur/fixture/txt
1514−/* tre-443 %txt /tests/golden/types-module-mixed/tree/txt
1514+/* imp-443-2 %txt /tests/golden/types-missing-tag-imported/sur/fixture/txt
1515−/* mod-443-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1515+/* src-444 %jibb /tests/golden/types-missing-tag-named/source/jibb
1516−/* typ-443 %txt /tests/golden/types-module-mixed/types/txt
1516+/* tok-444 %txt /tests/golden/types-missing-tag-named/tokens/txt
1517−/* imp-443-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1517+/* tre-444 %txt /tests/golden/types-missing-tag-named/tree/txt
1518−/* mark-443-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1518+/* typ-444 %txt /tests/golden/types-missing-tag-named/types/txt
1519−/* mtre-443 %txt /tests/golden/types-module-mixed/module-trees/txt
1519+/* src-445 %jibb /tests/golden/types-module-fixtures/source/jibb
1520−/* src-444 %jibb /tests/golden/types-multi-call/source/jibb
1520+/* tok-445 %txt /tests/golden/types-module-fixtures/tokens/txt
1521−/* tok-444 %txt /tests/golden/types-multi-call/tokens/txt
1521+/* tre-445 %txt /tests/golden/types-module-fixtures/tree/txt
1522−/* tre-444 %txt /tests/golden/types-multi-call/tree/txt
1522+/* mod-445-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1523−/* typ-444 %txt /tests/golden/types-multi-call/types/txt
1523+/* mod-445-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1524−/* src-445 %jibb /tests/golden/types-multi-import/source/jibb
1524+/* typ-445 %txt /tests/golden/types-module-fixtures/types/txt
1525−/* tok-445 %txt /tests/golden/types-multi-import/tokens/txt
1525+/* mtre-445 %txt /tests/golden/types-module-fixtures/module-trees/txt
1526−/* tre-445 %txt /tests/golden/types-multi-import/tree/txt
1526+/* src-446 %jibb /tests/golden/types-module-mixed/source/jibb
1527−/* mod-445-1 %jibb /tests/golden/types-multi-import/modules/ui/lib/jibb
1527+/* tok-446 %txt /tests/golden/types-module-mixed/tokens/txt
1528−/* typ-445 %txt /tests/golden/types-multi-import/types/txt
1528+/* tre-446 %txt /tests/golden/types-module-mixed/tree/txt
1529−/* mtre-445 %txt /tests/golden/types-multi-import/module-trees/txt
1529+/* mod-446-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1530−/* src-446 %jibb /tests/golden/types-null-context/source/jibb
1530+/* typ-446 %txt /tests/golden/types-module-mixed/types/txt
1531−/* tok-446 %txt /tests/golden/types-null-context/tokens/txt
1531+/* imp-446-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1532−/* tre-446 %txt /tests/golden/types-null-context/tree/txt
1532+/* mark-446-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1533−/* typ-446 %txt /tests/golden/types-null-context/types/txt
1533+/* mtre-446 %txt /tests/golden/types-module-mixed/module-trees/txt
1534−/* src-447 %jibb /tests/golden/types-null-overlap/source/jibb
1534+/* src-447 %jibb /tests/golden/types-multi-call/source/jibb
1535−/* tok-447 %txt /tests/golden/types-null-overlap/tokens/txt
1535+/* tok-447 %txt /tests/golden/types-multi-call/tokens/txt
1536−/* tre-447 %txt /tests/golden/types-null-overlap/tree/txt
1536+/* tre-447 %txt /tests/golden/types-multi-call/tree/txt
1537−/* typ-447 %txt /tests/golden/types-null-overlap/types/txt
1537+/* typ-447 %txt /tests/golden/types-multi-call/types/txt
1538−/* src-448 %jibb /tests/golden/types-null-unresolved/source/jibb
1538+/* src-448 %jibb /tests/golden/types-multi-import/source/jibb
1539−/* tok-448 %txt /tests/golden/types-null-unresolved/tokens/txt
1539+/* tok-448 %txt /tests/golden/types-multi-import/tokens/txt
1540−/* tre-448 %txt /tests/golden/types-null-unresolved/tree/txt
1540+/* tre-448 %txt /tests/golden/types-multi-import/tree/txt
1541−/* typ-448 %txt /tests/golden/types-null-unresolved/types/txt
1541+/* mod-448-1 %jibb /tests/golden/types-multi-import/modules/ui/lib/jibb
1542−/* src-449 %jibb /tests/golden/types-partial-apply/source/jibb
1542+/* typ-448 %txt /tests/golden/types-multi-import/types/txt
1543−/* tok-449 %txt /tests/golden/types-partial-apply/tokens/txt
1543+/* mtre-448 %txt /tests/golden/types-multi-import/module-trees/txt
1544−/* tre-449 %txt /tests/golden/types-partial-apply/tree/txt
1544+/* src-449 %jibb /tests/golden/types-null-context/source/jibb
1545−/* typ-449 %txt /tests/golden/types-partial-apply/types/txt
1545+/* tok-449 %txt /tests/golden/types-null-context/tokens/txt
1546−/* src-450 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1546+/* tre-449 %txt /tests/golden/types-null-context/tree/txt
1547−/* tok-450 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1547+/* typ-449 %txt /tests/golden/types-null-context/types/txt
1548−/* tre-450 %txt /tests/golden/types-partial-atom-alias/tree/txt
1548+/* src-450 %jibb /tests/golden/types-null-overlap/source/jibb
1549−/* typ-450 %txt /tests/golden/types-partial-atom-alias/types/txt
1549+/* tok-450 %txt /tests/golden/types-null-overlap/tokens/txt
1550−/* src-451 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1550+/* tre-450 %txt /tests/golden/types-null-overlap/tree/txt
1551−/* tok-451 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1551+/* typ-450 %txt /tests/golden/types-null-overlap/types/txt
1552−/* tre-451 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1552+/* src-451 %jibb /tests/golden/types-null-unresolved/source/jibb
1553−/* typ-451 %txt /tests/golden/types-partial-atom-constraint/types/txt
1553+/* tok-451 %txt /tests/golden/types-null-unresolved/tokens/txt
1554−/* src-452 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1554+/* tre-451 %txt /tests/golden/types-null-unresolved/tree/txt
1555−/* tok-452 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1555+/* typ-451 %txt /tests/golden/types-null-unresolved/types/txt
1556−/* tre-452 %txt /tests/golden/types-partial-atom-widening/tree/txt
1556+/* src-452 %jibb /tests/golden/types-partial-apply/source/jibb
1557−/* typ-452 %txt /tests/golden/types-partial-atom-widening/types/txt
1557+/* tok-452 %txt /tests/golden/types-partial-apply/tokens/txt
1558−/* src-453 %jibb /tests/golden/types-partial-aura/source/jibb
1558+/* tre-452 %txt /tests/golden/types-partial-apply/tree/txt
1559−/* tok-453 %txt /tests/golden/types-partial-aura/tokens/txt
1559+/* typ-452 %txt /tests/golden/types-partial-apply/types/txt
1560−/* tre-453 %txt /tests/golden/types-partial-aura/tree/txt
1560+/* src-453 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1561−/* typ-453 %txt /tests/golden/types-partial-aura/types/txt
1561+/* tok-453 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1562−/* src-454 %jibb /tests/golden/types-partial-aura-family/source/jibb
1562+/* tre-453 %txt /tests/golden/types-partial-atom-alias/tree/txt
1563−/* tok-454 %txt /tests/golden/types-partial-aura-family/tokens/txt
1563+/* typ-453 %txt /tests/golden/types-partial-atom-alias/types/txt
1564−/* tre-454 %txt /tests/golden/types-partial-aura-family/tree/txt
1564+/* src-454 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1565−/* typ-454 %txt /tests/golden/types-partial-aura-family/types/txt
1565+/* tok-454 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1566−/* src-455 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1566+/* tre-454 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1567−/* tok-455 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1567+/* typ-454 %txt /tests/golden/types-partial-atom-constraint/types/txt
1568−/* tre-455 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1568+/* src-455 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1569−/* typ-455 %txt /tests/golden/types-partial-aura-generalization/types/txt
1569+/* tok-455 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1570−/* src-456 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1570+/* tre-455 %txt /tests/golden/types-partial-atom-widening/tree/txt
1571−/* tok-456 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1571+/* typ-455 %txt /tests/golden/types-partial-atom-widening/types/txt
1572−/* tre-456 %txt /tests/golden/types-partial-bare-atom/tree/txt
1572+/* src-456 %jibb /tests/golden/types-partial-aura/source/jibb
1573−/* typ-456 %txt /tests/golden/types-partial-bare-atom/types/txt
1573+/* tok-456 %txt /tests/golden/types-partial-aura/tokens/txt
1574−/* src-457 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1574+/* tre-456 %txt /tests/golden/types-partial-aura/tree/txt
1575−/* tok-457 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1575+/* typ-456 %txt /tests/golden/types-partial-aura/types/txt
1576−/* tre-457 %txt /tests/golden/types-partial-branch-widening/tree/txt
1576+/* src-457 %jibb /tests/golden/types-partial-aura-family/source/jibb
1577−/* typ-457 %txt /tests/golden/types-partial-branch-widening/types/txt
1577+/* tok-457 %txt /tests/golden/types-partial-aura-family/tokens/txt
1578−/* src-458 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1578+/* tre-457 %txt /tests/golden/types-partial-aura-family/tree/txt
1579−/* tok-458 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1579+/* typ-457 %txt /tests/golden/types-partial-aura-family/types/txt
1580−/* tre-458 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1580+/* src-458 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1581−/* typ-458 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1581+/* tok-458 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1582−/* src-459 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1582+/* tre-458 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1583−/* tok-459 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1583+/* typ-458 %txt /tests/golden/types-partial-aura-generalization/types/txt
1584−/* tre-459 %txt /tests/golden/types-partial-decimal-default/tree/txt
1584+/* src-459 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1585−/* typ-459 %txt /tests/golden/types-partial-decimal-default/types/txt
1585+/* tok-459 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1586−/* src-460 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1586+/* tre-459 %txt /tests/golden/types-partial-bare-atom/tree/txt
1587−/* tok-460 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1587+/* typ-459 %txt /tests/golden/types-partial-bare-atom/types/txt
1588−/* tre-460 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1588+/* src-460 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1589−/* typ-460 %txt /tests/golden/types-partial-dependency-chain/types/txt
1589+/* tok-460 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1590−/* src-461 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1590+/* tre-460 %txt /tests/golden/types-partial-branch-widening/tree/txt
1591−/* tok-461 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1591+/* typ-460 %txt /tests/golden/types-partial-branch-widening/types/txt
1592−/* tre-461 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1592+/* src-461 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1593−/* typ-461 %txt /tests/golden/types-partial-explicit-capital/types/txt
1593+/* tok-461 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1594−/* src-462 %jibb /tests/golden/types-partial-forward/source/jibb
1594+/* tre-461 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1595−/* tok-462 %txt /tests/golden/types-partial-forward/tokens/txt
1595+/* typ-461 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1596−/* tre-462 %txt /tests/golden/types-partial-forward/tree/txt
1596+/* src-462 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1597−/* typ-462 %txt /tests/golden/types-partial-forward/types/txt
1597+/* tok-462 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1598−/* src-463 %jibb /tests/golden/types-partial-generalization/source/jibb
1598+/* tre-462 %txt /tests/golden/types-partial-decimal-default/tree/txt
1599−/* tok-463 %txt /tests/golden/types-partial-generalization/tokens/txt
1599+/* typ-462 %txt /tests/golden/types-partial-decimal-default/types/txt
1600−/* tre-463 %txt /tests/golden/types-partial-generalization/tree/txt
1600+/* src-463 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1601−/* typ-463 %txt /tests/golden/types-partial-generalization/types/txt
1601+/* tok-463 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1602−/* src-464 %jibb /tests/golden/types-partial-identity/source/jibb
1602+/* tre-463 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1603−/* tok-464 %txt /tests/golden/types-partial-identity/tokens/txt
1603+/* typ-463 %txt /tests/golden/types-partial-dependency-chain/types/txt
1604−/* tre-464 %txt /tests/golden/types-partial-identity/tree/txt
1604+/* src-464 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1605−/* typ-464 %txt /tests/golden/types-partial-identity/types/txt
1605+/* tok-464 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1606−/* src-465 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1606+/* tre-464 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1607−/* tok-465 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1607+/* typ-464 %txt /tests/golden/types-partial-explicit-capital/types/txt
1608−/* tre-465 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1608+/* src-465 %jibb /tests/golden/types-partial-forward/source/jibb
1609−/* typ-465 %txt /tests/golden/types-partial-independent-atoms/types/txt
1609+/* tok-465 %txt /tests/golden/types-partial-forward/tokens/txt
1610−/* src-466 %jibb /tests/golden/types-partial-local-molds/source/jibb
1610+/* tre-465 %txt /tests/golden/types-partial-forward/tree/txt
1611−/* tok-466 %txt /tests/golden/types-partial-local-molds/tokens/txt
1611+/* typ-465 %txt /tests/golden/types-partial-forward/types/txt
1612−/* tre-466 %txt /tests/golden/types-partial-local-molds/tree/txt
1612+/* src-466 %jibb /tests/golden/types-partial-generalization/source/jibb
1613−/* typ-466 %txt /tests/golden/types-partial-local-molds/types/txt
1613+/* tok-466 %txt /tests/golden/types-partial-generalization/tokens/txt
1614−/* src-467 %jibb /tests/golden/types-partial-locals/source/jibb
1614+/* tre-466 %txt /tests/golden/types-partial-generalization/tree/txt
1615−/* tok-467 %txt /tests/golden/types-partial-locals/tokens/txt
1615+/* typ-466 %txt /tests/golden/types-partial-generalization/types/txt
1616−/* tre-467 %txt /tests/golden/types-partial-locals/tree/txt
1616+/* src-467 %jibb /tests/golden/types-partial-identity/source/jibb
1617−/* typ-467 %txt /tests/golden/types-partial-locals/types/txt
1617+/* tok-467 %txt /tests/golden/types-partial-identity/tokens/txt
1618−/* src-468 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1618+/* tre-467 %txt /tests/golden/types-partial-identity/tree/txt
1619−/* tok-468 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1619+/* typ-467 %txt /tests/golden/types-partial-identity/types/txt
1620−/* tre-468 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1620+/* src-468 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1621−/* typ-468 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1621+/* tok-468 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1622−/* src-469 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1622+/* tre-468 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1623−/* tok-469 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1623+/* typ-468 %txt /tests/golden/types-partial-independent-atoms/types/txt
1624−/* tre-469 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1624+/* src-469 %jibb /tests/golden/types-partial-local-molds/source/jibb
1625−/* typ-469 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1625+/* tok-469 %txt /tests/golden/types-partial-local-molds/tokens/txt
1626−/* src-470 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1626+/* tre-469 %txt /tests/golden/types-partial-local-molds/tree/txt
1627−/* tok-470 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1627+/* typ-469 %txt /tests/golden/types-partial-local-molds/types/txt
1628−/* tre-470 %txt /tests/golden/types-partial-mold-composite/tree/txt
1628+/* src-470 %jibb /tests/golden/types-partial-locals/source/jibb
1629−/* typ-470 %txt /tests/golden/types-partial-mold-composite/types/txt
1629+/* tok-470 %txt /tests/golden/types-partial-locals/tokens/txt
1630−/* src-471 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1630+/* tre-470 %txt /tests/golden/types-partial-locals/tree/txt
1631−/* tok-471 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1631+/* typ-470 %txt /tests/golden/types-partial-locals/types/txt
1632−/* tre-471 %txt /tests/golden/types-partial-mold-forward/tree/txt
1632+/* src-471 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1633−/* typ-471 %txt /tests/golden/types-partial-mold-forward/types/txt
1633+/* tok-471 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1634−/* src-472 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1634+/* tre-471 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1635−/* tok-472 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1635+/* typ-471 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1636−/* tre-472 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1636+/* src-472 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1637−/* typ-472 %txt /tests/golden/types-partial-mold-recursive/types/txt
1637+/* tok-472 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1638−/* src-473 %jibb /tests/golden/types-partial-occurs/source/jibb
1638+/* tre-472 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1639−/* tok-473 %txt /tests/golden/types-partial-occurs/tokens/txt
1639+/* typ-472 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1640−/* tre-473 %txt /tests/golden/types-partial-occurs/tree/txt
1640+/* src-473 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1641−/* typ-473 %txt /tests/golden/types-partial-occurs/types/txt
1641+/* tok-473 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1642−/* src-474 %jibb /tests/golden/types-partial-projection/source/jibb
1642+/* tre-473 %txt /tests/golden/types-partial-mold-composite/tree/txt
1643−/* tok-474 %txt /tests/golden/types-partial-projection/tokens/txt
1643+/* typ-473 %txt /tests/golden/types-partial-mold-composite/types/txt
1644−/* tre-474 %txt /tests/golden/types-partial-projection/tree/txt
1644+/* src-474 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1645−/* typ-474 %txt /tests/golden/types-partial-projection/types/txt
1645+/* tok-474 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1646−/* src-475 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1646+/* tre-474 %txt /tests/golden/types-partial-mold-forward/tree/txt
1647−/* tok-475 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1647+/* typ-474 %txt /tests/golden/types-partial-mold-forward/types/txt
1648−/* tre-475 %txt /tests/golden/types-partial-shadow-global/tree/txt
1648+/* src-475 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1649−/* typ-475 %txt /tests/golden/types-partial-shadow-global/types/txt
1649+/* tok-475 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1650−/* src-476 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1650+/* tre-475 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1651−/* tok-476 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1651+/* typ-475 %txt /tests/golden/types-partial-mold-recursive/types/txt
1652−/* tre-476 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1652+/* src-476 %jibb /tests/golden/types-partial-occurs/source/jibb
1653−/* typ-476 %txt /tests/golden/types-partial-shared-tvar/types/txt
1653+/* tok-476 %txt /tests/golden/types-partial-occurs/tokens/txt
1654−/* src-477 %jibb /tests/golden/types-partial-union-cases/source/jibb
1654+/* tre-476 %txt /tests/golden/types-partial-occurs/tree/txt
1655−/* tok-477 %txt /tests/golden/types-partial-union-cases/tokens/txt
1655+/* typ-476 %txt /tests/golden/types-partial-occurs/types/txt
1656−/* tre-477 %txt /tests/golden/types-partial-union-cases/tree/txt
1656+/* src-477 %jibb /tests/golden/types-partial-projection/source/jibb
1657−/* typ-477 %txt /tests/golden/types-partial-union-cases/types/txt
1657+/* tok-477 %txt /tests/golden/types-partial-projection/tokens/txt
1658−/* src-478 %jibb /tests/golden/types-partial-union-edges/source/jibb
1658+/* tre-477 %txt /tests/golden/types-partial-projection/tree/txt
1659−/* tok-478 %txt /tests/golden/types-partial-union-edges/tokens/txt
1659+/* typ-477 %txt /tests/golden/types-partial-projection/types/txt
1660−/* tre-478 %txt /tests/golden/types-partial-union-edges/tree/txt
1660+/* src-478 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1661−/* typ-478 %txt /tests/golden/types-partial-union-edges/types/txt
1661+/* tok-478 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1662−/* src-479 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1662+/* tre-478 %txt /tests/golden/types-partial-shadow-global/tree/txt
1663−/* tok-479 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1663+/* typ-478 %txt /tests/golden/types-partial-shadow-global/types/txt
1664−/* tre-479 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1664+/* src-479 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1665−/* typ-479 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1665+/* tok-479 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1666−/* src-480 %jibb /tests/golden/types-prelude-direct/source/jibb
1666+/* tre-479 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1667−/* tok-480 %txt /tests/golden/types-prelude-direct/tokens/txt
1667+/* typ-479 %txt /tests/golden/types-partial-shared-tvar/types/txt
1668−/* tre-480 %txt /tests/golden/types-prelude-direct/tree/txt
1668+/* src-480 %jibb /tests/golden/types-partial-union-cases/source/jibb
1669−/* typ-480 %txt /tests/golden/types-prelude-direct/types/txt
1669+/* tok-480 %txt /tests/golden/types-partial-union-cases/tokens/txt
1670−/* src-481 %jibb /tests/golden/types-prelude-interface/source/jibb
1670+/* tre-480 %txt /tests/golden/types-partial-union-cases/tree/txt
1671−/* tok-481 %txt /tests/golden/types-prelude-interface/tokens/txt
1671+/* typ-480 %txt /tests/golden/types-partial-union-cases/types/txt
1672−/* tre-481 %txt /tests/golden/types-prelude-interface/tree/txt
1672+/* src-481 %jibb /tests/golden/types-partial-union-edges/source/jibb
1673−/* mod-481-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1673+/* tok-481 %txt /tests/golden/types-partial-union-edges/tokens/txt
1674−/* mod-481-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1674+/* tre-481 %txt /tests/golden/types-partial-union-edges/tree/txt
1675−/* typ-481 %txt /tests/golden/types-prelude-interface/types/txt
1675+/* typ-481 %txt /tests/golden/types-partial-union-edges/types/txt
1676−/* mtre-481 %txt /tests/golden/types-prelude-interface/module-trees/txt
1676+/* src-482 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1677−/* src-482 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1677+/* tok-482 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1678−/* tok-482 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1678+/* tre-482 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1679−/* tre-482 %txt /tests/golden/types-prelude-list-functions/tree/txt
1679+/* typ-482 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1680−/* mod-482-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1680+/* src-483 %jibb /tests/golden/types-prelude-direct/source/jibb
1681−/* typ-482 %txt /tests/golden/types-prelude-list-functions/types/txt
1681+/* tok-483 %txt /tests/golden/types-prelude-direct/tokens/txt
1682−/* mtre-482 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1682+/* tre-483 %txt /tests/golden/types-prelude-direct/tree/txt
1683−/* src-483 %jibb /tests/golden/types-record-bound-variable/source/jibb
1683+/* typ-483 %txt /tests/golden/types-prelude-direct/types/txt
1684−/* tok-483 %txt /tests/golden/types-record-bound-variable/tokens/txt
1684+/* src-484 %jibb /tests/golden/types-prelude-interface/source/jibb
1685−/* tre-483 %txt /tests/golden/types-record-bound-variable/tree/txt
1685+/* tok-484 %txt /tests/golden/types-prelude-interface/tokens/txt
1686−/* typ-483 %txt /tests/golden/types-record-bound-variable/types/txt
1686+/* tre-484 %txt /tests/golden/types-prelude-interface/tree/txt
1687−/* src-484 %jibb /tests/golden/types-record-cast-context/source/jibb
1687+/* mod-484-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1688−/* tok-484 %txt /tests/golden/types-record-cast-context/tokens/txt
1688+/* mod-484-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1689−/* tre-484 %txt /tests/golden/types-record-cast-context/tree/txt
1689+/* typ-484 %txt /tests/golden/types-prelude-interface/types/txt
1690−/* typ-484 %txt /tests/golden/types-record-cast-context/types/txt
1690+/* mtre-484 %txt /tests/golden/types-prelude-interface/module-trees/txt
1691−/* src-485 %jibb /tests/golden/types-record-change/source/jibb
1691+/* src-485 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1692−/* tok-485 %txt /tests/golden/types-record-change/tokens/txt
1692+/* tok-485 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1693−/* tre-485 %txt /tests/golden/types-record-change/tree/txt
1693+/* tre-485 %txt /tests/golden/types-prelude-list-functions/tree/txt
1694−/* typ-485 %txt /tests/golden/types-record-change/types/txt
1694+/* mod-485-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1695−/* src-486 %jibb /tests/golden/types-record-change-generic/source/jibb
1695+/* typ-485 %txt /tests/golden/types-prelude-list-functions/types/txt
1696−/* tok-486 %txt /tests/golden/types-record-change-generic/tokens/txt
1696+/* mtre-485 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1697−/* tre-486 %txt /tests/golden/types-record-change-generic/tree/txt
1697+/* src-486 %jibb /tests/golden/types-prelude-unit-helpers/source/jibb
1698−/* typ-486 %txt /tests/golden/types-record-change-generic/types/txt
1698+/* tok-486 %txt /tests/golden/types-prelude-unit-helpers/tokens/txt
1699−/* src-487 %jibb /tests/golden/types-record-faces/source/jibb
1699+/* tre-486 %txt /tests/golden/types-prelude-unit-helpers/tree/txt
1700−/* tok-487 %txt /tests/golden/types-record-faces/tokens/txt
1700+/* typ-486 %txt /tests/golden/types-prelude-unit-helpers/types/txt
1701−/* tre-487 %txt /tests/golden/types-record-faces/tree/txt
1701+/* src-487 %jibb /tests/golden/types-record-bound-variable/source/jibb
1702−/* typ-487 %txt /tests/golden/types-record-faces/types/txt
1702+/* tok-487 %txt /tests/golden/types-record-bound-variable/tokens/txt
1703−/* src-488 %jibb /tests/golden/types-record-import/source/jibb
1703+/* tre-487 %txt /tests/golden/types-record-bound-variable/tree/txt
1704−/* tok-488 %txt /tests/golden/types-record-import/tokens/txt
1704+/* typ-487 %txt /tests/golden/types-record-bound-variable/types/txt
1705−/* tre-488 %txt /tests/golden/types-record-import/tree/txt
1705+/* src-488 %jibb /tests/golden/types-record-cast-context/source/jibb
1706−/* mod-488-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1706+/* tok-488 %txt /tests/golden/types-record-cast-context/tokens/txt
1707−/* typ-488 %txt /tests/golden/types-record-import/types/txt
1707+/* tre-488 %txt /tests/golden/types-record-cast-context/tree/txt
1708−/* mtre-488 %txt /tests/golden/types-record-import/module-trees/txt
1708+/* typ-488 %txt /tests/golden/types-record-cast-context/types/txt
1709−/* src-489 %jibb /tests/golden/types-record-local-scheme/source/jibb
1709+/* src-489 %jibb /tests/golden/types-record-change/source/jibb
1710−/* tok-489 %txt /tests/golden/types-record-local-scheme/tokens/txt
1710+/* tok-489 %txt /tests/golden/types-record-change/tokens/txt
1711−/* tre-489 %txt /tests/golden/types-record-local-scheme/tree/txt
1711+/* tre-489 %txt /tests/golden/types-record-change/tree/txt
1712−/* typ-489 %txt /tests/golden/types-record-local-scheme/types/txt
1712+/* typ-489 %txt /tests/golden/types-record-change/types/txt
1713−/* src-490 %jibb /tests/golden/types-record-nested/source/jibb
1713+/* src-490 %jibb /tests/golden/types-record-change-generic/source/jibb
1714−/* tok-490 %txt /tests/golden/types-record-nested/tokens/txt
1714+/* tok-490 %txt /tests/golden/types-record-change-generic/tokens/txt
1715−/* tre-490 %txt /tests/golden/types-record-nested/tree/txt
1715+/* tre-490 %txt /tests/golden/types-record-change-generic/tree/txt
1716−/* typ-490 %txt /tests/golden/types-record-nested/types/txt
1716+/* typ-490 %txt /tests/golden/types-record-change-generic/types/txt
1717−/* src-491 %jibb /tests/golden/types-record-to-tuple/source/jibb
1717+/* src-491 %jibb /tests/golden/types-record-faces/source/jibb
1718−/* tok-491 %txt /tests/golden/types-record-to-tuple/tokens/txt
1718+/* tok-491 %txt /tests/golden/types-record-faces/tokens/txt
1719−/* tre-491 %txt /tests/golden/types-record-to-tuple/tree/txt
1719+/* tre-491 %txt /tests/golden/types-record-faces/tree/txt
1720−/* typ-491 %txt /tests/golden/types-record-to-tuple/types/txt
1720+/* typ-491 %txt /tests/golden/types-record-faces/types/txt
1721−/* src-492 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1721+/* src-492 %jibb /tests/golden/types-record-import/source/jibb
1722−/* tok-492 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1722+/* tok-492 %txt /tests/golden/types-record-import/tokens/txt
1723−/* tre-492 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1723+/* tre-492 %txt /tests/golden/types-record-import/tree/txt
1724−/* typ-492 %txt /tests/golden/types-recursion-scc-failures/types/txt
1724+/* mod-492-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1725−/* src-493 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1725+/* typ-492 %txt /tests/golden/types-record-import/types/txt
1726−/* tok-493 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1726+/* mtre-492 %txt /tests/golden/types-record-import/module-trees/txt
1727−/* tre-493 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1727+/* src-493 %jibb /tests/golden/types-record-local-scheme/source/jibb
1728−/* typ-493 %txt /tests/golden/types-recursion-scc-groups/types/txt
1728+/* tok-493 %txt /tests/golden/types-record-local-scheme/tokens/txt
1729−/* src-494 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1729+/* tre-493 %txt /tests/golden/types-record-local-scheme/tree/txt
1730−/* tok-494 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1730+/* typ-493 %txt /tests/golden/types-record-local-scheme/types/txt
1731−/* tre-494 %txt /tests/golden/types-recursion-scc-import/tree/txt
1731+/* src-494 %jibb /tests/golden/types-record-nested/source/jibb
1732−/* mod-494-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1732+/* tok-494 %txt /tests/golden/types-record-nested/tokens/txt
1733−/* typ-494 %txt /tests/golden/types-recursion-scc-import/types/txt
1733+/* tre-494 %txt /tests/golden/types-record-nested/tree/txt
1734−/* mtre-494 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1734+/* typ-494 %txt /tests/golden/types-record-nested/types/txt
1735−/* src-495 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1735+/* src-495 %jibb /tests/golden/types-record-to-tuple/source/jibb
1736−/* tok-495 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1736+/* tok-495 %txt /tests/golden/types-record-to-tuple/tokens/txt
1737−/* tre-495 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1737+/* tre-495 %txt /tests/golden/types-record-to-tuple/tree/txt
1738−/* mod-495-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1738+/* typ-495 %txt /tests/golden/types-record-to-tuple/types/txt
1739−/* typ-495 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1739+/* src-496 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1740−/* mtre-495 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1740+/* tok-496 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1741−/* src-496 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1741+/* tre-496 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1742−/* tok-496 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1742+/* typ-496 %txt /tests/golden/types-recursion-scc-failures/types/txt
1743−/* tre-496 %txt /tests/golden/types-recursion-scc-local/tree/txt
1743+/* src-497 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1744−/* typ-496 %txt /tests/golden/types-recursion-scc-local/types/txt
1744+/* tok-497 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1745−/* src-497 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1745+/* tre-497 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1746−/* tok-497 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1746+/* typ-497 %txt /tests/golden/types-recursion-scc-groups/types/txt
1747−/* tre-497 %txt /tests/golden/types-recursion-scc-order/tree/txt
1747+/* src-498 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1748−/* typ-497 %txt /tests/golden/types-recursion-scc-order/types/txt
1748+/* tok-498 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1749−/* src-498 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1749+/* tre-498 %txt /tests/golden/types-recursion-scc-import/tree/txt
1750−/* tok-498 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1750+/* mod-498-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1751−/* tre-498 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1751+/* typ-498 %txt /tests/golden/types-recursion-scc-import/types/txt
1752−/* typ-498 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1752+/* mtre-498 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1753−/* src-499 %jibb /tests/golden/types-recursive-branch/source/jibb
1753+/* src-499 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1754−/* tok-499 %txt /tests/golden/types-recursive-branch/tokens/txt
1754+/* tok-499 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1755−/* tre-499 %txt /tests/golden/types-recursive-branch/tree/txt
1755+/* tre-499 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1756−/* typ-499 %txt /tests/golden/types-recursive-branch/types/txt
1756+/* mod-499-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1757−/* src-500 %jibb /tests/golden/types-recursive-gate/source/jibb
1757+/* typ-499 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1758−/* tok-500 %txt /tests/golden/types-recursive-gate/tokens/txt
1758+/* mtre-499 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1759−/* tre-500 %txt /tests/golden/types-recursive-gate/tree/txt
1759+/* src-500 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1760−/* typ-500 %txt /tests/golden/types-recursive-gate/types/txt
1760+/* tok-500 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1761−/* src-501 %jibb /tests/golden/types-recursive-sample/source/jibb
1761+/* tre-500 %txt /tests/golden/types-recursion-scc-local/tree/txt
1762−/* tok-501 %txt /tests/golden/types-recursive-sample/tokens/txt
1762+/* typ-500 %txt /tests/golden/types-recursion-scc-local/types/txt
1763−/* tre-501 %txt /tests/golden/types-recursive-sample/tree/txt
1763+/* src-501 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1764−/* typ-501 %txt /tests/golden/types-recursive-sample/types/txt
1764+/* tok-501 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1765−/* src-502 %jibb /tests/golden/types-string-interpolation/source/jibb
1765+/* tre-501 %txt /tests/golden/types-recursion-scc-order/tree/txt
1766−/* tok-502 %txt /tests/golden/types-string-interpolation/tokens/txt
1766+/* typ-501 %txt /tests/golden/types-recursion-scc-order/types/txt
1767−/* tre-502 %txt /tests/golden/types-string-interpolation/tree/txt
1767+/* src-502 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1768−/* typ-502 %txt /tests/golden/types-string-interpolation/types/txt
1768+/* tok-502 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1769−/* src-503 %jibb /tests/golden/types-tuple-context/source/jibb
1769+/* tre-502 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1770−/* tok-503 %txt /tests/golden/types-tuple-context/tokens/txt
1770+/* typ-502 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1771−/* tre-503 %txt /tests/golden/types-tuple-context/tree/txt
1771+/* src-503 %jibb /tests/golden/types-recursive-branch/source/jibb
1772−/* typ-503 %txt /tests/golden/types-tuple-context/types/txt
1772+/* tok-503 %txt /tests/golden/types-recursive-branch/tokens/txt
1773−/* src-504 %jibb /tests/golden/types-tuple-context-nested/source/jibb
1773+/* tre-503 %txt /tests/golden/types-recursive-branch/tree/txt
1774−/* tok-504 %txt /tests/golden/types-tuple-context-nested/tokens/txt
1774+/* typ-503 %txt /tests/golden/types-recursive-branch/types/txt
1775−/* tre-504 %txt /tests/golden/types-tuple-context-nested/tree/txt
1775+/* src-504 %jibb /tests/golden/types-recursive-gate/source/jibb
1776−/* typ-504 %txt /tests/golden/types-tuple-context-nested/types/txt
1776+/* tok-504 %txt /tests/golden/types-recursive-gate/tokens/txt
1777−/* src-505 %jibb /tests/golden/types-union-alias/source/jibb
1777+/* tre-504 %txt /tests/golden/types-recursive-gate/tree/txt
1778−/* tok-505 %txt /tests/golden/types-union-alias/tokens/txt
1778+/* typ-504 %txt /tests/golden/types-recursive-gate/types/txt
1779−/* tre-505 %txt /tests/golden/types-union-alias/tree/txt
1779+/* src-505 %jibb /tests/golden/types-recursive-sample/source/jibb
1780−/* typ-505 %txt /tests/golden/types-union-alias/types/txt
1780+/* tok-505 %txt /tests/golden/types-recursive-sample/tokens/txt
1781−/* src-506 %jibb /tests/golden/types-union-branch-context/source/jibb
1781+/* tre-505 %txt /tests/golden/types-recursive-sample/tree/txt
1782−/* tok-506 %txt /tests/golden/types-union-branch-context/tokens/txt
1782+/* typ-505 %txt /tests/golden/types-recursive-sample/types/txt
1783−/* tre-506 %txt /tests/golden/types-union-branch-context/tree/txt
1783+/* src-506 %jibb /tests/golden/types-string-interpolation/source/jibb
1784−/* typ-506 %txt /tests/golden/types-union-branch-context/types/txt
1784+/* tok-506 %txt /tests/golden/types-string-interpolation/tokens/txt
1785−/* src-507 %jibb /tests/golden/types-union-branch-pending/source/jibb
1785+/* tre-506 %txt /tests/golden/types-string-interpolation/tree/txt
1786−/* tok-507 %txt /tests/golden/types-union-branch-pending/tokens/txt
1786+/* typ-506 %txt /tests/golden/types-string-interpolation/types/txt
1787−/* tre-507 %txt /tests/golden/types-union-branch-pending/tree/txt
1787+/* src-507 %jibb /tests/golden/types-tuple-context/source/jibb
1788−/* typ-507 %txt /tests/golden/types-union-branch-pending/types/txt
1788+/* tok-507 %txt /tests/golden/types-tuple-context/tokens/txt
1789−/* src-508 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1789+/* tre-507 %txt /tests/golden/types-tuple-context/tree/txt
1790−/* tok-508 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1790+/* typ-507 %txt /tests/golden/types-tuple-context/types/txt
1791−/* tre-508 %txt /tests/golden/types-union-constructor-shape/tree/txt
1791+/* src-508 %jibb /tests/golden/types-tuple-context-nested/source/jibb
1792−/* typ-508 %txt /tests/golden/types-union-constructor-shape/types/txt
1792+/* tok-508 %txt /tests/golden/types-tuple-context-nested/tokens/txt
1793−/* src-509 %jibb /tests/golden/types-union-context-flow/source/jibb
1793+/* tre-508 %txt /tests/golden/types-tuple-context-nested/tree/txt
1794−/* tok-509 %txt /tests/golden/types-union-context-flow/tokens/txt
1794+/* typ-508 %txt /tests/golden/types-tuple-context-nested/types/txt
1795−/* tre-509 %txt /tests/golden/types-union-context-flow/tree/txt
1795+/* src-509 %jibb /tests/golden/types-union-alias/source/jibb
1796−/* typ-509 %txt /tests/golden/types-union-context-flow/types/txt
1796+/* tok-509 %txt /tests/golden/types-union-alias/tokens/txt
1797−/* src-510 %jibb /tests/golden/types-union-finite/source/jibb
1797+/* tre-509 %txt /tests/golden/types-union-alias/tree/txt
1798−/* tok-510 %txt /tests/golden/types-union-finite/tokens/txt
1798+/* typ-509 %txt /tests/golden/types-union-alias/types/txt
1799−/* tre-510 %txt /tests/golden/types-union-finite/tree/txt
1799+/* src-510 %jibb /tests/golden/types-union-branch-context/source/jibb
1800−/* typ-510 %txt /tests/golden/types-union-finite/types/txt
1800+/* tok-510 %txt /tests/golden/types-union-branch-context/tokens/txt
1801−/* src-511 %jibb /tests/golden/types-union-finite-generic/source/jibb
1801+/* tre-510 %txt /tests/golden/types-union-branch-context/tree/txt
1802−/* tok-511 %txt /tests/golden/types-union-finite-generic/tokens/txt
1802+/* typ-510 %txt /tests/golden/types-union-branch-context/types/txt
1803−/* tre-511 %txt /tests/golden/types-union-finite-generic/tree/txt
1803+/* src-511 %jibb /tests/golden/types-union-branch-pending/source/jibb
1804−/* typ-511 %txt /tests/golden/types-union-finite-generic/types/txt
1804+/* tok-511 %txt /tests/golden/types-union-branch-pending/tokens/txt
1805−/* src-512 %jibb /tests/golden/types-union-finite-limit/source/jibb
1805+/* tre-511 %txt /tests/golden/types-union-branch-pending/tree/txt
1806−/* tok-512 %txt /tests/golden/types-union-finite-limit/tokens/txt
1806+/* typ-511 %txt /tests/golden/types-union-branch-pending/types/txt
1807−/* tre-512 %txt /tests/golden/types-union-finite-limit/tree/txt
1807+/* src-512 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1808−/* typ-512 %txt /tests/golden/types-union-finite-limit/types/txt
1808+/* tok-512 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1809−/* src-513 %jibb /tests/golden/types-union-import/source/jibb
1809+/* tre-512 %txt /tests/golden/types-union-constructor-shape/tree/txt
1810−/* tok-513 %txt /tests/golden/types-union-import/tokens/txt
1810+/* typ-512 %txt /tests/golden/types-union-constructor-shape/types/txt
1811−/* tre-513 %txt /tests/golden/types-union-import/tree/txt
1811+/* src-513 %jibb /tests/golden/types-union-context-flow/source/jibb
1812−/* mod-513-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1812+/* tok-513 %txt /tests/golden/types-union-context-flow/tokens/txt
1813−/* typ-513 %txt /tests/golden/types-union-import/types/txt
1813+/* tre-513 %txt /tests/golden/types-union-context-flow/tree/txt
1814−/* mtre-513 %txt /tests/golden/types-union-import/module-trees/txt
1814+/* typ-513 %txt /tests/golden/types-union-context-flow/types/txt
1815−/* src-514 %jibb /tests/golden/types-union-local-pending/source/jibb
1815+/* src-514 %jibb /tests/golden/types-union-finite/source/jibb
1816−/* tok-514 %txt /tests/golden/types-union-local-pending/tokens/txt
1816+/* tok-514 %txt /tests/golden/types-union-finite/tokens/txt
1817−/* tre-514 %txt /tests/golden/types-union-local-pending/tree/txt
1817+/* tre-514 %txt /tests/golden/types-union-finite/tree/txt
1818−/* typ-514 %txt /tests/golden/types-union-local-pending/types/txt
1818+/* typ-514 %txt /tests/golden/types-union-finite/types/txt
1819−/* src-515 %jibb /tests/golden/types-union-overlap/source/jibb
1819+/* src-515 %jibb /tests/golden/types-union-finite-generic/source/jibb
1820−/* tok-515 %txt /tests/golden/types-union-overlap/tokens/txt
1820+/* tok-515 %txt /tests/golden/types-union-finite-generic/tokens/txt
1821−/* tre-515 %txt /tests/golden/types-union-overlap/tree/txt
1821+/* tre-515 %txt /tests/golden/types-union-finite-generic/tree/txt
1822−/* typ-515 %txt /tests/golden/types-union-overlap/types/txt
1822+/* typ-515 %txt /tests/golden/types-union-finite-generic/types/txt
1823−/* src-516 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1823+/* src-516 %jibb /tests/golden/types-union-finite-limit/source/jibb
1824−/* tok-516 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1824+/* tok-516 %txt /tests/golden/types-union-finite-limit/tokens/txt
1825−/* tre-516 %txt /tests/golden/types-union-overlap-nested/tree/txt
1825+/* tre-516 %txt /tests/golden/types-union-finite-limit/tree/txt
1826−/* typ-516 %txt /tests/golden/types-union-overlap-nested/types/txt
1826+/* typ-516 %txt /tests/golden/types-union-finite-limit/types/txt
1827−/* src-517 %jibb /tests/golden/types-union-patterns/source/jibb
1827+/* src-517 %jibb /tests/golden/types-union-import/source/jibb
1828−/* tok-517 %txt /tests/golden/types-union-patterns/tokens/txt
1828+/* tok-517 %txt /tests/golden/types-union-import/tokens/txt
1829−/* tre-517 %txt /tests/golden/types-union-patterns/tree/txt
1829+/* tre-517 %txt /tests/golden/types-union-import/tree/txt
1830−/* typ-517 %txt /tests/golden/types-union-patterns/types/txt
1830+/* mod-517-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1831−/* src-518 %jibb /tests/golden/types-union-patterns-generic/source/jibb
1831+/* typ-517 %txt /tests/golden/types-union-import/types/txt
1832−/* tok-518 %txt /tests/golden/types-union-patterns-generic/tokens/txt
1832+/* mtre-517 %txt /tests/golden/types-union-import/module-trees/txt
1833−/* tre-518 %txt /tests/golden/types-union-patterns-generic/tree/txt
1833+/* src-518 %jibb /tests/golden/types-union-local-pending/source/jibb
1834−/* typ-518 %txt /tests/golden/types-union-patterns-generic/types/txt
1834+/* tok-518 %txt /tests/golden/types-union-local-pending/tokens/txt
1835−/* src-519 %jibb /tests/golden/types-union-patterns-import/source/jibb
1835+/* tre-518 %txt /tests/golden/types-union-local-pending/tree/txt
1836−/* tok-519 %txt /tests/golden/types-union-patterns-import/tokens/txt
1836+/* typ-518 %txt /tests/golden/types-union-local-pending/types/txt
1837−/* tre-519 %txt /tests/golden/types-union-patterns-import/tree/txt
1837+/* src-519 %jibb /tests/golden/types-union-overlap/source/jibb
1838−/* mod-519-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
1838+/* tok-519 %txt /tests/golden/types-union-overlap/tokens/txt
1839−/* typ-519 %txt /tests/golden/types-union-patterns-import/types/txt
1839+/* tre-519 %txt /tests/golden/types-union-overlap/tree/txt
1840−/* mtre-519 %txt /tests/golden/types-union-patterns-import/module-trees/txt
1840+/* typ-519 %txt /tests/golden/types-union-overlap/types/txt
1841−/* src-520 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1841+/* src-520 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1842−/* tok-520 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1842+/* tok-520 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1843−/* tre-520 %txt /tests/golden/types-union-phantom-generic/tree/txt
1843+/* tre-520 %txt /tests/golden/types-union-overlap-nested/tree/txt
1844−/* typ-520 %txt /tests/golden/types-union-phantom-generic/types/txt
1844+/* typ-520 %txt /tests/golden/types-union-overlap-nested/types/txt
1845−/* src-521 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1845+/* src-521 %jibb /tests/golden/types-union-patterns/source/jibb
1846−/* tok-521 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1846+/* tok-521 %txt /tests/golden/types-union-patterns/tokens/txt
1847−/* tre-521 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1847+/* tre-521 %txt /tests/golden/types-union-patterns/tree/txt
1848−/* mod-521-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1848+/* typ-521 %txt /tests/golden/types-union-patterns/types/txt
1849−/* typ-521 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1849+/* src-522 %jibb /tests/golden/types-union-patterns-generic/source/jibb
1850−/* mtre-521 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1850+/* tok-522 %txt /tests/golden/types-union-patterns-generic/tokens/txt
1851−/* src-522 %jibb /tests/golden/types-union-print-distinct/source/jibb
1851+/* tre-522 %txt /tests/golden/types-union-patterns-generic/tree/txt
1852−/* tok-522 %txt /tests/golden/types-union-print-distinct/tokens/txt
1852+/* typ-522 %txt /tests/golden/types-union-patterns-generic/types/txt
1853−/* tre-522 %txt /tests/golden/types-union-print-distinct/tree/txt
1853+/* src-523 %jibb /tests/golden/types-union-patterns-import/source/jibb
1854−/* mod-522-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1854+/* tok-523 %txt /tests/golden/types-union-patterns-import/tokens/txt
1855−/* mod-522-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1855+/* tre-523 %txt /tests/golden/types-union-patterns-import/tree/txt
1856−/* mod-522-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1856+/* mod-523-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
1857−/* typ-522 %txt /tests/golden/types-union-print-distinct/types/txt
1857+/* typ-523 %txt /tests/golden/types-union-patterns-import/types/txt
1858−/* mtre-522 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1858+/* mtre-523 %txt /tests/golden/types-union-patterns-import/module-trees/txt
1859−/* src-523 %jibb /tests/golden/types-union-print-escape/source/jibb
1859+/* src-524 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1860−/* tok-523 %txt /tests/golden/types-union-print-escape/tokens/txt
1860+/* tok-524 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1861−/* tre-523 %txt /tests/golden/types-union-print-escape/tree/txt
1861+/* tre-524 %txt /tests/golden/types-union-phantom-generic/tree/txt
1862−/* typ-523 %txt /tests/golden/types-union-print-escape/types/txt
1862+/* typ-524 %txt /tests/golden/types-union-phantom-generic/types/txt
1863−/* src-524 %jibb /tests/golden/types-union-print-local/source/jibb
1863+/* src-525 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1864−/* tok-524 %txt /tests/golden/types-union-print-local/tokens/txt
1864+/* tok-525 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1865−/* tre-524 %txt /tests/golden/types-union-print-local/tree/txt
1865+/* tre-525 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1866−/* typ-524 %txt /tests/golden/types-union-print-local/types/txt
1866+/* mod-525-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1867−/* src-525 %jibb /tests/golden/types-union-print-nested/source/jibb
1867+/* typ-525 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1868−/* tok-525 %txt /tests/golden/types-union-print-nested/tokens/txt
1868+/* mtre-525 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1869−/* tre-525 %txt /tests/golden/types-union-print-nested/tree/txt
1869+/* src-526 %jibb /tests/golden/types-union-print-distinct/source/jibb
1870−/* typ-525 %txt /tests/golden/types-union-print-nested/types/txt
1870+/* tok-526 %txt /tests/golden/types-union-print-distinct/tokens/txt
1871−/* src-526 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1871+/* tre-526 %txt /tests/golden/types-union-print-distinct/tree/txt
1872−/* tok-526 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1872+/* mod-526-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1873−/* tre-526 %txt /tests/golden/types-union-print-same-origin/tree/txt
1873+/* mod-526-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1874−/* mod-526-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1874+/* mod-526-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1875−/* typ-526 %txt /tests/golden/types-union-print-same-origin/types/txt
1875+/* typ-526 %txt /tests/golden/types-union-print-distinct/types/txt
1876−/* mtre-526 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1876+/* mtre-526 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1877−/* src-527 %jibb /tests/golden/types-union-print-transitive/source/jibb
1877+/* src-527 %jibb /tests/golden/types-union-print-escape/source/jibb
1878−/* tok-527 %txt /tests/golden/types-union-print-transitive/tokens/txt
1878+/* tok-527 %txt /tests/golden/types-union-print-escape/tokens/txt
1879−/* tre-527 %txt /tests/golden/types-union-print-transitive/tree/txt
1879+/* tre-527 %txt /tests/golden/types-union-print-escape/tree/txt
1880−/* mod-527-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1880+/* typ-527 %txt /tests/golden/types-union-print-escape/types/txt
1881−/* mod-527-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1881+/* src-528 %jibb /tests/golden/types-union-print-local/source/jibb
1882−/* typ-527 %txt /tests/golden/types-union-print-transitive/types/txt
1882+/* tok-528 %txt /tests/golden/types-union-print-local/tokens/txt
1883−/* mtre-527 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1883+/* tre-528 %txt /tests/golden/types-union-print-local/tree/txt
1884−/* src-528 %jibb /tests/golden/types-union-singleton/source/jibb
1884+/* typ-528 %txt /tests/golden/types-union-print-local/types/txt
1885−/* tok-528 %txt /tests/golden/types-union-singleton/tokens/txt
1885+/* src-529 %jibb /tests/golden/types-union-print-nested/source/jibb
1886−/* tre-528 %txt /tests/golden/types-union-singleton/tree/txt
1886+/* tok-529 %txt /tests/golden/types-union-print-nested/tokens/txt
1887−/* typ-528 %txt /tests/golden/types-union-singleton/types/txt
1887+/* tre-529 %txt /tests/golden/types-union-print-nested/tree/txt
1888−/* src-529 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1888+/* typ-529 %txt /tests/golden/types-union-print-nested/types/txt
1889−/* tok-529 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1889+/* src-530 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1890−/* tre-529 %txt /tests/golden/types-union-tag-atoms/tree/txt
1890+/* tok-530 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1891−/* typ-529 %txt /tests/golden/types-union-tag-atoms/types/txt
1891+/* tre-530 %txt /tests/golden/types-union-print-same-origin/tree/txt
1892−/* src-530 %jibb /tests/golden/types-union-tags/source/jibb
1892+/* mod-530-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1893−/* tok-530 %txt /tests/golden/types-union-tags/tokens/txt
1893+/* typ-530 %txt /tests/golden/types-union-print-same-origin/types/txt
1894−/* tre-530 %txt /tests/golden/types-union-tags/tree/txt
1894+/* mtre-530 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1895−/* typ-530 %txt /tests/golden/types-union-tags/types/txt
1895+/* src-531 %jibb /tests/golden/types-union-print-transitive/source/jibb
1896−/* src-531 %jibb /tests/golden/types-union-unresolved/source/jibb
1896+/* tok-531 %txt /tests/golden/types-union-print-transitive/tokens/txt
1897−/* tok-531 %txt /tests/golden/types-union-unresolved/tokens/txt
1897+/* tre-531 %txt /tests/golden/types-union-print-transitive/tree/txt
1898−/* tre-531 %txt /tests/golden/types-union-unresolved/tree/txt
1898+/* mod-531-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1899−/* typ-531 %txt /tests/golden/types-union-unresolved/types/txt
1899+/* mod-531-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1900−/* src-532 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1900+/* typ-531 %txt /tests/golden/types-union-print-transitive/types/txt
1901−/* tok-532 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1901+/* mtre-531 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1902−/* tre-532 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1902+/* src-532 %jibb /tests/golden/types-union-singleton/source/jibb
1903−/* typ-532 %txt /tests/golden/types-union-unresolved-flow/types/txt
1903+/* tok-532 %txt /tests/golden/types-union-singleton/tokens/txt
1904−/* src-533 %jibb /tests/golden/types-unit-construction/source/jibb
1904+/* tre-532 %txt /tests/golden/types-union-singleton/tree/txt
1905−/* tok-533 %txt /tests/golden/types-unit-construction/tokens/txt
1905+/* typ-532 %txt /tests/golden/types-union-singleton/types/txt
1906−/* tre-533 %txt /tests/golden/types-unit-construction/tree/txt
1906+/* src-533 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1907−/* typ-533 %txt /tests/golden/types-unit-construction/types/txt
1907+/* tok-533 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1908−/* src-534 %jibb /tests/golden/types-unit-context/source/jibb
1908+/* tre-533 %txt /tests/golden/types-union-tag-atoms/tree/txt
1909−/* tok-534 %txt /tests/golden/types-unit-context/tokens/txt
1909+/* typ-533 %txt /tests/golden/types-union-tag-atoms/types/txt
1910−/* tre-534 %txt /tests/golden/types-unit-context/tree/txt
1910+/* src-534 %jibb /tests/golden/types-union-tags/source/jibb
1911−/* typ-534 %txt /tests/golden/types-unit-context/types/txt
1911+/* tok-534 %txt /tests/golden/types-union-tags/tokens/txt
1912−/* src-535 %jibb /tests/golden/types-unit-patterns/source/jibb
1912+/* tre-534 %txt /tests/golden/types-union-tags/tree/txt
1913−/* tok-535 %txt /tests/golden/types-unit-patterns/tokens/txt
1913+/* typ-534 %txt /tests/golden/types-union-tags/types/txt
1914−/* tre-535 %txt /tests/golden/types-unit-patterns/tree/txt
1914+/* src-535 %jibb /tests/golden/types-union-unresolved/source/jibb
1915−/* typ-535 %txt /tests/golden/types-unit-patterns/types/txt
1915+/* tok-535 %txt /tests/golden/types-union-unresolved/tokens/txt
1916+/* tre-535 %txt /tests/golden/types-union-unresolved/tree/txt
1917+/* typ-535 %txt /tests/golden/types-union-unresolved/types/txt
1918+/* src-536 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1919+/* tok-536 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1920+/* tre-536 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1921+/* typ-536 %txt /tests/golden/types-union-unresolved-flow/types/txt
1922+/* src-537 %jibb /tests/golden/types-unit-construction/source/jibb
1923+/* tok-537 %txt /tests/golden/types-unit-construction/tokens/txt
1924+/* tre-537 %txt /tests/golden/types-unit-construction/tree/txt
1925+/* typ-537 %txt /tests/golden/types-unit-construction/types/txt
1926+/* src-538 %jibb /tests/golden/types-unit-context/source/jibb
1927+/* tok-538 %txt /tests/golden/types-unit-context/tokens/txt
1928+/* tre-538 %txt /tests/golden/types-unit-context/tree/txt
1929+/* typ-538 %txt /tests/golden/types-unit-context/types/txt
1930+/* src-539 %jibb /tests/golden/types-unit-patterns/source/jibb
1931+/* tok-539 %txt /tests/golden/types-unit-patterns/tokens/txt
1932+/* tre-539 %txt /tests/golden/types-unit-patterns/tree/txt
1933+/* typ-539 %txt /tests/golden/types-unit-patterns/types/txt
1916=/ prepared-prelude (prepare-prelude:jibb prelude-source)
1934=/ prepared-prelude (prepare-prelude:jibb prelude-source)
1917|%
1935|%
1918:: one arm per case
1936:: one arm per case
@@ -2799,194 +2817,202 @@
2799 (weld (check ~.types-local-capitals src-440 `tok-440 `tre-440) (check-module-types ~.types-local-capitals ~[%tests %golden ~.types-local-capitals %source %jibb] src-440 `typ-440 ~ ~ ~))
2817 (weld (check ~.types-local-capitals src-440 `tok-440 `tre-440) (check-module-types ~.types-local-capitals ~[%tests %golden ~.types-local-capitals %source %jibb] src-440 `typ-440 ~ ~ ~))
2800++ test-types-local-recursive
2818++ test-types-local-recursive
2801 (weld (check ~.types-local-recursive src-441 `tok-441 `tre-441) (check-module-types ~.types-local-recursive ~[%tests %golden ~.types-local-recursive %source %jibb] src-441 `typ-441 ~ ~ ~))
2819 (weld (check ~.types-local-recursive src-441 `tok-441 `tre-441) (check-module-types ~.types-local-recursive ~[%tests %golden ~.types-local-recursive %source %jibb] src-441 `typ-441 ~ ~ ~))
2820+++ test-types-missing-tag-context
2821+ (weld (check ~.types-missing-tag-context src-442 `tok-442 `tre-442) (check-module-types ~.types-missing-tag-context ~[%tests %golden ~.types-missing-tag-context %source %jibb] src-442 `typ-442 ~ ~ ~))
2822+++ test-types-missing-tag-imported
2823+ (weld (check ~.types-missing-tag-imported src-443 `tok-443 `tre-443) (check-import-types ~.types-missing-tag-imported ~[%tests %golden ~.types-missing-tag-imported %source %jibb] src-443 `typ-443 ~[[%fixture %choice imp-443-1] [%fixture %nested-choice imp-443-2]]))
2824+++ test-types-missing-tag-named
2825+ (weld (check ~.types-missing-tag-named src-444 `tok-444 `tre-444) (check-module-types ~.types-missing-tag-named ~[%tests %golden ~.types-missing-tag-named %source %jibb] src-444 `typ-444 ~ ~ ~))
2802++ test-types-module-fixtures
2826++ test-types-module-fixtures
2803− (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-442 `tok-442 `tre-442) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-442 `typ-442 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-442-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-442-2]])) (check-module-trees ~.types-module-fixtures `mtre-442 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-442-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-442-2]]))
2827+ (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-445 `tok-445 `tre-445) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-445 `typ-445 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-445-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-445-2]])) (check-module-trees ~.types-module-fixtures `mtre-445 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-445-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-445-2]]))
2804++ test-types-module-mixed
2828++ test-types-module-mixed
2805− (weld (weld (check ~.types-module-mixed src-443 `tok-443 `tre-443) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-443 `typ-443 ~[[%fixture %title imp-443-1]] ~[[%label mark-443-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-443-1]])) (check-module-trees ~.types-module-mixed `mtre-443 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-443-1]]))
2829+ (weld (weld (check ~.types-module-mixed src-446 `tok-446 `tre-446) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-446 `typ-446 ~[[%fixture %title imp-446-1]] ~[[%label mark-446-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-446-1]])) (check-module-trees ~.types-module-mixed `mtre-446 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-446-1]]))
2806++ test-types-multi-call
2830++ test-types-multi-call
2807− (weld (check ~.types-multi-call src-444 `tok-444 `tre-444) (check-module-types ~.types-multi-call ~[%tests %golden ~.types-multi-call %source %jibb] src-444 `typ-444 ~ ~ ~))
2831+ (weld (check ~.types-multi-call src-447 `tok-447 `tre-447) (check-module-types ~.types-multi-call ~[%tests %golden ~.types-multi-call %source %jibb] src-447 `typ-447 ~ ~ ~))
2808++ test-types-multi-import
2832++ test-types-multi-import
2809− (weld (weld (check ~.types-multi-import src-445 `tok-445 `tre-445) (check-module-types ~.types-multi-import ~[%tests %golden ~.types-multi-import %source %jibb] src-445 `typ-445 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-445-1]])) (check-module-trees ~.types-multi-import `mtre-445 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-445-1]]))
2833+ (weld (weld (check ~.types-multi-import src-448 `tok-448 `tre-448) (check-module-types ~.types-multi-import ~[%tests %golden ~.types-multi-import %source %jibb] src-448 `typ-448 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-448-1]])) (check-module-trees ~.types-multi-import `mtre-448 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-448-1]]))
2810++ test-types-null-context
2834++ test-types-null-context
2811− (weld (check ~.types-null-context src-446 `tok-446 `tre-446) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-446 `typ-446))
2835+ (weld (check ~.types-null-context src-449 `tok-449 `tre-449) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-449 `typ-449))
2812++ test-types-null-overlap
2836++ test-types-null-overlap
2813− (weld (check ~.types-null-overlap src-447 `tok-447 `tre-447) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-447 `typ-447))
2837+ (weld (check ~.types-null-overlap src-450 `tok-450 `tre-450) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-450 `typ-450))
2814++ test-types-null-unresolved
2838++ test-types-null-unresolved
2815− (weld (check ~.types-null-unresolved src-448 `tok-448 `tre-448) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-448 `typ-448))
2839+ (weld (check ~.types-null-unresolved src-451 `tok-451 `tre-451) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-451 `typ-451))
2816++ test-types-partial-apply
2840++ test-types-partial-apply
2817− (weld (check ~.types-partial-apply src-449 `tok-449 `tre-449) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-449 `typ-449))
2841+ (weld (check ~.types-partial-apply src-452 `tok-452 `tre-452) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-452 `typ-452))
2818++ test-types-partial-atom-alias
2842++ test-types-partial-atom-alias
2819− (weld (check ~.types-partial-atom-alias src-450 `tok-450 `tre-450) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-450 `typ-450))
2843+ (weld (check ~.types-partial-atom-alias src-453 `tok-453 `tre-453) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-453 `typ-453))
2820++ test-types-partial-atom-constraint
2844++ test-types-partial-atom-constraint
2821− (weld (check ~.types-partial-atom-constraint src-451 `tok-451 `tre-451) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-451 `typ-451))
2845+ (weld (check ~.types-partial-atom-constraint src-454 `tok-454 `tre-454) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-454 `typ-454))
2822++ test-types-partial-atom-widening
2846++ test-types-partial-atom-widening
2823− (weld (check ~.types-partial-atom-widening src-452 `tok-452 `tre-452) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-452 `typ-452))
2847+ (weld (check ~.types-partial-atom-widening src-455 `tok-455 `tre-455) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-455 `typ-455))
2824++ test-types-partial-aura
2848++ test-types-partial-aura
2825− (weld (check ~.types-partial-aura src-453 `tok-453 `tre-453) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-453 `typ-453))
2849+ (weld (check ~.types-partial-aura src-456 `tok-456 `tre-456) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-456 `typ-456))
2826++ test-types-partial-aura-family
2850++ test-types-partial-aura-family
2827− (weld (check ~.types-partial-aura-family src-454 `tok-454 `tre-454) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-454 `typ-454))
2851+ (weld (check ~.types-partial-aura-family src-457 `tok-457 `tre-457) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-457 `typ-457))
2828++ test-types-partial-aura-generalization
2852++ test-types-partial-aura-generalization
2829− (weld (check ~.types-partial-aura-generalization src-455 `tok-455 `tre-455) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-455 `typ-455))
2853+ (weld (check ~.types-partial-aura-generalization src-458 `tok-458 `tre-458) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-458 `typ-458))
2830++ test-types-partial-bare-atom
2854++ test-types-partial-bare-atom
2831− (weld (check ~.types-partial-bare-atom src-456 `tok-456 `tre-456) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-456 `typ-456))
2855+ (weld (check ~.types-partial-bare-atom src-459 `tok-459 `tre-459) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-459 `typ-459))
2832++ test-types-partial-branch-widening
2856++ test-types-partial-branch-widening
2833− (weld (check ~.types-partial-branch-widening src-457 `tok-457 `tre-457) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-457 `typ-457))
2857+ (weld (check ~.types-partial-branch-widening src-460 `tok-460 `tre-460) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-460 `typ-460))
2834++ test-types-partial-conflicting-sites
2858++ test-types-partial-conflicting-sites
2835− (weld (check ~.types-partial-conflicting-sites src-458 `tok-458 `tre-458) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-458 `typ-458))
2859+ (weld (check ~.types-partial-conflicting-sites src-461 `tok-461 `tre-461) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-461 `typ-461))
2836++ test-types-partial-decimal-default
2860++ test-types-partial-decimal-default
2837− (weld (check ~.types-partial-decimal-default src-459 `tok-459 `tre-459) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-459 `typ-459))
2861+ (weld (check ~.types-partial-decimal-default src-462 `tok-462 `tre-462) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-462 `typ-462))
2838++ test-types-partial-dependency-chain
2862++ test-types-partial-dependency-chain
2839− (weld (check ~.types-partial-dependency-chain src-460 `tok-460 `tre-460) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-460 `typ-460))
2863+ (weld (check ~.types-partial-dependency-chain src-463 `tok-463 `tre-463) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-463 `typ-463))
2840++ test-types-partial-explicit-capital
2864++ test-types-partial-explicit-capital
2841− (weld (check ~.types-partial-explicit-capital src-461 `tok-461 `tre-461) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-461 `typ-461))
2865+ (weld (check ~.types-partial-explicit-capital src-464 `tok-464 `tre-464) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-464 `typ-464))
2842++ test-types-partial-forward
2866++ test-types-partial-forward
2843− (weld (check ~.types-partial-forward src-462 `tok-462 `tre-462) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-462 `typ-462))
2867+ (weld (check ~.types-partial-forward src-465 `tok-465 `tre-465) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-465 `typ-465))
2844++ test-types-partial-generalization
2868++ test-types-partial-generalization
2845− (weld (check ~.types-partial-generalization src-463 `tok-463 `tre-463) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-463 `typ-463))
2869+ (weld (check ~.types-partial-generalization src-466 `tok-466 `tre-466) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-466 `typ-466))
2846++ test-types-partial-identity
2870++ test-types-partial-identity
2847− (weld (check ~.types-partial-identity src-464 `tok-464 `tre-464) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-464 `typ-464))
2871+ (weld (check ~.types-partial-identity src-467 `tok-467 `tre-467) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-467 `typ-467))
2848++ test-types-partial-independent-atoms
2872++ test-types-partial-independent-atoms
2849− (weld (check ~.types-partial-independent-atoms src-465 `tok-465 `tre-465) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-465 `typ-465))
2873+ (weld (check ~.types-partial-independent-atoms src-468 `tok-468 `tre-468) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-468 `typ-468))
2850++ test-types-partial-local-molds
2874++ test-types-partial-local-molds
2851− (weld (check ~.types-partial-local-molds src-466 `tok-466 `tre-466) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-466 `typ-466))
2875+ (weld (check ~.types-partial-local-molds src-469 `tok-469 `tre-469) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-469 `typ-469))
2852++ test-types-partial-locals
2876++ test-types-partial-locals
2853− (weld (check ~.types-partial-locals src-467 `tok-467 `tre-467) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-467 `typ-467))
2877+ (weld (check ~.types-partial-locals src-470 `tok-470 `tre-470) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-470 `typ-470))
2854++ test-types-partial-many-atom-constraints
2878++ test-types-partial-many-atom-constraints
2855− (weld (check ~.types-partial-many-atom-constraints src-468 `tok-468 `tre-468) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-468 `typ-468))
2879+ (weld (check ~.types-partial-many-atom-constraints src-471 `tok-471 `tre-471) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-471 `typ-471))
2856++ test-types-partial-mold-bare-aura
2880++ test-types-partial-mold-bare-aura
2857− (weld (check ~.types-partial-mold-bare-aura src-469 `tok-469 `tre-469) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-469 `typ-469))
2881+ (weld (check ~.types-partial-mold-bare-aura src-472 `tok-472 `tre-472) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-472 `typ-472))
2858++ test-types-partial-mold-composite
2882++ test-types-partial-mold-composite
2859− (weld (check ~.types-partial-mold-composite src-470 `tok-470 `tre-470) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-470 `typ-470))
2883+ (weld (check ~.types-partial-mold-composite src-473 `tok-473 `tre-473) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-473 `typ-473))
2860++ test-types-partial-mold-forward
2884++ test-types-partial-mold-forward
2861− (weld (check ~.types-partial-mold-forward src-471 `tok-471 `tre-471) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-471 `typ-471))
2885+ (weld (check ~.types-partial-mold-forward src-474 `tok-474 `tre-474) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-474 `typ-474))
2862++ test-types-partial-mold-recursive
2886++ test-types-partial-mold-recursive
2863− (weld (check ~.types-partial-mold-recursive src-472 `tok-472 `tre-472) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-472 `typ-472))
2887+ (weld (check ~.types-partial-mold-recursive src-475 `tok-475 `tre-475) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-475 `typ-475))
2864++ test-types-partial-occurs
2888++ test-types-partial-occurs
2865− (weld (check ~.types-partial-occurs src-473 `tok-473 `tre-473) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-473 `typ-473))
2889+ (weld (check ~.types-partial-occurs src-476 `tok-476 `tre-476) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-476 `typ-476))
2866++ test-types-partial-projection
2890++ test-types-partial-projection
2867− (weld (check ~.types-partial-projection src-474 `tok-474 `tre-474) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-474 `typ-474))
2891+ (weld (check ~.types-partial-projection src-477 `tok-477 `tre-477) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-477 `typ-477))
2868++ test-types-partial-shadow-global
2892++ test-types-partial-shadow-global
2869− (weld (check ~.types-partial-shadow-global src-475 `tok-475 `tre-475) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-475 `typ-475))
2893+ (weld (check ~.types-partial-shadow-global src-478 `tok-478 `tre-478) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-478 `typ-478))
2870++ test-types-partial-shared-tvar
2894++ test-types-partial-shared-tvar
2871− (weld (check ~.types-partial-shared-tvar src-476 `tok-476 `tre-476) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-476 `typ-476))
2895+ (weld (check ~.types-partial-shared-tvar src-479 `tok-479 `tre-479) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-479 `typ-479))
2872++ test-types-partial-union-cases
2896++ test-types-partial-union-cases
2873− (weld (check ~.types-partial-union-cases src-477 `tok-477 `tre-477) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-477 `typ-477))
2897+ (weld (check ~.types-partial-union-cases src-480 `tok-480 `tre-480) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-480 `typ-480))
2874++ test-types-partial-union-edges
2898++ test-types-partial-union-edges
2875− (weld (check ~.types-partial-union-edges src-478 `tok-478 `tre-478) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-478 `typ-478))
2899+ (weld (check ~.types-partial-union-edges src-481 `tok-481 `tre-481) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-481 `typ-481))
2876++ test-types-partial-unresolved-tag
2900++ test-types-partial-unresolved-tag
2877− (weld (check ~.types-partial-unresolved-tag src-479 `tok-479 `tre-479) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-479 `typ-479))
2901+ (weld (check ~.types-partial-unresolved-tag src-482 `tok-482 `tre-482) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-482 `typ-482))
2878++ test-types-prelude-direct
2902++ test-types-prelude-direct
2879− (weld (check ~.types-prelude-direct src-480 `tok-480 `tre-480) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-480 `typ-480 ~ ~ ~))
2903+ (weld (check ~.types-prelude-direct src-483 `tok-483 `tre-483) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-483 `typ-483 ~ ~ ~))
2880++ test-types-prelude-interface
2904++ test-types-prelude-interface
2881− (weld (weld (check ~.types-prelude-interface src-481 `tok-481 `tre-481) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-481 `typ-481 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-481-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-481-2]])) (check-module-trees ~.types-prelude-interface `mtre-481 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-481-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-481-2]]))
2905+ (weld (weld (check ~.types-prelude-interface src-484 `tok-484 `tre-484) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-484 `typ-484 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-484-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-484-2]])) (check-module-trees ~.types-prelude-interface `mtre-484 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-484-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-484-2]]))
2882++ test-types-prelude-list-functions
2906++ test-types-prelude-list-functions
2883− (weld (weld (check ~.types-prelude-list-functions src-482 `tok-482 `tre-482) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-482 `typ-482 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-482-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-482 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-482-1]]))
2907+ (weld (weld (check ~.types-prelude-list-functions src-485 `tok-485 `tre-485) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-485 `typ-485 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-485-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-485 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-485-1]]))
2908+++ test-types-prelude-unit-helpers
2909+ (weld (check ~.types-prelude-unit-helpers src-486 `tok-486 `tre-486) (check-module-types ~.types-prelude-unit-helpers ~[%tests %golden ~.types-prelude-unit-helpers %source %jibb] src-486 `typ-486 ~ ~ ~))
2884++ test-types-record-bound-variable
2910++ test-types-record-bound-variable
2885− (weld (check ~.types-record-bound-variable src-483 `tok-483 `tre-483) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-483 `typ-483))
2911+ (weld (check ~.types-record-bound-variable src-487 `tok-487 `tre-487) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-487 `typ-487))
2886++ test-types-record-cast-context
2912++ test-types-record-cast-context
2887− (weld (check ~.types-record-cast-context src-484 `tok-484 `tre-484) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-484 `typ-484 ~ ~ ~))
2913+ (weld (check ~.types-record-cast-context src-488 `tok-488 `tre-488) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-488 `typ-488 ~ ~ ~))
2888++ test-types-record-change
2914++ test-types-record-change
2889− (weld (check ~.types-record-change src-485 `tok-485 `tre-485) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-485 `typ-485 ~ ~ ~))
2915+ (weld (check ~.types-record-change src-489 `tok-489 `tre-489) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-489 `typ-489 ~ ~ ~))
2890++ test-types-record-change-generic
2916++ test-types-record-change-generic
2891− (weld (check ~.types-record-change-generic src-486 `tok-486 `tre-486) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-486 `typ-486 ~ ~ ~))
2917+ (weld (check ~.types-record-change-generic src-490 `tok-490 `tre-490) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-490 `typ-490 ~ ~ ~))
2892++ test-types-record-faces
2918++ test-types-record-faces
2893− (weld (check ~.types-record-faces src-487 `tok-487 `tre-487) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-487 `typ-487))
2919+ (weld (check ~.types-record-faces src-491 `tok-491 `tre-491) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-491 `typ-491))
2894++ test-types-record-import
2920++ test-types-record-import
2895− (weld (weld (check ~.types-record-import src-488 `tok-488 `tre-488) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-488 `typ-488 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-488-1]])) (check-module-trees ~.types-record-import `mtre-488 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-488-1]]))
2921+ (weld (weld (check ~.types-record-import src-492 `tok-492 `tre-492) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-492 `typ-492 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-492-1]])) (check-module-trees ~.types-record-import `mtre-492 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-492-1]]))
2896++ test-types-record-local-scheme
2922++ test-types-record-local-scheme
2897− (weld (check ~.types-record-local-scheme src-489 `tok-489 `tre-489) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-489 `typ-489))
2923+ (weld (check ~.types-record-local-scheme src-493 `tok-493 `tre-493) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-493 `typ-493))
2898++ test-types-record-nested
2924++ test-types-record-nested
2899− (weld (check ~.types-record-nested src-490 `tok-490 `tre-490) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-490 `typ-490))
2925+ (weld (check ~.types-record-nested src-494 `tok-494 `tre-494) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-494 `typ-494))
2900++ test-types-record-to-tuple
2926++ test-types-record-to-tuple
2901− (weld (check ~.types-record-to-tuple src-491 `tok-491 `tre-491) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-491 `typ-491))
2927+ (weld (check ~.types-record-to-tuple src-495 `tok-495 `tre-495) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-495 `typ-495))
2902++ test-types-recursion-scc-failures
2928++ test-types-recursion-scc-failures
2903− (weld (check ~.types-recursion-scc-failures src-492 `tok-492 `tre-492) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-492 `typ-492 ~ ~ ~))
2929+ (weld (check ~.types-recursion-scc-failures src-496 `tok-496 `tre-496) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-496 `typ-496 ~ ~ ~))
2904++ test-types-recursion-scc-groups
2930++ test-types-recursion-scc-groups
2905− (weld (check ~.types-recursion-scc-groups src-493 `tok-493 `tre-493) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-493 `typ-493 ~ ~ ~))
2931+ (weld (check ~.types-recursion-scc-groups src-497 `tok-497 `tre-497) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-497 `typ-497 ~ ~ ~))
2906++ test-types-recursion-scc-import
2932++ test-types-recursion-scc-import
2907− (weld (weld (check ~.types-recursion-scc-import src-494 `tok-494 `tre-494) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-494 `typ-494 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-494-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-494 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-494-1]]))
2933+ (weld (weld (check ~.types-recursion-scc-import src-498 `tok-498 `tre-498) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-498 `typ-498 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-498-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-498 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-498-1]]))
2908++ test-types-recursion-scc-import-bad
2934++ test-types-recursion-scc-import-bad
2909− (weld (weld (check ~.types-recursion-scc-import-bad src-495 `tok-495 `tre-495) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-495 `typ-495 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-495-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-495 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-495-1]]))
2935+ (weld (weld (check ~.types-recursion-scc-import-bad src-499 `tok-499 `tre-499) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-499 `typ-499 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-499-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-499 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-499-1]]))
2910++ test-types-recursion-scc-local
2936++ test-types-recursion-scc-local
2911− (weld (check ~.types-recursion-scc-local src-496 `tok-496 `tre-496) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-496 `typ-496 ~ ~ ~))
2937+ (weld (check ~.types-recursion-scc-local src-500 `tok-500 `tre-500) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-500 `typ-500 ~ ~ ~))
2912++ test-types-recursion-scc-order
2938++ test-types-recursion-scc-order
2913− (weld (check ~.types-recursion-scc-order src-497 `tok-497 `tre-497) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-497 `typ-497 ~ ~ ~))
2939+ (weld (check ~.types-recursion-scc-order src-501 `tok-501 `tre-501) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-501 `typ-501 ~ ~ ~))
2914++ test-types-recursion-scc-shadow
2940++ test-types-recursion-scc-shadow
2915− (weld (check ~.types-recursion-scc-shadow src-498 `tok-498 `tre-498) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-498 `typ-498 ~ ~ ~))
2941+ (weld (check ~.types-recursion-scc-shadow src-502 `tok-502 `tre-502) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-502 `typ-502 ~ ~ ~))
2916++ test-types-recursive-branch
2942++ test-types-recursive-branch
2917− (weld (check ~.types-recursive-branch src-499 `tok-499 `tre-499) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-499 `typ-499 ~ ~ ~))
2943+ (weld (check ~.types-recursive-branch src-503 `tok-503 `tre-503) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-503 `typ-503 ~ ~ ~))
2918++ test-types-recursive-gate
2944++ test-types-recursive-gate
2919− (weld (check ~.types-recursive-gate src-500 `tok-500 `tre-500) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-500 `typ-500))
2945+ (weld (check ~.types-recursive-gate src-504 `tok-504 `tre-504) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-504 `typ-504))
2920++ test-types-recursive-sample
2946++ test-types-recursive-sample
2921− (weld (check ~.types-recursive-sample src-501 `tok-501 `tre-501) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-501 `typ-501))
2947+ (weld (check ~.types-recursive-sample src-505 `tok-505 `tre-505) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-505 `typ-505))
2922++ test-types-string-interpolation
2948++ test-types-string-interpolation
2923− (weld (check ~.types-string-interpolation src-502 `tok-502 `tre-502) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-502 `typ-502 ~ ~ ~))
2949+ (weld (check ~.types-string-interpolation src-506 `tok-506 `tre-506) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-506 `typ-506 ~ ~ ~))
2924++ test-types-tuple-context
2950++ test-types-tuple-context
2925− (weld (check ~.types-tuple-context src-503 `tok-503 `tre-503) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-503 `typ-503 ~ ~ ~))
2951+ (weld (check ~.types-tuple-context src-507 `tok-507 `tre-507) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-507 `typ-507 ~ ~ ~))
2926++ test-types-tuple-context-nested
2952++ test-types-tuple-context-nested
2927− (weld (check ~.types-tuple-context-nested src-504 `tok-504 `tre-504) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-504 `typ-504 ~ ~ ~))
2953+ (weld (check ~.types-tuple-context-nested src-508 `tok-508 `tre-508) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-508 `typ-508 ~ ~ ~))
2928++ test-types-union-alias
2954++ test-types-union-alias
2929− (weld (check ~.types-union-alias src-505 `tok-505 `tre-505) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-505 `typ-505))
2955+ (weld (check ~.types-union-alias src-509 `tok-509 `tre-509) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-509 `typ-509))
2930++ test-types-union-branch-context
2956++ test-types-union-branch-context
2931− (weld (check ~.types-union-branch-context src-506 `tok-506 `tre-506) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-506 `typ-506))
2957+ (weld (check ~.types-union-branch-context src-510 `tok-510 `tre-510) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-510 `typ-510))
2932++ test-types-union-branch-pending
2958++ test-types-union-branch-pending
2933− (weld (check ~.types-union-branch-pending src-507 `tok-507 `tre-507) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-507 `typ-507))
2959+ (weld (check ~.types-union-branch-pending src-511 `tok-511 `tre-511) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-511 `typ-511))
2934++ test-types-union-constructor-shape
2960++ test-types-union-constructor-shape
2935− (weld (check ~.types-union-constructor-shape src-508 `tok-508 `tre-508) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-508 `typ-508))
2961+ (weld (check ~.types-union-constructor-shape src-512 `tok-512 `tre-512) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-512 `typ-512))
2936++ test-types-union-context-flow
2962++ test-types-union-context-flow
2937− (weld (check ~.types-union-context-flow src-509 `tok-509 `tre-509) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-509 `typ-509))
2963+ (weld (check ~.types-union-context-flow src-513 `tok-513 `tre-513) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-513 `typ-513))
2938++ test-types-union-finite
2964++ test-types-union-finite
2939− (weld (check ~.types-union-finite src-510 `tok-510 `tre-510) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-510 `typ-510 ~ ~ ~))
2965+ (weld (check ~.types-union-finite src-514 `tok-514 `tre-514) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-514 `typ-514 ~ ~ ~))
2940++ test-types-union-finite-generic
2966++ test-types-union-finite-generic
2941− (weld (check ~.types-union-finite-generic src-511 `tok-511 `tre-511) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-511 `typ-511 ~ ~ ~))
2967+ (weld (check ~.types-union-finite-generic src-515 `tok-515 `tre-515) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-515 `typ-515 ~ ~ ~))
2942++ test-types-union-finite-limit
2968++ test-types-union-finite-limit
2943− (weld (check ~.types-union-finite-limit src-512 `tok-512 `tre-512) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-512 `typ-512 ~ ~ ~))
2969+ (weld (check ~.types-union-finite-limit src-516 `tok-516 `tre-516) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-516 `typ-516 ~ ~ ~))
2944++ test-types-union-import
2970++ test-types-union-import
2945− (weld (weld (check ~.types-union-import src-513 `tok-513 `tre-513) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-513 `typ-513 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-513-1]])) (check-module-trees ~.types-union-import `mtre-513 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-513-1]]))
2971+ (weld (weld (check ~.types-union-import src-517 `tok-517 `tre-517) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-517 `typ-517 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-517-1]])) (check-module-trees ~.types-union-import `mtre-517 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-517-1]]))
2946++ test-types-union-local-pending
2972++ test-types-union-local-pending
2947− (weld (check ~.types-union-local-pending src-514 `tok-514 `tre-514) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-514 `typ-514))
2973+ (weld (check ~.types-union-local-pending src-518 `tok-518 `tre-518) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-518 `typ-518))
2948++ test-types-union-overlap
2974++ test-types-union-overlap
2949− (weld (check ~.types-union-overlap src-515 `tok-515 `tre-515) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-515 `typ-515))
2975+ (weld (check ~.types-union-overlap src-519 `tok-519 `tre-519) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-519 `typ-519))
2950++ test-types-union-overlap-nested
2976++ test-types-union-overlap-nested
2951− (weld (check ~.types-union-overlap-nested src-516 `tok-516 `tre-516) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-516 `typ-516))
2977+ (weld (check ~.types-union-overlap-nested src-520 `tok-520 `tre-520) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-520 `typ-520))
2952++ test-types-union-patterns
2978++ test-types-union-patterns
2953− (weld (check ~.types-union-patterns src-517 `tok-517 `tre-517) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-517 `typ-517 ~ ~ ~))
2979+ (weld (check ~.types-union-patterns src-521 `tok-521 `tre-521) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-521 `typ-521 ~ ~ ~))
2954++ test-types-union-patterns-generic
2980++ test-types-union-patterns-generic
2955− (weld (check ~.types-union-patterns-generic src-518 `tok-518 `tre-518) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-518 `typ-518 ~ ~ ~))
2981+ (weld (check ~.types-union-patterns-generic src-522 `tok-522 `tre-522) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-522 `typ-522 ~ ~ ~))
2956++ test-types-union-patterns-import
2982++ test-types-union-patterns-import
2957− (weld (weld (check ~.types-union-patterns-import src-519 `tok-519 `tre-519) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-519 `typ-519 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-519-1]])) (check-module-trees ~.types-union-patterns-import `mtre-519 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-519-1]]))
2983+ (weld (weld (check ~.types-union-patterns-import src-523 `tok-523 `tre-523) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-523 `typ-523 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-523-1]])) (check-module-trees ~.types-union-patterns-import `mtre-523 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-523-1]]))
2958++ test-types-union-phantom-generic
2984++ test-types-union-phantom-generic
2959− (weld (check ~.types-union-phantom-generic src-520 `tok-520 `tre-520) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-520 `typ-520))
2985+ (weld (check ~.types-union-phantom-generic src-524 `tok-524 `tre-524) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-524 `typ-524))
2960++ test-types-union-print-cross-namespace
2986++ test-types-union-print-cross-namespace
2961− (weld (weld (check ~.types-union-print-cross-namespace src-521 `tok-521 `tre-521) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-521 `typ-521 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-521-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-521 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-521-1]]))
2987+ (weld (weld (check ~.types-union-print-cross-namespace src-525 `tok-525 `tre-525) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-525 `typ-525 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-525-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-525 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-525-1]]))
2962++ test-types-union-print-distinct
2988++ test-types-union-print-distinct
2963− (weld (weld (check ~.types-union-print-distinct src-522 `tok-522 `tre-522) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-522 `typ-522 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-522-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-522-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-522-3]])) (check-module-trees ~.types-union-print-distinct `mtre-522 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-522-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-522-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-522-3]]))
2989+ (weld (weld (check ~.types-union-print-distinct src-526 `tok-526 `tre-526) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-526 `typ-526 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-526-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-526-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-526-3]])) (check-module-trees ~.types-union-print-distinct `mtre-526 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-526-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-526-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-526-3]]))
2964++ test-types-union-print-escape
2990++ test-types-union-print-escape
2965− (weld (check ~.types-union-print-escape src-523 `tok-523 `tre-523) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-523 `typ-523))
2991+ (weld (check ~.types-union-print-escape src-527 `tok-527 `tre-527) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-527 `typ-527))
2966++ test-types-union-print-local
2992++ test-types-union-print-local
2967− (weld (check ~.types-union-print-local src-524 `tok-524 `tre-524) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-524 `typ-524))
2993+ (weld (check ~.types-union-print-local src-528 `tok-528 `tre-528) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-528 `typ-528))
2968++ test-types-union-print-nested
2994++ test-types-union-print-nested
2969− (weld (check ~.types-union-print-nested src-525 `tok-525 `tre-525) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-525 `typ-525))
2995+ (weld (check ~.types-union-print-nested src-529 `tok-529 `tre-529) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-529 `typ-529))
2970++ test-types-union-print-same-origin
2996++ test-types-union-print-same-origin
2971− (weld (weld (check ~.types-union-print-same-origin src-526 `tok-526 `tre-526) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-526 `typ-526 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-526-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-526 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-526-1]]))
2997+ (weld (weld (check ~.types-union-print-same-origin src-530 `tok-530 `tre-530) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-530 `typ-530 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-530-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-530 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-530-1]]))
2972++ test-types-union-print-transitive
2998++ test-types-union-print-transitive
2973− (weld (weld (check ~.types-union-print-transitive src-527 `tok-527 `tre-527) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-527 `typ-527 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-527-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-527-2]])) (check-module-trees ~.types-union-print-transitive `mtre-527 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-527-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-527-2]]))
2999+ (weld (weld (check ~.types-union-print-transitive src-531 `tok-531 `tre-531) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-531 `typ-531 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-531-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-531-2]])) (check-module-trees ~.types-union-print-transitive `mtre-531 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-531-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-531-2]]))
2974++ test-types-union-singleton
3000++ test-types-union-singleton
2975− (weld (check ~.types-union-singleton src-528 `tok-528 `tre-528) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-528 `typ-528))
3001+ (weld (check ~.types-union-singleton src-532 `tok-532 `tre-532) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-532 `typ-532))
2976++ test-types-union-tag-atoms
3002++ test-types-union-tag-atoms
2977− (weld (check ~.types-union-tag-atoms src-529 `tok-529 `tre-529) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-529 `typ-529))
3003+ (weld (check ~.types-union-tag-atoms src-533 `tok-533 `tre-533) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-533 `typ-533))
2978++ test-types-union-tags
3004++ test-types-union-tags
2979− (weld (check ~.types-union-tags src-530 `tok-530 `tre-530) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-530 `typ-530))
3005+ (weld (check ~.types-union-tags src-534 `tok-534 `tre-534) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-534 `typ-534))
2980++ test-types-union-unresolved
3006++ test-types-union-unresolved
2981− (weld (check ~.types-union-unresolved src-531 `tok-531 `tre-531) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-531 `typ-531))
3007+ (weld (check ~.types-union-unresolved src-535 `tok-535 `tre-535) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-535 `typ-535))
2982++ test-types-union-unresolved-flow
3008++ test-types-union-unresolved-flow
2983− (weld (check ~.types-union-unresolved-flow src-532 `tok-532 `tre-532) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-532 `typ-532))
3009+ (weld (check ~.types-union-unresolved-flow src-536 `tok-536 `tre-536) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-536 `typ-536))
2984++ test-types-unit-construction
3010++ test-types-unit-construction
2985− (weld (check ~.types-unit-construction src-533 `tok-533 `tre-533) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-533 `typ-533 ~ ~ ~))
3011+ (weld (check ~.types-unit-construction src-537 `tok-537 `tre-537) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-537 `typ-537 ~ ~ ~))
2986++ test-types-unit-context
3012++ test-types-unit-context
2987− (weld (check ~.types-unit-context src-534 `tok-534 `tre-534) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-534 `typ-534 ~ ~ ~))
3013+ (weld (check ~.types-unit-context src-538 `tok-538 `tre-538) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-538 `typ-538 ~ ~ ~))
2988++ test-types-unit-patterns
3014++ test-types-unit-patterns
2989− (weld (check ~.types-unit-patterns src-535 `tok-535 `tre-535) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-535 `typ-535))
3015+ (weld (check ~.types-unit-patterns src-539 `tok-539 `tre-539) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-539 `typ-539))
2990::
3016::
2991:: +check: run golden:jibb on a case and compare both outputs
3017:: +check: run golden:jibb on a case and compare both outputs
2992::
3018::
tests/type-import/expected.txt+3−3
@@ -10,11 +10,11 @@ partial inference; module not checked
10++ duplicate: sample mold is not supported by partial inference
10++ duplicate: sample mold is not supported by partial inference
11++ undeclared: sample mold is not supported by partial inference
11++ undeclared: sample mold is not supported by partial inference
12++ yes: %no %yes
12++ yes: %no %yes
13−++ absent: cast mold and expression type do not unify
13+++ absent: union %no %yes has no case `%other`
14−/test.jibb:14:14: cast mold
14+/test.jibb:14:14: expected union
15++ absent ^- choice.fixture %other
15++ absent ^- choice.fixture %other
16 ^
16 ^
17−/test.jibb:14:29: expression
17+/test.jibb:14:29: tag
18++ absent ^- choice.fixture %other
18++ absent ^- choice.fixture %other
19 ^
19 ^
20++ status: $-([status=(%deny %approve) text=@t] (%deny %approve))
20++ status: $-([status=(%deny %approve) text=@t] (%deny %approve))