on master help sign in
Infer local recursive groups and uncontextualized lists
commit67f900e507539fd9f75b062d049b5d5e514e3393 authoriko <mail@iko.soy> dateSat 31 Oct 2026, 01:47 (7 hours ago) parentef2ea71
33 files changed+2563−590
docs/compiler.md+2−2 docs/status.md+7−6 jibb-dev/lib/jibb.hoon+65−9 tests/golden/types-list-open-constraints/about.txt+4 tests/golden/types-list-open-constraints/modules.txt+1 tests/golden/types-list-open-constraints/source.jibb+19 tests/golden/types-list-open-constraints/tokens.txt+178 tests/golden/types-list-open-constraints/tree.txt+68 tests/golden/types-list-open-constraints/types.txt+30 tests/golden/types-list-open/about.txt+4 tests/golden/types-list-open/modules.txt+1 tests/golden/types-list-open/source.jibb+13 tests/golden/types-list-open/tokens.txt+94 tests/golden/types-list-open/tree.txt+36 tests/golden/types-list-open/types.txt+18 tests/golden/types-local-recursive/about.txt+1−1 tests/golden/types-local-recursive/types.txt+1−1 tests/golden/types-local-scc-adversarial/about.txt+4 tests/golden/types-local-scc-adversarial/modules.txt+1 tests/golden/types-local-scc-adversarial/source.jibb+54 tests/golden/types-local-scc-adversarial/tokens.txt+404 tests/golden/types-local-scc-adversarial/tree.txt+204 tests/golden/types-local-scc-adversarial/types.txt+17 tests/golden/types-local-scc/about.txt+4 tests/golden/types-local-scc/modules.txt+1 tests/golden/types-local-scc/source.jibb+58 tests/golden/types-local-scc/tokens.txt+434 tests/golden/types-local-scc/tree.txt+214 tests/golden/types-local-scc/types.txt+12 tests/golden/types-multi-call/types.txt+1−1 tests/lib/jibb-module-scope.hoon+12−1 tests/lib/jibb.hoon+593−569 tests/type-module-scope/expected.txt+8
docs/compiler.md+2−2
@@ -56,7 +56,7 @@ The core is split into chapters, `+| %name`, in this order:
5656| `%span-check` | `+check-spans`, which `+golden` runs on every tree, and `+check-spans-test` |
5757| `%type-inference` | The initial inference fragment and its unification helpers; not yet a module type checker |
5858
59−The inference fragment supports fixed auras, unrestricted `@`, one-way widening into it and toward aura-family ancestors, generic variables and gates, faced and unfaced cells, cell sample binders, known record field reads, a cell pattern of two or more binders, a complete two-arm loobean branch, a complete two-arm unit-shaped branch, closed local mold aliases and acyclic forward value references. For a supported single syntactic top-level recursive gate, the checker infers the sample first and uses that exact sample, including its field faces, in a monomorphic self placeholder. The completed body must unify with the placeholder before the gate is generalized; incompatible recursive arguments can report the call and argument sites. Uses of generalized top-level definitions instantiate their schemes independently. For a complete loobean branch with one direct self-call arm, the checker can infer the other arm independently and use its closed, fully resolved type to seed the recursive result; it then checks the whole body. Open or pending base types do not seed the result, and other branch shapes still depend on the existing partial inference. A supported single local recursive gate also uses a monomorphic self reference while its body is checked, then generalizes variables free of its enclosing environment; captured variables remain shared. Acyclic local value definitions can refer forward. 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. Acyclic simple local mold aliases can also refer forward, and are scoped to the body, not its gate's sample. Nonrecursive generic aliases of supported molds can be applied at exact arity, including locally and through library interfaces; their parameters are lexical. Closed, provably disjoint nonrecursive unions and tagged single-case molds support contextual term values, `~` and `|=%tag` constructors. A null-headed cell can match a union case but does not supply a `|=%$` constructor; unresolved tags and nulls remain pending, with distinct partial-inference diagnostics. Nonrecursive top-level generic union molds with provably disjoint cases also support contextual tags and constructors at exact arity; their arguments are retained through generalization and supported library interfaces. Nonrecursive generic aliases can reorder, repeat or omit parameters while preserving a supported union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do mutually recursive local groups and recursive molds. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. A differing-variable face constraint remains unsupported. When inference forces two distinct explicitly written capitals equal, it reports both source sites; forcing a capital to a concrete type remains unsupported in this fragment. It can infer and generalize atom constraints arising from explicit capitals or bare sample binders, preserve those constraints through aliases, instantiate them independently, and print multiple constraints. Unresolved decimal variables default to `@ud` for inferred types without gates; defaulting inside gate types and other constraint cases remain incomplete. It does not yet check a module, complete imports, general patterns, general deferred constraints, recursive molds, dependency cycles or most errors with both conflicting excerpts. Definite cast and call mismatches, incompatible branches and overlapping union cases report both sites and excerpts. Concrete branch results can join at an explicitly present parent aura or `@`. Some known tuple and record positions acquire matching faces; other variable-dependent face merges, general branch tag context and ambiguous call-result propagation remain unsupported; function compatibility involving nested `@` and variable-dependent joins remain unsupported except for equal types. For a single recursive gate outside a group, the reporting path repeats inference rather than instantiating its generalized interface inside its own body; a group report uses its stored schemes. This adds work, and the current dependency pass can take quadratic time on long forward chains; the milestone's speed target remains unverified. A separate conservative pass reports unions whose cases are provably disjoint or overlapping and leaves other cases unresolved; it does not claim the mold is checked. Unsupported forms are reported as such, and the partial output says the module has not been checked.
59+The inference fragment supports fixed auras, unrestricted `@`, one-way widening into it and toward aura-family ancestors, generic variables and gates, faced and unfaced cells, cell sample binders, known record field reads, a cell pattern of two or more binders, a complete two-arm loobean branch, a complete two-arm unit-shaped branch, closed local mold aliases and acyclic forward value references. For a supported single syntactic top-level recursive gate, the checker infers the sample first and uses that exact sample, including its field faces, in a monomorphic self placeholder. The completed body must unify with the placeholder before the gate is generalized; incompatible recursive arguments can report the call and argument sites. Uses of generalized top-level definitions instantiate their schemes independently. For a complete loobean branch with one direct self-call arm, the checker can infer the other arm independently and use its closed, fully resolved type to seed the recursive result; it then checks the whole body. Open or pending base types do not seed the result, and other branch shapes still depend on the existing partial inference. A supported single local recursive gate also uses a monomorphic self reference while its body is checked, then generalizes variables free of its enclosing environment; captured variables remain shared. Acyclic local value definitions can refer forward. 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. Supported local mutually recursive gate groups also use shared monomorphic placeholders and generalize only after the group checks, preserving captured outer variables. Mixed gate/value cycles, polymorphic recursion, unresolved literal constraints and unresolved branch joins remain unsupported. Acyclic simple local mold aliases can also refer forward, and are scoped to the body, not its gate's sample. Nonrecursive generic aliases of supported molds can be applied at exact arity, including locally and through library interfaces; their parameters are lexical. Closed, provably disjoint nonrecursive unions and tagged single-case molds support contextual term values, `~` and `|=%tag` constructors. A null-headed cell can match a union case but does not supply a `|=%$` constructor; unresolved tags and nulls remain pending, with distinct partial-inference diagnostics. Nonrecursive top-level generic union molds with provably disjoint cases also support contextual tags and constructors at exact arity; their arguments are retained through generalization and supported library interfaces. Nonrecursive generic aliases can reorder, repeat or omit parameters while preserving a supported union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do mutually recursive local groups and recursive molds. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. A differing-variable face constraint remains unsupported. When inference forces two distinct explicitly written capitals equal, it reports both source sites; forcing a capital to a concrete type remains unsupported in this fragment. It can infer and generalize atom constraints arising from explicit capitals or bare sample binders, preserve those constraints through aliases, instantiate them independently, and print multiple constraints. Unresolved decimal variables default to `@ud` for inferred types without gates; defaulting inside gate types and other constraint cases remain incomplete. It does not yet check a module, complete imports, general patterns, general deferred constraints, recursive molds, dependency cycles or most errors with both conflicting excerpts. Definite cast and call mismatches, incompatible branches and overlapping union cases report both sites and excerpts. Concrete branch results can join at an explicitly present parent aura or `@`. Some known tuple and record positions acquire matching faces; other variable-dependent face merges, general branch tag context and ambiguous call-result propagation remain unsupported; function compatibility involving nested `@` and variable-dependent joins remain unsupported except for equal types. For a single recursive gate outside a group, the reporting path repeats inference rather than instantiating its generalized interface inside its own body; a group report uses its stored schemes. This adds work, and the current dependency pass can take quadratic time on long forward chains; the milestone's speed target remains unverified. A separate conservative pass reports unions whose cases are provably disjoint or overlapping and leaves other cases unresolved; it does not claim the mold is checked. Unsupported forms are reported as such, and the partial output says the module has not been checked.
6060
6161A single-arm cell pattern can bind two or more positions, with its last binder capturing the remaining tail. Duplicate and shadowed names are rejected. A definite non-cell spine fails; an intermediate union or collection that might contain a cell remains unsupported. Nested patterns, wildcard patterns and faced records are not covered by this rule.
6262
@@ -70,7 +70,7 @@ For supported closed unions, the type printer keeps the union’s origin separat
7070
7171Multi-argument calls form one right-nested sample: `f a b c` supplies `[a [b c]]`, with the last argument able to be a cell itself. The fragment fits the complete sample, preserving known faces and shared variables. Known sample positions can provide list or union context to arguments; unknown sample shapes use ordinary inference and some contextual forms remain unsupported. For a definite mismatch, the diagnostic points to a specific argument when it can establish which one failed; otherwise it reports the combined sample.
7272
73−A 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.
73+A 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. Uncontextualized list literals also infer with a fresh element variable, including empty and nested lists; the resulting variable can generalize. Unresolved item tags and uncertain widening remain unsupported. Faced or longer cons cells, 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.
7474
7575A 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`, `clap`, `clef` 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.
7676
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
1919
2020## Milestone 2: in progress
2121
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, the null singleton, 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. Tagged `$%` cases can additionally use restricted local named payload molds, with a bounded source proof; unsupported or ambiguous dependencies fail closed. 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. A single-arm cell pattern accepts two or more binders, the last capturing the remaining tail; duplicate and shadowed binders are rejected. Intermediate union or collection tails, nested patterns, wildcards and faced records remain unsupported. 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 and some complex two-arm subjects remain unsupported. A cast or known call sample can supply result context through whole-case arms for a known union accessed by a wing, including nested cell and list positions; partial-pattern context and non-wing subjects 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. Ordered fit replay can identify a missing tag nested in a syntactic tuple, stopping at an earlier mismatch or uncertainty. 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`, `clap`, `clef` 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.
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, the null singleton, 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. Tagged `$%` cases can additionally use restricted local named payload molds, with a bounded source proof; unsupported or ambiguous dependencies fail closed. 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. Supported local mutually recursive gate groups also use shared monomorphic placeholders and generalize only after the group checks, preserving captured outer variables. Mixed gate/value cycles, polymorphic recursion, 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. A single-arm cell pattern accepts two or more binders, the last capturing the remaining tail; duplicate and shadowed binders are rejected. Intermediate union or collection tails, nested patterns, wildcards and faced records remain unsupported. 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 and some complex two-arm subjects remain unsupported. A cast or known call sample can supply result context through whole-case arms for a known union accessed by a wing, including nested cell and list positions; partial-pattern context and non-wing subjects 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. Ordered fit replay can identify a missing tag nested in a syntactic tuple, stopping at an earlier mismatch or uncertainty. 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. Uncontextualized list literals infer a fresh element type, including empty and nested lists, with independently generalized uses. Unresolved item tags and uncertain widening remain unsupported. 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`, `clap`, `clef` 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.
2323
2424The 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.
2525
@@ -39,8 +39,8 @@ What the plan asks for, and where it is:
3939
4040Besides the plan's list:
4141
42−- 545 golden cases: 329 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 545-case corpus passed under `urbit eval` in 64.8 s. The fake ship passed all 552 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 35.1 s for sync and 37.5 s for tests. The importer golden compares 169 projections; `tools/clay-fixtures` builds the example Hoon fixtures through Clay, checks a recursive Ford import's origin, and passes Clay-built types through the Clay-built importer and partial checker.
42+- 549 golden cases: 333 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 549-case corpus passed under `urbit eval` in 64.6 s. The fake ship passed all 556 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 37.0 s for sync and 42.9 s for tests. The importer golden compares 169 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.
4444- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
4545- 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.
4646- 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).
@@ -102,14 +102,15 @@ Besides the plan's list:
102102| a140383 | 2026-10-31 | Report missing union tags and infer prelude unit helpers |
103103| d69cc52 | 2026-10-31 | Infer longer cell binder patterns and prelude unit helpers |
104104| ae35005 | 2026-10-31 | Import source-verified tagged Hoon unions |
105−| This change | 2026-10-31 | Report nested missing tags and contextualize union branch results |
105+| ef2ea71 | 2026-10-31 | Report nested missing tags and contextualize union branch results |
106+| This change | 2026-10-31 | Infer local mutual gates and uncontextualized lists |
106107
107108## Checking it
108109
109110On a machine set up as [development.md](development.md) says:
110111
111112```
112−tools/golden # 545 cases under urbit eval
113+tools/golden # 549 cases under urbit eval
113114tools/importer-test # the Hoon importer fixture projection
114115tools/type-import-test # the importer/checker bridge fixture
115116tools/type-mark-test # the mark/checker bridge fixture
@@ -119,7 +120,7 @@ tools/testdata/selftest # the tools themselves
119120tools/doc-blocks docs/spec # the doc's examples are golden cases
120121tools/ship start
121122tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
122−tools/ship test # the same 545 cases as -test arms on the ship
123+tools/ship test # the same 549 cases as -test arms on the ship
123124tools/testdata/ship-selftest
124125tools/ship check-commit # |commit stores .jibb files
125126tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+65−9
@@ -6128,8 +6128,8 @@
61286128 [%& [%cell ht typ.p.tail] env.p.tail state.p.tail]
61296129::
61306130:: Local definitions generalize only variables outside their enclosing
6131−:: environment and explicit-capital scope. Single self-recursive gates
6132−:: use a monomorphic placeholder; mutually recursive groups stay unsupported.
6131+:: environment and explicit-capital scope. Recursive gate groups use
6132+:: monomorphic placeholders while their bodies are checked.
61336133::
61346134+$ ilocal-result (each [env=ienv state=istate] idiag)
61356135++ free-env-vars
@@ -6345,7 +6345,13 @@
63456345 |-
63466346 ?~ ds
63476347 ?~ remaining [%& env state]
6348− ?. progressed [%| ["local definitions need unsupported inference" ~]]
6348+ ?. progressed
6349+ =/ pending=(list def) (flop remaining)
6350+ =/ groups=icomponents (graph-components pending (global-value-names pending))
6351+ =/ grouped=(unit [rest=(list def) env=ienv state=istate])
6352+ (try-local-group pending groups env state)
6353+ ?~ grouped [%| ["local definitions need unsupported inference" ~]]
6354+ $(ds rest.u.grouped, remaining ~, env env.u.grouped, state state.u.grouped, progressed |)
63496355 $(ds (flop remaining), remaining ~, progressed |)
63506356 =/ d=def i.ds
63516357 ?> ?=(%value -.d)
@@ -6371,6 +6377,27 @@
63716377 =. vars (skim vars |=(n=@ud !(lien free |=(f=@ud =(f n)))))
63726378 $(ds t.ds, env [[name.d [typ vars]] env], state state.p.inferred(caps caps.state), progressed &)
63736379::
6380+:: Try complete cyclic local groups after individual definitions stall.
6381+:: Components with non-gates or unresolved constraints stay unavailable.
6382+::
6383+++ try-local-group
6384+ |= [ds=(list def) groups=icomponents env=ienv state=istate]
6385+ ^- (unit [rest=(list def) env=ienv state=istate])
6386+ ?~ groups ~
6387+ =/ names=(list term) i.groups
6388+ ?. (gth (lent names) 1) $(groups t.groups)
6389+ =/ members=(list def)
6390+ (skim ds |=(d=def &(?=(%value -.d) (lien names |=(n=term =(n name.d))))))
6391+ ?. =((lent members) (lent names)) $(groups t.groups)
6392+ =/ result=ilocal-result (infer-gate-group members env state)
6393+ ?: ?=(%| -.result) $(groups t.groups)
6394+ =/ rest=(list def)
6395+ (skim ds |=(d=def !(lien names |=(n=term =(n name.d)))))
6396+ =/ more=(unit [rest=(list def) env=ienv state=istate])
6397+ $(ds rest, groups t.groups, env env.p.result, state state.p.result)
6398+ ?^ more more
6399+ `[rest env.p.result state.p.result]
6400+::
63746401:: Read only fields of a known record. Unresolved field constraints and
63756402:: ambiguous repeated faces are outside this fragment. Imported record
63766403:: spines with repeated names are unavailable when used.
@@ -6529,6 +6556,23 @@
65296556 [%| ["list tail does not fit its expected type" ~[[context (site-type-note "expected list" target sub.state.p.tail)] [(span-of val.i.t.items.e) (site-type-note "list tail" typ.p.tail sub.state.p.tail)]]]]
65306557 [%& target state.p.tail(sub sub.fit, next next.fit)]
65316558::
6559+++ infer-open-list-items
6560+ |= [items=(list expr) expected=itype env=ienv state=istate context=span]
6561+ ^- iresult
6562+ ?~ items [%& expected state]
6563+ =/ target=itype (itype-walk expected sub.state)
6564+ =/ value=iresult (infer-call-context-arg i.items target env state context)
6565+ ?: ?=(%| -.value) value
6566+ =/ fit=ifit (itype-fit typ.p.value target sub.state.p.value next.state.p.value)
6567+ ?: ?=(%unknown -.fit) [%| ["list item constraint is not supported by partial inference" ~]]
6568+ ?: ?=(%bad -.fit)
6569+ ?: |((itype-family-related typ.p.value target sub.state.p.value) (itype-has-any-atom typ.p.value sub.state.p.value) (itype-has-any-atom target sub.state.p.value))
6570+ [%| ["list item widening is not supported by partial inference" ~]]
6571+ [%| ["list items do not have compatible types" ~[[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)]]]]
6572+ ?: (itype-has-tag (itype-normalize expected sub.fit))
6573+ [%| ["list item needs context in partial inference" ~]]
6574+ $(items t.items, state state.p.value(sub sub.fit, next next.fit))
6575+::
65326576++ infer-list-items
65336577 |= [items=(list expr) expected=itype env=ienv state=istate context=span]
65346578 ^- iresult
@@ -7123,6 +7167,18 @@
71237167 =/ result=(unit itype) (template-apply u.standard ~[typ.p.value])
71247168 ?~ result [%| ["unit construction is not supported by partial inference" ~]]
71257169 [%& u.result state.p.value]
7170+ %list
7171+ ?~ prelude.state [%| ["list literal needs the standard prelude in partial inference" ~]]
7172+ ?. =(at.u.prelude.state /lib/jibb/prelude/jibb)
7173+ [%| ["list literal needs the standard prelude in partial inference" ~]]
7174+ =/ standard=(unit ischeme) (find-jibb-mold %list u.prelude.state)
7175+ ?~ standard [%| ["list literal needs the standard prelude in partial inference" ~]]
7176+ ?. =(u.standard [[%collection %list ~[[%var 0]]] ~[0]])
7177+ [%| ["list literal needs the standard prelude in partial inference" ~]]
7178+ =/ element=itype [%var next.state]
7179+ =/ result=iresult (infer-open-list-items items.e element env state(next +(next.state)) at.e)
7180+ ?: ?=(%| -.result) result
7181+ [%& [%collection %list ~[element]] state.p.result]
71267182 %str (infer-string-pieces pieces.e env state)
71277183 %wing
71287184 ?~ names.e [%| ["empty wing" ~]]
@@ -7733,9 +7789,9 @@
77337789::
77347790:: Build the supported part of the value environment in dependency order.
77357791:: Each pass adds successful definitions. Forward references become
7736−:: available on a later pass; mutually recursive groups and unsupported
7737−:: syntax do not enter the environment. Generalized definitions are closed, so a
7738−:: use instantiates its variables afresh.
7792+:: available on a later pass; unsupported syntax does not enter the
7793+:: environment. Generalized definitions are closed, so a use instantiates
7794+:: its variables afresh.
77397795::
77407796++ global-value-names
77417797 |= ds=(list def)
@@ -7965,9 +8021,9 @@
79658021 * ~
79668022 ==
79678023::
7968−:: Infer a cyclic top-level component with one monomorphic seed per gate.
7969−:: All members must succeed before any scheme is available; local cyclic
7970−:: groups, pending constraints and unresolved branch joins remain partial.
8024+:: Infer a cyclic component with one monomorphic seed per gate. All members
8025+:: must succeed before any scheme is available; pending constraints and
8026+:: unresolved branch joins remain partial.
79718027+$ igate-entry [name=term typ=itype body=expr env=ienv caps=icaps]
79728028+$ igate-seeds (each [entries=(list igate-entry) state=istate] idiag)
79738029++ seed-gate-group
tests/golden/types-list-open-constraints/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Literals: a list literal has type `(list A)`; Tag resolution: tags and `~` take their type from context.
2+tests: Uncontextualized lists use a fresh, independently generalizable element type and a validated prelude list. Nested and homogeneous lists infer; uncertain widening and unresolved tags fail closed, and unrelated pending literals stay pending.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-list-open-constraints/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use prepared prelude.
tests/golden/types-list-open-constraints/source.jibbnew file+19
@@ -0,0 +1,19 @@
1+++ widen |= [a=@tD b=@t] ~[a b]
2+++ reverse |= [a=@tD b=@t] ~[b a]
3+++ abstract |= x=@ ~[x ~zod]
4+++ generic |= [a=A b=B] ~[a b]
5+++ explicit |= [a=A b=A] ~[a b]
6+++ num ~[1 0x1f]
7+++ all-num ~[1 2]
8+++ ctor ~[|=%go]
9+++ payload ~[`%go]
10+++ empty ~[]
11+++ texts ^- (list @t) empty
12+++ ships ^- (list @p) empty
13+++ discarded
14+ ~& %unused
15+ ~["hi"]
16+++ repeated |= [a=A b=A] ~[a b]
17+++ call-text (repeated "hi" "there")
18+++ call-ship (repeated ~zod ~bus)
19+++ call-wrong (repeated "hi" ~zod)
tests/golden/types-list-open-constraints/tokens.txtnew file+178
@@ -0,0 +1,178 @@
1+1:1 glyph ++
2+1:4 name widen
3+1:10 glyph |=
4+1:13 glyph [
5+1:14 tight name a
6+1:15 tight glyph =
7+1:16 tight aura @tD
8+1:20 name b
9+1:21 tight glyph =
10+1:22 tight aura @t
11+1:24 tight glyph ]
12+1:26 glyph ~[
13+1:28 tight name a
14+1:30 name b
15+1:31 tight glyph ]
16+2:1 NEWLINE
17+2:1 glyph ++
18+2:4 name reverse
19+2:12 glyph |=
20+2:15 glyph [
21+2:16 tight name a
22+2:17 tight glyph =
23+2:18 tight aura @tD
24+2:22 name b
25+2:23 tight glyph =
26+2:24 tight aura @t
27+2:26 tight glyph ]
28+2:28 glyph ~[
29+2:30 tight name b
30+2:32 name a
31+2:33 tight glyph ]
32+3:1 NEWLINE
33+3:1 glyph ++
34+3:4 name abstract
35+3:13 glyph |=
36+3:16 name x
37+3:17 tight glyph =
38+3:18 tight aura @
39+3:20 glyph ~[
40+3:22 tight name x
41+3:24 lit ~zod
42+3:28 tight glyph ]
43+4:1 NEWLINE
44+4:1 glyph ++
45+4:4 name generic
46+4:12 glyph |=
47+4:15 glyph [
48+4:16 tight name a
49+4:17 tight glyph =
50+4:18 tight tvar A
51+4:20 name b
52+4:21 tight glyph =
53+4:22 tight tvar B
54+4:23 tight glyph ]
55+4:25 glyph ~[
56+4:27 tight name a
57+4:29 name b
58+4:30 tight glyph ]
59+5:1 NEWLINE
60+5:1 glyph ++
61+5:4 name explicit
62+5:13 glyph |=
63+5:16 glyph [
64+5:17 tight name a
65+5:18 tight glyph =
66+5:19 tight tvar A
67+5:21 name b
68+5:22 tight glyph =
69+5:23 tight tvar A
70+5:24 tight glyph ]
71+5:26 glyph ~[
72+5:28 tight name a
73+5:30 name b
74+5:31 tight glyph ]
75+6:1 NEWLINE
76+6:1 glyph ++
77+6:4 name num
78+6:8 glyph ~[
79+6:10 tight lit 1
80+6:12 lit 0x1f
81+6:16 tight glyph ]
82+7:1 NEWLINE
83+7:1 glyph ++
84+7:4 name all-num
85+7:12 glyph ~[
86+7:14 tight lit 1
87+7:16 lit 2
88+7:17 tight glyph ]
89+8:1 NEWLINE
90+8:1 glyph ++
91+8:4 name ctor
92+8:9 glyph ~[
93+8:11 tight glyph |=
94+8:13 tight lit %go
95+8:16 tight glyph ]
96+9:1 NEWLINE
97+9:1 glyph ++
98+9:4 name payload
99+9:12 glyph ~[
100+9:14 tight glyph `
101+9:15 tight lit %go
102+9:18 tight glyph ]
103+10:1 NEWLINE
104+10:1 glyph ++
105+10:4 name empty
106+10:10 glyph ~[
107+10:12 tight glyph ]
108+11:1 NEWLINE
109+11:1 glyph ++
110+11:4 name texts
111+11:10 glyph ^-
112+11:13 glyph (
113+11:14 tight name list
114+11:19 aura @t
115+11:21 tight glyph )
116+11:23 name empty
117+12:1 NEWLINE
118+12:1 glyph ++
119+12:4 name ships
120+12:10 glyph ^-
121+12:13 glyph (
122+12:14 tight name list
123+12:19 aura @p
124+12:21 tight glyph )
125+12:23 name empty
126+13:1 NEWLINE
127+13:1 glyph ++
128+13:4 name discarded
129+14:3 INDENT
130+14:3 glyph ~&
131+14:6 lit %unused
132+15:5 INDENT
133+15:5 glyph ~[
134+15:7 tight str "hi"
135+15:11 tight glyph ]
136+16:1 DEDENT
137+16:1 DEDENT
138+16:1 NEWLINE
139+16:1 glyph ++
140+16:4 name repeated
141+16:13 glyph |=
142+16:16 glyph [
143+16:17 tight name a
144+16:18 tight glyph =
145+16:19 tight tvar A
146+16:21 name b
147+16:22 tight glyph =
148+16:23 tight tvar A
149+16:24 tight glyph ]
150+16:26 glyph ~[
151+16:28 tight name a
152+16:30 name b
153+16:31 tight glyph ]
154+17:1 NEWLINE
155+17:1 glyph ++
156+17:4 name call-text
157+17:14 glyph (
158+17:15 tight name repeated
159+17:24 str "hi"
160+17:29 str "there"
161+17:36 tight glyph )
162+18:1 NEWLINE
163+18:1 glyph ++
164+18:4 name call-ship
165+18:14 glyph (
166+18:15 tight name repeated
167+18:24 lit ~zod
168+18:29 lit ~bus
169+18:33 tight glyph )
170+19:1 NEWLINE
171+19:1 glyph ++
172+19:4 name call-wrong
173+19:15 glyph (
174+19:16 tight name repeated
175+19:25 str "hi"
176+19:30 lit ~zod
177+19:34 tight glyph )
178+19:35 NEWLINE
tests/golden/types-list-open-constraints/tree.txtnew file+68
@@ -0,0 +1,68 @@
1+(module
2+ (value 1:1 widen
3+ (gate 1:10
4+ (cell 1:13
5+ (face 1:14 a (aura 1:16 @tD))
6+ (face 1:20 b (aura 1:22 @t)))
7+ (list 1:26 (wing 1:28 a) (wing 1:30 b))))
8+ (value 2:1 reverse
9+ (gate 2:12
10+ (cell 2:15
11+ (face 2:16 a (aura 2:18 @tD))
12+ (face 2:22 b (aura 2:24 @t)))
13+ (list 2:28 (wing 2:30 b) (wing 2:32 a))))
14+ (value 3:1 abstract
15+ (gate 3:13
16+ (face 3:16 x (aura 3:18 @))
17+ (list 3:20 (wing 3:22 x) (lit 3:24 ~zod))))
18+ (value 4:1 generic
19+ (gate 4:12
20+ (cell 4:15
21+ (face 4:16 a (tvar 4:18 A))
22+ (face 4:20 b (tvar 4:22 B)))
23+ (list 4:25 (wing 4:27 a) (wing 4:29 b))))
24+ (value 5:1 explicit
25+ (gate 5:13
26+ (cell 5:16
27+ (face 5:17 a (tvar 5:19 A))
28+ (face 5:21 b (tvar 5:23 A)))
29+ (list 5:26 (wing 5:28 a) (wing 5:30 b))))
30+ (value 6:1 num
31+ (list 6:8 (lit 6:10 1) (lit 6:12 0x1f)))
32+ (value 7:1 all-num
33+ (list 7:12 (lit 7:14 1) (lit 7:16 2)))
34+ (value 8:1 ctor
35+ (list 8:9 (ctor 8:11 %go)))
36+ (value 9:1 payload
37+ (list 9:12
38+ (unit 9:14 (lit 9:15 %go))))
39+ (value 10:1 empty (list 10:10))
40+ (value 11:1 texts
41+ (cast 11:10
42+ (apply 11:13 list (aura 11:19 @t))
43+ (wing 11:23 empty)))
44+ (value 12:1 ships
45+ (cast 12:10
46+ (apply 12:13 list (aura 12:19 @p))
47+ (wing 12:23 empty)))
48+ (value 13:1 discarded
49+ (body 14:3
50+ (trace 14:3
51+ (lit 14:6 %unused)
52+ (body 15:5
53+ (list 15:5 (str 15:7 "hi"))))))
54+ (value 16:1 repeated
55+ (gate 16:13
56+ (cell 16:16
57+ (face 16:17 a (tvar 16:19 A))
58+ (face 16:21 b (tvar 16:23 A)))
59+ (list 16:26 (wing 16:28 a) (wing 16:30 b))))
60+ (value 17:1 call-text
61+ (group 17:14
62+ (call 17:15 (wing 17:15 repeated) (str 17:24 "hi") (str 17:29 "there"))))
63+ (value 18:1 call-ship
64+ (group 18:14
65+ (call 18:15 (wing 18:15 repeated) (lit 18:24 ~zod) (lit 18:29 ~bus))))
66+ (value 19:1 call-wrong
67+ (group 19:15
68+ (call 19:16 (wing 19:16 repeated) (str 19:25 "hi") (lit 19:30 ~zod)))))
tests/golden/types-list-open-constraints/types.txtnew file+30
@@ -0,0 +1,30 @@
1+partial inference; module not checked
2+++ widen: list item widening is not supported by partial inference
3+++ reverse: $-([a=@tD b=@t] (list @t))
4+++ abstract: $-(@ (list @))
5+++ generic: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
6+/tests/golden/types-list-open-constraints/source.jibb:4:18: first type variable
7+++ generic |= [a=A b=B] ~[a b]
8+ ^
9+/tests/golden/types-list-open-constraints/source.jibb:4:22: second type variable
10+++ generic |= [a=A b=B] ~[a b]
11+ ^
12+++ explicit: $-([a=A b=A] (list A))
13+++ num: (list @ux)
14+++ all-num: (list @ud)
15+++ ctor: list item needs context in partial inference
16+++ payload: list item constraint is not supported by partial inference
17+++ empty: (list A)
18+++ texts: (list @t)
19+++ ships: (list @p)
20+++ discarded: tag needs context in partial inference
21+++ repeated: $-([a=A b=A] (list A))
22+++ call-text: (list @t)
23+++ call-ship: (list @p)
24+++ call-wrong: call's sample and argument types do not unify
25+/tests/golden/types-list-open-constraints/source.jibb:19:16: called gate has type $-([a=A b=A] (list A))
26+++ call-wrong (repeated "hi" ~zod)
27+ ^
28+/tests/golden/types-list-open-constraints/source.jibb:19:25: argument has type [@t @p]
29+++ call-wrong (repeated "hi" ~zod)
30+ ^
tests/golden/types-list-open/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Literals: a list literal has type `(list A)`; Tag resolution: tags and `~` take their type from context.
2+tests: Uncontextualized lists use a fresh, independently generalizable element type and a validated prelude list. Nested and homogeneous lists infer; uncertain widening and unresolved tags fail closed, and unrelated pending literals stay pending.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-list-open/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use prepared prelude.
tests/golden/types-list-open/source.jibbnew file+13
@@ -0,0 +1,13 @@
1+++ empty ~[]
2+++ cords ~["hi" "there"]
3+++ ships ~[~zod ~bus]
4+++ nested ~[~["a"] ~["b"]]
5+++ id |= x ~[x]
6+++ independent [(id "hi") (id ~zod)]
7+++ mixed ~["hi" ~zod]
8+++ loose ~[%yes %no]
9+++ loose-null ~[~]
10+++ result ^- (list @t) ~["x"]
11+++ pending
12+ ~& %unrelated
13+ ~["x"]
tests/golden/types-list-open/tokens.txtnew file+94
@@ -0,0 +1,94 @@
1+1:1 glyph ++
2+1:4 name empty
3+1:10 glyph ~[
4+1:12 tight glyph ]
5+2:1 NEWLINE
6+2:1 glyph ++
7+2:4 name cords
8+2:10 glyph ~[
9+2:12 tight str "hi"
10+2:17 str "there"
11+2:24 tight glyph ]
12+3:1 NEWLINE
13+3:1 glyph ++
14+3:4 name ships
15+3:10 glyph ~[
16+3:12 tight lit ~zod
17+3:17 lit ~bus
18+3:21 tight glyph ]
19+4:1 NEWLINE
20+4:1 glyph ++
21+4:4 name nested
22+4:11 glyph ~[
23+4:13 tight glyph ~[
24+4:15 tight str "a"
25+4:18 tight glyph ]
26+4:20 glyph ~[
27+4:22 tight str "b"
28+4:25 tight glyph ]
29+4:26 tight glyph ]
30+5:1 NEWLINE
31+5:1 glyph ++
32+5:4 name id
33+5:7 glyph |=
34+5:10 name x
35+5:12 glyph ~[
36+5:14 tight name x
37+5:15 tight glyph ]
38+6:1 NEWLINE
39+6:1 glyph ++
40+6:4 name independent
41+6:16 glyph [
42+6:17 tight glyph (
43+6:18 tight name id
44+6:21 str "hi"
45+6:25 tight glyph )
46+6:27 glyph (
47+6:28 tight name id
48+6:31 lit ~zod
49+6:35 tight glyph )
50+6:36 tight glyph ]
51+7:1 NEWLINE
52+7:1 glyph ++
53+7:4 name mixed
54+7:10 glyph ~[
55+7:12 tight str "hi"
56+7:17 lit ~zod
57+7:21 tight glyph ]
58+8:1 NEWLINE
59+8:1 glyph ++
60+8:4 name loose
61+8:10 glyph ~[
62+8:12 tight lit %yes
63+8:17 lit %no
64+8:20 tight glyph ]
65+9:1 NEWLINE
66+9:1 glyph ++
67+9:4 name loose-null
68+9:15 glyph ~[
69+9:17 tight lit ~
70+9:18 tight glyph ]
71+10:1 NEWLINE
72+10:1 glyph ++
73+10:4 name result
74+10:11 glyph ^-
75+10:14 glyph (
76+10:15 tight name list
77+10:20 aura @t
78+10:22 tight glyph )
79+10:24 glyph ~[
80+10:26 tight str "x"
81+10:29 tight glyph ]
82+11:1 NEWLINE
83+11:1 glyph ++
84+11:4 name pending
85+12:3 INDENT
86+12:3 glyph ~&
87+12:6 lit %unrelated
88+13:5 INDENT
89+13:5 glyph ~[
90+13:7 tight str "x"
91+13:10 tight glyph ]
92+13:11 DEDENT
93+13:11 DEDENT
94+13:11 NEWLINE
tests/golden/types-list-open/tree.txtnew file+36
@@ -0,0 +1,36 @@
1+(module
2+ (value 1:1 empty (list 1:10))
3+ (value 2:1 cords
4+ (list 2:10 (str 2:12 "hi") (str 2:17 "there")))
5+ (value 3:1 ships
6+ (list 3:10 (lit 3:12 ~zod) (lit 3:17 ~bus)))
7+ (value 4:1 nested
8+ (list 4:11
9+ (list 4:13 (str 4:15 "a"))
10+ (list 4:20 (str 4:22 "b"))))
11+ (value 5:1 id
12+ (gate 5:7
13+ (bind 5:10 x)
14+ (list 5:12 (wing 5:14 x))))
15+ (value 6:1 independent
16+ (tuple 6:16
17+ (group 6:17
18+ (call 6:18 (wing 6:18 id) (str 6:21 "hi")))
19+ (group 6:27
20+ (call 6:28 (wing 6:28 id) (lit 6:31 ~zod)))))
21+ (value 7:1 mixed
22+ (list 7:10 (str 7:12 "hi") (lit 7:17 ~zod)))
23+ (value 8:1 loose
24+ (list 8:10 (lit 8:12 %yes) (lit 8:17 %no)))
25+ (value 9:1 loose-null
26+ (list 9:15 (lit 9:17 ~)))
27+ (value 10:1 result
28+ (cast 10:11
29+ (apply 10:14 list (aura 10:20 @t))
30+ (list 10:24 (str 10:26 "x"))))
31+ (value 11:1 pending
32+ (body 12:3
33+ (trace 12:3
34+ (lit 12:6 %unrelated)
35+ (body 13:5
36+ (list 13:5 (str 13:7 "x")))))))
tests/golden/types-list-open/types.txtnew file+18
@@ -0,0 +1,18 @@
1+partial inference; module not checked
2+++ empty: (list A)
3+++ cords: (list @t)
4+++ ships: (list @p)
5+++ nested: (list (list @t))
6+++ id: $-(A (list A))
7+++ independent: [(list @t) (list @p)]
8+++ mixed: list items do not have compatible types
9+/tests/golden/types-list-open/source.jibb:7:10: expected item has type @t
10+++ mixed ~["hi" ~zod]
11+ ^
12+/tests/golden/types-list-open/source.jibb:7:17: list item has type @p
13+++ mixed ~["hi" ~zod]
14+ ^
15+++ loose: list item needs context in partial inference
16+++ loose-null: list item needs context in partial inference
17+++ result: (list @t)
18+++ pending: tag needs context in partial inference
tests/golden/types-local-recursive/about.txt+1−1
@@ -1,4 +1,4 @@
11source: Grammar, Modules: "Gates may call themselves and their siblings; other values can't depend on themselves, even through a gate"; Molds: "Type variables are capitals, generalized per `++`."
2−tests: A body-local recursive gate uses a monomorphic self reference and generalizes independently where allowed. Recursive list copy, capture and bare-binder polymorphism infer; name collisions, value and mutual cycles, unresolved tags, incompatible recursive aliases, self-application and explicit-capital forcing remain unsupported in this fragment.
2+tests: A body-local recursive gate uses a monomorphic self reference and generalizes independently where allowed. Recursive list copy, capture, bare-binder polymorphism and a mutual gate cycle infer; name collisions, value cycles, unresolved tags, incompatible recursive aliases, self-application and explicit-capital forcing remain unsupported in this fragment.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-local-recursive/types.txt+1−1
@@ -4,7 +4,7 @@ partial inference; module not checked
44++ independently: $-(@t @p)
55++ collide: local definitions need unsupported inference
66++ cycle: local definitions need unsupported inference
7−++ mutual: local definitions need unsupported inference
7+++ mutual: $-(@t A)
88++ pending: local definitions need unsupported inference
99++ alias-mono: local definitions need unsupported inference
1010++ occurs: local definitions need unsupported inference
tests/golden/types-local-scc-adversarial/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Modules: gates may call themselves and siblings; type variables generalize per definition, with shared enclosing capitals and no shadowing.
2+tests: Local mutual recursion handles independent local capitals, enclosing captures, dependency ordering and nested groups. Explicitly distinct captured capitals and unresolved tags fail closed; monomorphic recursive aliases do not admit conflicting calls.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-local-scc-adversarial/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use prepared prelude.
tests/golden/types-local-scc-adversarial/source.jibbnew file+54
@@ -0,0 +1,54 @@
1+++ siblings |= input=@t
2+ ++ first |= x=A (second x)
3+ ++ second |= x=A (first x)
4+ (first input)
5+++ introduced |= input=@t
6+ ++ first |= x=A (second x)
7+ ++ second |= x=B (first x)
8+ (first input)
9+++ outer-later |= input
10+ ++ first |= x=A (second x)
11+ ++ second |= y=A (first y)
12+ ~& ^- A input
13+ (first input)
14+++ captured |= input
15+ ++ first |= x
16+ ~& ^- @t input
17+ (second x)
18+ ++ second |= y (first y)
19+ input
20+++ alias-mono |= input=@t
21+ ++ first |= x
22+ ++ alias second
23+ ~& (alias x)
24+ (alias ~zod)
25+ ++ second |= y (first y)
26+ (first input)
27+++ chain |= input=@t
28+ ++ top |= x (one x)
29+ ++ one |= x (two x)
30+ ++ two |= x (one x)
31+ (top input)
32+++ nested-capture |= input=@t
33+ ++ outer-one |= x
34+ ++ inner-one |= y (inner-two y)
35+ ++ inner-two |= y
36+ ~& input
37+ (inner-one y)
38+ (outer-two (inner-one x))
39+ ++ outer-two |= z (outer-one z)
40+ (outer-one input)
41+++ unresolved |= input=@t
42+ ++ first |= x
43+ ~& %pending
44+ (second x)
45+ ++ second |= x (first x)
46+ (first input)
47+++ forced-captures |= [a=A b=B]
48+ ++ first |= x=A (second x)
49+ ++ second |= y=B (first y)
50+ (first a)
51+++ same-capture |= [a=A b=A]
52+ ++ first |= x=A (second x)
53+ ++ second |= y=A (first y)
54+ (first a)
tests/golden/types-local-scc-adversarial/tokens.txtnew file+404
@@ -0,0 +1,404 @@
1+1:1 glyph ++
2+1:4 name siblings
3+1:13 glyph |=
4+1:16 name input
5+1:21 tight glyph =
6+1:22 tight aura @t
7+2:3 INDENT
8+2:3 glyph ++
9+2:6 name first
10+2:12 glyph |=
11+2:15 name x
12+2:16 tight glyph =
13+2:17 tight tvar A
14+2:19 glyph (
15+2:20 tight name second
16+2:27 name x
17+2:28 tight glyph )
18+3:3 NEWLINE
19+3:3 glyph ++
20+3:6 name second
21+3:13 glyph |=
22+3:16 name x
23+3:17 tight glyph =
24+3:18 tight tvar A
25+3:20 glyph (
26+3:21 tight name first
27+3:27 name x
28+3:28 tight glyph )
29+4:3 NEWLINE
30+4:3 glyph (
31+4:4 tight name first
32+4:10 name input
33+4:15 tight glyph )
34+5:1 DEDENT
35+5:1 NEWLINE
36+5:1 glyph ++
37+5:4 name introduced
38+5:15 glyph |=
39+5:18 name input
40+5:23 tight glyph =
41+5:24 tight aura @t
42+6:3 INDENT
43+6:3 glyph ++
44+6:6 name first
45+6:12 glyph |=
46+6:15 name x
47+6:16 tight glyph =
48+6:17 tight tvar A
49+6:19 glyph (
50+6:20 tight name second
51+6:27 name x
52+6:28 tight glyph )
53+7:3 NEWLINE
54+7:3 glyph ++
55+7:6 name second
56+7:13 glyph |=
57+7:16 name x
58+7:17 tight glyph =
59+7:18 tight tvar B
60+7:20 glyph (
61+7:21 tight name first
62+7:27 name x
63+7:28 tight glyph )
64+8:3 NEWLINE
65+8:3 glyph (
66+8:4 tight name first
67+8:10 name input
68+8:15 tight glyph )
69+9:1 DEDENT
70+9:1 NEWLINE
71+9:1 glyph ++
72+9:4 name outer-later
73+9:16 glyph |=
74+9:19 name input
75+10:3 INDENT
76+10:3 glyph ++
77+10:6 name first
78+10:12 glyph |=
79+10:15 name x
80+10:16 tight glyph =
81+10:17 tight tvar A
82+10:19 glyph (
83+10:20 tight name second
84+10:27 name x
85+10:28 tight glyph )
86+11:3 NEWLINE
87+11:3 glyph ++
88+11:6 name second
89+11:13 glyph |=
90+11:16 name y
91+11:17 tight glyph =
92+11:18 tight tvar A
93+11:20 glyph (
94+11:21 tight name first
95+11:27 name y
96+11:28 tight glyph )
97+12:3 NEWLINE
98+12:3 glyph ~&
99+12:6 glyph ^-
100+12:9 tvar A
101+12:11 name input
102+13:5 INDENT
103+13:5 glyph (
104+13:6 tight name first
105+13:12 name input
106+13:17 tight glyph )
107+14:1 DEDENT
108+14:1 DEDENT
109+14:1 NEWLINE
110+14:1 glyph ++
111+14:4 name captured
112+14:13 glyph |=
113+14:16 name input
114+15:3 INDENT
115+15:3 glyph ++
116+15:6 name first
117+15:12 glyph |=
118+15:15 name x
119+16:5 INDENT
120+16:5 glyph ~&
121+16:8 glyph ^-
122+16:11 aura @t
123+16:14 name input
124+17:7 INDENT
125+17:7 glyph (
126+17:8 tight name second
127+17:15 name x
128+17:16 tight glyph )
129+18:3 DEDENT
130+18:3 DEDENT
131+18:3 NEWLINE
132+18:3 glyph ++
133+18:6 name second
134+18:13 glyph |=
135+18:16 name y
136+18:18 glyph (
137+18:19 tight name first
138+18:25 name y
139+18:26 tight glyph )
140+19:3 NEWLINE
141+19:3 name input
142+20:1 DEDENT
143+20:1 NEWLINE
144+20:1 glyph ++
145+20:4 name alias-mono
146+20:15 glyph |=
147+20:18 name input
148+20:23 tight glyph =
149+20:24 tight aura @t
150+21:3 INDENT
151+21:3 glyph ++
152+21:6 name first
153+21:12 glyph |=
154+21:15 name x
155+22:5 INDENT
156+22:5 glyph ++
157+22:8 name alias
158+22:14 name second
159+23:5 NEWLINE
160+23:5 glyph ~&
161+23:8 glyph (
162+23:9 tight name alias
163+23:15 name x
164+23:16 tight glyph )
165+24:7 INDENT
166+24:7 glyph (
167+24:8 tight name alias
168+24:14 lit ~zod
169+24:18 tight glyph )
170+25:3 DEDENT
171+25:3 DEDENT
172+25:3 NEWLINE
173+25:3 glyph ++
174+25:6 name second
175+25:13 glyph |=
176+25:16 name y
177+25:18 glyph (
178+25:19 tight name first
179+25:25 name y
180+25:26 tight glyph )
181+26:3 NEWLINE
182+26:3 glyph (
183+26:4 tight name first
184+26:10 name input
185+26:15 tight glyph )
186+27:1 DEDENT
187+27:1 NEWLINE
188+27:1 glyph ++
189+27:4 name chain
190+27:10 glyph |=
191+27:13 name input
192+27:18 tight glyph =
193+27:19 tight aura @t
194+28:3 INDENT
195+28:3 glyph ++
196+28:6 name top
197+28:10 glyph |=
198+28:13 name x
199+28:15 glyph (
200+28:16 tight name one
201+28:20 name x
202+28:21 tight glyph )
203+29:3 NEWLINE
204+29:3 glyph ++
205+29:6 name one
206+29:10 glyph |=
207+29:13 name x
208+29:15 glyph (
209+29:16 tight name two
210+29:20 name x
211+29:21 tight glyph )
212+30:3 NEWLINE
213+30:3 glyph ++
214+30:6 name two
215+30:10 glyph |=
216+30:13 name x
217+30:15 glyph (
218+30:16 tight name one
219+30:20 name x
220+30:21 tight glyph )
221+31:3 NEWLINE
222+31:3 glyph (
223+31:4 tight name top
224+31:8 name input
225+31:13 tight glyph )
226+32:1 DEDENT
227+32:1 NEWLINE
228+32:1 glyph ++
229+32:4 name nested-capture
230+32:19 glyph |=
231+32:22 name input
232+32:27 tight glyph =
233+32:28 tight aura @t
234+33:3 INDENT
235+33:3 glyph ++
236+33:6 name outer-one
237+33:16 glyph |=
238+33:19 name x
239+34:5 INDENT
240+34:5 glyph ++
241+34:8 name inner-one
242+34:18 glyph |=
243+34:21 name y
244+34:23 glyph (
245+34:24 tight name inner-two
246+34:34 name y
247+34:35 tight glyph )
248+35:5 NEWLINE
249+35:5 glyph ++
250+35:8 name inner-two
251+35:18 glyph |=
252+35:21 name y
253+36:7 INDENT
254+36:7 glyph ~&
255+36:10 name input
256+37:9 INDENT
257+37:9 glyph (
258+37:10 tight name inner-one
259+37:20 name y
260+37:21 tight glyph )
261+38:5 DEDENT
262+38:5 DEDENT
263+38:5 NEWLINE
264+38:5 glyph (
265+38:6 tight name outer-two
266+38:16 glyph (
267+38:17 tight name inner-one
268+38:27 name x
269+38:28 tight glyph )
270+38:29 tight glyph )
271+39:3 DEDENT
272+39:3 NEWLINE
273+39:3 glyph ++
274+39:6 name outer-two
275+39:16 glyph |=
276+39:19 name z
277+39:21 glyph (
278+39:22 tight name outer-one
279+39:32 name z
280+39:33 tight glyph )
281+40:3 NEWLINE
282+40:3 glyph (
283+40:4 tight name outer-one
284+40:14 name input
285+40:19 tight glyph )
286+41:1 DEDENT
287+41:1 NEWLINE
288+41:1 glyph ++
289+41:4 name unresolved
290+41:15 glyph |=
291+41:18 name input
292+41:23 tight glyph =
293+41:24 tight aura @t
294+42:3 INDENT
295+42:3 glyph ++
296+42:6 name first
297+42:12 glyph |=
298+42:15 name x
299+43:5 INDENT
300+43:5 glyph ~&
301+43:8 lit %pending
302+44:7 INDENT
303+44:7 glyph (
304+44:8 tight name second
305+44:15 name x
306+44:16 tight glyph )
307+45:3 DEDENT
308+45:3 DEDENT
309+45:3 NEWLINE
310+45:3 glyph ++
311+45:6 name second
312+45:13 glyph |=
313+45:16 name x
314+45:18 glyph (
315+45:19 tight name first
316+45:25 name x
317+45:26 tight glyph )
318+46:3 NEWLINE
319+46:3 glyph (
320+46:4 tight name first
321+46:10 name input
322+46:15 tight glyph )
323+47:1 DEDENT
324+47:1 NEWLINE
325+47:1 glyph ++
326+47:4 name forced-captures
327+47:20 glyph |=
328+47:23 glyph [
329+47:24 tight name a
330+47:25 tight glyph =
331+47:26 tight tvar A
332+47:28 name b
333+47:29 tight glyph =
334+47:30 tight tvar B
335+47:31 tight glyph ]
336+48:3 INDENT
337+48:3 glyph ++
338+48:6 name first
339+48:12 glyph |=
340+48:15 name x
341+48:16 tight glyph =
342+48:17 tight tvar A
343+48:19 glyph (
344+48:20 tight name second
345+48:27 name x
346+48:28 tight glyph )
347+49:3 NEWLINE
348+49:3 glyph ++
349+49:6 name second
350+49:13 glyph |=
351+49:16 name y
352+49:17 tight glyph =
353+49:18 tight tvar B
354+49:20 glyph (
355+49:21 tight name first
356+49:27 name y
357+49:28 tight glyph )
358+50:3 NEWLINE
359+50:3 glyph (
360+50:4 tight name first
361+50:10 name a
362+50:11 tight glyph )
363+51:1 DEDENT
364+51:1 NEWLINE
365+51:1 glyph ++
366+51:4 name same-capture
367+51:17 glyph |=
368+51:20 glyph [
369+51:21 tight name a
370+51:22 tight glyph =
371+51:23 tight tvar A
372+51:25 name b
373+51:26 tight glyph =
374+51:27 tight tvar A
375+51:28 tight glyph ]
376+52:3 INDENT
377+52:3 glyph ++
378+52:6 name first
379+52:12 glyph |=
380+52:15 name x
381+52:16 tight glyph =
382+52:17 tight tvar A
383+52:19 glyph (
384+52:20 tight name second
385+52:27 name x
386+52:28 tight glyph )
387+53:3 NEWLINE
388+53:3 glyph ++
389+53:6 name second
390+53:13 glyph |=
391+53:16 name y
392+53:17 tight glyph =
393+53:18 tight tvar A
394+53:20 glyph (
395+53:21 tight name first
396+53:27 name y
397+53:28 tight glyph )
398+54:3 NEWLINE
399+54:3 glyph (
400+54:4 tight name first
401+54:10 name a
402+54:11 tight glyph )
403+54:12 DEDENT
404+54:12 NEWLINE
tests/golden/types-local-scc-adversarial/tree.txtnew file+204
@@ -0,0 +1,204 @@
1+(module
2+ (value 1:1 siblings
3+ (gate 1:13
4+ (face 1:16 input (aura 1:22 @t))
5+ (body 2:3
6+ (value 2:3 first
7+ (gate 2:12
8+ (face 2:15 x (tvar 2:17 A))
9+ (group 2:19
10+ (call 2:20 (wing 2:20 second) (wing 2:27 x)))))
11+ (value 3:3 second
12+ (gate 3:13
13+ (face 3:16 x (tvar 3:18 A))
14+ (group 3:20
15+ (call 3:21 (wing 3:21 first) (wing 3:27 x)))))
16+ (group 4:3
17+ (call 4:4 (wing 4:4 first) (wing 4:10 input))))))
18+ (value 5:1 introduced
19+ (gate 5:15
20+ (face 5:18 input (aura 5:24 @t))
21+ (body 6:3
22+ (value 6:3 first
23+ (gate 6:12
24+ (face 6:15 x (tvar 6:17 A))
25+ (group 6:19
26+ (call 6:20 (wing 6:20 second) (wing 6:27 x)))))
27+ (value 7:3 second
28+ (gate 7:13
29+ (face 7:16 x (tvar 7:18 B))
30+ (group 7:20
31+ (call 7:21 (wing 7:21 first) (wing 7:27 x)))))
32+ (group 8:3
33+ (call 8:4 (wing 8:4 first) (wing 8:10 input))))))
34+ (value 9:1 outer-later
35+ (gate 9:16
36+ (bind 9:19 input)
37+ (body 10:3
38+ (value 10:3 first
39+ (gate 10:12
40+ (face 10:15 x (tvar 10:17 A))
41+ (group 10:19
42+ (call 10:20 (wing 10:20 second) (wing 10:27 x)))))
43+ (value 11:3 second
44+ (gate 11:13
45+ (face 11:16 y (tvar 11:18 A))
46+ (group 11:20
47+ (call 11:21 (wing 11:21 first) (wing 11:27 y)))))
48+ (trace 12:3
49+ (cast 12:6 (tvar 12:9 A) (wing 12:11 input))
50+ (body 13:5
51+ (group 13:5
52+ (call 13:6 (wing 13:6 first) (wing 13:12 input))))))))
53+ (value 14:1 captured
54+ (gate 14:13
55+ (bind 14:16 input)
56+ (body 15:3
57+ (value 15:3 first
58+ (gate 15:12
59+ (bind 15:15 x)
60+ (body 16:5
61+ (trace 16:5
62+ (cast 16:8 (aura 16:11 @t) (wing 16:14 input))
63+ (body 17:7
64+ (group 17:7
65+ (call 17:8 (wing 17:8 second) (wing 17:15 x))))))))
66+ (value 18:3 second
67+ (gate 18:13
68+ (bind 18:16 y)
69+ (group 18:18
70+ (call 18:19 (wing 18:19 first) (wing 18:25 y)))))
71+ (wing 19:3 input))))
72+ (value 20:1 alias-mono
73+ (gate 20:15
74+ (face 20:18 input (aura 20:24 @t))
75+ (body 21:3
76+ (value 21:3 first
77+ (gate 21:12
78+ (bind 21:15 x)
79+ (body 22:5
80+ (value 22:5 alias (wing 22:14 second))
81+ (trace 23:5
82+ (group 23:8
83+ (call 23:9 (wing 23:9 alias) (wing 23:15 x)))
84+ (body 24:7
85+ (group 24:7
86+ (call 24:8 (wing 24:8 alias) (lit 24:14 ~zod))))))))
87+ (value 25:3 second
88+ (gate 25:13
89+ (bind 25:16 y)
90+ (group 25:18
91+ (call 25:19 (wing 25:19 first) (wing 25:25 y)))))
92+ (group 26:3
93+ (call 26:4 (wing 26:4 first) (wing 26:10 input))))))
94+ (value 27:1 chain
95+ (gate 27:10
96+ (face 27:13 input (aura 27:19 @t))
97+ (body 28:3
98+ (value 28:3 top
99+ (gate 28:10
100+ (bind 28:13 x)
101+ (group 28:15
102+ (call 28:16 (wing 28:16 one) (wing 28:20 x)))))
103+ (value 29:3 one
104+ (gate 29:10
105+ (bind 29:13 x)
106+ (group 29:15
107+ (call 29:16 (wing 29:16 two) (wing 29:20 x)))))
108+ (value 30:3 two
109+ (gate 30:10
110+ (bind 30:13 x)
111+ (group 30:15
112+ (call 30:16 (wing 30:16 one) (wing 30:20 x)))))
113+ (group 31:3
114+ (call 31:4 (wing 31:4 top) (wing 31:8 input))))))
115+ (value 32:1 nested-capture
116+ (gate 32:19
117+ (face 32:22 input (aura 32:28 @t))
118+ (body 33:3
119+ (value 33:3 outer-one
120+ (gate 33:16
121+ (bind 33:19 x)
122+ (body 34:5
123+ (value 34:5 inner-one
124+ (gate 34:18
125+ (bind 34:21 y)
126+ (group 34:23
127+ (call 34:24 (wing 34:24 inner-two) (wing 34:34 y)))))
128+ (value 35:5 inner-two
129+ (gate 35:18
130+ (bind 35:21 y)
131+ (body 36:7
132+ (trace 36:7
133+ (wing 36:10 input)
134+ (body 37:9
135+ (group 37:9
136+ (call 37:10 (wing 37:10 inner-one) (wing 37:20 y))))))))
137+ (group 38:5
138+ (call 38:6
139+ (wing 38:6 outer-two)
140+ (group 38:16
141+ (call 38:17 (wing 38:17 inner-one) (wing 38:27 x))))))))
142+ (value 39:3 outer-two
143+ (gate 39:16
144+ (bind 39:19 z)
145+ (group 39:21
146+ (call 39:22 (wing 39:22 outer-one) (wing 39:32 z)))))
147+ (group 40:3
148+ (call 40:4 (wing 40:4 outer-one) (wing 40:14 input))))))
149+ (value 41:1 unresolved
150+ (gate 41:15
151+ (face 41:18 input (aura 41:24 @t))
152+ (body 42:3
153+ (value 42:3 first
154+ (gate 42:12
155+ (bind 42:15 x)
156+ (body 43:5
157+ (trace 43:5
158+ (lit 43:8 %pending)
159+ (body 44:7
160+ (group 44:7
161+ (call 44:8 (wing 44:8 second) (wing 44:15 x))))))))
162+ (value 45:3 second
163+ (gate 45:13
164+ (bind 45:16 x)
165+ (group 45:18
166+ (call 45:19 (wing 45:19 first) (wing 45:25 x)))))
167+ (group 46:3
168+ (call 46:4 (wing 46:4 first) (wing 46:10 input))))))
169+ (value 47:1 forced-captures
170+ (gate 47:20
171+ (cell 47:23
172+ (face 47:24 a (tvar 47:26 A))
173+ (face 47:28 b (tvar 47:30 B)))
174+ (body 48:3
175+ (value 48:3 first
176+ (gate 48:12
177+ (face 48:15 x (tvar 48:17 A))
178+ (group 48:19
179+ (call 48:20 (wing 48:20 second) (wing 48:27 x)))))
180+ (value 49:3 second
181+ (gate 49:13
182+ (face 49:16 y (tvar 49:18 B))
183+ (group 49:20
184+ (call 49:21 (wing 49:21 first) (wing 49:27 y)))))
185+ (group 50:3
186+ (call 50:4 (wing 50:4 first) (wing 50:10 a))))))
187+ (value 51:1 same-capture
188+ (gate 51:17
189+ (cell 51:20
190+ (face 51:21 a (tvar 51:23 A))
191+ (face 51:25 b (tvar 51:27 A)))
192+ (body 52:3
193+ (value 52:3 first
194+ (gate 52:12
195+ (face 52:15 x (tvar 52:17 A))
196+ (group 52:19
197+ (call 52:20 (wing 52:20 second) (wing 52:27 x)))))
198+ (value 53:3 second
199+ (gate 53:13
200+ (face 53:16 y (tvar 53:18 A))
201+ (group 53:20
202+ (call 53:21 (wing 53:21 first) (wing 53:27 y)))))
203+ (group 54:3
204+ (call 54:4 (wing 54:4 first) (wing 54:10 a)))))))
tests/golden/types-local-scc-adversarial/types.txtnew file+17
@@ -0,0 +1,17 @@
1+partial inference; module not checked
2+++ siblings: $-(@t A)
3+++ introduced: $-(@t A)
4+++ outer-later: $-(A B)
5+++ captured: $-(@t @t)
6+++ alias-mono: call's sample and argument types do not unify
7+/tests/golden/types-local-scc-adversarial/source.jibb:26:4: called gate has type $-(@p A)
8+ (first input)
9+ ^
10+/tests/golden/types-local-scc-adversarial/source.jibb:26:10: argument has type @t
11+ (first input)
12+ ^
13+++ chain: $-(@t A)
14+++ nested-capture: $-(@t A)
15+++ unresolved: local definitions need unsupported inference
16+++ forced-captures: local definitions need unsupported inference
17+++ same-capture: $-([a=A b=A] B)
tests/golden/types-local-scc/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Modules: gates may call their siblings; other values cannot depend on themselves, even through a gate. Type variables are generalized per definition, with enclosing captures shared.
2+tests: Local mutually recursive gates share monomorphic seeds while checking and generalize after the complete group. Includes independent instantiations, captured variables, nested groups and a local mold. Shadowing, mixed gate/value cycles, unresolved tags and forcing distinct captured capitals remain unavailable to partial inference.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-local-scc/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the prepared prelude.
tests/golden/types-local-scc/source.jibbnew file+58
@@ -0,0 +1,58 @@
1+++ simple |= x=@t
2+ ++ left |= y=@t (right y)
3+ ++ right |= y=@t (left y)
4+ (left x)
5+++ polymorphic |= x=@t
6+ ++ left |= y (right y)
7+ ++ right |= y (left y)
8+ ~& (left x)
9+ (right ~zod)
10+++ capture |= x=A
11+ ++ left |= y (right y)
12+ ++ right |= y
13+ ~& x
14+ (left y)
15+ (left x)
16+++ bad-shadow |= x=@t
17+ ++ left |= right=@t right
18+ ++ right |= y=@t (left y)
19+ (left x)
20+++ bad-value |= x=@t
21+ ++ left |= y=@t (right y)
22+ ++ right left
23+ (left x)
24+++ pending |= x=@t
25+ ++ left |= y=@t
26+ ~& %unresolved
27+ (right y)
28+ ++ right |= y=@t (left y)
29+ (left x)
30+++ atom-capture |= x
31+ ++ first |= y
32+ ~& ^- @ x
33+ (second y)
34+ ++ second |= z (first z)
35+ ~& (first x)
36+ ^- @t x
37+++ linked |= x
38+ ++ first |= y (second y)
39+ ++ second |= z
40+ ~& ^- @t x
41+ (first z)
42+ x
43+++ distinct |= x=A
44+ ++ first |= y=B (second y)
45+ ++ second |= z=A (first z)
46+ (first x)
47+++ local-mold |= x=@t
48+ +$ packet [a=@t b=@p]
49+ ++ first |= y=packet (second y)
50+ ++ second |= z=packet (first z)
51+ (first [x ~zod])
52+++ nested-groups |= x=@t
53+ ++ first |= y=@t
54+ ++ inner-a |= p=@t (inner-b p)
55+ ++ inner-b |= p=@t (inner-a p)
56+ (inner-a (second y))
57+ ++ second |= z=@t (first z)
58+ (first x)
tests/golden/types-local-scc/tokens.txtnew file+434
@@ -0,0 +1,434 @@
1+1:1 glyph ++
2+1:4 name simple
3+1:11 glyph |=
4+1:14 name x
5+1:15 tight glyph =
6+1:16 tight aura @t
7+2:3 INDENT
8+2:3 glyph ++
9+2:6 name left
10+2:11 glyph |=
11+2:14 name y
12+2:15 tight glyph =
13+2:16 tight aura @t
14+2:19 glyph (
15+2:20 tight name right
16+2:26 name y
17+2:27 tight glyph )
18+3:3 NEWLINE
19+3:3 glyph ++
20+3:6 name right
21+3:12 glyph |=
22+3:15 name y
23+3:16 tight glyph =
24+3:17 tight aura @t
25+3:20 glyph (
26+3:21 tight name left
27+3:26 name y
28+3:27 tight glyph )
29+4:3 NEWLINE
30+4:3 glyph (
31+4:4 tight name left
32+4:9 name x
33+4:10 tight glyph )
34+5:1 DEDENT
35+5:1 NEWLINE
36+5:1 glyph ++
37+5:4 name polymorphic
38+5:16 glyph |=
39+5:19 name x
40+5:20 tight glyph =
41+5:21 tight aura @t
42+6:3 INDENT
43+6:3 glyph ++
44+6:6 name left
45+6:11 glyph |=
46+6:14 name y
47+6:16 glyph (
48+6:17 tight name right
49+6:23 name y
50+6:24 tight glyph )
51+7:3 NEWLINE
52+7:3 glyph ++
53+7:6 name right
54+7:12 glyph |=
55+7:15 name y
56+7:17 glyph (
57+7:18 tight name left
58+7:23 name y
59+7:24 tight glyph )
60+8:3 NEWLINE
61+8:3 glyph ~&
62+8:6 glyph (
63+8:7 tight name left
64+8:12 name x
65+8:13 tight glyph )
66+9:5 INDENT
67+9:5 glyph (
68+9:6 tight name right
69+9:12 lit ~zod
70+9:16 tight glyph )
71+10:1 DEDENT
72+10:1 DEDENT
73+10:1 NEWLINE
74+10:1 glyph ++
75+10:4 name capture
76+10:12 glyph |=
77+10:15 name x
78+10:16 tight glyph =
79+10:17 tight tvar A
80+11:3 INDENT
81+11:3 glyph ++
82+11:6 name left
83+11:11 glyph |=
84+11:14 name y
85+11:16 glyph (
86+11:17 tight name right
87+11:23 name y
88+11:24 tight glyph )
89+12:3 NEWLINE
90+12:3 glyph ++
91+12:6 name right
92+12:12 glyph |=
93+12:15 name y
94+13:5 INDENT
95+13:5 glyph ~&
96+13:8 name x
97+14:7 INDENT
98+14:7 glyph (
99+14:8 tight name left
100+14:13 name y
101+14:14 tight glyph )
102+15:3 DEDENT
103+15:3 DEDENT
104+15:3 NEWLINE
105+15:3 glyph (
106+15:4 tight name left
107+15:9 name x
108+15:10 tight glyph )
109+16:1 DEDENT
110+16:1 NEWLINE
111+16:1 glyph ++
112+16:4 name bad-shadow
113+16:15 glyph |=
114+16:18 name x
115+16:19 tight glyph =
116+16:20 tight aura @t
117+17:3 INDENT
118+17:3 glyph ++
119+17:6 name left
120+17:11 glyph |=
121+17:14 name right
122+17:19 tight glyph =
123+17:20 tight aura @t
124+17:23 name right
125+18:3 NEWLINE
126+18:3 glyph ++
127+18:6 name right
128+18:12 glyph |=
129+18:15 name y
130+18:16 tight glyph =
131+18:17 tight aura @t
132+18:20 glyph (
133+18:21 tight name left
134+18:26 name y
135+18:27 tight glyph )
136+19:3 NEWLINE
137+19:3 glyph (
138+19:4 tight name left
139+19:9 name x
140+19:10 tight glyph )
141+20:1 DEDENT
142+20:1 NEWLINE
143+20:1 glyph ++
144+20:4 name bad-value
145+20:14 glyph |=
146+20:17 name x
147+20:18 tight glyph =
148+20:19 tight aura @t
149+21:3 INDENT
150+21:3 glyph ++
151+21:6 name left
152+21:11 glyph |=
153+21:14 name y
154+21:15 tight glyph =
155+21:16 tight aura @t
156+21:19 glyph (
157+21:20 tight name right
158+21:26 name y
159+21:27 tight glyph )
160+22:3 NEWLINE
161+22:3 glyph ++
162+22:6 name right
163+22:12 name left
164+23:3 NEWLINE
165+23:3 glyph (
166+23:4 tight name left
167+23:9 name x
168+23:10 tight glyph )
169+24:1 DEDENT
170+24:1 NEWLINE
171+24:1 glyph ++
172+24:4 name pending
173+24:12 glyph |=
174+24:15 name x
175+24:16 tight glyph =
176+24:17 tight aura @t
177+25:3 INDENT
178+25:3 glyph ++
179+25:6 name left
180+25:11 glyph |=
181+25:14 name y
182+25:15 tight glyph =
183+25:16 tight aura @t
184+26:5 INDENT
185+26:5 glyph ~&
186+26:8 lit %unresolved
187+27:7 INDENT
188+27:7 glyph (
189+27:8 tight name right
190+27:14 name y
191+27:15 tight glyph )
192+28:3 DEDENT
193+28:3 DEDENT
194+28:3 NEWLINE
195+28:3 glyph ++
196+28:6 name right
197+28:12 glyph |=
198+28:15 name y
199+28:16 tight glyph =
200+28:17 tight aura @t
201+28:20 glyph (
202+28:21 tight name left
203+28:26 name y
204+28:27 tight glyph )
205+29:3 NEWLINE
206+29:3 glyph (
207+29:4 tight name left
208+29:9 name x
209+29:10 tight glyph )
210+30:1 DEDENT
211+30:1 NEWLINE
212+30:1 glyph ++
213+30:4 name atom-capture
214+30:17 glyph |=
215+30:20 name x
216+31:3 INDENT
217+31:3 glyph ++
218+31:6 name first
219+31:12 glyph |=
220+31:15 name y
221+32:5 INDENT
222+32:5 glyph ~&
223+32:8 glyph ^-
224+32:11 aura @
225+32:13 name x
226+33:7 INDENT
227+33:7 glyph (
228+33:8 tight name second
229+33:15 name y
230+33:16 tight glyph )
231+34:3 DEDENT
232+34:3 DEDENT
233+34:3 NEWLINE
234+34:3 glyph ++
235+34:6 name second
236+34:13 glyph |=
237+34:16 name z
238+34:18 glyph (
239+34:19 tight name first
240+34:25 name z
241+34:26 tight glyph )
242+35:3 NEWLINE
243+35:3 glyph ~&
244+35:6 glyph (
245+35:7 tight name first
246+35:13 name x
247+35:14 tight glyph )
248+36:5 INDENT
249+36:5 glyph ^-
250+36:8 aura @t
251+36:11 name x
252+37:1 DEDENT
253+37:1 DEDENT
254+37:1 NEWLINE
255+37:1 glyph ++
256+37:4 name linked
257+37:11 glyph |=
258+37:14 name x
259+38:3 INDENT
260+38:3 glyph ++
261+38:6 name first
262+38:12 glyph |=
263+38:15 name y
264+38:17 glyph (
265+38:18 tight name second
266+38:25 name y
267+38:26 tight glyph )
268+39:3 NEWLINE
269+39:3 glyph ++
270+39:6 name second
271+39:13 glyph |=
272+39:16 name z
273+40:5 INDENT
274+40:5 glyph ~&
275+40:8 glyph ^-
276+40:11 aura @t
277+40:14 name x
278+41:7 INDENT
279+41:7 glyph (
280+41:8 tight name first
281+41:14 name z
282+41:15 tight glyph )
283+42:3 DEDENT
284+42:3 DEDENT
285+42:3 NEWLINE
286+42:3 name x
287+43:1 DEDENT
288+43:1 NEWLINE
289+43:1 glyph ++
290+43:4 name distinct
291+43:13 glyph |=
292+43:16 name x
293+43:17 tight glyph =
294+43:18 tight tvar A
295+44:3 INDENT
296+44:3 glyph ++
297+44:6 name first
298+44:12 glyph |=
299+44:15 name y
300+44:16 tight glyph =
301+44:17 tight tvar B
302+44:19 glyph (
303+44:20 tight name second
304+44:27 name y
305+44:28 tight glyph )
306+45:3 NEWLINE
307+45:3 glyph ++
308+45:6 name second
309+45:13 glyph |=
310+45:16 name z
311+45:17 tight glyph =
312+45:18 tight tvar A
313+45:20 glyph (
314+45:21 tight name first
315+45:27 name z
316+45:28 tight glyph )
317+46:3 NEWLINE
318+46:3 glyph (
319+46:4 tight name first
320+46:10 name x
321+46:11 tight glyph )
322+47:1 DEDENT
323+47:1 NEWLINE
324+47:1 glyph ++
325+47:4 name local-mold
326+47:15 glyph |=
327+47:18 name x
328+47:19 tight glyph =
329+47:20 tight aura @t
330+48:3 INDENT
331+48:3 glyph +$
332+48:6 name packet
333+48:13 glyph [
334+48:14 tight name a
335+48:15 tight glyph =
336+48:16 tight aura @t
337+48:19 name b
338+48:20 tight glyph =
339+48:21 tight aura @p
340+48:23 tight glyph ]
341+49:3 NEWLINE
342+49:3 glyph ++
343+49:6 name first
344+49:12 glyph |=
345+49:15 name y
346+49:16 tight glyph =
347+49:17 tight name packet
348+49:24 glyph (
349+49:25 tight name second
350+49:32 name y
351+49:33 tight glyph )
352+50:3 NEWLINE
353+50:3 glyph ++
354+50:6 name second
355+50:13 glyph |=
356+50:16 name z
357+50:17 tight glyph =
358+50:18 tight name packet
359+50:25 glyph (
360+50:26 tight name first
361+50:32 name z
362+50:33 tight glyph )
363+51:3 NEWLINE
364+51:3 glyph (
365+51:4 tight name first
366+51:10 glyph [
367+51:11 tight name x
368+51:13 lit ~zod
369+51:17 tight glyph ]
370+51:18 tight glyph )
371+52:1 DEDENT
372+52:1 NEWLINE
373+52:1 glyph ++
374+52:4 name nested-groups
375+52:18 glyph |=
376+52:21 name x
377+52:22 tight glyph =
378+52:23 tight aura @t
379+53:3 INDENT
380+53:3 glyph ++
381+53:6 name first
382+53:12 glyph |=
383+53:15 name y
384+53:16 tight glyph =
385+53:17 tight aura @t
386+54:5 INDENT
387+54:5 glyph ++
388+54:8 name inner-a
389+54:16 glyph |=
390+54:19 name p
391+54:20 tight glyph =
392+54:21 tight aura @t
393+54:24 glyph (
394+54:25 tight name inner-b
395+54:33 name p
396+54:34 tight glyph )
397+55:5 NEWLINE
398+55:5 glyph ++
399+55:8 name inner-b
400+55:16 glyph |=
401+55:19 name p
402+55:20 tight glyph =
403+55:21 tight aura @t
404+55:24 glyph (
405+55:25 tight name inner-a
406+55:33 name p
407+55:34 tight glyph )
408+56:5 NEWLINE
409+56:5 glyph (
410+56:6 tight name inner-a
411+56:14 glyph (
412+56:15 tight name second
413+56:22 name y
414+56:23 tight glyph )
415+56:24 tight glyph )
416+57:3 DEDENT
417+57:3 NEWLINE
418+57:3 glyph ++
419+57:6 name second
420+57:13 glyph |=
421+57:16 name z
422+57:17 tight glyph =
423+57:18 tight aura @t
424+57:21 glyph (
425+57:22 tight name first
426+57:28 name z
427+57:29 tight glyph )
428+58:3 NEWLINE
429+58:3 glyph (
430+58:4 tight name first
431+58:10 name x
432+58:11 tight glyph )
433+58:12 DEDENT
434+58:12 NEWLINE
tests/golden/types-local-scc/tree.txtnew file+214
@@ -0,0 +1,214 @@
1+(module
2+ (value 1:1 simple
3+ (gate 1:11
4+ (face 1:14 x (aura 1:16 @t))
5+ (body 2:3
6+ (value 2:3 left
7+ (gate 2:11
8+ (face 2:14 y (aura 2:16 @t))
9+ (group 2:19
10+ (call 2:20 (wing 2:20 right) (wing 2:26 y)))))
11+ (value 3:3 right
12+ (gate 3:12
13+ (face 3:15 y (aura 3:17 @t))
14+ (group 3:20
15+ (call 3:21 (wing 3:21 left) (wing 3:26 y)))))
16+ (group 4:3
17+ (call 4:4 (wing 4:4 left) (wing 4:9 x))))))
18+ (value 5:1 polymorphic
19+ (gate 5:16
20+ (face 5:19 x (aura 5:21 @t))
21+ (body 6:3
22+ (value 6:3 left
23+ (gate 6:11
24+ (bind 6:14 y)
25+ (group 6:16
26+ (call 6:17 (wing 6:17 right) (wing 6:23 y)))))
27+ (value 7:3 right
28+ (gate 7:12
29+ (bind 7:15 y)
30+ (group 7:17
31+ (call 7:18 (wing 7:18 left) (wing 7:23 y)))))
32+ (trace 8:3
33+ (group 8:6
34+ (call 8:7 (wing 8:7 left) (wing 8:12 x)))
35+ (body 9:5
36+ (group 9:5
37+ (call 9:6 (wing 9:6 right) (lit 9:12 ~zod))))))))
38+ (value 10:1 capture
39+ (gate 10:12
40+ (face 10:15 x (tvar 10:17 A))
41+ (body 11:3
42+ (value 11:3 left
43+ (gate 11:11
44+ (bind 11:14 y)
45+ (group 11:16
46+ (call 11:17 (wing 11:17 right) (wing 11:23 y)))))
47+ (value 12:3 right
48+ (gate 12:12
49+ (bind 12:15 y)
50+ (body 13:5
51+ (trace 13:5
52+ (wing 13:8 x)
53+ (body 14:7
54+ (group 14:7
55+ (call 14:8 (wing 14:8 left) (wing 14:13 y))))))))
56+ (group 15:3
57+ (call 15:4 (wing 15:4 left) (wing 15:9 x))))))
58+ (value 16:1 bad-shadow
59+ (gate 16:15
60+ (face 16:18 x (aura 16:20 @t))
61+ (body 17:3
62+ (value 17:3 left
63+ (gate 17:11
64+ (face 17:14 right (aura 17:20 @t))
65+ (wing 17:23 right)))
66+ (value 18:3 right
67+ (gate 18:12
68+ (face 18:15 y (aura 18:17 @t))
69+ (group 18:20
70+ (call 18:21 (wing 18:21 left) (wing 18:26 y)))))
71+ (group 19:3
72+ (call 19:4 (wing 19:4 left) (wing 19:9 x))))))
73+ (value 20:1 bad-value
74+ (gate 20:14
75+ (face 20:17 x (aura 20:19 @t))
76+ (body 21:3
77+ (value 21:3 left
78+ (gate 21:11
79+ (face 21:14 y (aura 21:16 @t))
80+ (group 21:19
81+ (call 21:20 (wing 21:20 right) (wing 21:26 y)))))
82+ (value 22:3 right (wing 22:12 left))
83+ (group 23:3
84+ (call 23:4 (wing 23:4 left) (wing 23:9 x))))))
85+ (value 24:1 pending
86+ (gate 24:12
87+ (face 24:15 x (aura 24:17 @t))
88+ (body 25:3
89+ (value 25:3 left
90+ (gate 25:11
91+ (face 25:14 y (aura 25:16 @t))
92+ (body 26:5
93+ (trace 26:5
94+ (lit 26:8 %unresolved)
95+ (body 27:7
96+ (group 27:7
97+ (call 27:8 (wing 27:8 right) (wing 27:14 y))))))))
98+ (value 28:3 right
99+ (gate 28:12
100+ (face 28:15 y (aura 28:17 @t))
101+ (group 28:20
102+ (call 28:21 (wing 28:21 left) (wing 28:26 y)))))
103+ (group 29:3
104+ (call 29:4 (wing 29:4 left) (wing 29:9 x))))))
105+ (value 30:1 atom-capture
106+ (gate 30:17
107+ (bind 30:20 x)
108+ (body 31:3
109+ (value 31:3 first
110+ (gate 31:12
111+ (bind 31:15 y)
112+ (body 32:5
113+ (trace 32:5
114+ (cast 32:8 (aura 32:11 @) (wing 32:13 x))
115+ (body 33:7
116+ (group 33:7
117+ (call 33:8 (wing 33:8 second) (wing 33:15 y))))))))
118+ (value 34:3 second
119+ (gate 34:13
120+ (bind 34:16 z)
121+ (group 34:18
122+ (call 34:19 (wing 34:19 first) (wing 34:25 z)))))
123+ (trace 35:3
124+ (group 35:6
125+ (call 35:7 (wing 35:7 first) (wing 35:13 x)))
126+ (body 36:5
127+ (cast 36:5 (aura 36:8 @t) (wing 36:11 x)))))))
128+ (value 37:1 linked
129+ (gate 37:11
130+ (bind 37:14 x)
131+ (body 38:3
132+ (value 38:3 first
133+ (gate 38:12
134+ (bind 38:15 y)
135+ (group 38:17
136+ (call 38:18 (wing 38:18 second) (wing 38:25 y)))))
137+ (value 39:3 second
138+ (gate 39:13
139+ (bind 39:16 z)
140+ (body 40:5
141+ (trace 40:5
142+ (cast 40:8 (aura 40:11 @t) (wing 40:14 x))
143+ (body 41:7
144+ (group 41:7
145+ (call 41:8 (wing 41:8 first) (wing 41:14 z))))))))
146+ (wing 42:3 x))))
147+ (value 43:1 distinct
148+ (gate 43:13
149+ (face 43:16 x (tvar 43:18 A))
150+ (body 44:3
151+ (value 44:3 first
152+ (gate 44:12
153+ (face 44:15 y (tvar 44:17 B))
154+ (group 44:19
155+ (call 44:20 (wing 44:20 second) (wing 44:27 y)))))
156+ (value 45:3 second
157+ (gate 45:13
158+ (face 45:16 z (tvar 45:18 A))
159+ (group 45:20
160+ (call 45:21 (wing 45:21 first) (wing 45:27 z)))))
161+ (group 46:3
162+ (call 46:4 (wing 46:4 first) (wing 46:10 x))))))
163+ (value 47:1 local-mold
164+ (gate 47:15
165+ (face 47:18 x (aura 47:20 @t))
166+ (body 48:3
167+ (mold 48:3 packet
168+ (cell 48:13
169+ (face 48:14 a (aura 48:16 @t))
170+ (face 48:19 b (aura 48:21 @p))))
171+ (value 49:3 first
172+ (gate 49:12
173+ (face 49:15 y (ref 49:17 packet))
174+ (group 49:24
175+ (call 49:25 (wing 49:25 second) (wing 49:32 y)))))
176+ (value 50:3 second
177+ (gate 50:13
178+ (face 50:16 z (ref 50:18 packet))
179+ (group 50:25
180+ (call 50:26 (wing 50:26 first) (wing 50:32 z)))))
181+ (group 51:3
182+ (call 51:4
183+ (wing 51:4 first)
184+ (tuple 51:10 (wing 51:11 x) (lit 51:13 ~zod)))))))
185+ (value 52:1 nested-groups
186+ (gate 52:18
187+ (face 52:21 x (aura 52:23 @t))
188+ (body 53:3
189+ (value 53:3 first
190+ (gate 53:12
191+ (face 53:15 y (aura 53:17 @t))
192+ (body 54:5
193+ (value 54:5 inner-a
194+ (gate 54:16
195+ (face 54:19 p (aura 54:21 @t))
196+ (group 54:24
197+ (call 54:25 (wing 54:25 inner-b) (wing 54:33 p)))))
198+ (value 55:5 inner-b
199+ (gate 55:16
200+ (face 55:19 p (aura 55:21 @t))
201+ (group 55:24
202+ (call 55:25 (wing 55:25 inner-a) (wing 55:33 p)))))
203+ (group 56:5
204+ (call 56:6
205+ (wing 56:6 inner-a)
206+ (group 56:14
207+ (call 56:15 (wing 56:15 second) (wing 56:22 y))))))))
208+ (value 57:3 second
209+ (gate 57:13
210+ (face 57:16 z (aura 57:18 @t))
211+ (group 57:21
212+ (call 57:22 (wing 57:22 first) (wing 57:28 z)))))
213+ (group 58:3
214+ (call 58:4 (wing 58:4 first) (wing 58:10 x)))))))
tests/golden/types-local-scc/types.txtnew file+12
@@ -0,0 +1,12 @@
1+partial inference; module not checked
2+++ simple: $-(@t A)
3+++ polymorphic: $-(@t A)
4+++ capture: $-(A B)
5+++ bad-shadow: local definitions need unsupported inference
6+++ bad-value: local definitions need unsupported inference
7+++ pending: local definitions need unsupported inference
8+++ atom-capture: $-(@t @t)
9+++ linked: $-(@t @t)
10+++ distinct: local definitions need unsupported inference
11+++ local-mold: $-(@t A)
12+++ nested-groups: $-(@t @t)
tests/golden/types-multi-call/types.txt+1−1
@@ -68,7 +68,7 @@ partial inference; module not checked
6868++ recurse: $-([@t @p] [@t @p])
6969++ pending: tag needs context in partial inference
7070++ pending-null: `~` needs context in partial inference
71−++ unknown-context: expression is not supported by partial inference
71+++ unknown-context: tag needs context in partial inference
7272++ named-mismatch: call's sample and argument types do not unify
7373/tests/golden/types-multi-call/source.jibb:38:20: called gate has type $-([label=@t ship=@p] [@t @p])
7474++ named-mismatch (named [other="hi" ship=~zod])
tests/lib/jibb-module-scope.hoon+12−1
@@ -38,7 +38,7 @@
3838 =/ after-fixtures=(list [at=path source=@t])
3939 [[~[%ui %safe %jibb] library] duplicates]
4040 =/ after (golden-types-with-prelude:jibb /ui/main/jibb after-source ~ ~ after-fixtures prelude)
41− (of-wain:format ~[okay empty bad bad-value bad-mold collision duplicate after real-parity list-guard self-prelude-guards unit-construction-guard])
41+ (of-wain:format ~[okay empty bad bad-value bad-mold collision duplicate after real-parity list-guard self-prelude-guards unit-construction-guard open-list-guard])
4242::
4343++ real-parity
4444 ^- @t
@@ -93,4 +93,15 @@
9393 =/ c (golden-types-with-prelude:jibb /ui/main/jibb src ~ ~ ~ malformed)
9494 =/ d (golden-types-with-prelude:jibb /ui/main/jibb local ~ ~ ~ omitted)
9595 (of-wain:format ~[a b c d])
96+::
97+++ open-list-guard
98+ ^- @t
99+ =/ source=@t (crip "++ x ~[\"hi\"]\0a++ empty ~[]\0a")
100+ =/ omitted=@t (crip "++ same |=(x x)\0a")
101+ =/ changed=@t (crip "+$ list |$ [A] [A A]\0a")
102+ =/ malformed=@t (crip "+$ list |$ [A]\0a")
103+ =/ a (golden-types-with-prelude:jibb /ui/main/jibb source ~ ~ ~ omitted)
104+ =/ b (golden-types-with-prelude:jibb /ui/main/jibb source ~ ~ ~ changed)
105+ =/ c (golden-types-with-prelude:jibb /ui/main/jibb source ~ ~ ~ malformed)
106+ (of-wain:format ~[a b c])
96107--
tests/lib/jibb.hoon+593−569
@@ -1492,469 +1492,485 @@
14921492/* typ-439 %txt /tests/golden/types-list-imported/types/txt
14931493/* imp-439-1 %txt /tests/golden/types-list-imported/sur/fixture/txt
14941494/* imp-439-2 %txt /tests/golden/types-list-imported/sur/fixture/txt
1495−/* src-440 %jibb /tests/golden/types-list-pattern-imported/source/jibb
1496−/* tok-440 %txt /tests/golden/types-list-pattern-imported/tokens/txt
1497−/* tre-440 %txt /tests/golden/types-list-pattern-imported/tree/txt
1498−/* typ-440 %txt /tests/golden/types-list-pattern-imported/types/txt
1499−/* imp-440-1 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1500−/* imp-440-2 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1501−/* src-441 %jibb /tests/golden/types-list-patterns/source/jibb
1502−/* tok-441 %txt /tests/golden/types-list-patterns/tokens/txt
1503−/* tre-441 %txt /tests/golden/types-list-patterns/tree/txt
1504−/* typ-441 %txt /tests/golden/types-list-patterns/types/txt
1505−/* src-442 %jibb /tests/golden/types-list-zero-fit/source/jibb
1506−/* tok-442 %txt /tests/golden/types-list-zero-fit/tokens/txt
1507−/* tre-442 %txt /tests/golden/types-list-zero-fit/tree/txt
1508−/* typ-442 %txt /tests/golden/types-list-zero-fit/types/txt
1509−/* src-443 %jibb /tests/golden/types-local-capitals/source/jibb
1510−/* tok-443 %txt /tests/golden/types-local-capitals/tokens/txt
1511−/* tre-443 %txt /tests/golden/types-local-capitals/tree/txt
1512−/* typ-443 %txt /tests/golden/types-local-capitals/types/txt
1513−/* src-444 %jibb /tests/golden/types-local-recursive/source/jibb
1514−/* tok-444 %txt /tests/golden/types-local-recursive/tokens/txt
1515−/* tre-444 %txt /tests/golden/types-local-recursive/tree/txt
1516−/* typ-444 %txt /tests/golden/types-local-recursive/types/txt
1517−/* src-445 %jibb /tests/golden/types-missing-tag-context/source/jibb
1518−/* tok-445 %txt /tests/golden/types-missing-tag-context/tokens/txt
1519−/* tre-445 %txt /tests/golden/types-missing-tag-context/tree/txt
1520−/* typ-445 %txt /tests/golden/types-missing-tag-context/types/txt
1521−/* src-446 %jibb /tests/golden/types-missing-tag-imported/source/jibb
1522−/* tok-446 %txt /tests/golden/types-missing-tag-imported/tokens/txt
1523−/* tre-446 %txt /tests/golden/types-missing-tag-imported/tree/txt
1524−/* typ-446 %txt /tests/golden/types-missing-tag-imported/types/txt
1525−/* imp-446-1 %txt /tests/golden/types-missing-tag-imported/sur/fixture/txt
1526−/* imp-446-2 %txt /tests/golden/types-missing-tag-imported/sur/fixture/txt
1527−/* src-447 %jibb /tests/golden/types-missing-tag-named/source/jibb
1528−/* tok-447 %txt /tests/golden/types-missing-tag-named/tokens/txt
1529−/* tre-447 %txt /tests/golden/types-missing-tag-named/tree/txt
1530−/* typ-447 %txt /tests/golden/types-missing-tag-named/types/txt
1531−/* src-448 %jibb /tests/golden/types-module-fixtures/source/jibb
1532−/* tok-448 %txt /tests/golden/types-module-fixtures/tokens/txt
1533−/* tre-448 %txt /tests/golden/types-module-fixtures/tree/txt
1534−/* mod-448-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1535−/* mod-448-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1536−/* typ-448 %txt /tests/golden/types-module-fixtures/types/txt
1537−/* mtre-448 %txt /tests/golden/types-module-fixtures/module-trees/txt
1538−/* src-449 %jibb /tests/golden/types-module-mixed/source/jibb
1539−/* tok-449 %txt /tests/golden/types-module-mixed/tokens/txt
1540−/* tre-449 %txt /tests/golden/types-module-mixed/tree/txt
1541−/* mod-449-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1542−/* typ-449 %txt /tests/golden/types-module-mixed/types/txt
1543−/* imp-449-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1544−/* mark-449-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1545−/* mtre-449 %txt /tests/golden/types-module-mixed/module-trees/txt
1546−/* src-450 %jibb /tests/golden/types-multi-call/source/jibb
1547−/* tok-450 %txt /tests/golden/types-multi-call/tokens/txt
1548−/* tre-450 %txt /tests/golden/types-multi-call/tree/txt
1549−/* typ-450 %txt /tests/golden/types-multi-call/types/txt
1550−/* src-451 %jibb /tests/golden/types-multi-import/source/jibb
1551−/* tok-451 %txt /tests/golden/types-multi-import/tokens/txt
1552−/* tre-451 %txt /tests/golden/types-multi-import/tree/txt
1553−/* mod-451-1 %jibb /tests/golden/types-multi-import/modules/ui/lib/jibb
1554−/* typ-451 %txt /tests/golden/types-multi-import/types/txt
1555−/* mtre-451 %txt /tests/golden/types-multi-import/module-trees/txt
1556−/* src-452 %jibb /tests/golden/types-nested-missing-tag/source/jibb
1557−/* tok-452 %txt /tests/golden/types-nested-missing-tag/tokens/txt
1558−/* tre-452 %txt /tests/golden/types-nested-missing-tag/tree/txt
1559−/* typ-452 %txt /tests/golden/types-nested-missing-tag/types/txt
1560−/* src-453 %jibb /tests/golden/types-null-context/source/jibb
1561−/* tok-453 %txt /tests/golden/types-null-context/tokens/txt
1562−/* tre-453 %txt /tests/golden/types-null-context/tree/txt
1563−/* typ-453 %txt /tests/golden/types-null-context/types/txt
1564−/* src-454 %jibb /tests/golden/types-null-overlap/source/jibb
1565−/* tok-454 %txt /tests/golden/types-null-overlap/tokens/txt
1566−/* tre-454 %txt /tests/golden/types-null-overlap/tree/txt
1567−/* typ-454 %txt /tests/golden/types-null-overlap/types/txt
1568−/* src-455 %jibb /tests/golden/types-null-unresolved/source/jibb
1569−/* tok-455 %txt /tests/golden/types-null-unresolved/tokens/txt
1570−/* tre-455 %txt /tests/golden/types-null-unresolved/tree/txt
1571−/* typ-455 %txt /tests/golden/types-null-unresolved/types/txt
1572−/* src-456 %jibb /tests/golden/types-partial-apply/source/jibb
1573−/* tok-456 %txt /tests/golden/types-partial-apply/tokens/txt
1574−/* tre-456 %txt /tests/golden/types-partial-apply/tree/txt
1575−/* typ-456 %txt /tests/golden/types-partial-apply/types/txt
1576−/* src-457 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1577−/* tok-457 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1578−/* tre-457 %txt /tests/golden/types-partial-atom-alias/tree/txt
1579−/* typ-457 %txt /tests/golden/types-partial-atom-alias/types/txt
1580−/* src-458 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1581−/* tok-458 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1582−/* tre-458 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1583−/* typ-458 %txt /tests/golden/types-partial-atom-constraint/types/txt
1584−/* src-459 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1585−/* tok-459 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1586−/* tre-459 %txt /tests/golden/types-partial-atom-widening/tree/txt
1587−/* typ-459 %txt /tests/golden/types-partial-atom-widening/types/txt
1588−/* src-460 %jibb /tests/golden/types-partial-aura/source/jibb
1589−/* tok-460 %txt /tests/golden/types-partial-aura/tokens/txt
1590−/* tre-460 %txt /tests/golden/types-partial-aura/tree/txt
1591−/* typ-460 %txt /tests/golden/types-partial-aura/types/txt
1592−/* src-461 %jibb /tests/golden/types-partial-aura-family/source/jibb
1593−/* tok-461 %txt /tests/golden/types-partial-aura-family/tokens/txt
1594−/* tre-461 %txt /tests/golden/types-partial-aura-family/tree/txt
1595−/* typ-461 %txt /tests/golden/types-partial-aura-family/types/txt
1596−/* src-462 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1597−/* tok-462 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1598−/* tre-462 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1599−/* typ-462 %txt /tests/golden/types-partial-aura-generalization/types/txt
1600−/* src-463 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1601−/* tok-463 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1602−/* tre-463 %txt /tests/golden/types-partial-bare-atom/tree/txt
1603−/* typ-463 %txt /tests/golden/types-partial-bare-atom/types/txt
1604−/* src-464 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1605−/* tok-464 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1606−/* tre-464 %txt /tests/golden/types-partial-branch-widening/tree/txt
1607−/* typ-464 %txt /tests/golden/types-partial-branch-widening/types/txt
1608−/* src-465 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1609−/* tok-465 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1610−/* tre-465 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1611−/* typ-465 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1612−/* src-466 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1613−/* tok-466 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1614−/* tre-466 %txt /tests/golden/types-partial-decimal-default/tree/txt
1615−/* typ-466 %txt /tests/golden/types-partial-decimal-default/types/txt
1616−/* src-467 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1617−/* tok-467 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1618−/* tre-467 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1619−/* typ-467 %txt /tests/golden/types-partial-dependency-chain/types/txt
1620−/* src-468 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1621−/* tok-468 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1622−/* tre-468 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1623−/* typ-468 %txt /tests/golden/types-partial-explicit-capital/types/txt
1624−/* src-469 %jibb /tests/golden/types-partial-forward/source/jibb
1625−/* tok-469 %txt /tests/golden/types-partial-forward/tokens/txt
1626−/* tre-469 %txt /tests/golden/types-partial-forward/tree/txt
1627−/* typ-469 %txt /tests/golden/types-partial-forward/types/txt
1628−/* src-470 %jibb /tests/golden/types-partial-generalization/source/jibb
1629−/* tok-470 %txt /tests/golden/types-partial-generalization/tokens/txt
1630−/* tre-470 %txt /tests/golden/types-partial-generalization/tree/txt
1631−/* typ-470 %txt /tests/golden/types-partial-generalization/types/txt
1632−/* src-471 %jibb /tests/golden/types-partial-identity/source/jibb
1633−/* tok-471 %txt /tests/golden/types-partial-identity/tokens/txt
1634−/* tre-471 %txt /tests/golden/types-partial-identity/tree/txt
1635−/* typ-471 %txt /tests/golden/types-partial-identity/types/txt
1636−/* src-472 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1637−/* tok-472 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1638−/* tre-472 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1639−/* typ-472 %txt /tests/golden/types-partial-independent-atoms/types/txt
1640−/* src-473 %jibb /tests/golden/types-partial-local-molds/source/jibb
1641−/* tok-473 %txt /tests/golden/types-partial-local-molds/tokens/txt
1642−/* tre-473 %txt /tests/golden/types-partial-local-molds/tree/txt
1643−/* typ-473 %txt /tests/golden/types-partial-local-molds/types/txt
1644−/* src-474 %jibb /tests/golden/types-partial-locals/source/jibb
1645−/* tok-474 %txt /tests/golden/types-partial-locals/tokens/txt
1646−/* tre-474 %txt /tests/golden/types-partial-locals/tree/txt
1647−/* typ-474 %txt /tests/golden/types-partial-locals/types/txt
1648−/* src-475 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1649−/* tok-475 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1650−/* tre-475 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1651−/* typ-475 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1652−/* src-476 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1653−/* tok-476 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1654−/* tre-476 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1655−/* typ-476 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1656−/* src-477 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1657−/* tok-477 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1658−/* tre-477 %txt /tests/golden/types-partial-mold-composite/tree/txt
1659−/* typ-477 %txt /tests/golden/types-partial-mold-composite/types/txt
1660−/* src-478 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1661−/* tok-478 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1662−/* tre-478 %txt /tests/golden/types-partial-mold-forward/tree/txt
1663−/* typ-478 %txt /tests/golden/types-partial-mold-forward/types/txt
1664−/* src-479 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1665−/* tok-479 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1666−/* tre-479 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1667−/* typ-479 %txt /tests/golden/types-partial-mold-recursive/types/txt
1668−/* src-480 %jibb /tests/golden/types-partial-occurs/source/jibb
1669−/* tok-480 %txt /tests/golden/types-partial-occurs/tokens/txt
1670−/* tre-480 %txt /tests/golden/types-partial-occurs/tree/txt
1671−/* typ-480 %txt /tests/golden/types-partial-occurs/types/txt
1672−/* src-481 %jibb /tests/golden/types-partial-projection/source/jibb
1673−/* tok-481 %txt /tests/golden/types-partial-projection/tokens/txt
1674−/* tre-481 %txt /tests/golden/types-partial-projection/tree/txt
1675−/* typ-481 %txt /tests/golden/types-partial-projection/types/txt
1676−/* src-482 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1677−/* tok-482 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1678−/* tre-482 %txt /tests/golden/types-partial-shadow-global/tree/txt
1679−/* typ-482 %txt /tests/golden/types-partial-shadow-global/types/txt
1680−/* src-483 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1681−/* tok-483 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1682−/* tre-483 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1683−/* typ-483 %txt /tests/golden/types-partial-shared-tvar/types/txt
1684−/* src-484 %jibb /tests/golden/types-partial-union-cases/source/jibb
1685−/* tok-484 %txt /tests/golden/types-partial-union-cases/tokens/txt
1686−/* tre-484 %txt /tests/golden/types-partial-union-cases/tree/txt
1687−/* typ-484 %txt /tests/golden/types-partial-union-cases/types/txt
1688−/* src-485 %jibb /tests/golden/types-partial-union-edges/source/jibb
1689−/* tok-485 %txt /tests/golden/types-partial-union-edges/tokens/txt
1690−/* tre-485 %txt /tests/golden/types-partial-union-edges/tree/txt
1691−/* typ-485 %txt /tests/golden/types-partial-union-edges/types/txt
1692−/* src-486 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1693−/* tok-486 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1694−/* tre-486 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1695−/* typ-486 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1696−/* src-487 %jibb /tests/golden/types-prelude-direct/source/jibb
1697−/* tok-487 %txt /tests/golden/types-prelude-direct/tokens/txt
1698−/* tre-487 %txt /tests/golden/types-prelude-direct/tree/txt
1699−/* typ-487 %txt /tests/golden/types-prelude-direct/types/txt
1700−/* src-488 %jibb /tests/golden/types-prelude-interface/source/jibb
1701−/* tok-488 %txt /tests/golden/types-prelude-interface/tokens/txt
1702−/* tre-488 %txt /tests/golden/types-prelude-interface/tree/txt
1703−/* mod-488-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1704−/* mod-488-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1705−/* typ-488 %txt /tests/golden/types-prelude-interface/types/txt
1706−/* mtre-488 %txt /tests/golden/types-prelude-interface/module-trees/txt
1707−/* src-489 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1708−/* tok-489 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1709−/* tre-489 %txt /tests/golden/types-prelude-list-functions/tree/txt
1710−/* mod-489-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1711−/* typ-489 %txt /tests/golden/types-prelude-list-functions/types/txt
1712−/* mtre-489 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1713−/* src-490 %jibb /tests/golden/types-prelude-unit-helpers/source/jibb
1714−/* tok-490 %txt /tests/golden/types-prelude-unit-helpers/tokens/txt
1715−/* tre-490 %txt /tests/golden/types-prelude-unit-helpers/tree/txt
1716−/* typ-490 %txt /tests/golden/types-prelude-unit-helpers/types/txt
1717−/* src-491 %jibb /tests/golden/types-record-bound-variable/source/jibb
1718−/* tok-491 %txt /tests/golden/types-record-bound-variable/tokens/txt
1719−/* tre-491 %txt /tests/golden/types-record-bound-variable/tree/txt
1720−/* typ-491 %txt /tests/golden/types-record-bound-variable/types/txt
1721−/* src-492 %jibb /tests/golden/types-record-cast-context/source/jibb
1722−/* tok-492 %txt /tests/golden/types-record-cast-context/tokens/txt
1723−/* tre-492 %txt /tests/golden/types-record-cast-context/tree/txt
1724−/* typ-492 %txt /tests/golden/types-record-cast-context/types/txt
1725−/* src-493 %jibb /tests/golden/types-record-change/source/jibb
1726−/* tok-493 %txt /tests/golden/types-record-change/tokens/txt
1727−/* tre-493 %txt /tests/golden/types-record-change/tree/txt
1728−/* typ-493 %txt /tests/golden/types-record-change/types/txt
1729−/* src-494 %jibb /tests/golden/types-record-change-generic/source/jibb
1730−/* tok-494 %txt /tests/golden/types-record-change-generic/tokens/txt
1731−/* tre-494 %txt /tests/golden/types-record-change-generic/tree/txt
1732−/* typ-494 %txt /tests/golden/types-record-change-generic/types/txt
1733−/* src-495 %jibb /tests/golden/types-record-faces/source/jibb
1734−/* tok-495 %txt /tests/golden/types-record-faces/tokens/txt
1735−/* tre-495 %txt /tests/golden/types-record-faces/tree/txt
1736−/* typ-495 %txt /tests/golden/types-record-faces/types/txt
1737−/* src-496 %jibb /tests/golden/types-record-import/source/jibb
1738−/* tok-496 %txt /tests/golden/types-record-import/tokens/txt
1739−/* tre-496 %txt /tests/golden/types-record-import/tree/txt
1740−/* mod-496-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1741−/* typ-496 %txt /tests/golden/types-record-import/types/txt
1742−/* mtre-496 %txt /tests/golden/types-record-import/module-trees/txt
1743−/* src-497 %jibb /tests/golden/types-record-local-scheme/source/jibb
1744−/* tok-497 %txt /tests/golden/types-record-local-scheme/tokens/txt
1745−/* tre-497 %txt /tests/golden/types-record-local-scheme/tree/txt
1746−/* typ-497 %txt /tests/golden/types-record-local-scheme/types/txt
1747−/* src-498 %jibb /tests/golden/types-record-nested/source/jibb
1748−/* tok-498 %txt /tests/golden/types-record-nested/tokens/txt
1749−/* tre-498 %txt /tests/golden/types-record-nested/tree/txt
1750−/* typ-498 %txt /tests/golden/types-record-nested/types/txt
1751−/* src-499 %jibb /tests/golden/types-record-to-tuple/source/jibb
1752−/* tok-499 %txt /tests/golden/types-record-to-tuple/tokens/txt
1753−/* tre-499 %txt /tests/golden/types-record-to-tuple/tree/txt
1754−/* typ-499 %txt /tests/golden/types-record-to-tuple/types/txt
1755−/* src-500 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1756−/* tok-500 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1757−/* tre-500 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1758−/* typ-500 %txt /tests/golden/types-recursion-scc-failures/types/txt
1759−/* src-501 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1760−/* tok-501 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1761−/* tre-501 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1762−/* typ-501 %txt /tests/golden/types-recursion-scc-groups/types/txt
1763−/* src-502 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1764−/* tok-502 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1765−/* tre-502 %txt /tests/golden/types-recursion-scc-import/tree/txt
1766−/* mod-502-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1767−/* typ-502 %txt /tests/golden/types-recursion-scc-import/types/txt
1768−/* mtre-502 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1769−/* src-503 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1770−/* tok-503 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1771−/* tre-503 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1772−/* mod-503-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1773−/* typ-503 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1774−/* mtre-503 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1775−/* src-504 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1776−/* tok-504 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1777−/* tre-504 %txt /tests/golden/types-recursion-scc-local/tree/txt
1778−/* typ-504 %txt /tests/golden/types-recursion-scc-local/types/txt
1779−/* src-505 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1780−/* tok-505 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1781−/* tre-505 %txt /tests/golden/types-recursion-scc-order/tree/txt
1782−/* typ-505 %txt /tests/golden/types-recursion-scc-order/types/txt
1783−/* src-506 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1784−/* tok-506 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1785−/* tre-506 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1786−/* typ-506 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1787−/* src-507 %jibb /tests/golden/types-recursive-branch/source/jibb
1788−/* tok-507 %txt /tests/golden/types-recursive-branch/tokens/txt
1789−/* tre-507 %txt /tests/golden/types-recursive-branch/tree/txt
1790−/* typ-507 %txt /tests/golden/types-recursive-branch/types/txt
1791−/* src-508 %jibb /tests/golden/types-recursive-gate/source/jibb
1792−/* tok-508 %txt /tests/golden/types-recursive-gate/tokens/txt
1793−/* tre-508 %txt /tests/golden/types-recursive-gate/tree/txt
1794−/* typ-508 %txt /tests/golden/types-recursive-gate/types/txt
1795−/* src-509 %jibb /tests/golden/types-recursive-sample/source/jibb
1796−/* tok-509 %txt /tests/golden/types-recursive-sample/tokens/txt
1797−/* tre-509 %txt /tests/golden/types-recursive-sample/tree/txt
1798−/* typ-509 %txt /tests/golden/types-recursive-sample/types/txt
1799−/* src-510 %jibb /tests/golden/types-string-interpolation/source/jibb
1800−/* tok-510 %txt /tests/golden/types-string-interpolation/tokens/txt
1801−/* tre-510 %txt /tests/golden/types-string-interpolation/tree/txt
1802−/* typ-510 %txt /tests/golden/types-string-interpolation/types/txt
1803−/* src-511 %jibb /tests/golden/types-tuple-context/source/jibb
1804−/* tok-511 %txt /tests/golden/types-tuple-context/tokens/txt
1805−/* tre-511 %txt /tests/golden/types-tuple-context/tree/txt
1806−/* typ-511 %txt /tests/golden/types-tuple-context/types/txt
1807−/* src-512 %jibb /tests/golden/types-tuple-context-nested/source/jibb
1808−/* tok-512 %txt /tests/golden/types-tuple-context-nested/tokens/txt
1809−/* tre-512 %txt /tests/golden/types-tuple-context-nested/tree/txt
1810−/* typ-512 %txt /tests/golden/types-tuple-context-nested/types/txt
1811−/* src-513 %jibb /tests/golden/types-union-alias/source/jibb
1812−/* tok-513 %txt /tests/golden/types-union-alias/tokens/txt
1813−/* tre-513 %txt /tests/golden/types-union-alias/tree/txt
1814−/* typ-513 %txt /tests/golden/types-union-alias/types/txt
1815−/* src-514 %jibb /tests/golden/types-union-branch-context/source/jibb
1816−/* tok-514 %txt /tests/golden/types-union-branch-context/tokens/txt
1817−/* tre-514 %txt /tests/golden/types-union-branch-context/tree/txt
1818−/* typ-514 %txt /tests/golden/types-union-branch-context/types/txt
1819−/* src-515 %jibb /tests/golden/types-union-branch-pending/source/jibb
1820−/* tok-515 %txt /tests/golden/types-union-branch-pending/tokens/txt
1821−/* tre-515 %txt /tests/golden/types-union-branch-pending/tree/txt
1822−/* typ-515 %txt /tests/golden/types-union-branch-pending/types/txt
1823−/* src-516 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1824−/* tok-516 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1825−/* tre-516 %txt /tests/golden/types-union-constructor-shape/tree/txt
1826−/* typ-516 %txt /tests/golden/types-union-constructor-shape/types/txt
1827−/* src-517 %jibb /tests/golden/types-union-context-flow/source/jibb
1828−/* tok-517 %txt /tests/golden/types-union-context-flow/tokens/txt
1829−/* tre-517 %txt /tests/golden/types-union-context-flow/tree/txt
1830−/* typ-517 %txt /tests/golden/types-union-context-flow/types/txt
1831−/* src-518 %jibb /tests/golden/types-union-finite/source/jibb
1832−/* tok-518 %txt /tests/golden/types-union-finite/tokens/txt
1833−/* tre-518 %txt /tests/golden/types-union-finite/tree/txt
1834−/* typ-518 %txt /tests/golden/types-union-finite/types/txt
1835−/* src-519 %jibb /tests/golden/types-union-finite-generic/source/jibb
1836−/* tok-519 %txt /tests/golden/types-union-finite-generic/tokens/txt
1837−/* tre-519 %txt /tests/golden/types-union-finite-generic/tree/txt
1838−/* typ-519 %txt /tests/golden/types-union-finite-generic/types/txt
1839−/* src-520 %jibb /tests/golden/types-union-finite-limit/source/jibb
1840−/* tok-520 %txt /tests/golden/types-union-finite-limit/tokens/txt
1841−/* tre-520 %txt /tests/golden/types-union-finite-limit/tree/txt
1842−/* typ-520 %txt /tests/golden/types-union-finite-limit/types/txt
1843−/* src-521 %jibb /tests/golden/types-union-import/source/jibb
1844−/* tok-521 %txt /tests/golden/types-union-import/tokens/txt
1845−/* tre-521 %txt /tests/golden/types-union-import/tree/txt
1846−/* mod-521-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1847−/* typ-521 %txt /tests/golden/types-union-import/types/txt
1848−/* mtre-521 %txt /tests/golden/types-union-import/module-trees/txt
1849−/* src-522 %jibb /tests/golden/types-union-local-pending/source/jibb
1850−/* tok-522 %txt /tests/golden/types-union-local-pending/tokens/txt
1851−/* tre-522 %txt /tests/golden/types-union-local-pending/tree/txt
1852−/* typ-522 %txt /tests/golden/types-union-local-pending/types/txt
1853−/* src-523 %jibb /tests/golden/types-union-overlap/source/jibb
1854−/* tok-523 %txt /tests/golden/types-union-overlap/tokens/txt
1855−/* tre-523 %txt /tests/golden/types-union-overlap/tree/txt
1856−/* typ-523 %txt /tests/golden/types-union-overlap/types/txt
1857−/* src-524 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1858−/* tok-524 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1859−/* tre-524 %txt /tests/golden/types-union-overlap-nested/tree/txt
1860−/* typ-524 %txt /tests/golden/types-union-overlap-nested/types/txt
1861−/* src-525 %jibb /tests/golden/types-union-pattern-result-context/source/jibb
1862−/* tok-525 %txt /tests/golden/types-union-pattern-result-context/tokens/txt
1863−/* tre-525 %txt /tests/golden/types-union-pattern-result-context/tree/txt
1864−/* typ-525 %txt /tests/golden/types-union-pattern-result-context/types/txt
1865−/* src-526 %jibb /tests/golden/types-union-pattern-result-controls/source/jibb
1866−/* tok-526 %txt /tests/golden/types-union-pattern-result-controls/tokens/txt
1867−/* tre-526 %txt /tests/golden/types-union-pattern-result-controls/tree/txt
1868−/* typ-526 %txt /tests/golden/types-union-pattern-result-controls/types/txt
1869−/* src-527 %jibb /tests/golden/types-union-patterns/source/jibb
1870−/* tok-527 %txt /tests/golden/types-union-patterns/tokens/txt
1871−/* tre-527 %txt /tests/golden/types-union-patterns/tree/txt
1872−/* typ-527 %txt /tests/golden/types-union-patterns/types/txt
1873−/* src-528 %jibb /tests/golden/types-union-patterns-generic/source/jibb
1874−/* tok-528 %txt /tests/golden/types-union-patterns-generic/tokens/txt
1875−/* tre-528 %txt /tests/golden/types-union-patterns-generic/tree/txt
1876−/* typ-528 %txt /tests/golden/types-union-patterns-generic/types/txt
1877−/* src-529 %jibb /tests/golden/types-union-patterns-import/source/jibb
1878−/* tok-529 %txt /tests/golden/types-union-patterns-import/tokens/txt
1879−/* tre-529 %txt /tests/golden/types-union-patterns-import/tree/txt
1880−/* mod-529-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
1881−/* typ-529 %txt /tests/golden/types-union-patterns-import/types/txt
1882−/* mtre-529 %txt /tests/golden/types-union-patterns-import/module-trees/txt
1883−/* src-530 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1884−/* tok-530 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1885−/* tre-530 %txt /tests/golden/types-union-phantom-generic/tree/txt
1886−/* typ-530 %txt /tests/golden/types-union-phantom-generic/types/txt
1887−/* src-531 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1888−/* tok-531 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1889−/* tre-531 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1890−/* mod-531-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1891−/* typ-531 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1892−/* mtre-531 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1893−/* src-532 %jibb /tests/golden/types-union-print-distinct/source/jibb
1894−/* tok-532 %txt /tests/golden/types-union-print-distinct/tokens/txt
1895−/* tre-532 %txt /tests/golden/types-union-print-distinct/tree/txt
1896−/* mod-532-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1897−/* mod-532-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1898−/* mod-532-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1899−/* typ-532 %txt /tests/golden/types-union-print-distinct/types/txt
1900−/* mtre-532 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1901−/* src-533 %jibb /tests/golden/types-union-print-escape/source/jibb
1902−/* tok-533 %txt /tests/golden/types-union-print-escape/tokens/txt
1903−/* tre-533 %txt /tests/golden/types-union-print-escape/tree/txt
1904−/* typ-533 %txt /tests/golden/types-union-print-escape/types/txt
1905−/* src-534 %jibb /tests/golden/types-union-print-local/source/jibb
1906−/* tok-534 %txt /tests/golden/types-union-print-local/tokens/txt
1907−/* tre-534 %txt /tests/golden/types-union-print-local/tree/txt
1908−/* typ-534 %txt /tests/golden/types-union-print-local/types/txt
1909−/* src-535 %jibb /tests/golden/types-union-print-nested/source/jibb
1910−/* tok-535 %txt /tests/golden/types-union-print-nested/tokens/txt
1911−/* tre-535 %txt /tests/golden/types-union-print-nested/tree/txt
1912−/* typ-535 %txt /tests/golden/types-union-print-nested/types/txt
1913−/* src-536 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1914−/* tok-536 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1915−/* tre-536 %txt /tests/golden/types-union-print-same-origin/tree/txt
1916−/* mod-536-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1917−/* typ-536 %txt /tests/golden/types-union-print-same-origin/types/txt
1918−/* mtre-536 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1919−/* src-537 %jibb /tests/golden/types-union-print-transitive/source/jibb
1920−/* tok-537 %txt /tests/golden/types-union-print-transitive/tokens/txt
1921−/* tre-537 %txt /tests/golden/types-union-print-transitive/tree/txt
1922−/* mod-537-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1923−/* mod-537-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1924−/* typ-537 %txt /tests/golden/types-union-print-transitive/types/txt
1925−/* mtre-537 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1926−/* src-538 %jibb /tests/golden/types-union-singleton/source/jibb
1927−/* tok-538 %txt /tests/golden/types-union-singleton/tokens/txt
1928−/* tre-538 %txt /tests/golden/types-union-singleton/tree/txt
1929−/* typ-538 %txt /tests/golden/types-union-singleton/types/txt
1930−/* src-539 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1931−/* tok-539 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1932−/* tre-539 %txt /tests/golden/types-union-tag-atoms/tree/txt
1933−/* typ-539 %txt /tests/golden/types-union-tag-atoms/types/txt
1934−/* src-540 %jibb /tests/golden/types-union-tags/source/jibb
1935−/* tok-540 %txt /tests/golden/types-union-tags/tokens/txt
1936−/* tre-540 %txt /tests/golden/types-union-tags/tree/txt
1937−/* typ-540 %txt /tests/golden/types-union-tags/types/txt
1938−/* src-541 %jibb /tests/golden/types-union-unresolved/source/jibb
1939−/* tok-541 %txt /tests/golden/types-union-unresolved/tokens/txt
1940−/* tre-541 %txt /tests/golden/types-union-unresolved/tree/txt
1941−/* typ-541 %txt /tests/golden/types-union-unresolved/types/txt
1942−/* src-542 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1943−/* tok-542 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1944−/* tre-542 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1945−/* typ-542 %txt /tests/golden/types-union-unresolved-flow/types/txt
1946−/* src-543 %jibb /tests/golden/types-unit-construction/source/jibb
1947−/* tok-543 %txt /tests/golden/types-unit-construction/tokens/txt
1948−/* tre-543 %txt /tests/golden/types-unit-construction/tree/txt
1949−/* typ-543 %txt /tests/golden/types-unit-construction/types/txt
1950−/* src-544 %jibb /tests/golden/types-unit-context/source/jibb
1951−/* tok-544 %txt /tests/golden/types-unit-context/tokens/txt
1952−/* tre-544 %txt /tests/golden/types-unit-context/tree/txt
1953−/* typ-544 %txt /tests/golden/types-unit-context/types/txt
1954−/* src-545 %jibb /tests/golden/types-unit-patterns/source/jibb
1955−/* tok-545 %txt /tests/golden/types-unit-patterns/tokens/txt
1956−/* tre-545 %txt /tests/golden/types-unit-patterns/tree/txt
1957−/* typ-545 %txt /tests/golden/types-unit-patterns/types/txt
1495+/* src-440 %jibb /tests/golden/types-list-open/source/jibb
1496+/* tok-440 %txt /tests/golden/types-list-open/tokens/txt
1497+/* tre-440 %txt /tests/golden/types-list-open/tree/txt
1498+/* typ-440 %txt /tests/golden/types-list-open/types/txt
1499+/* src-441 %jibb /tests/golden/types-list-open-constraints/source/jibb
1500+/* tok-441 %txt /tests/golden/types-list-open-constraints/tokens/txt
1501+/* tre-441 %txt /tests/golden/types-list-open-constraints/tree/txt
1502+/* typ-441 %txt /tests/golden/types-list-open-constraints/types/txt
1503+/* src-442 %jibb /tests/golden/types-list-pattern-imported/source/jibb
1504+/* tok-442 %txt /tests/golden/types-list-pattern-imported/tokens/txt
1505+/* tre-442 %txt /tests/golden/types-list-pattern-imported/tree/txt
1506+/* typ-442 %txt /tests/golden/types-list-pattern-imported/types/txt
1507+/* imp-442-1 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1508+/* imp-442-2 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1509+/* src-443 %jibb /tests/golden/types-list-patterns/source/jibb
1510+/* tok-443 %txt /tests/golden/types-list-patterns/tokens/txt
1511+/* tre-443 %txt /tests/golden/types-list-patterns/tree/txt
1512+/* typ-443 %txt /tests/golden/types-list-patterns/types/txt
1513+/* src-444 %jibb /tests/golden/types-list-zero-fit/source/jibb
1514+/* tok-444 %txt /tests/golden/types-list-zero-fit/tokens/txt
1515+/* tre-444 %txt /tests/golden/types-list-zero-fit/tree/txt
1516+/* typ-444 %txt /tests/golden/types-list-zero-fit/types/txt
1517+/* src-445 %jibb /tests/golden/types-local-capitals/source/jibb
1518+/* tok-445 %txt /tests/golden/types-local-capitals/tokens/txt
1519+/* tre-445 %txt /tests/golden/types-local-capitals/tree/txt
1520+/* typ-445 %txt /tests/golden/types-local-capitals/types/txt
1521+/* src-446 %jibb /tests/golden/types-local-recursive/source/jibb
1522+/* tok-446 %txt /tests/golden/types-local-recursive/tokens/txt
1523+/* tre-446 %txt /tests/golden/types-local-recursive/tree/txt
1524+/* typ-446 %txt /tests/golden/types-local-recursive/types/txt
1525+/* src-447 %jibb /tests/golden/types-local-scc/source/jibb
1526+/* tok-447 %txt /tests/golden/types-local-scc/tokens/txt
1527+/* tre-447 %txt /tests/golden/types-local-scc/tree/txt
1528+/* typ-447 %txt /tests/golden/types-local-scc/types/txt
1529+/* src-448 %jibb /tests/golden/types-local-scc-adversarial/source/jibb
1530+/* tok-448 %txt /tests/golden/types-local-scc-adversarial/tokens/txt
1531+/* tre-448 %txt /tests/golden/types-local-scc-adversarial/tree/txt
1532+/* typ-448 %txt /tests/golden/types-local-scc-adversarial/types/txt
1533+/* src-449 %jibb /tests/golden/types-missing-tag-context/source/jibb
1534+/* tok-449 %txt /tests/golden/types-missing-tag-context/tokens/txt
1535+/* tre-449 %txt /tests/golden/types-missing-tag-context/tree/txt
1536+/* typ-449 %txt /tests/golden/types-missing-tag-context/types/txt
1537+/* src-450 %jibb /tests/golden/types-missing-tag-imported/source/jibb
1538+/* tok-450 %txt /tests/golden/types-missing-tag-imported/tokens/txt
1539+/* tre-450 %txt /tests/golden/types-missing-tag-imported/tree/txt
1540+/* typ-450 %txt /tests/golden/types-missing-tag-imported/types/txt
1541+/* imp-450-1 %txt /tests/golden/types-missing-tag-imported/sur/fixture/txt
1542+/* imp-450-2 %txt /tests/golden/types-missing-tag-imported/sur/fixture/txt
1543+/* src-451 %jibb /tests/golden/types-missing-tag-named/source/jibb
1544+/* tok-451 %txt /tests/golden/types-missing-tag-named/tokens/txt
1545+/* tre-451 %txt /tests/golden/types-missing-tag-named/tree/txt
1546+/* typ-451 %txt /tests/golden/types-missing-tag-named/types/txt
1547+/* src-452 %jibb /tests/golden/types-module-fixtures/source/jibb
1548+/* tok-452 %txt /tests/golden/types-module-fixtures/tokens/txt
1549+/* tre-452 %txt /tests/golden/types-module-fixtures/tree/txt
1550+/* mod-452-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1551+/* mod-452-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1552+/* typ-452 %txt /tests/golden/types-module-fixtures/types/txt
1553+/* mtre-452 %txt /tests/golden/types-module-fixtures/module-trees/txt
1554+/* src-453 %jibb /tests/golden/types-module-mixed/source/jibb
1555+/* tok-453 %txt /tests/golden/types-module-mixed/tokens/txt
1556+/* tre-453 %txt /tests/golden/types-module-mixed/tree/txt
1557+/* mod-453-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1558+/* typ-453 %txt /tests/golden/types-module-mixed/types/txt
1559+/* imp-453-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1560+/* mark-453-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1561+/* mtre-453 %txt /tests/golden/types-module-mixed/module-trees/txt
1562+/* src-454 %jibb /tests/golden/types-multi-call/source/jibb
1563+/* tok-454 %txt /tests/golden/types-multi-call/tokens/txt
1564+/* tre-454 %txt /tests/golden/types-multi-call/tree/txt
1565+/* typ-454 %txt /tests/golden/types-multi-call/types/txt
1566+/* src-455 %jibb /tests/golden/types-multi-import/source/jibb
1567+/* tok-455 %txt /tests/golden/types-multi-import/tokens/txt
1568+/* tre-455 %txt /tests/golden/types-multi-import/tree/txt
1569+/* mod-455-1 %jibb /tests/golden/types-multi-import/modules/ui/lib/jibb
1570+/* typ-455 %txt /tests/golden/types-multi-import/types/txt
1571+/* mtre-455 %txt /tests/golden/types-multi-import/module-trees/txt
1572+/* src-456 %jibb /tests/golden/types-nested-missing-tag/source/jibb
1573+/* tok-456 %txt /tests/golden/types-nested-missing-tag/tokens/txt
1574+/* tre-456 %txt /tests/golden/types-nested-missing-tag/tree/txt
1575+/* typ-456 %txt /tests/golden/types-nested-missing-tag/types/txt
1576+/* src-457 %jibb /tests/golden/types-null-context/source/jibb
1577+/* tok-457 %txt /tests/golden/types-null-context/tokens/txt
1578+/* tre-457 %txt /tests/golden/types-null-context/tree/txt
1579+/* typ-457 %txt /tests/golden/types-null-context/types/txt
1580+/* src-458 %jibb /tests/golden/types-null-overlap/source/jibb
1581+/* tok-458 %txt /tests/golden/types-null-overlap/tokens/txt
1582+/* tre-458 %txt /tests/golden/types-null-overlap/tree/txt
1583+/* typ-458 %txt /tests/golden/types-null-overlap/types/txt
1584+/* src-459 %jibb /tests/golden/types-null-unresolved/source/jibb
1585+/* tok-459 %txt /tests/golden/types-null-unresolved/tokens/txt
1586+/* tre-459 %txt /tests/golden/types-null-unresolved/tree/txt
1587+/* typ-459 %txt /tests/golden/types-null-unresolved/types/txt
1588+/* src-460 %jibb /tests/golden/types-partial-apply/source/jibb
1589+/* tok-460 %txt /tests/golden/types-partial-apply/tokens/txt
1590+/* tre-460 %txt /tests/golden/types-partial-apply/tree/txt
1591+/* typ-460 %txt /tests/golden/types-partial-apply/types/txt
1592+/* src-461 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1593+/* tok-461 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1594+/* tre-461 %txt /tests/golden/types-partial-atom-alias/tree/txt
1595+/* typ-461 %txt /tests/golden/types-partial-atom-alias/types/txt
1596+/* src-462 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1597+/* tok-462 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1598+/* tre-462 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1599+/* typ-462 %txt /tests/golden/types-partial-atom-constraint/types/txt
1600+/* src-463 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1601+/* tok-463 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1602+/* tre-463 %txt /tests/golden/types-partial-atom-widening/tree/txt
1603+/* typ-463 %txt /tests/golden/types-partial-atom-widening/types/txt
1604+/* src-464 %jibb /tests/golden/types-partial-aura/source/jibb
1605+/* tok-464 %txt /tests/golden/types-partial-aura/tokens/txt
1606+/* tre-464 %txt /tests/golden/types-partial-aura/tree/txt
1607+/* typ-464 %txt /tests/golden/types-partial-aura/types/txt
1608+/* src-465 %jibb /tests/golden/types-partial-aura-family/source/jibb
1609+/* tok-465 %txt /tests/golden/types-partial-aura-family/tokens/txt
1610+/* tre-465 %txt /tests/golden/types-partial-aura-family/tree/txt
1611+/* typ-465 %txt /tests/golden/types-partial-aura-family/types/txt
1612+/* src-466 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1613+/* tok-466 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1614+/* tre-466 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1615+/* typ-466 %txt /tests/golden/types-partial-aura-generalization/types/txt
1616+/* src-467 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1617+/* tok-467 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1618+/* tre-467 %txt /tests/golden/types-partial-bare-atom/tree/txt
1619+/* typ-467 %txt /tests/golden/types-partial-bare-atom/types/txt
1620+/* src-468 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1621+/* tok-468 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1622+/* tre-468 %txt /tests/golden/types-partial-branch-widening/tree/txt
1623+/* typ-468 %txt /tests/golden/types-partial-branch-widening/types/txt
1624+/* src-469 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1625+/* tok-469 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1626+/* tre-469 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1627+/* typ-469 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1628+/* src-470 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1629+/* tok-470 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1630+/* tre-470 %txt /tests/golden/types-partial-decimal-default/tree/txt
1631+/* typ-470 %txt /tests/golden/types-partial-decimal-default/types/txt
1632+/* src-471 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1633+/* tok-471 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1634+/* tre-471 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1635+/* typ-471 %txt /tests/golden/types-partial-dependency-chain/types/txt
1636+/* src-472 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1637+/* tok-472 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1638+/* tre-472 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1639+/* typ-472 %txt /tests/golden/types-partial-explicit-capital/types/txt
1640+/* src-473 %jibb /tests/golden/types-partial-forward/source/jibb
1641+/* tok-473 %txt /tests/golden/types-partial-forward/tokens/txt
1642+/* tre-473 %txt /tests/golden/types-partial-forward/tree/txt
1643+/* typ-473 %txt /tests/golden/types-partial-forward/types/txt
1644+/* src-474 %jibb /tests/golden/types-partial-generalization/source/jibb
1645+/* tok-474 %txt /tests/golden/types-partial-generalization/tokens/txt
1646+/* tre-474 %txt /tests/golden/types-partial-generalization/tree/txt
1647+/* typ-474 %txt /tests/golden/types-partial-generalization/types/txt
1648+/* src-475 %jibb /tests/golden/types-partial-identity/source/jibb
1649+/* tok-475 %txt /tests/golden/types-partial-identity/tokens/txt
1650+/* tre-475 %txt /tests/golden/types-partial-identity/tree/txt
1651+/* typ-475 %txt /tests/golden/types-partial-identity/types/txt
1652+/* src-476 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1653+/* tok-476 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1654+/* tre-476 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1655+/* typ-476 %txt /tests/golden/types-partial-independent-atoms/types/txt
1656+/* src-477 %jibb /tests/golden/types-partial-local-molds/source/jibb
1657+/* tok-477 %txt /tests/golden/types-partial-local-molds/tokens/txt
1658+/* tre-477 %txt /tests/golden/types-partial-local-molds/tree/txt
1659+/* typ-477 %txt /tests/golden/types-partial-local-molds/types/txt
1660+/* src-478 %jibb /tests/golden/types-partial-locals/source/jibb
1661+/* tok-478 %txt /tests/golden/types-partial-locals/tokens/txt
1662+/* tre-478 %txt /tests/golden/types-partial-locals/tree/txt
1663+/* typ-478 %txt /tests/golden/types-partial-locals/types/txt
1664+/* src-479 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1665+/* tok-479 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1666+/* tre-479 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1667+/* typ-479 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1668+/* src-480 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1669+/* tok-480 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1670+/* tre-480 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1671+/* typ-480 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1672+/* src-481 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1673+/* tok-481 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1674+/* tre-481 %txt /tests/golden/types-partial-mold-composite/tree/txt
1675+/* typ-481 %txt /tests/golden/types-partial-mold-composite/types/txt
1676+/* src-482 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1677+/* tok-482 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1678+/* tre-482 %txt /tests/golden/types-partial-mold-forward/tree/txt
1679+/* typ-482 %txt /tests/golden/types-partial-mold-forward/types/txt
1680+/* src-483 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1681+/* tok-483 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1682+/* tre-483 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1683+/* typ-483 %txt /tests/golden/types-partial-mold-recursive/types/txt
1684+/* src-484 %jibb /tests/golden/types-partial-occurs/source/jibb
1685+/* tok-484 %txt /tests/golden/types-partial-occurs/tokens/txt
1686+/* tre-484 %txt /tests/golden/types-partial-occurs/tree/txt
1687+/* typ-484 %txt /tests/golden/types-partial-occurs/types/txt
1688+/* src-485 %jibb /tests/golden/types-partial-projection/source/jibb
1689+/* tok-485 %txt /tests/golden/types-partial-projection/tokens/txt
1690+/* tre-485 %txt /tests/golden/types-partial-projection/tree/txt
1691+/* typ-485 %txt /tests/golden/types-partial-projection/types/txt
1692+/* src-486 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1693+/* tok-486 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1694+/* tre-486 %txt /tests/golden/types-partial-shadow-global/tree/txt
1695+/* typ-486 %txt /tests/golden/types-partial-shadow-global/types/txt
1696+/* src-487 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1697+/* tok-487 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1698+/* tre-487 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1699+/* typ-487 %txt /tests/golden/types-partial-shared-tvar/types/txt
1700+/* src-488 %jibb /tests/golden/types-partial-union-cases/source/jibb
1701+/* tok-488 %txt /tests/golden/types-partial-union-cases/tokens/txt
1702+/* tre-488 %txt /tests/golden/types-partial-union-cases/tree/txt
1703+/* typ-488 %txt /tests/golden/types-partial-union-cases/types/txt
1704+/* src-489 %jibb /tests/golden/types-partial-union-edges/source/jibb
1705+/* tok-489 %txt /tests/golden/types-partial-union-edges/tokens/txt
1706+/* tre-489 %txt /tests/golden/types-partial-union-edges/tree/txt
1707+/* typ-489 %txt /tests/golden/types-partial-union-edges/types/txt
1708+/* src-490 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1709+/* tok-490 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1710+/* tre-490 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1711+/* typ-490 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1712+/* src-491 %jibb /tests/golden/types-prelude-direct/source/jibb
1713+/* tok-491 %txt /tests/golden/types-prelude-direct/tokens/txt
1714+/* tre-491 %txt /tests/golden/types-prelude-direct/tree/txt
1715+/* typ-491 %txt /tests/golden/types-prelude-direct/types/txt
1716+/* src-492 %jibb /tests/golden/types-prelude-interface/source/jibb
1717+/* tok-492 %txt /tests/golden/types-prelude-interface/tokens/txt
1718+/* tre-492 %txt /tests/golden/types-prelude-interface/tree/txt
1719+/* mod-492-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1720+/* mod-492-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1721+/* typ-492 %txt /tests/golden/types-prelude-interface/types/txt
1722+/* mtre-492 %txt /tests/golden/types-prelude-interface/module-trees/txt
1723+/* src-493 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1724+/* tok-493 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1725+/* tre-493 %txt /tests/golden/types-prelude-list-functions/tree/txt
1726+/* mod-493-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1727+/* typ-493 %txt /tests/golden/types-prelude-list-functions/types/txt
1728+/* mtre-493 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1729+/* src-494 %jibb /tests/golden/types-prelude-unit-helpers/source/jibb
1730+/* tok-494 %txt /tests/golden/types-prelude-unit-helpers/tokens/txt
1731+/* tre-494 %txt /tests/golden/types-prelude-unit-helpers/tree/txt
1732+/* typ-494 %txt /tests/golden/types-prelude-unit-helpers/types/txt
1733+/* src-495 %jibb /tests/golden/types-record-bound-variable/source/jibb
1734+/* tok-495 %txt /tests/golden/types-record-bound-variable/tokens/txt
1735+/* tre-495 %txt /tests/golden/types-record-bound-variable/tree/txt
1736+/* typ-495 %txt /tests/golden/types-record-bound-variable/types/txt
1737+/* src-496 %jibb /tests/golden/types-record-cast-context/source/jibb
1738+/* tok-496 %txt /tests/golden/types-record-cast-context/tokens/txt
1739+/* tre-496 %txt /tests/golden/types-record-cast-context/tree/txt
1740+/* typ-496 %txt /tests/golden/types-record-cast-context/types/txt
1741+/* src-497 %jibb /tests/golden/types-record-change/source/jibb
1742+/* tok-497 %txt /tests/golden/types-record-change/tokens/txt
1743+/* tre-497 %txt /tests/golden/types-record-change/tree/txt
1744+/* typ-497 %txt /tests/golden/types-record-change/types/txt
1745+/* src-498 %jibb /tests/golden/types-record-change-generic/source/jibb
1746+/* tok-498 %txt /tests/golden/types-record-change-generic/tokens/txt
1747+/* tre-498 %txt /tests/golden/types-record-change-generic/tree/txt
1748+/* typ-498 %txt /tests/golden/types-record-change-generic/types/txt
1749+/* src-499 %jibb /tests/golden/types-record-faces/source/jibb
1750+/* tok-499 %txt /tests/golden/types-record-faces/tokens/txt
1751+/* tre-499 %txt /tests/golden/types-record-faces/tree/txt
1752+/* typ-499 %txt /tests/golden/types-record-faces/types/txt
1753+/* src-500 %jibb /tests/golden/types-record-import/source/jibb
1754+/* tok-500 %txt /tests/golden/types-record-import/tokens/txt
1755+/* tre-500 %txt /tests/golden/types-record-import/tree/txt
1756+/* mod-500-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1757+/* typ-500 %txt /tests/golden/types-record-import/types/txt
1758+/* mtre-500 %txt /tests/golden/types-record-import/module-trees/txt
1759+/* src-501 %jibb /tests/golden/types-record-local-scheme/source/jibb
1760+/* tok-501 %txt /tests/golden/types-record-local-scheme/tokens/txt
1761+/* tre-501 %txt /tests/golden/types-record-local-scheme/tree/txt
1762+/* typ-501 %txt /tests/golden/types-record-local-scheme/types/txt
1763+/* src-502 %jibb /tests/golden/types-record-nested/source/jibb
1764+/* tok-502 %txt /tests/golden/types-record-nested/tokens/txt
1765+/* tre-502 %txt /tests/golden/types-record-nested/tree/txt
1766+/* typ-502 %txt /tests/golden/types-record-nested/types/txt
1767+/* src-503 %jibb /tests/golden/types-record-to-tuple/source/jibb
1768+/* tok-503 %txt /tests/golden/types-record-to-tuple/tokens/txt
1769+/* tre-503 %txt /tests/golden/types-record-to-tuple/tree/txt
1770+/* typ-503 %txt /tests/golden/types-record-to-tuple/types/txt
1771+/* src-504 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1772+/* tok-504 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1773+/* tre-504 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1774+/* typ-504 %txt /tests/golden/types-recursion-scc-failures/types/txt
1775+/* src-505 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1776+/* tok-505 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1777+/* tre-505 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1778+/* typ-505 %txt /tests/golden/types-recursion-scc-groups/types/txt
1779+/* src-506 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1780+/* tok-506 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1781+/* tre-506 %txt /tests/golden/types-recursion-scc-import/tree/txt
1782+/* mod-506-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1783+/* typ-506 %txt /tests/golden/types-recursion-scc-import/types/txt
1784+/* mtre-506 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1785+/* src-507 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1786+/* tok-507 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1787+/* tre-507 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1788+/* mod-507-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1789+/* typ-507 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1790+/* mtre-507 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1791+/* src-508 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1792+/* tok-508 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1793+/* tre-508 %txt /tests/golden/types-recursion-scc-local/tree/txt
1794+/* typ-508 %txt /tests/golden/types-recursion-scc-local/types/txt
1795+/* src-509 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1796+/* tok-509 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1797+/* tre-509 %txt /tests/golden/types-recursion-scc-order/tree/txt
1798+/* typ-509 %txt /tests/golden/types-recursion-scc-order/types/txt
1799+/* src-510 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1800+/* tok-510 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1801+/* tre-510 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1802+/* typ-510 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1803+/* src-511 %jibb /tests/golden/types-recursive-branch/source/jibb
1804+/* tok-511 %txt /tests/golden/types-recursive-branch/tokens/txt
1805+/* tre-511 %txt /tests/golden/types-recursive-branch/tree/txt
1806+/* typ-511 %txt /tests/golden/types-recursive-branch/types/txt
1807+/* src-512 %jibb /tests/golden/types-recursive-gate/source/jibb
1808+/* tok-512 %txt /tests/golden/types-recursive-gate/tokens/txt
1809+/* tre-512 %txt /tests/golden/types-recursive-gate/tree/txt
1810+/* typ-512 %txt /tests/golden/types-recursive-gate/types/txt
1811+/* src-513 %jibb /tests/golden/types-recursive-sample/source/jibb
1812+/* tok-513 %txt /tests/golden/types-recursive-sample/tokens/txt
1813+/* tre-513 %txt /tests/golden/types-recursive-sample/tree/txt
1814+/* typ-513 %txt /tests/golden/types-recursive-sample/types/txt
1815+/* src-514 %jibb /tests/golden/types-string-interpolation/source/jibb
1816+/* tok-514 %txt /tests/golden/types-string-interpolation/tokens/txt
1817+/* tre-514 %txt /tests/golden/types-string-interpolation/tree/txt
1818+/* typ-514 %txt /tests/golden/types-string-interpolation/types/txt
1819+/* src-515 %jibb /tests/golden/types-tuple-context/source/jibb
1820+/* tok-515 %txt /tests/golden/types-tuple-context/tokens/txt
1821+/* tre-515 %txt /tests/golden/types-tuple-context/tree/txt
1822+/* typ-515 %txt /tests/golden/types-tuple-context/types/txt
1823+/* src-516 %jibb /tests/golden/types-tuple-context-nested/source/jibb
1824+/* tok-516 %txt /tests/golden/types-tuple-context-nested/tokens/txt
1825+/* tre-516 %txt /tests/golden/types-tuple-context-nested/tree/txt
1826+/* typ-516 %txt /tests/golden/types-tuple-context-nested/types/txt
1827+/* src-517 %jibb /tests/golden/types-union-alias/source/jibb
1828+/* tok-517 %txt /tests/golden/types-union-alias/tokens/txt
1829+/* tre-517 %txt /tests/golden/types-union-alias/tree/txt
1830+/* typ-517 %txt /tests/golden/types-union-alias/types/txt
1831+/* src-518 %jibb /tests/golden/types-union-branch-context/source/jibb
1832+/* tok-518 %txt /tests/golden/types-union-branch-context/tokens/txt
1833+/* tre-518 %txt /tests/golden/types-union-branch-context/tree/txt
1834+/* typ-518 %txt /tests/golden/types-union-branch-context/types/txt
1835+/* src-519 %jibb /tests/golden/types-union-branch-pending/source/jibb
1836+/* tok-519 %txt /tests/golden/types-union-branch-pending/tokens/txt
1837+/* tre-519 %txt /tests/golden/types-union-branch-pending/tree/txt
1838+/* typ-519 %txt /tests/golden/types-union-branch-pending/types/txt
1839+/* src-520 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1840+/* tok-520 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1841+/* tre-520 %txt /tests/golden/types-union-constructor-shape/tree/txt
1842+/* typ-520 %txt /tests/golden/types-union-constructor-shape/types/txt
1843+/* src-521 %jibb /tests/golden/types-union-context-flow/source/jibb
1844+/* tok-521 %txt /tests/golden/types-union-context-flow/tokens/txt
1845+/* tre-521 %txt /tests/golden/types-union-context-flow/tree/txt
1846+/* typ-521 %txt /tests/golden/types-union-context-flow/types/txt
1847+/* src-522 %jibb /tests/golden/types-union-finite/source/jibb
1848+/* tok-522 %txt /tests/golden/types-union-finite/tokens/txt
1849+/* tre-522 %txt /tests/golden/types-union-finite/tree/txt
1850+/* typ-522 %txt /tests/golden/types-union-finite/types/txt
1851+/* src-523 %jibb /tests/golden/types-union-finite-generic/source/jibb
1852+/* tok-523 %txt /tests/golden/types-union-finite-generic/tokens/txt
1853+/* tre-523 %txt /tests/golden/types-union-finite-generic/tree/txt
1854+/* typ-523 %txt /tests/golden/types-union-finite-generic/types/txt
1855+/* src-524 %jibb /tests/golden/types-union-finite-limit/source/jibb
1856+/* tok-524 %txt /tests/golden/types-union-finite-limit/tokens/txt
1857+/* tre-524 %txt /tests/golden/types-union-finite-limit/tree/txt
1858+/* typ-524 %txt /tests/golden/types-union-finite-limit/types/txt
1859+/* src-525 %jibb /tests/golden/types-union-import/source/jibb
1860+/* tok-525 %txt /tests/golden/types-union-import/tokens/txt
1861+/* tre-525 %txt /tests/golden/types-union-import/tree/txt
1862+/* mod-525-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1863+/* typ-525 %txt /tests/golden/types-union-import/types/txt
1864+/* mtre-525 %txt /tests/golden/types-union-import/module-trees/txt
1865+/* src-526 %jibb /tests/golden/types-union-local-pending/source/jibb
1866+/* tok-526 %txt /tests/golden/types-union-local-pending/tokens/txt
1867+/* tre-526 %txt /tests/golden/types-union-local-pending/tree/txt
1868+/* typ-526 %txt /tests/golden/types-union-local-pending/types/txt
1869+/* src-527 %jibb /tests/golden/types-union-overlap/source/jibb
1870+/* tok-527 %txt /tests/golden/types-union-overlap/tokens/txt
1871+/* tre-527 %txt /tests/golden/types-union-overlap/tree/txt
1872+/* typ-527 %txt /tests/golden/types-union-overlap/types/txt
1873+/* src-528 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1874+/* tok-528 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1875+/* tre-528 %txt /tests/golden/types-union-overlap-nested/tree/txt
1876+/* typ-528 %txt /tests/golden/types-union-overlap-nested/types/txt
1877+/* src-529 %jibb /tests/golden/types-union-pattern-result-context/source/jibb
1878+/* tok-529 %txt /tests/golden/types-union-pattern-result-context/tokens/txt
1879+/* tre-529 %txt /tests/golden/types-union-pattern-result-context/tree/txt
1880+/* typ-529 %txt /tests/golden/types-union-pattern-result-context/types/txt
1881+/* src-530 %jibb /tests/golden/types-union-pattern-result-controls/source/jibb
1882+/* tok-530 %txt /tests/golden/types-union-pattern-result-controls/tokens/txt
1883+/* tre-530 %txt /tests/golden/types-union-pattern-result-controls/tree/txt
1884+/* typ-530 %txt /tests/golden/types-union-pattern-result-controls/types/txt
1885+/* src-531 %jibb /tests/golden/types-union-patterns/source/jibb
1886+/* tok-531 %txt /tests/golden/types-union-patterns/tokens/txt
1887+/* tre-531 %txt /tests/golden/types-union-patterns/tree/txt
1888+/* typ-531 %txt /tests/golden/types-union-patterns/types/txt
1889+/* src-532 %jibb /tests/golden/types-union-patterns-generic/source/jibb
1890+/* tok-532 %txt /tests/golden/types-union-patterns-generic/tokens/txt
1891+/* tre-532 %txt /tests/golden/types-union-patterns-generic/tree/txt
1892+/* typ-532 %txt /tests/golden/types-union-patterns-generic/types/txt
1893+/* src-533 %jibb /tests/golden/types-union-patterns-import/source/jibb
1894+/* tok-533 %txt /tests/golden/types-union-patterns-import/tokens/txt
1895+/* tre-533 %txt /tests/golden/types-union-patterns-import/tree/txt
1896+/* mod-533-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
1897+/* typ-533 %txt /tests/golden/types-union-patterns-import/types/txt
1898+/* mtre-533 %txt /tests/golden/types-union-patterns-import/module-trees/txt
1899+/* src-534 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1900+/* tok-534 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1901+/* tre-534 %txt /tests/golden/types-union-phantom-generic/tree/txt
1902+/* typ-534 %txt /tests/golden/types-union-phantom-generic/types/txt
1903+/* src-535 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1904+/* tok-535 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1905+/* tre-535 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1906+/* mod-535-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1907+/* typ-535 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1908+/* mtre-535 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1909+/* src-536 %jibb /tests/golden/types-union-print-distinct/source/jibb
1910+/* tok-536 %txt /tests/golden/types-union-print-distinct/tokens/txt
1911+/* tre-536 %txt /tests/golden/types-union-print-distinct/tree/txt
1912+/* mod-536-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1913+/* mod-536-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1914+/* mod-536-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1915+/* typ-536 %txt /tests/golden/types-union-print-distinct/types/txt
1916+/* mtre-536 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1917+/* src-537 %jibb /tests/golden/types-union-print-escape/source/jibb
1918+/* tok-537 %txt /tests/golden/types-union-print-escape/tokens/txt
1919+/* tre-537 %txt /tests/golden/types-union-print-escape/tree/txt
1920+/* typ-537 %txt /tests/golden/types-union-print-escape/types/txt
1921+/* src-538 %jibb /tests/golden/types-union-print-local/source/jibb
1922+/* tok-538 %txt /tests/golden/types-union-print-local/tokens/txt
1923+/* tre-538 %txt /tests/golden/types-union-print-local/tree/txt
1924+/* typ-538 %txt /tests/golden/types-union-print-local/types/txt
1925+/* src-539 %jibb /tests/golden/types-union-print-nested/source/jibb
1926+/* tok-539 %txt /tests/golden/types-union-print-nested/tokens/txt
1927+/* tre-539 %txt /tests/golden/types-union-print-nested/tree/txt
1928+/* typ-539 %txt /tests/golden/types-union-print-nested/types/txt
1929+/* src-540 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1930+/* tok-540 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1931+/* tre-540 %txt /tests/golden/types-union-print-same-origin/tree/txt
1932+/* mod-540-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1933+/* typ-540 %txt /tests/golden/types-union-print-same-origin/types/txt
1934+/* mtre-540 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1935+/* src-541 %jibb /tests/golden/types-union-print-transitive/source/jibb
1936+/* tok-541 %txt /tests/golden/types-union-print-transitive/tokens/txt
1937+/* tre-541 %txt /tests/golden/types-union-print-transitive/tree/txt
1938+/* mod-541-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1939+/* mod-541-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1940+/* typ-541 %txt /tests/golden/types-union-print-transitive/types/txt
1941+/* mtre-541 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1942+/* src-542 %jibb /tests/golden/types-union-singleton/source/jibb
1943+/* tok-542 %txt /tests/golden/types-union-singleton/tokens/txt
1944+/* tre-542 %txt /tests/golden/types-union-singleton/tree/txt
1945+/* typ-542 %txt /tests/golden/types-union-singleton/types/txt
1946+/* src-543 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1947+/* tok-543 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1948+/* tre-543 %txt /tests/golden/types-union-tag-atoms/tree/txt
1949+/* typ-543 %txt /tests/golden/types-union-tag-atoms/types/txt
1950+/* src-544 %jibb /tests/golden/types-union-tags/source/jibb
1951+/* tok-544 %txt /tests/golden/types-union-tags/tokens/txt
1952+/* tre-544 %txt /tests/golden/types-union-tags/tree/txt
1953+/* typ-544 %txt /tests/golden/types-union-tags/types/txt
1954+/* src-545 %jibb /tests/golden/types-union-unresolved/source/jibb
1955+/* tok-545 %txt /tests/golden/types-union-unresolved/tokens/txt
1956+/* tre-545 %txt /tests/golden/types-union-unresolved/tree/txt
1957+/* typ-545 %txt /tests/golden/types-union-unresolved/types/txt
1958+/* src-546 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1959+/* tok-546 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1960+/* tre-546 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1961+/* typ-546 %txt /tests/golden/types-union-unresolved-flow/types/txt
1962+/* src-547 %jibb /tests/golden/types-unit-construction/source/jibb
1963+/* tok-547 %txt /tests/golden/types-unit-construction/tokens/txt
1964+/* tre-547 %txt /tests/golden/types-unit-construction/tree/txt
1965+/* typ-547 %txt /tests/golden/types-unit-construction/types/txt
1966+/* src-548 %jibb /tests/golden/types-unit-context/source/jibb
1967+/* tok-548 %txt /tests/golden/types-unit-context/tokens/txt
1968+/* tre-548 %txt /tests/golden/types-unit-context/tree/txt
1969+/* typ-548 %txt /tests/golden/types-unit-context/types/txt
1970+/* src-549 %jibb /tests/golden/types-unit-patterns/source/jibb
1971+/* tok-549 %txt /tests/golden/types-unit-patterns/tokens/txt
1972+/* tre-549 %txt /tests/golden/types-unit-patterns/tree/txt
1973+/* typ-549 %txt /tests/golden/types-unit-patterns/types/txt
19581974=/ prepared-prelude (prepare-prelude:jibb prelude-source)
19591975|%
19601976:: one arm per case
@@ -2837,218 +2853,226 @@
28372853 (weld (check ~.types-list-context src-438 `tok-438 `tre-438) (check-module-types ~.types-list-context ~[%tests %golden ~.types-list-context %source %jibb] src-438 `typ-438 ~ ~ ~))
28382854++ test-types-list-imported
28392855 (weld (check ~.types-list-imported src-439 `tok-439 `tre-439) (check-module-types ~.types-list-imported ~[%tests %golden ~.types-list-imported %source %jibb] src-439 `typ-439 ~[[%fixture %texts imp-439-1] [%fixture %ships imp-439-2]] ~ ~))
2856+++ test-types-list-open
2857+ (weld (check ~.types-list-open src-440 `tok-440 `tre-440) (check-module-types ~.types-list-open ~[%tests %golden ~.types-list-open %source %jibb] src-440 `typ-440 ~ ~ ~))
2858+++ test-types-list-open-constraints
2859+ (weld (check ~.types-list-open-constraints src-441 `tok-441 `tre-441) (check-module-types ~.types-list-open-constraints ~[%tests %golden ~.types-list-open-constraints %source %jibb] src-441 `typ-441 ~ ~ ~))
28402860++ test-types-list-pattern-imported
2841− (weld (check ~.types-list-pattern-imported src-440 `tok-440 `tre-440) (check-module-types ~.types-list-pattern-imported ~[%tests %golden ~.types-list-pattern-imported %source %jibb] src-440 `typ-440 ~[[%fixture %texts imp-440-1] [%fixture %text-set imp-440-2]] ~ ~))
2861+ (weld (check ~.types-list-pattern-imported src-442 `tok-442 `tre-442) (check-module-types ~.types-list-pattern-imported ~[%tests %golden ~.types-list-pattern-imported %source %jibb] src-442 `typ-442 ~[[%fixture %texts imp-442-1] [%fixture %text-set imp-442-2]] ~ ~))
28422862++ test-types-list-patterns
2843− (weld (check ~.types-list-patterns src-441 `tok-441 `tre-441) (check-module-types ~.types-list-patterns ~[%tests %golden ~.types-list-patterns %source %jibb] src-441 `typ-441 ~ ~ ~))
2863+ (weld (check ~.types-list-patterns src-443 `tok-443 `tre-443) (check-module-types ~.types-list-patterns ~[%tests %golden ~.types-list-patterns %source %jibb] src-443 `typ-443 ~ ~ ~))
28442864++ test-types-list-zero-fit
2845− (weld (check ~.types-list-zero-fit src-442 `tok-442 `tre-442) (check-module-types ~.types-list-zero-fit ~[%tests %golden ~.types-list-zero-fit %source %jibb] src-442 `typ-442 ~ ~ ~))
2865+ (weld (check ~.types-list-zero-fit src-444 `tok-444 `tre-444) (check-module-types ~.types-list-zero-fit ~[%tests %golden ~.types-list-zero-fit %source %jibb] src-444 `typ-444 ~ ~ ~))
28462866++ test-types-local-capitals
2847− (weld (check ~.types-local-capitals src-443 `tok-443 `tre-443) (check-module-types ~.types-local-capitals ~[%tests %golden ~.types-local-capitals %source %jibb] src-443 `typ-443 ~ ~ ~))
2867+ (weld (check ~.types-local-capitals src-445 `tok-445 `tre-445) (check-module-types ~.types-local-capitals ~[%tests %golden ~.types-local-capitals %source %jibb] src-445 `typ-445 ~ ~ ~))
28482868++ test-types-local-recursive
2849− (weld (check ~.types-local-recursive src-444 `tok-444 `tre-444) (check-module-types ~.types-local-recursive ~[%tests %golden ~.types-local-recursive %source %jibb] src-444 `typ-444 ~ ~ ~))
2869+ (weld (check ~.types-local-recursive src-446 `tok-446 `tre-446) (check-module-types ~.types-local-recursive ~[%tests %golden ~.types-local-recursive %source %jibb] src-446 `typ-446 ~ ~ ~))
2870+++ test-types-local-scc
2871+ (weld (check ~.types-local-scc src-447 `tok-447 `tre-447) (check-module-types ~.types-local-scc ~[%tests %golden ~.types-local-scc %source %jibb] src-447 `typ-447 ~ ~ ~))
2872+++ test-types-local-scc-adversarial
2873+ (weld (check ~.types-local-scc-adversarial src-448 `tok-448 `tre-448) (check-module-types ~.types-local-scc-adversarial ~[%tests %golden ~.types-local-scc-adversarial %source %jibb] src-448 `typ-448 ~ ~ ~))
28502874++ test-types-missing-tag-context
2851− (weld (check ~.types-missing-tag-context src-445 `tok-445 `tre-445) (check-module-types ~.types-missing-tag-context ~[%tests %golden ~.types-missing-tag-context %source %jibb] src-445 `typ-445 ~ ~ ~))
2875+ (weld (check ~.types-missing-tag-context src-449 `tok-449 `tre-449) (check-module-types ~.types-missing-tag-context ~[%tests %golden ~.types-missing-tag-context %source %jibb] src-449 `typ-449 ~ ~ ~))
28522876++ test-types-missing-tag-imported
2853− (weld (check ~.types-missing-tag-imported src-446 `tok-446 `tre-446) (check-import-types ~.types-missing-tag-imported ~[%tests %golden ~.types-missing-tag-imported %source %jibb] src-446 `typ-446 ~[[%fixture %choice imp-446-1] [%fixture %nested-choice imp-446-2]]))
2877+ (weld (check ~.types-missing-tag-imported src-450 `tok-450 `tre-450) (check-import-types ~.types-missing-tag-imported ~[%tests %golden ~.types-missing-tag-imported %source %jibb] src-450 `typ-450 ~[[%fixture %choice imp-450-1] [%fixture %nested-choice imp-450-2]]))
28542878++ test-types-missing-tag-named
2855− (weld (check ~.types-missing-tag-named src-447 `tok-447 `tre-447) (check-module-types ~.types-missing-tag-named ~[%tests %golden ~.types-missing-tag-named %source %jibb] src-447 `typ-447 ~ ~ ~))
2879+ (weld (check ~.types-missing-tag-named src-451 `tok-451 `tre-451) (check-module-types ~.types-missing-tag-named ~[%tests %golden ~.types-missing-tag-named %source %jibb] src-451 `typ-451 ~ ~ ~))
28562880++ test-types-module-fixtures
2857− (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-448 `tok-448 `tre-448) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-448 `typ-448 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-448-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-448-2]])) (check-module-trees ~.types-module-fixtures `mtre-448 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-448-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-448-2]]))
2881+ (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-452 `tok-452 `tre-452) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-452 `typ-452 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-452-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-452-2]])) (check-module-trees ~.types-module-fixtures `mtre-452 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-452-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-452-2]]))
28582882++ test-types-module-mixed
2859− (weld (weld (check ~.types-module-mixed src-449 `tok-449 `tre-449) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-449 `typ-449 ~[[%fixture %title imp-449-1]] ~[[%label mark-449-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-449-1]])) (check-module-trees ~.types-module-mixed `mtre-449 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-449-1]]))
2883+ (weld (weld (check ~.types-module-mixed src-453 `tok-453 `tre-453) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-453 `typ-453 ~[[%fixture %title imp-453-1]] ~[[%label mark-453-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-453-1]])) (check-module-trees ~.types-module-mixed `mtre-453 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-453-1]]))
28602884++ test-types-multi-call
2861− (weld (check ~.types-multi-call src-450 `tok-450 `tre-450) (check-module-types ~.types-multi-call ~[%tests %golden ~.types-multi-call %source %jibb] src-450 `typ-450 ~ ~ ~))
2885+ (weld (check ~.types-multi-call src-454 `tok-454 `tre-454) (check-module-types ~.types-multi-call ~[%tests %golden ~.types-multi-call %source %jibb] src-454 `typ-454 ~ ~ ~))
28622886++ test-types-multi-import
2863− (weld (weld (check ~.types-multi-import src-451 `tok-451 `tre-451) (check-module-types ~.types-multi-import ~[%tests %golden ~.types-multi-import %source %jibb] src-451 `typ-451 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-451-1]])) (check-module-trees ~.types-multi-import `mtre-451 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-451-1]]))
2887+ (weld (weld (check ~.types-multi-import src-455 `tok-455 `tre-455) (check-module-types ~.types-multi-import ~[%tests %golden ~.types-multi-import %source %jibb] src-455 `typ-455 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-455-1]])) (check-module-trees ~.types-multi-import `mtre-455 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-455-1]]))
28642888++ test-types-nested-missing-tag
2865− (weld (check ~.types-nested-missing-tag src-452 `tok-452 `tre-452) (check-module-types ~.types-nested-missing-tag ~[%tests %golden ~.types-nested-missing-tag %source %jibb] src-452 `typ-452 ~ ~ ~))
2889+ (weld (check ~.types-nested-missing-tag src-456 `tok-456 `tre-456) (check-module-types ~.types-nested-missing-tag ~[%tests %golden ~.types-nested-missing-tag %source %jibb] src-456 `typ-456 ~ ~ ~))
28662890++ test-types-null-context
2867− (weld (check ~.types-null-context src-453 `tok-453 `tre-453) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-453 `typ-453))
2891+ (weld (check ~.types-null-context src-457 `tok-457 `tre-457) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-457 `typ-457))
28682892++ test-types-null-overlap
2869− (weld (check ~.types-null-overlap src-454 `tok-454 `tre-454) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-454 `typ-454))
2893+ (weld (check ~.types-null-overlap src-458 `tok-458 `tre-458) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-458 `typ-458))
28702894++ test-types-null-unresolved
2871− (weld (check ~.types-null-unresolved src-455 `tok-455 `tre-455) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-455 `typ-455))
2895+ (weld (check ~.types-null-unresolved src-459 `tok-459 `tre-459) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-459 `typ-459))
28722896++ test-types-partial-apply
2873− (weld (check ~.types-partial-apply src-456 `tok-456 `tre-456) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-456 `typ-456))
2897+ (weld (check ~.types-partial-apply src-460 `tok-460 `tre-460) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-460 `typ-460))
28742898++ test-types-partial-atom-alias
2875− (weld (check ~.types-partial-atom-alias src-457 `tok-457 `tre-457) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-457 `typ-457))
2899+ (weld (check ~.types-partial-atom-alias src-461 `tok-461 `tre-461) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-461 `typ-461))
28762900++ test-types-partial-atom-constraint
2877− (weld (check ~.types-partial-atom-constraint src-458 `tok-458 `tre-458) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-458 `typ-458))
2901+ (weld (check ~.types-partial-atom-constraint src-462 `tok-462 `tre-462) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-462 `typ-462))
28782902++ test-types-partial-atom-widening
2879− (weld (check ~.types-partial-atom-widening src-459 `tok-459 `tre-459) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-459 `typ-459))
2903+ (weld (check ~.types-partial-atom-widening src-463 `tok-463 `tre-463) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-463 `typ-463))
28802904++ test-types-partial-aura
2881− (weld (check ~.types-partial-aura src-460 `tok-460 `tre-460) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-460 `typ-460))
2905+ (weld (check ~.types-partial-aura src-464 `tok-464 `tre-464) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-464 `typ-464))
28822906++ test-types-partial-aura-family
2883− (weld (check ~.types-partial-aura-family src-461 `tok-461 `tre-461) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-461 `typ-461))
2907+ (weld (check ~.types-partial-aura-family src-465 `tok-465 `tre-465) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-465 `typ-465))
28842908++ test-types-partial-aura-generalization
2885− (weld (check ~.types-partial-aura-generalization src-462 `tok-462 `tre-462) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-462 `typ-462))
2909+ (weld (check ~.types-partial-aura-generalization src-466 `tok-466 `tre-466) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-466 `typ-466))
28862910++ test-types-partial-bare-atom
2887− (weld (check ~.types-partial-bare-atom src-463 `tok-463 `tre-463) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-463 `typ-463))
2911+ (weld (check ~.types-partial-bare-atom src-467 `tok-467 `tre-467) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-467 `typ-467))
28882912++ test-types-partial-branch-widening
2889− (weld (check ~.types-partial-branch-widening src-464 `tok-464 `tre-464) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-464 `typ-464))
2913+ (weld (check ~.types-partial-branch-widening src-468 `tok-468 `tre-468) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-468 `typ-468))
28902914++ test-types-partial-conflicting-sites
2891− (weld (check ~.types-partial-conflicting-sites src-465 `tok-465 `tre-465) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-465 `typ-465))
2915+ (weld (check ~.types-partial-conflicting-sites src-469 `tok-469 `tre-469) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-469 `typ-469))
28922916++ test-types-partial-decimal-default
2893− (weld (check ~.types-partial-decimal-default src-466 `tok-466 `tre-466) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-466 `typ-466))
2917+ (weld (check ~.types-partial-decimal-default src-470 `tok-470 `tre-470) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-470 `typ-470))
28942918++ test-types-partial-dependency-chain
2895− (weld (check ~.types-partial-dependency-chain src-467 `tok-467 `tre-467) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-467 `typ-467))
2919+ (weld (check ~.types-partial-dependency-chain src-471 `tok-471 `tre-471) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-471 `typ-471))
28962920++ test-types-partial-explicit-capital
2897− (weld (check ~.types-partial-explicit-capital src-468 `tok-468 `tre-468) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-468 `typ-468))
2921+ (weld (check ~.types-partial-explicit-capital src-472 `tok-472 `tre-472) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-472 `typ-472))
28982922++ test-types-partial-forward
2899− (weld (check ~.types-partial-forward src-469 `tok-469 `tre-469) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-469 `typ-469))
2923+ (weld (check ~.types-partial-forward src-473 `tok-473 `tre-473) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-473 `typ-473))
29002924++ test-types-partial-generalization
2901− (weld (check ~.types-partial-generalization src-470 `tok-470 `tre-470) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-470 `typ-470))
2925+ (weld (check ~.types-partial-generalization src-474 `tok-474 `tre-474) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-474 `typ-474))
29022926++ test-types-partial-identity
2903− (weld (check ~.types-partial-identity src-471 `tok-471 `tre-471) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-471 `typ-471))
2927+ (weld (check ~.types-partial-identity src-475 `tok-475 `tre-475) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-475 `typ-475))
29042928++ test-types-partial-independent-atoms
2905− (weld (check ~.types-partial-independent-atoms src-472 `tok-472 `tre-472) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-472 `typ-472))
2929+ (weld (check ~.types-partial-independent-atoms src-476 `tok-476 `tre-476) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-476 `typ-476))
29062930++ test-types-partial-local-molds
2907− (weld (check ~.types-partial-local-molds src-473 `tok-473 `tre-473) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-473 `typ-473))
2931+ (weld (check ~.types-partial-local-molds src-477 `tok-477 `tre-477) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-477 `typ-477))
29082932++ test-types-partial-locals
2909− (weld (check ~.types-partial-locals src-474 `tok-474 `tre-474) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-474 `typ-474))
2933+ (weld (check ~.types-partial-locals src-478 `tok-478 `tre-478) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-478 `typ-478))
29102934++ test-types-partial-many-atom-constraints
2911− (weld (check ~.types-partial-many-atom-constraints src-475 `tok-475 `tre-475) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-475 `typ-475))
2935+ (weld (check ~.types-partial-many-atom-constraints src-479 `tok-479 `tre-479) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-479 `typ-479))
29122936++ test-types-partial-mold-bare-aura
2913− (weld (check ~.types-partial-mold-bare-aura src-476 `tok-476 `tre-476) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-476 `typ-476))
2937+ (weld (check ~.types-partial-mold-bare-aura src-480 `tok-480 `tre-480) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-480 `typ-480))
29142938++ test-types-partial-mold-composite
2915− (weld (check ~.types-partial-mold-composite src-477 `tok-477 `tre-477) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-477 `typ-477))
2939+ (weld (check ~.types-partial-mold-composite src-481 `tok-481 `tre-481) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-481 `typ-481))
29162940++ test-types-partial-mold-forward
2917− (weld (check ~.types-partial-mold-forward src-478 `tok-478 `tre-478) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-478 `typ-478))
2941+ (weld (check ~.types-partial-mold-forward src-482 `tok-482 `tre-482) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-482 `typ-482))
29182942++ test-types-partial-mold-recursive
2919− (weld (check ~.types-partial-mold-recursive src-479 `tok-479 `tre-479) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-479 `typ-479))
2943+ (weld (check ~.types-partial-mold-recursive src-483 `tok-483 `tre-483) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-483 `typ-483))
29202944++ test-types-partial-occurs
2921− (weld (check ~.types-partial-occurs src-480 `tok-480 `tre-480) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-480 `typ-480))
2945+ (weld (check ~.types-partial-occurs src-484 `tok-484 `tre-484) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-484 `typ-484))
29222946++ test-types-partial-projection
2923− (weld (check ~.types-partial-projection src-481 `tok-481 `tre-481) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-481 `typ-481))
2947+ (weld (check ~.types-partial-projection src-485 `tok-485 `tre-485) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-485 `typ-485))
29242948++ test-types-partial-shadow-global
2925− (weld (check ~.types-partial-shadow-global src-482 `tok-482 `tre-482) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-482 `typ-482))
2949+ (weld (check ~.types-partial-shadow-global src-486 `tok-486 `tre-486) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-486 `typ-486))
29262950++ test-types-partial-shared-tvar
2927− (weld (check ~.types-partial-shared-tvar src-483 `tok-483 `tre-483) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-483 `typ-483))
2951+ (weld (check ~.types-partial-shared-tvar src-487 `tok-487 `tre-487) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-487 `typ-487))
29282952++ test-types-partial-union-cases
2929− (weld (check ~.types-partial-union-cases src-484 `tok-484 `tre-484) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-484 `typ-484))
2953+ (weld (check ~.types-partial-union-cases src-488 `tok-488 `tre-488) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-488 `typ-488))
29302954++ test-types-partial-union-edges
2931− (weld (check ~.types-partial-union-edges src-485 `tok-485 `tre-485) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-485 `typ-485))
2955+ (weld (check ~.types-partial-union-edges src-489 `tok-489 `tre-489) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-489 `typ-489))
29322956++ test-types-partial-unresolved-tag
2933− (weld (check ~.types-partial-unresolved-tag src-486 `tok-486 `tre-486) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-486 `typ-486))
2957+ (weld (check ~.types-partial-unresolved-tag src-490 `tok-490 `tre-490) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-490 `typ-490))
29342958++ test-types-prelude-direct
2935− (weld (check ~.types-prelude-direct src-487 `tok-487 `tre-487) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-487 `typ-487 ~ ~ ~))
2959+ (weld (check ~.types-prelude-direct src-491 `tok-491 `tre-491) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-491 `typ-491 ~ ~ ~))
29362960++ test-types-prelude-interface
2937− (weld (weld (check ~.types-prelude-interface src-488 `tok-488 `tre-488) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-488 `typ-488 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-488-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-488-2]])) (check-module-trees ~.types-prelude-interface `mtre-488 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-488-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-488-2]]))
2961+ (weld (weld (check ~.types-prelude-interface src-492 `tok-492 `tre-492) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-492 `typ-492 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-492-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-492-2]])) (check-module-trees ~.types-prelude-interface `mtre-492 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-492-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-492-2]]))
29382962++ test-types-prelude-list-functions
2939− (weld (weld (check ~.types-prelude-list-functions src-489 `tok-489 `tre-489) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-489 `typ-489 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-489-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-489 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-489-1]]))
2963+ (weld (weld (check ~.types-prelude-list-functions src-493 `tok-493 `tre-493) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-493 `typ-493 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-493-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-493 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-493-1]]))
29402964++ test-types-prelude-unit-helpers
2941− (weld (check ~.types-prelude-unit-helpers src-490 `tok-490 `tre-490) (check-module-types ~.types-prelude-unit-helpers ~[%tests %golden ~.types-prelude-unit-helpers %source %jibb] src-490 `typ-490 ~ ~ ~))
2965+ (weld (check ~.types-prelude-unit-helpers src-494 `tok-494 `tre-494) (check-module-types ~.types-prelude-unit-helpers ~[%tests %golden ~.types-prelude-unit-helpers %source %jibb] src-494 `typ-494 ~ ~ ~))
29422966++ test-types-record-bound-variable
2943− (weld (check ~.types-record-bound-variable src-491 `tok-491 `tre-491) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-491 `typ-491))
2967+ (weld (check ~.types-record-bound-variable src-495 `tok-495 `tre-495) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-495 `typ-495))
29442968++ test-types-record-cast-context
2945− (weld (check ~.types-record-cast-context src-492 `tok-492 `tre-492) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-492 `typ-492 ~ ~ ~))
2969+ (weld (check ~.types-record-cast-context src-496 `tok-496 `tre-496) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-496 `typ-496 ~ ~ ~))
29462970++ test-types-record-change
2947− (weld (check ~.types-record-change src-493 `tok-493 `tre-493) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-493 `typ-493 ~ ~ ~))
2971+ (weld (check ~.types-record-change src-497 `tok-497 `tre-497) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-497 `typ-497 ~ ~ ~))
29482972++ test-types-record-change-generic
2949− (weld (check ~.types-record-change-generic src-494 `tok-494 `tre-494) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-494 `typ-494 ~ ~ ~))
2973+ (weld (check ~.types-record-change-generic src-498 `tok-498 `tre-498) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-498 `typ-498 ~ ~ ~))
29502974++ test-types-record-faces
2951− (weld (check ~.types-record-faces src-495 `tok-495 `tre-495) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-495 `typ-495))
2975+ (weld (check ~.types-record-faces src-499 `tok-499 `tre-499) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-499 `typ-499))
29522976++ test-types-record-import
2953− (weld (weld (check ~.types-record-import src-496 `tok-496 `tre-496) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-496 `typ-496 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-496-1]])) (check-module-trees ~.types-record-import `mtre-496 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-496-1]]))
2977+ (weld (weld (check ~.types-record-import src-500 `tok-500 `tre-500) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-500 `typ-500 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-500-1]])) (check-module-trees ~.types-record-import `mtre-500 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-500-1]]))
29542978++ test-types-record-local-scheme
2955− (weld (check ~.types-record-local-scheme src-497 `tok-497 `tre-497) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-497 `typ-497))
2979+ (weld (check ~.types-record-local-scheme src-501 `tok-501 `tre-501) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-501 `typ-501))
29562980++ test-types-record-nested
2957− (weld (check ~.types-record-nested src-498 `tok-498 `tre-498) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-498 `typ-498))
2981+ (weld (check ~.types-record-nested src-502 `tok-502 `tre-502) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-502 `typ-502))
29582982++ test-types-record-to-tuple
2959− (weld (check ~.types-record-to-tuple src-499 `tok-499 `tre-499) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-499 `typ-499))
2983+ (weld (check ~.types-record-to-tuple src-503 `tok-503 `tre-503) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-503 `typ-503))
29602984++ test-types-recursion-scc-failures
2961− (weld (check ~.types-recursion-scc-failures src-500 `tok-500 `tre-500) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-500 `typ-500 ~ ~ ~))
2985+ (weld (check ~.types-recursion-scc-failures src-504 `tok-504 `tre-504) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-504 `typ-504 ~ ~ ~))
29622986++ test-types-recursion-scc-groups
2963− (weld (check ~.types-recursion-scc-groups src-501 `tok-501 `tre-501) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-501 `typ-501 ~ ~ ~))
2987+ (weld (check ~.types-recursion-scc-groups src-505 `tok-505 `tre-505) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-505 `typ-505 ~ ~ ~))
29642988++ test-types-recursion-scc-import
2965− (weld (weld (check ~.types-recursion-scc-import src-502 `tok-502 `tre-502) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-502 `typ-502 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-502-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-502 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-502-1]]))
2989+ (weld (weld (check ~.types-recursion-scc-import src-506 `tok-506 `tre-506) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-506 `typ-506 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-506-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-506 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-506-1]]))
29662990++ test-types-recursion-scc-import-bad
2967− (weld (weld (check ~.types-recursion-scc-import-bad src-503 `tok-503 `tre-503) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-503 `typ-503 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-503-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-503 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-503-1]]))
2991+ (weld (weld (check ~.types-recursion-scc-import-bad src-507 `tok-507 `tre-507) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-507 `typ-507 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-507-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-507 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-507-1]]))
29682992++ test-types-recursion-scc-local
2969− (weld (check ~.types-recursion-scc-local src-504 `tok-504 `tre-504) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-504 `typ-504 ~ ~ ~))
2993+ (weld (check ~.types-recursion-scc-local src-508 `tok-508 `tre-508) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-508 `typ-508 ~ ~ ~))
29702994++ test-types-recursion-scc-order
2971− (weld (check ~.types-recursion-scc-order src-505 `tok-505 `tre-505) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-505 `typ-505 ~ ~ ~))
2995+ (weld (check ~.types-recursion-scc-order src-509 `tok-509 `tre-509) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-509 `typ-509 ~ ~ ~))
29722996++ test-types-recursion-scc-shadow
2973− (weld (check ~.types-recursion-scc-shadow src-506 `tok-506 `tre-506) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-506 `typ-506 ~ ~ ~))
2997+ (weld (check ~.types-recursion-scc-shadow src-510 `tok-510 `tre-510) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-510 `typ-510 ~ ~ ~))
29742998++ test-types-recursive-branch
2975− (weld (check ~.types-recursive-branch src-507 `tok-507 `tre-507) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-507 `typ-507 ~ ~ ~))
2999+ (weld (check ~.types-recursive-branch src-511 `tok-511 `tre-511) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-511 `typ-511 ~ ~ ~))
29763000++ test-types-recursive-gate
2977− (weld (check ~.types-recursive-gate src-508 `tok-508 `tre-508) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-508 `typ-508))
3001+ (weld (check ~.types-recursive-gate src-512 `tok-512 `tre-512) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-512 `typ-512))
29783002++ test-types-recursive-sample
2979− (weld (check ~.types-recursive-sample src-509 `tok-509 `tre-509) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-509 `typ-509))
3003+ (weld (check ~.types-recursive-sample src-513 `tok-513 `tre-513) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-513 `typ-513))
29803004++ test-types-string-interpolation
2981− (weld (check ~.types-string-interpolation src-510 `tok-510 `tre-510) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-510 `typ-510 ~ ~ ~))
3005+ (weld (check ~.types-string-interpolation src-514 `tok-514 `tre-514) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-514 `typ-514 ~ ~ ~))
29823006++ test-types-tuple-context
2983− (weld (check ~.types-tuple-context src-511 `tok-511 `tre-511) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-511 `typ-511 ~ ~ ~))
3007+ (weld (check ~.types-tuple-context src-515 `tok-515 `tre-515) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-515 `typ-515 ~ ~ ~))
29843008++ test-types-tuple-context-nested
2985− (weld (check ~.types-tuple-context-nested src-512 `tok-512 `tre-512) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-512 `typ-512 ~ ~ ~))
3009+ (weld (check ~.types-tuple-context-nested src-516 `tok-516 `tre-516) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-516 `typ-516 ~ ~ ~))
29863010++ test-types-union-alias
2987− (weld (check ~.types-union-alias src-513 `tok-513 `tre-513) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-513 `typ-513))
3011+ (weld (check ~.types-union-alias src-517 `tok-517 `tre-517) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-517 `typ-517))
29883012++ test-types-union-branch-context
2989− (weld (check ~.types-union-branch-context src-514 `tok-514 `tre-514) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-514 `typ-514))
3013+ (weld (check ~.types-union-branch-context src-518 `tok-518 `tre-518) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-518 `typ-518))
29903014++ test-types-union-branch-pending
2991− (weld (check ~.types-union-branch-pending src-515 `tok-515 `tre-515) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-515 `typ-515))
3015+ (weld (check ~.types-union-branch-pending src-519 `tok-519 `tre-519) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-519 `typ-519))
29923016++ test-types-union-constructor-shape
2993− (weld (check ~.types-union-constructor-shape src-516 `tok-516 `tre-516) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-516 `typ-516))
3017+ (weld (check ~.types-union-constructor-shape src-520 `tok-520 `tre-520) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-520 `typ-520))
29943018++ test-types-union-context-flow
2995− (weld (check ~.types-union-context-flow src-517 `tok-517 `tre-517) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-517 `typ-517))
3019+ (weld (check ~.types-union-context-flow src-521 `tok-521 `tre-521) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-521 `typ-521))
29963020++ test-types-union-finite
2997− (weld (check ~.types-union-finite src-518 `tok-518 `tre-518) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-518 `typ-518 ~ ~ ~))
3021+ (weld (check ~.types-union-finite src-522 `tok-522 `tre-522) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-522 `typ-522 ~ ~ ~))
29983022++ test-types-union-finite-generic
2999− (weld (check ~.types-union-finite-generic src-519 `tok-519 `tre-519) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-519 `typ-519 ~ ~ ~))
3023+ (weld (check ~.types-union-finite-generic src-523 `tok-523 `tre-523) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-523 `typ-523 ~ ~ ~))
30003024++ test-types-union-finite-limit
3001− (weld (check ~.types-union-finite-limit src-520 `tok-520 `tre-520) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-520 `typ-520 ~ ~ ~))
3025+ (weld (check ~.types-union-finite-limit src-524 `tok-524 `tre-524) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-524 `typ-524 ~ ~ ~))
30023026++ test-types-union-import
3003− (weld (weld (check ~.types-union-import src-521 `tok-521 `tre-521) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-521 `typ-521 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-521-1]])) (check-module-trees ~.types-union-import `mtre-521 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-521-1]]))
3027+ (weld (weld (check ~.types-union-import src-525 `tok-525 `tre-525) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-525 `typ-525 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-525-1]])) (check-module-trees ~.types-union-import `mtre-525 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-525-1]]))
30043028++ test-types-union-local-pending
3005− (weld (check ~.types-union-local-pending src-522 `tok-522 `tre-522) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-522 `typ-522))
3029+ (weld (check ~.types-union-local-pending src-526 `tok-526 `tre-526) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-526 `typ-526))
30063030++ test-types-union-overlap
3007− (weld (check ~.types-union-overlap src-523 `tok-523 `tre-523) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-523 `typ-523))
3031+ (weld (check ~.types-union-overlap src-527 `tok-527 `tre-527) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-527 `typ-527))
30083032++ test-types-union-overlap-nested
3009− (weld (check ~.types-union-overlap-nested src-524 `tok-524 `tre-524) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-524 `typ-524))
3033+ (weld (check ~.types-union-overlap-nested src-528 `tok-528 `tre-528) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-528 `typ-528))
30103034++ test-types-union-pattern-result-context
3011− (weld (check ~.types-union-pattern-result-context src-525 `tok-525 `tre-525) (check-module-types ~.types-union-pattern-result-context ~[%tests %golden ~.types-union-pattern-result-context %source %jibb] src-525 `typ-525 ~ ~ ~))
3035+ (weld (check ~.types-union-pattern-result-context src-529 `tok-529 `tre-529) (check-module-types ~.types-union-pattern-result-context ~[%tests %golden ~.types-union-pattern-result-context %source %jibb] src-529 `typ-529 ~ ~ ~))
30123036++ test-types-union-pattern-result-controls
3013− (weld (check ~.types-union-pattern-result-controls src-526 `tok-526 `tre-526) (check-module-types ~.types-union-pattern-result-controls ~[%tests %golden ~.types-union-pattern-result-controls %source %jibb] src-526 `typ-526 ~ ~ ~))
3037+ (weld (check ~.types-union-pattern-result-controls src-530 `tok-530 `tre-530) (check-module-types ~.types-union-pattern-result-controls ~[%tests %golden ~.types-union-pattern-result-controls %source %jibb] src-530 `typ-530 ~ ~ ~))
30143038++ test-types-union-patterns
3015− (weld (check ~.types-union-patterns src-527 `tok-527 `tre-527) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-527 `typ-527 ~ ~ ~))
3039+ (weld (check ~.types-union-patterns src-531 `tok-531 `tre-531) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-531 `typ-531 ~ ~ ~))
30163040++ test-types-union-patterns-generic
3017− (weld (check ~.types-union-patterns-generic src-528 `tok-528 `tre-528) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-528 `typ-528 ~ ~ ~))
3041+ (weld (check ~.types-union-patterns-generic src-532 `tok-532 `tre-532) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-532 `typ-532 ~ ~ ~))
30183042++ test-types-union-patterns-import
3019− (weld (weld (check ~.types-union-patterns-import src-529 `tok-529 `tre-529) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-529 `typ-529 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-529-1]])) (check-module-trees ~.types-union-patterns-import `mtre-529 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-529-1]]))
3043+ (weld (weld (check ~.types-union-patterns-import src-533 `tok-533 `tre-533) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-533 `typ-533 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-533-1]])) (check-module-trees ~.types-union-patterns-import `mtre-533 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-533-1]]))
30203044++ test-types-union-phantom-generic
3021− (weld (check ~.types-union-phantom-generic src-530 `tok-530 `tre-530) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-530 `typ-530))
3045+ (weld (check ~.types-union-phantom-generic src-534 `tok-534 `tre-534) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-534 `typ-534))
30223046++ test-types-union-print-cross-namespace
3023− (weld (weld (check ~.types-union-print-cross-namespace src-531 `tok-531 `tre-531) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-531 `typ-531 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-531-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-531 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-531-1]]))
3047+ (weld (weld (check ~.types-union-print-cross-namespace src-535 `tok-535 `tre-535) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-535 `typ-535 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-535-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-535 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-535-1]]))
30243048++ test-types-union-print-distinct
3025− (weld (weld (check ~.types-union-print-distinct src-532 `tok-532 `tre-532) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-532 `typ-532 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-532-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-532-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-532-3]])) (check-module-trees ~.types-union-print-distinct `mtre-532 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-532-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-532-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-532-3]]))
3049+ (weld (weld (check ~.types-union-print-distinct src-536 `tok-536 `tre-536) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-536 `typ-536 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-536-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-536-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-536-3]])) (check-module-trees ~.types-union-print-distinct `mtre-536 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-536-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-536-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-536-3]]))
30263050++ test-types-union-print-escape
3027− (weld (check ~.types-union-print-escape src-533 `tok-533 `tre-533) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-533 `typ-533))
3051+ (weld (check ~.types-union-print-escape src-537 `tok-537 `tre-537) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-537 `typ-537))
30283052++ test-types-union-print-local
3029− (weld (check ~.types-union-print-local src-534 `tok-534 `tre-534) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-534 `typ-534))
3053+ (weld (check ~.types-union-print-local src-538 `tok-538 `tre-538) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-538 `typ-538))
30303054++ test-types-union-print-nested
3031− (weld (check ~.types-union-print-nested src-535 `tok-535 `tre-535) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-535 `typ-535))
3055+ (weld (check ~.types-union-print-nested src-539 `tok-539 `tre-539) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-539 `typ-539))
30323056++ test-types-union-print-same-origin
3033− (weld (weld (check ~.types-union-print-same-origin src-536 `tok-536 `tre-536) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-536 `typ-536 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-536-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-536 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-536-1]]))
3057+ (weld (weld (check ~.types-union-print-same-origin src-540 `tok-540 `tre-540) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-540 `typ-540 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-540-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-540 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-540-1]]))
30343058++ test-types-union-print-transitive
3035− (weld (weld (check ~.types-union-print-transitive src-537 `tok-537 `tre-537) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-537 `typ-537 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-537-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-537-2]])) (check-module-trees ~.types-union-print-transitive `mtre-537 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-537-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-537-2]]))
3059+ (weld (weld (check ~.types-union-print-transitive src-541 `tok-541 `tre-541) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-541 `typ-541 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-541-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-541-2]])) (check-module-trees ~.types-union-print-transitive `mtre-541 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-541-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-541-2]]))
30363060++ test-types-union-singleton
3037− (weld (check ~.types-union-singleton src-538 `tok-538 `tre-538) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-538 `typ-538))
3061+ (weld (check ~.types-union-singleton src-542 `tok-542 `tre-542) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-542 `typ-542))
30383062++ test-types-union-tag-atoms
3039− (weld (check ~.types-union-tag-atoms src-539 `tok-539 `tre-539) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-539 `typ-539))
3063+ (weld (check ~.types-union-tag-atoms src-543 `tok-543 `tre-543) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-543 `typ-543))
30403064++ test-types-union-tags
3041− (weld (check ~.types-union-tags src-540 `tok-540 `tre-540) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-540 `typ-540))
3065+ (weld (check ~.types-union-tags src-544 `tok-544 `tre-544) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-544 `typ-544))
30423066++ test-types-union-unresolved
3043− (weld (check ~.types-union-unresolved src-541 `tok-541 `tre-541) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-541 `typ-541))
3067+ (weld (check ~.types-union-unresolved src-545 `tok-545 `tre-545) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-545 `typ-545))
30443068++ test-types-union-unresolved-flow
3045− (weld (check ~.types-union-unresolved-flow src-542 `tok-542 `tre-542) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-542 `typ-542))
3069+ (weld (check ~.types-union-unresolved-flow src-546 `tok-546 `tre-546) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-546 `typ-546))
30463070++ test-types-unit-construction
3047− (weld (check ~.types-unit-construction src-543 `tok-543 `tre-543) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-543 `typ-543 ~ ~ ~))
3071+ (weld (check ~.types-unit-construction src-547 `tok-547 `tre-547) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-547 `typ-547 ~ ~ ~))
30483072++ test-types-unit-context
3049− (weld (check ~.types-unit-context src-544 `tok-544 `tre-544) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-544 `typ-544 ~ ~ ~))
3073+ (weld (check ~.types-unit-context src-548 `tok-548 `tre-548) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-548 `typ-548 ~ ~ ~))
30503074++ test-types-unit-patterns
3051− (weld (check ~.types-unit-patterns src-545 `tok-545 `tre-545) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-545 `typ-545))
3075+ (weld (check ~.types-unit-patterns src-549 `tok-549 `tre-549) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-549 `typ-549))
30523076::
30533077:: +check: run golden:jibb on a case and compare both outputs
30543078::
tests/type-module-scope/expected.txt+8
@@ -56,3 +56,11 @@ prelude source does not parse; module import inference unsupported
5656partial inference; module not checked
5757+$ unit: not checked
5858++ x: unit construction needs the standard prelude in partial inference
59+partial inference; module not checked
60+++ x: list literal needs the standard prelude in partial inference
61+++ empty: list literal needs the standard prelude in partial inference
62+partial inference; module not checked
63+++ x: list literal needs the standard prelude in partial inference
64+++ empty: list literal needs the standard prelude in partial inference
65+partial inference; module not checked
66+prelude source does not parse; module import inference unsupported