on master help sign in
Infer command molds and single-case patterns
commitad0265e569967a8e78eaf1e99475eda9cf24e7b7 authoriko <mail@iko.soy> dateSat 31 Oct 2026, 03:59 (12 hours ago) parented9291e
23 files changed+1676−387
docs/compiler.md+3−3 docs/prelude-inventory.md+2 docs/status.md+7−6 jibb-dev/lib/jibb.hoon+49−1 jibb-dev/lib/jibb/prelude.jibb+7 tests/golden/prelude-unit-list-transforms/source.jibb+7 tests/golden/prelude-unit-list-transforms/tokens.txt+64−3 tests/golden/prelude-unit-list-transforms/tree.txt+26−1 tests/golden/prelude-unit-list-transforms/types.txt+1 tests/golden/types-cell-pattern-many/types.txt+2−2 tests/golden/types-prelude-cmd/about.txt+4 tests/golden/types-prelude-cmd/modules.txt+1 tests/golden/types-prelude-cmd/source.jibb+21 tests/golden/types-prelude-cmd/tokens.txt+285 tests/golden/types-prelude-cmd/tree.txt+122 tests/golden/types-prelude-cmd/types.txt+50 tests/golden/types-single-case-pattern/about.txt+4 tests/golden/types-single-case-pattern/modules.txt+1 tests/golden/types-single-case-pattern/source.jibb+59 tests/golden/types-single-case-pattern/tokens.txt+364 tests/golden/types-single-case-pattern/tree.txt+182 tests/golden/types-single-case-pattern/types.txt+32 tests/lib/jibb.hoon+383−371
docs/compiler.md+3−3
@@ -56,9 +56,9 @@ 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. 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.
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. Some proven non-gate value cycles are diagnosed; other 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 and recursive molds 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. 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
61−A 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.
61+A single-arm cell pattern can bind two or more positions, with its last binder capturing the remaining tail. Duplicate and shadowed names are rejected. A definite non-cell spine fails; an intermediate union or collection that might contain a cell remains unsupported. For a known non-union cell, a separate one-arm rule also accepts structured patterns, including nested literal and wildcard positions, when the existing coverage proof establishes the whole pattern. It binds payloads with their original types and checks result context; unknown, partially covered, union or recursive spines stay unsupported.
6262
6363String interpolation infers its pieces in order and preserves substitutions and pending constraints. A piece with a known atom aura, unrestricted `@`, or a tape `(list @tD)` is accepted; an isolated decimal literal takes its normal `@ud` default. A known cell reports that it needs a printer, and an explicitly generic atom asks for an aura at its use site. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported in this fragment.
6464
@@ -96,7 +96,7 @@ The source-backed `+api-path-analysis-source` is a separate partial analysis, no
9696
9797`+golden-types-with-prelude` accepts case-local Jibb module sources alongside `/sur` and mark results and the vendored prelude source. It resolves reachable ordinary library modules in dependency order, caching completed interfaces per invocation and exporting supported closed value schemes, direct generic unions, and simple or nonrecursive generic mold aliases whose bodies the fragment supports. It detects missing sources and cycles and rejects a dependency if its interface cannot be inferred by the fragment. Qualified wings can also read nested fields of an imported value, instantiating that value’s scheme independently at each use; missing, ambiguous and non-record fields remain unsupported.
9898
99−The supplied prelude is parsed into a **partial interface**: all names actually declared in the source are reserved, while only the molds and values this fragment can infer are available. These include the validated standard `list` mold, `unit`, `same`, `fall`, `need`, `lure`, `weld`, `snoc`, `turn`, `flop`, `rear`, `drop`, `skim`, `skip`, `murn`, `join`, `snip`, `cork`, `corl`, `cury` and `curr`; unsupported entries remain unavailable. The validated `list` is injected while the prelude’s gates are inferred; `weld` and `turn` use ordinary explicit result casts. An absent or altered `list` is not injected, and an altered declaration cannot leak through a direct or transitive mold alias. List-dependent prelude mold aliases remain unsupported because their templates are prepared before this injection. A named prelude union keeps the fixed `/lib/jibb/prelude/jibb` origin in every module, and its name remains unqualified when a library exports a type containing it. The prelude inventory is incomplete, so reserving the names in this source does not establish complete shadowing coverage. The source-backed internal prelude defines `poke`, which the public prelude re-exports as an ordinary transparent type. The partial checker resolves its supported source shape, preserves its public name, and rejects ordinary imports of the private internal path. An imported API with one mark and a matching direct `+$ poke` declaration can export a derived constructor and retain agent/mark metadata when the source representation has the supported agent case. Other API shapes, complete private module checking, root API and kind checking, stores, `ask`, `pure`, lowering and runtime effects remain unfinished. A possible store or root API declaring `+$ poke` reports that kind or scope needs unsupported inference; definite duplicate declarations and unrelated shadowing still report conflicts. Prepared interfaces and caches are trusted caller inputs; the future host and linker must ensure the private source validated during preparation is the same version used to lower derived constructors. A `*` payload may contain gates, so the fragment treats it conservatively; full gate-free checks are unfinished. The shared 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.
99+The supplied prelude is parsed into a **partial interface**: all names actually declared in the source are reserved, while only the molds and values this fragment can infer are available. These include the validated standard `list` mold, `unit`, the doc-exact generic `cmd` union, `same`, `fall`, `need`, `lure`, `weld`, `snoc`, `turn`, `flop`, `rear`, `drop`, `skim`, `skip`, `murn`, `join`, `snip`, `cork`, `corl`, `cury` and `curr`; unsupported entries remain unavailable. The validated `list` is injected while the prelude’s gates are inferred; `weld` and `turn` use ordinary explicit result casts. An absent or altered `list` is not injected, and an altered declaration cannot leak through a direct or transitive mold alias. List-dependent prelude mold aliases remain unsupported because their templates are prepared before this injection. A named prelude union keeps the fixed `/lib/jibb/prelude/jibb` origin in every module, and its name remains unqualified when a library exports a type containing it. The prelude inventory is incomplete, so reserving the names in this source does not establish complete shadowing coverage. The source-backed internal prelude defines `poke`, which the public prelude re-exports as an ordinary transparent type. The partial checker resolves its supported source shape, preserves its public name, and rejects ordinary imports of the private internal path. An imported API with one mark and a matching direct `+$ poke` declaration can export a derived constructor and retain agent/mark metadata when the source representation has the supported agent case. Other API shapes, complete private module checking, root API and kind checking, stores, `ask`, `pure`, lowering and runtime effects remain unfinished. A possible store or root API declaring `+$ poke` reports that kind or scope needs unsupported inference; definite duplicate declarations and unrelated shadowing still report conflicts. Prepared interfaces and caches are trusted caller inputs; the future host and linker must ensure the private source validated during preparation is the same version used to lower derived constructors. A `*` payload may contain gates, so the fragment treats it conservatively; full gate-free checks are unfinished. The shared 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.
100100
101101`+prepare-prelude` derives the interface and declared-name inventory from the trusted vendored source. Hosts can reuse its result with `+golden-types-with-prepared-prelude`; they must pass the unchanged result of preparation, not an independently constructed value. Empty, malformed and duplicate-name prelude sources fail closed. The source-taking `+prepare-prelude` and `+golden-types-with-prelude` do not supply the internal module; their `-and-internal` or `-with-internal` variants accept its source for the supported private import. API files, modules with `main`, unsupported definitions and many other features remain outside this subset. The older `+golden-types-with-modules` entry point fails closed for imports because it has no prelude scope. None of these partial reports claims the module has been checked.
102102
docs/prelude-inventory.md+2
@@ -6,6 +6,8 @@ The source is the fake ship's `%base` `/sys/hoon.hoon` (Hoon version 135), read
66
77The vendored prelude defines `poke` in its private internal module and re-exports it as a transparent type. The partial checker resolves its supported source shape and a narrow imported API constructor; complete checking of the private body, other API shapes, effect lowering and runtime execution remain unfinished. `ask` and `qath` are not yet defined there.
88
9+The prelude also declares the generic `cmd` mold exactly as in Overview, Effects. The partial checker infers its five cases and independent message types in the supported examples; complete module checking and backend validation remain outstanding. The related `sub` declaration awaits the `ask` representation decision.
10+
911Hoon `+$` arms are marked **mold** below; `++` arms can be gates, doors or mold generators, and need individual inspection. Jibb's loobean `not` and Hoon's bitwise `not.bit` are distinct. Parser helpers outside 3g are excluded from the intended prelude except the specifically listed `slav` and `slaw`; the raw candidates below still need to be classified.
1012
1113## 1a
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 Hoon `*` in supported nonrecursive molds, selected Hoon atoms, term singletons, the null singleton, the two loobean singletons and their exact fork, 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, including a source-proved nonrecursive union from a single Ford-imported `/sur` core, 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, bare `~` fields and one level of local named tagged unions, as in real Tlon `notes`, with 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, detects missing sources and cycles, and resolves nested fields of imported values with independent scheme instantiation. The source-backed internal prelude defines `poke` and the public prelude re-exports it as a transparent type. The partial checker resolves its supported source shape and rejects ordinary imports of the private path. An imported API with one mark and a matching direct `+$ poke` declaration can export a constructor and retain agent/mark metadata when the representation has the supported agent case. A separate partial analysis resolves supported API path declarations and their full and diff mark types, including the todo paths; it does not create requests or check an API module. Complete private module checking, other API shapes, request gates, root API and kind checking, stores, `ask`, `pure`, lowering and runtime effects remain unfinished. A possible store or root API with `+$ poke` reports unsupported kind or scope, while definite duplicates and unrelated shadowing still report conflicts. 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. A bounded dependency proof reports certain non-gate cycles through values and gates when an explicit atom or loobean result cast and simple unshadowed expressions establish the cycle. Other 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 and supported finite loobean refinements for a known union accessed by a wing, including nested cell and list positions; other 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. Isolated cart-style `init` and `update` expressions infer, while the complete cart-store fails closed because its kind and declaration scope 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. Unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. Other variable-dependent face merges remain unsupported. Forced equality of distinct written capitals now reports both source sites, following @iko’s decision; forcing one to a concrete type remains unsupported. Imported record spines with repeated faces fail closed where used, but only with a generic unsupported diagnostic. Hoon may erase unfaced nested-cell boundaries, so the check can conservatively reject valid names in distinct erased scopes. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do differing-variable face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive 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 Hoon `*` in supported nonrecursive molds, selected Hoon atoms, term singletons, the null singleton, the two loobean singletons and their exact fork, 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, including a source-proved nonrecursive union from a single Ford-imported `/sur` core, 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, bare `~` fields and one level of local named tagged unions, as in real Tlon `notes`, with 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, detects missing sources and cycles, and resolves nested fields of imported values with independent scheme instantiation. The source-backed internal prelude defines `poke` and the public prelude re-exports it as a transparent type. The partial checker resolves its supported source shape and rejects ordinary imports of the private path. An imported API with one mark and a matching direct `+$ poke` declaration can export a constructor and retain agent/mark metadata when the representation has the supported agent case. A separate partial analysis resolves supported API path declarations and their full and diff mark types, including the todo paths; it does not create requests or check an API module. Complete private module checking, other API shapes, request gates, root API and kind checking, stores, `ask`, `pure`, lowering and runtime effects remain unfinished. A possible store or root API with `+$ poke` reports unsupported kind or scope, while definite duplicates and unrelated shadowing still report conflicts. The prelude includes the doc-exact generic `cmd` union; 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. A bounded dependency proof reports certain non-gate cycles through values and gates when an explicit atom or loobean result cast and simple unshadowed expressions establish the cycle. Other 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. A structured single-arm pattern also works for a known non-union cell when coverage is proven, including nested literal and wildcard positions. 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 and supported finite loobean refinements for a known union accessed by a wing, including nested cell and list positions; other 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. Isolated cart-style `init` and `update` expressions infer, while the complete cart-store fails closed because its kind and declaration scope 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. Unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. Other variable-dependent face merges remain unsupported. Forced equality of distinct written capitals now reports both source sites, following @iko’s decision; forcing one to a concrete type remains unsupported. Imported record spines with repeated faces fail closed where used, but only with a generic unsupported diagnostic. Hoon may erase unfaced nested-cell boundaries, so the check can conservatively reject valid names in distinct erased scopes. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do differing-variable face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive 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−- 567 golden cases: 351 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 567-case corpus passed under `urbit eval` in 73.3 s. The fake ship passed all 576 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 41.6 s for sync and 85.8 s for tests. The importer golden compares 194 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+- 569 golden cases: 353 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 569-case corpus passed under `urbit eval` in 72.1 s. The fake ship passed all 578 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 40.7 s for sync and 53.2 s for tests. The importer golden compares 194 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).
@@ -112,14 +112,15 @@ Besides the plan's list:
112112| beada10 | 2026-10-31 | Import source-proved Ford mark unions, analyze API paths and infer list helpers |
113113| e28f7be | 2026-10-31 | Diagnose proven non-gate cycles and import Tlon null-payload union cases |
114114| fd2f288 | 2026-10-31 | Infer qualified fields of imported values |
115−| This change | 2026-10-31 | Infer term-headed pairs and function helpers, and import nested named unions |
115+| ed9291e | 2026-10-31 | Infer term-headed pairs and function helpers, and import nested named unions |
116+| This change | 2026-10-31 | Infer proven single-case patterns and the prelude command union |
116117
117118## Checking it
118119
119120On a machine set up as [development.md](development.md) says:
120121
121122```
122−tools/golden # 567 cases under urbit eval
123+tools/golden # 569 cases under urbit eval
123124tools/importer-test # the Hoon importer fixture projection
124125tools/type-import-test # the importer/checker bridge fixture
125126tools/type-tlon-test # the real Tlon reader/checker fixture
@@ -132,7 +133,7 @@ tools/testdata/selftest # the tools themselves
132133tools/doc-blocks docs/spec # the doc's examples are golden cases
133134tools/ship start
134135tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
135−tools/ship test # the same 567 cases as -test arms on the ship
136+tools/ship test # the same 569 cases as -test arms on the ship
136137tools/testdata/ship-selftest
137138tools/ship check-commit # |commit stores .jibb files
138139tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+49−1
@@ -7079,6 +7079,50 @@
70797079 ?: mismatch [%| ["union branch result matching needs unsupported inference" ~]]
70807080 $(arms t.arms, remaining (skim remaining |=(c=ifinite !=(%full (union-pattern pat.a part.c)))), st state.p.body, answer `result)
70817081::
7082+:: Prove a one-arm record pattern covers a known, non-union subject.
7083+:: Variable or partial matches stay unsupported; binding uses the same
7084+:: scope and original payload types as the existing union matcher.
7085+++ single-structured-pattern
7086+ |= e=expr
7087+ ^- ?
7088+ ?. ?=(%branch -.e) |
7089+ ?~ arms.e |
7090+ ?^ t.arms.e |
7091+ =/ p=pattern pat.i.arms.e
7092+ ?. ?=(%cell -.p) |
7093+ !(levy items.p |=(x=pattern ?=(%bind -.x)))
7094+::
7095+++ infer-single-case-branch
7096+ |= [e=expr env=ienv state=istate expected=(unit [typ=itype context=span])]
7097+ ^- iresult
7098+ ?> (single-structured-pattern e)
7099+ ?> ?=(%branch -.e)
7100+ ?> ?=(^ arms.e)
7101+ =/ a=arm i.arms.e
7102+ =/ subject=iresult (infer-fragment subject.e env state)
7103+ ?: ?=(%| -.subject) subject
7104+ =/ st=istate state.p.subject
7105+ =/ typ=itype (itype-normalize typ.p.subject sub.st)
7106+ ?: ?=(%union -.typ) [%| ["single-case pattern needs unsupported inference" ~]]
7107+ ?. =(%full (union-pattern pat.a typ))
7108+ [%| ["single-case pattern needs unsupported inference" ~]]
7109+ =/ bound=(unit ienv) (union-pattern-bind pat.a typ env globals.st)
7110+ ?~ bound [%| ["pattern binder shadows a name" ~]]
7111+ ?~ expected (infer-fragment val.a u.bound st)
7112+ =/ body=iresult (infer-call-context-arg val.a typ.u.expected u.bound st context.u.expected)
7113+ ?: ?=(%| -.body) body
7114+ =/ fit=ifit (itype-fit typ.p.body typ.u.expected sub.state.p.body next.state.p.body)
7115+ ?: ?=(%unknown -.fit) [%| ["single-case branch result constraint is not supported by partial inference" ~]]
7116+ ?: ?=(%bad -.fit)
7117+ =/ missing=(unit idiag) (missing-union-tag val.a typ.u.expected sub.state.p.body context.u.expected)
7118+ ?^ missing [%| u.missing]
7119+ =/ nested=(unit idiag) (nested-missing-tag val.a typ.p.body typ.u.expected sub.state.p.body next.state.p.body context.u.expected)
7120+ ?^ nested [%| u.nested]
7121+ [%| ["single-case branch arm does not fit its expected type" ~[[context.u.expected "expected type"] [(span-of val.a) "branch arm"]]]]
7122+ ?: (itype-has-tag (itype-normalize typ.u.expected sub.fit))
7123+ [%| ["single-case branch result needs context in partial inference" ~]]
7124+ [%& typ.u.expected state.p.body(sub sub.fit, next next.fit)]
7125+::
70827126++ infer-known-union-branch
70837127 |= [e=expr env=ienv state=istate]
70847128 ^- iresult
@@ -7343,7 +7387,9 @@
73437387 [%& typ.p.result state.p.result(globals globals.state, molds molds.state)]
73447388 %branch
73457389 ?~ arms.e [%| ["branch is not supported by partial inference" ~]]
7346− ?~ t.arms.e (infer-cell-branch e env state)
7390+ ?~ t.arms.e
7391+ ?: (single-structured-pattern e) (infer-single-case-branch e env state ~)
7392+ (infer-cell-branch e env state)
73477393 ?^ t.t.arms.e (infer-known-union-branch e env state)
73487394 =/ known=(unit itype) (known-union-subject subject.e env state)
73497395 ?: &(?=(^ known) ?=(~ (unit-union-payload u.known)))
@@ -7542,6 +7588,8 @@
75427588 =/ target=itype (itype-walk expected sub.state)
75437589 |-
75447590 ?: ?=(%face -.target) $(target (itype-walk body.target sub.state))
7591+ ?: (single-structured-pattern e)
7592+ (infer-single-case-branch e env state `[target context])
75457593 :: In a loobean-singleton context retain the written loobean noun;
75467594 :: the usual final fit decides whether that value is permitted.
75477595 =/ singleton=(unit itype)
jibb-dev/lib/jibb/prelude.jibb+7
@@ -306,3 +306,10 @@
306306++ curr |= args=[$-([A B] C) B]
307307 ?- args
308308 [f b] |= a=A (f a b)
309+
310++$ cmd |$ [M]
311+ [%poke p=poke reply=$-((unit @t) M)]
312+ [%go url=@t]
313+ [%wait gap=@dr msg=M]
314+ [%now reply=$-(@da M)]
315+ [%who reply=$-(@p M)]
tests/golden/prelude-unit-list-transforms/source.jibb+7
@@ -306,3 +306,10 @@
306306++ curr |= args=[$-([A B] C) B]
307307 ?- args
308308 [f b] |= a=A (f a b)
309+
310++$ cmd |$ [M]
311+ [%poke p=poke reply=$-((unit @t) M)]
312+ [%go url=@t]
313+ [%wait gap=@dr msg=M]
314+ [%now reply=$-(@da M)]
315+ [%who reply=$-(@p M)]
tests/golden/prelude-unit-list-transforms/tokens.txt+64−3
@@ -1979,6 +1979,67 @@
19791979308:21 name a
19801980308:23 name b
19811981308:24 tight glyph )
1982−308:25 DEDENT
1983−308:25 DEDENT
1984−308:25 NEWLINE
1982+310:1 DEDENT
1983+310:1 DEDENT
1984+310:1 NEWLINE
1985+310:1 glyph +$
1986+310:4 name cmd
1987+310:8 glyph |$
1988+310:11 glyph [
1989+310:12 tight tvar M
1990+310:13 tight glyph ]
1991+311:3 INDENT
1992+311:3 glyph [
1993+311:4 tight lit %poke
1994+311:10 name p
1995+311:11 tight glyph =
1996+311:12 tight name poke
1997+311:17 name reply
1998+311:22 tight glyph =
1999+311:23 tight glyph $-(
2000+311:26 tight glyph (
2001+311:27 tight name unit
2002+311:32 aura @t
2003+311:34 tight glyph )
2004+311:36 tvar M
2005+311:37 tight glyph )
2006+311:38 tight glyph ]
2007+312:3 NEWLINE
2008+312:3 glyph [
2009+312:4 tight lit %go
2010+312:8 name url
2011+312:11 tight glyph =
2012+312:12 tight aura @t
2013+312:14 tight glyph ]
2014+313:3 NEWLINE
2015+313:3 glyph [
2016+313:4 tight lit %wait
2017+313:10 name gap
2018+313:13 tight glyph =
2019+313:14 tight aura @dr
2020+313:18 name msg
2021+313:21 tight glyph =
2022+313:22 tight tvar M
2023+313:23 tight glyph ]
2024+314:3 NEWLINE
2025+314:3 glyph [
2026+314:4 tight lit %now
2027+314:9 name reply
2028+314:14 tight glyph =
2029+314:15 tight glyph $-(
2030+314:18 tight aura @da
2031+314:22 tvar M
2032+314:23 tight glyph )
2033+314:24 tight glyph ]
2034+315:3 NEWLINE
2035+315:3 glyph [
2036+315:4 tight lit %who
2037+315:9 name reply
2038+315:14 tight glyph =
2039+315:15 tight glyph $-(
2040+315:18 tight aura @p
2041+315:21 tvar M
2042+315:22 tight glyph )
2043+315:23 tight glyph ]
2044+315:24 DEDENT
2045+315:24 NEWLINE
tests/golden/prelude-unit-list-transforms/tree.txt+26−1
@@ -861,4 +861,29 @@
861861 (gate 308:11
862862 (face 308:14 a (tvar 308:16 A))
863863 (group 308:18
864− (call 308:19 (wing 308:19 f) (wing 308:21 a) (wing 308:23 b))))))))))
864+ (call 308:19 (wing 308:19 f) (wing 308:21 a) (wing 308:23 b)))))))))
865+ (mold 310:1 cmd
866+ (generic 310:8 M
867+ (union 311:3
868+ (cell 311:3
869+ (const 311:4 %poke)
870+ (face 311:10 p (ref 311:12 poke))
871+ (face 311:17 reply
872+ (fn 311:23
873+ (apply 311:26 unit (aura 311:32 @t))
874+ (tvar 311:36 M))))
875+ (cell 312:3
876+ (const 312:4 %go)
877+ (face 312:8 url (aura 312:12 @t)))
878+ (cell 313:3
879+ (const 313:4 %wait)
880+ (face 313:10 gap (aura 313:14 @dr))
881+ (face 313:18 msg (tvar 313:22 M)))
882+ (cell 314:3
883+ (const 314:4 %now)
884+ (face 314:9 reply
885+ (fn 314:15 (aura 314:18 @da) (tvar 314:22 M))))
886+ (cell 315:3
887+ (const 315:4 %who)
888+ (face 315:9 reply
889+ (fn 315:15 (aura 315:18 @p) (tvar 315:21 M))))))))
tests/golden/prelude-unit-list-transforms/types.txt+1
@@ -61,3 +61,4 @@ partial inference; module not checked
6161++ corl: $-([$-(A B) $-(C A)] $-(C B))
6262++ cury: $-([$-([A B] C) A] $-(B C))
6363++ curr: $-([$-([A B] C) B] $-(A C))
64++$ cmd: cases proven disjoint; mold not checked
tests/golden/types-cell-pattern-many/types.txt+2−2
@@ -9,6 +9,6 @@ partial inference; module not checked
99++ atom: cell pattern does not match the subject type
1010++ too-many: cell pattern does not match the subject type
1111++ record: record patterns are not supported by partial inference
12−++ nested: branch pattern is not supported by partial inference
13−++ wildcard: branch pattern is not supported by partial inference
12+++ nested: $-([@t [[@p ?] @ux]] @ux)
13+++ wildcard: $-([@t [@p ?]] ?)
1414++ pending: tag needs context in partial inference
tests/golden/types-prelude-cmd/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Overview, Effects: `cmd` is a generic union with `%poke`, `%go`, `%wait`, `%now` and `%who` cases; a poke carries a reply over `(unit @t)`.
2+tests: The doc-exact source-backed prelude mold and its five cases infer, retain independently instantiated message types, and work in list context. Incorrect URL, message, callback result and list item types report mismatches; an unsupported callback sample or cross-instantiation fails closed. The full module remains unchecked.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-prelude-cmd/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the actual source-backed prelude.
tests/golden/types-prelude-cmd/source.jibbnew file+21
@@ -0,0 +1,21 @@
1+++ identity |= x=(cmd @t) x
2+++ generic |= x=(cmd A) x
3+++ nav ^- (cmd @t) [%go url="/home"]
4+++ time ^- (cmd @t) [%now reply=|=(d=@da "done")]
5+++ bad ^- (cmd @t) [%go url=~zod]
6+++ send |= p=poke
7+ ^- (cmd @t) [%poke p |=(r=(unit @t) "done")]
8+++ wait ^- (cmd @t) [%wait ~s30 "done"]
9+++ who ^- (cmd @t) [%who |=(p=@p "done")]
10+++ wrong-message ^- (cmd @t) [%wait ~s30 ~zod]
11+++ wrap |= x=A ^- (cmd A) [%wait ~s30 x]
12+++ wrap-text (wrap "hello")
13+++ wrap-ship (wrap ~zod)
14+++ wrong-reply ^- (cmd @t) [%who |=(p=@p ~zod)]
15+++ commands ^- (list (cmd @t)) ~[[%go "/home"] [%wait ~s30 "done"]]
16+++ commands-bad ^- (list (cmd @t)) ~[[%go "/home"] [%wait ~s30 ~zod]]
17+++ wrong-poke |= p=poke
18+ ^- (cmd @t) [%poke p |=(r=@p "done")]
19+++ wrong-case ^- (cmd @t) %oops
20+++ use-text |= x=(cmd @t) x
21+++ cross (use-text (wrap ~zod))
tests/golden/types-prelude-cmd/tokens.txtnew file+285
@@ -0,0 +1,285 @@
1+1:1 glyph ++
2+1:4 name identity
3+1:13 glyph |=
4+1:16 name x
5+1:17 tight glyph =
6+1:18 tight glyph (
7+1:19 tight name cmd
8+1:23 aura @t
9+1:25 tight glyph )
10+1:27 name x
11+2:1 NEWLINE
12+2:1 glyph ++
13+2:4 name generic
14+2:12 glyph |=
15+2:15 name x
16+2:16 tight glyph =
17+2:17 tight glyph (
18+2:18 tight name cmd
19+2:22 tvar A
20+2:23 tight glyph )
21+2:25 name x
22+3:1 NEWLINE
23+3:1 glyph ++
24+3:4 name nav
25+3:8 glyph ^-
26+3:11 glyph (
27+3:12 tight name cmd
28+3:16 aura @t
29+3:18 tight glyph )
30+3:20 glyph [
31+3:21 tight lit %go
32+3:25 name url
33+3:28 tight glyph =
34+3:29 tight str "/home"
35+3:36 tight glyph ]
36+4:1 NEWLINE
37+4:1 glyph ++
38+4:4 name time
39+4:9 glyph ^-
40+4:12 glyph (
41+4:13 tight name cmd
42+4:17 aura @t
43+4:19 tight glyph )
44+4:21 glyph [
45+4:22 tight lit %now
46+4:27 name reply
47+4:32 tight glyph =
48+4:33 tight glyph |=(
49+4:36 tight name d
50+4:37 tight glyph =
51+4:38 tight aura @da
52+4:42 str "done"
53+4:48 tight glyph )
54+4:49 tight glyph ]
55+5:1 NEWLINE
56+5:1 glyph ++
57+5:4 name bad
58+5:8 glyph ^-
59+5:11 glyph (
60+5:12 tight name cmd
61+5:16 aura @t
62+5:18 tight glyph )
63+5:20 glyph [
64+5:21 tight lit %go
65+5:25 name url
66+5:28 tight glyph =
67+5:29 tight lit ~zod
68+5:33 tight glyph ]
69+6:1 NEWLINE
70+6:1 glyph ++
71+6:4 name send
72+6:9 glyph |=
73+6:12 name p
74+6:13 tight glyph =
75+6:14 tight name poke
76+7:3 INDENT
77+7:3 glyph ^-
78+7:6 glyph (
79+7:7 tight name cmd
80+7:11 aura @t
81+7:13 tight glyph )
82+7:15 glyph [
83+7:16 tight lit %poke
84+7:22 name p
85+7:24 glyph |=(
86+7:27 tight name r
87+7:28 tight glyph =
88+7:29 tight glyph (
89+7:30 tight name unit
90+7:35 aura @t
91+7:37 tight glyph )
92+7:39 str "done"
93+7:45 tight glyph )
94+7:46 tight glyph ]
95+8:1 DEDENT
96+8:1 NEWLINE
97+8:1 glyph ++
98+8:4 name wait
99+8:9 glyph ^-
100+8:12 glyph (
101+8:13 tight name cmd
102+8:17 aura @t
103+8:19 tight glyph )
104+8:21 glyph [
105+8:22 tight lit %wait
106+8:28 lit ~s30
107+8:33 str "done"
108+8:39 tight glyph ]
109+9:1 NEWLINE
110+9:1 glyph ++
111+9:4 name who
112+9:8 glyph ^-
113+9:11 glyph (
114+9:12 tight name cmd
115+9:16 aura @t
116+9:18 tight glyph )
117+9:20 glyph [
118+9:21 tight lit %who
119+9:26 glyph |=(
120+9:29 tight name p
121+9:30 tight glyph =
122+9:31 tight aura @p
123+9:34 str "done"
124+9:40 tight glyph )
125+9:41 tight glyph ]
126+10:1 NEWLINE
127+10:1 glyph ++
128+10:4 name wrong-message
129+10:18 glyph ^-
130+10:21 glyph (
131+10:22 tight name cmd
132+10:26 aura @t
133+10:28 tight glyph )
134+10:30 glyph [
135+10:31 tight lit %wait
136+10:37 lit ~s30
137+10:42 lit ~zod
138+10:46 tight glyph ]
139+11:1 NEWLINE
140+11:1 glyph ++
141+11:4 name wrap
142+11:9 glyph |=
143+11:12 name x
144+11:13 tight glyph =
145+11:14 tight tvar A
146+11:16 glyph ^-
147+11:19 glyph (
148+11:20 tight name cmd
149+11:24 tvar A
150+11:25 tight glyph )
151+11:27 glyph [
152+11:28 tight lit %wait
153+11:34 lit ~s30
154+11:39 name x
155+11:40 tight glyph ]
156+12:1 NEWLINE
157+12:1 glyph ++
158+12:4 name wrap-text
159+12:14 glyph (
160+12:15 tight name wrap
161+12:20 str "hello"
162+12:27 tight glyph )
163+13:1 NEWLINE
164+13:1 glyph ++
165+13:4 name wrap-ship
166+13:14 glyph (
167+13:15 tight name wrap
168+13:20 lit ~zod
169+13:24 tight glyph )
170+14:1 NEWLINE
171+14:1 glyph ++
172+14:4 name wrong-reply
173+14:16 glyph ^-
174+14:19 glyph (
175+14:20 tight name cmd
176+14:24 aura @t
177+14:26 tight glyph )
178+14:28 glyph [
179+14:29 tight lit %who
180+14:34 glyph |=(
181+14:37 tight name p
182+14:38 tight glyph =
183+14:39 tight aura @p
184+14:42 lit ~zod
185+14:46 tight glyph )
186+14:47 tight glyph ]
187+15:1 NEWLINE
188+15:1 glyph ++
189+15:4 name commands
190+15:13 glyph ^-
191+15:16 glyph (
192+15:17 tight name list
193+15:22 glyph (
194+15:23 tight name cmd
195+15:27 aura @t
196+15:29 tight glyph )
197+15:30 tight glyph )
198+15:32 glyph ~[
199+15:34 tight glyph [
200+15:35 tight lit %go
201+15:39 str "/home"
202+15:46 tight glyph ]
203+15:48 glyph [
204+15:49 tight lit %wait
205+15:55 lit ~s30
206+15:60 str "done"
207+15:66 tight glyph ]
208+15:67 tight glyph ]
209+16:1 NEWLINE
210+16:1 glyph ++
211+16:4 name commands-bad
212+16:17 glyph ^-
213+16:20 glyph (
214+16:21 tight name list
215+16:26 glyph (
216+16:27 tight name cmd
217+16:31 aura @t
218+16:33 tight glyph )
219+16:34 tight glyph )
220+16:36 glyph ~[
221+16:38 tight glyph [
222+16:39 tight lit %go
223+16:43 str "/home"
224+16:50 tight glyph ]
225+16:52 glyph [
226+16:53 tight lit %wait
227+16:59 lit ~s30
228+16:64 lit ~zod
229+16:68 tight glyph ]
230+16:69 tight glyph ]
231+17:1 NEWLINE
232+17:1 glyph ++
233+17:4 name wrong-poke
234+17:15 glyph |=
235+17:18 name p
236+17:19 tight glyph =
237+17:20 tight name poke
238+18:3 INDENT
239+18:3 glyph ^-
240+18:6 glyph (
241+18:7 tight name cmd
242+18:11 aura @t
243+18:13 tight glyph )
244+18:15 glyph [
245+18:16 tight lit %poke
246+18:22 name p
247+18:24 glyph |=(
248+18:27 tight name r
249+18:28 tight glyph =
250+18:29 tight aura @p
251+18:32 str "done"
252+18:38 tight glyph )
253+18:39 tight glyph ]
254+19:1 DEDENT
255+19:1 NEWLINE
256+19:1 glyph ++
257+19:4 name wrong-case
258+19:15 glyph ^-
259+19:18 glyph (
260+19:19 tight name cmd
261+19:23 aura @t
262+19:25 tight glyph )
263+19:27 lit %oops
264+20:1 NEWLINE
265+20:1 glyph ++
266+20:4 name use-text
267+20:13 glyph |=
268+20:16 name x
269+20:17 tight glyph =
270+20:18 tight glyph (
271+20:19 tight name cmd
272+20:23 aura @t
273+20:25 tight glyph )
274+20:27 name x
275+21:1 NEWLINE
276+21:1 glyph ++
277+21:4 name cross
278+21:10 glyph (
279+21:11 tight name use-text
280+21:20 glyph (
281+21:21 tight name wrap
282+21:26 lit ~zod
283+21:30 tight glyph )
284+21:31 tight glyph )
285+21:32 NEWLINE
tests/golden/types-prelude-cmd/tree.txtnew file+122
@@ -0,0 +1,122 @@
1+(module
2+ (value 1:1 identity
3+ (gate 1:13
4+ (face 1:16 x
5+ (apply 1:18 cmd (aura 1:23 @t)))
6+ (wing 1:27 x)))
7+ (value 2:1 generic
8+ (gate 2:12
9+ (face 2:15 x
10+ (apply 2:17 cmd (tvar 2:22 A)))
11+ (wing 2:25 x)))
12+ (value 3:1 nav
13+ (cast 3:8
14+ (apply 3:11 cmd (aura 3:16 @t))
15+ (tuple 3:20
16+ (lit 3:21 %go)
17+ (face 3:25 url (str 3:29 "/home")))))
18+ (value 4:1 time
19+ (cast 4:9
20+ (apply 4:12 cmd (aura 4:17 @t))
21+ (tuple 4:21
22+ (lit 4:22 %now)
23+ (face 4:27 reply
24+ (gate-wide 4:33
25+ (face 4:36 d (aura 4:38 @da))
26+ (str 4:42 "done"))))))
27+ (value 5:1 bad
28+ (cast 5:8
29+ (apply 5:11 cmd (aura 5:16 @t))
30+ (tuple 5:20
31+ (lit 5:21 %go)
32+ (face 5:25 url (lit 5:29 ~zod)))))
33+ (value 6:1 send
34+ (gate 6:9
35+ (face 6:12 p (ref 6:14 poke))
36+ (body 7:3
37+ (cast 7:3
38+ (apply 7:6 cmd (aura 7:11 @t))
39+ (tuple 7:15
40+ (lit 7:16 %poke)
41+ (wing 7:22 p)
42+ (gate-wide 7:24
43+ (face 7:27 r
44+ (apply 7:29 unit (aura 7:35 @t)))
45+ (str 7:39 "done")))))))
46+ (value 8:1 wait
47+ (cast 8:9
48+ (apply 8:12 cmd (aura 8:17 @t))
49+ (tuple 8:21 (lit 8:22 %wait) (lit 8:28 ~s30) (str 8:33 "done"))))
50+ (value 9:1 who
51+ (cast 9:8
52+ (apply 9:11 cmd (aura 9:16 @t))
53+ (tuple 9:20
54+ (lit 9:21 %who)
55+ (gate-wide 9:26
56+ (face 9:29 p (aura 9:31 @p))
57+ (str 9:34 "done")))))
58+ (value 10:1 wrong-message
59+ (cast 10:18
60+ (apply 10:21 cmd (aura 10:26 @t))
61+ (tuple 10:30 (lit 10:31 %wait) (lit 10:37 ~s30) (lit 10:42 ~zod))))
62+ (value 11:1 wrap
63+ (gate 11:9
64+ (face 11:12 x (tvar 11:14 A))
65+ (cast 11:16
66+ (apply 11:19 cmd (tvar 11:24 A))
67+ (tuple 11:27 (lit 11:28 %wait) (lit 11:34 ~s30) (wing 11:39 x)))))
68+ (value 12:1 wrap-text
69+ (group 12:14
70+ (call 12:15 (wing 12:15 wrap) (str 12:20 "hello"))))
71+ (value 13:1 wrap-ship
72+ (group 13:14
73+ (call 13:15 (wing 13:15 wrap) (lit 13:20 ~zod))))
74+ (value 14:1 wrong-reply
75+ (cast 14:16
76+ (apply 14:19 cmd (aura 14:24 @t))
77+ (tuple 14:28
78+ (lit 14:29 %who)
79+ (gate-wide 14:34
80+ (face 14:37 p (aura 14:39 @p))
81+ (lit 14:42 ~zod)))))
82+ (value 15:1 commands
83+ (cast 15:13
84+ (apply 15:16 list
85+ (apply 15:22 cmd (aura 15:27 @t)))
86+ (list 15:32
87+ (tuple 15:34 (lit 15:35 %go) (str 15:39 "/home"))
88+ (tuple 15:48 (lit 15:49 %wait) (lit 15:55 ~s30) (str 15:60 "done")))))
89+ (value 16:1 commands-bad
90+ (cast 16:17
91+ (apply 16:20 list
92+ (apply 16:26 cmd (aura 16:31 @t)))
93+ (list 16:36
94+ (tuple 16:38 (lit 16:39 %go) (str 16:43 "/home"))
95+ (tuple 16:52 (lit 16:53 %wait) (lit 16:59 ~s30) (lit 16:64 ~zod)))))
96+ (value 17:1 wrong-poke
97+ (gate 17:15
98+ (face 17:18 p (ref 17:20 poke))
99+ (body 18:3
100+ (cast 18:3
101+ (apply 18:6 cmd (aura 18:11 @t))
102+ (tuple 18:15
103+ (lit 18:16 %poke)
104+ (wing 18:22 p)
105+ (gate-wide 18:24
106+ (face 18:27 r (aura 18:29 @p))
107+ (str 18:32 "done")))))))
108+ (value 19:1 wrong-case
109+ (cast 19:15
110+ (apply 19:18 cmd (aura 19:23 @t))
111+ (lit 19:27 %oops)))
112+ (value 20:1 use-text
113+ (gate 20:13
114+ (face 20:16 x
115+ (apply 20:18 cmd (aura 20:23 @t)))
116+ (wing 20:27 x)))
117+ (value 21:1 cross
118+ (group 21:10
119+ (call 21:11
120+ (wing 21:11 use-text)
121+ (group 21:20
122+ (call 21:21 (wing 21:21 wrap) (lit 21:26 ~zod)))))))
tests/golden/types-prelude-cmd/types.txtnew file+50
@@ -0,0 +1,50 @@
1+partial inference; module not checked
2+++ identity: $-((cmd @t) (cmd @t))
3+++ generic: $-((cmd A) (cmd A))
4+++ nav: (cmd @t)
5+++ time: (cmd @t)
6+++ bad: cast mold and expression type do not unify
7+/tests/golden/types-prelude-cmd/source.jibb:5:11: cast mold
8+++ bad ^- (cmd @t) [%go url=~zod]
9+ ^
10+/tests/golden/types-prelude-cmd/source.jibb:5:20: expression
11+++ bad ^- (cmd @t) [%go url=~zod]
12+ ^
13+++ send: $-(poke (cmd @t))
14+++ wait: (cmd @t)
15+++ who: (cmd @t)
16+++ wrong-message: cast mold and expression type do not unify
17+/tests/golden/types-prelude-cmd/source.jibb:10:21: cast mold
18+++ wrong-message ^- (cmd @t) [%wait ~s30 ~zod]
19+ ^
20+/tests/golden/types-prelude-cmd/source.jibb:10:30: expression
21+++ wrong-message ^- (cmd @t) [%wait ~s30 ~zod]
22+ ^
23+++ wrap: $-(A (cmd A))
24+++ wrap-text: (cmd @t)
25+++ wrap-ship: (cmd @p)
26+++ wrong-reply: cast mold and expression type do not unify
27+/tests/golden/types-prelude-cmd/source.jibb:14:19: cast mold
28+++ wrong-reply ^- (cmd @t) [%who |=(p=@p ~zod)]
29+ ^
30+/tests/golden/types-prelude-cmd/source.jibb:14:28: expression
31+++ wrong-reply ^- (cmd @t) [%who |=(p=@p ~zod)]
32+ ^
33+++ commands: (list (cmd @t))
34+++ commands-bad: list item does not fit its expected type
35+/tests/golden/types-prelude-cmd/source.jibb:16:20: expected item
36+++ commands-bad ^- (list (cmd @t)) ~[[%go "/home"] [%wait ~s30 ~zod]]
37+ ^
38+/tests/golden/types-prelude-cmd/source.jibb:16:52: list item
39+++ commands-bad ^- (list (cmd @t)) ~[[%go "/home"] [%wait ~s30 ~zod]]
40+ ^
41+++ wrong-poke: cast constraint is not supported by partial inference
42+++ wrong-case: cast mold and expression type do not unify
43+/tests/golden/types-prelude-cmd/source.jibb:19:18: cast mold
44+++ wrong-case ^- (cmd @t) %oops
45+ ^
46+/tests/golden/types-prelude-cmd/source.jibb:19:27: expression
47+++ wrong-case ^- (cmd @t) %oops
48+ ^
49+++ use-text: $-((cmd @t) (cmd @t))
50+++ cross: call constraint is not supported by partial inference
tests/golden/types-single-case-pattern/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, pattern matching: a known single-case mold can be matched by an exhaustive single pattern, with binders scoped to the arm.
2+tests: Literal-headed and catch-all patterns, union and list result contexts, bad payloads, shadowed or duplicate binders, incomplete patterns, unknown subjects, pending literals and explicit capitals. Unproven cases remain unsupported. The module report remains partial.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-single-case-pattern/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the source-backed prelude.
tests/golden/types-single-case-pattern/source.jibbnew file+59
@@ -0,0 +1,59 @@
1++$ packet [%go url=@t]
2+++ extract |= p=packet
3+ ?- p
4+ [%go u] u
5+++ fallback |= p=packet
6+ ?- p
7+ value value
8+++ missing |= p=packet
9+ ?- p
10+ [%stop u] u
11+++ shadow |= p=packet
12+ ?- p
13+ [%go same] same
14+++ unknown |= p
15+ ?- p
16+ [%go u] u
17+++ invalid |= p=@t
18+ ?- p
19+ [%go u] u
20+++ pending |= p=packet
21+ ~& %dangling
22+ ?- p
23+ [%go u] u
24+++ pending-result |= p=packet
25+ ?- p
26+ [%go u] %dangling
27+++ duplicate |= p=packet
28+ ?- p
29+ [%go u u] u
30+++ extra |= p=packet
31+ ?- p
32+ [%go u] u
33+ * "dead"
34+++ contextual ^- $-(packet @t)
35+ |= p=packet
36+ ?- p
37+ [%go u] u
38++$ msg
39+ %fine
40+ %other
41+++ contextual-union |= p=packet ^- msg
42+ ?- p
43+ [%go u] %fine
44+++ bad-union |= p=packet ^- msg
45+ ?- p
46+ [%go u] %oops
47+++ contextual-list |= p=packet ^- (list @t)
48+ ?- p
49+ [%go u] ~[u]
50+++ bad-list |= p=packet ^- (list @t)
51+ ?- p
52+ [%go u] ~[~zod]
53+++ forced-capital |= [x=A p=packet] ^- A
54+ ?- p
55+ [%go u] "text"
56+++ unrelated-context |= p=packet ^- msg
57+ ~& %dangling
58+ ?- p
59+ [%go u] %fine
tests/golden/types-single-case-pattern/tokens.txtnew file+364
@@ -0,0 +1,364 @@
1+1:1 glyph +$
2+1:4 name packet
3+1:11 glyph [
4+1:12 tight lit %go
5+1:16 name url
6+1:19 tight glyph =
7+1:20 tight aura @t
8+1:22 tight glyph ]
9+2:1 NEWLINE
10+2:1 glyph ++
11+2:4 name extract
12+2:12 glyph |=
13+2:15 name p
14+2:16 tight glyph =
15+2:17 tight name packet
16+3:3 INDENT
17+3:3 glyph ?-
18+3:6 name p
19+4:5 INDENT
20+4:5 glyph [
21+4:6 tight lit %go
22+4:10 name u
23+4:11 tight glyph ]
24+4:13 name u
25+5:1 DEDENT
26+5:1 DEDENT
27+5:1 NEWLINE
28+5:1 glyph ++
29+5:4 name fallback
30+5:13 glyph |=
31+5:16 name p
32+5:17 tight glyph =
33+5:18 tight name packet
34+6:3 INDENT
35+6:3 glyph ?-
36+6:6 name p
37+7:5 INDENT
38+7:5 name value
39+7:11 name value
40+8:1 DEDENT
41+8:1 DEDENT
42+8:1 NEWLINE
43+8:1 glyph ++
44+8:4 name missing
45+8:12 glyph |=
46+8:15 name p
47+8:16 tight glyph =
48+8:17 tight name packet
49+9:3 INDENT
50+9:3 glyph ?-
51+9:6 name p
52+10:5 INDENT
53+10:5 glyph [
54+10:6 tight lit %stop
55+10:12 name u
56+10:13 tight glyph ]
57+10:15 name u
58+11:1 DEDENT
59+11:1 DEDENT
60+11:1 NEWLINE
61+11:1 glyph ++
62+11:4 name shadow
63+11:11 glyph |=
64+11:14 name p
65+11:15 tight glyph =
66+11:16 tight name packet
67+12:3 INDENT
68+12:3 glyph ?-
69+12:6 name p
70+13:5 INDENT
71+13:5 glyph [
72+13:6 tight lit %go
73+13:10 name same
74+13:14 tight glyph ]
75+13:16 name same
76+14:1 DEDENT
77+14:1 DEDENT
78+14:1 NEWLINE
79+14:1 glyph ++
80+14:4 name unknown
81+14:12 glyph |=
82+14:15 name p
83+15:3 INDENT
84+15:3 glyph ?-
85+15:6 name p
86+16:5 INDENT
87+16:5 glyph [
88+16:6 tight lit %go
89+16:10 name u
90+16:11 tight glyph ]
91+16:13 name u
92+17:1 DEDENT
93+17:1 DEDENT
94+17:1 NEWLINE
95+17:1 glyph ++
96+17:4 name invalid
97+17:12 glyph |=
98+17:15 name p
99+17:16 tight glyph =
100+17:17 tight aura @t
101+18:3 INDENT
102+18:3 glyph ?-
103+18:6 name p
104+19:5 INDENT
105+19:5 glyph [
106+19:6 tight lit %go
107+19:10 name u
108+19:11 tight glyph ]
109+19:13 name u
110+20:1 DEDENT
111+20:1 DEDENT
112+20:1 NEWLINE
113+20:1 glyph ++
114+20:4 name pending
115+20:12 glyph |=
116+20:15 name p
117+20:16 tight glyph =
118+20:17 tight name packet
119+21:3 INDENT
120+21:3 glyph ~&
121+21:6 lit %dangling
122+22:5 INDENT
123+22:5 glyph ?-
124+22:8 name p
125+23:7 INDENT
126+23:7 glyph [
127+23:8 tight lit %go
128+23:12 name u
129+23:13 tight glyph ]
130+23:15 name u
131+24:1 DEDENT
132+24:1 DEDENT
133+24:1 DEDENT
134+24:1 NEWLINE
135+24:1 glyph ++
136+24:4 name pending-result
137+24:19 glyph |=
138+24:22 name p
139+24:23 tight glyph =
140+24:24 tight name packet
141+25:3 INDENT
142+25:3 glyph ?-
143+25:6 name p
144+26:5 INDENT
145+26:5 glyph [
146+26:6 tight lit %go
147+26:10 name u
148+26:11 tight glyph ]
149+26:13 lit %dangling
150+27:1 DEDENT
151+27:1 DEDENT
152+27:1 NEWLINE
153+27:1 glyph ++
154+27:4 name duplicate
155+27:14 glyph |=
156+27:17 name p
157+27:18 tight glyph =
158+27:19 tight name packet
159+28:3 INDENT
160+28:3 glyph ?-
161+28:6 name p
162+29:5 INDENT
163+29:5 glyph [
164+29:6 tight lit %go
165+29:10 name u
166+29:12 name u
167+29:13 tight glyph ]
168+29:15 name u
169+30:1 DEDENT
170+30:1 DEDENT
171+30:1 NEWLINE
172+30:1 glyph ++
173+30:4 name extra
174+30:10 glyph |=
175+30:13 name p
176+30:14 tight glyph =
177+30:15 tight name packet
178+31:3 INDENT
179+31:3 glyph ?-
180+31:6 name p
181+32:5 INDENT
182+32:5 glyph [
183+32:6 tight lit %go
184+32:10 name u
185+32:11 tight glyph ]
186+32:13 name u
187+33:5 NEWLINE
188+33:5 glyph *
189+33:7 str "dead"
190+34:1 DEDENT
191+34:1 DEDENT
192+34:1 NEWLINE
193+34:1 glyph ++
194+34:4 name contextual
195+34:15 glyph ^-
196+34:18 glyph $-(
197+34:21 tight name packet
198+34:28 aura @t
199+34:30 tight glyph )
200+35:3 INDENT
201+35:3 glyph |=
202+35:6 name p
203+35:7 tight glyph =
204+35:8 tight name packet
205+36:5 INDENT
206+36:5 glyph ?-
207+36:8 name p
208+37:7 INDENT
209+37:7 glyph [
210+37:8 tight lit %go
211+37:12 name u
212+37:13 tight glyph ]
213+37:15 name u
214+38:1 DEDENT
215+38:1 DEDENT
216+38:1 DEDENT
217+38:1 NEWLINE
218+38:1 glyph +$
219+38:4 name msg
220+39:3 INDENT
221+39:3 lit %fine
222+40:3 NEWLINE
223+40:3 lit %other
224+41:1 DEDENT
225+41:1 NEWLINE
226+41:1 glyph ++
227+41:4 name contextual-union
228+41:21 glyph |=
229+41:24 name p
230+41:25 tight glyph =
231+41:26 tight name packet
232+41:33 glyph ^-
233+41:36 name msg
234+42:3 INDENT
235+42:3 glyph ?-
236+42:6 name p
237+43:5 INDENT
238+43:5 glyph [
239+43:6 tight lit %go
240+43:10 name u
241+43:11 tight glyph ]
242+43:13 lit %fine
243+44:1 DEDENT
244+44:1 DEDENT
245+44:1 NEWLINE
246+44:1 glyph ++
247+44:4 name bad-union
248+44:14 glyph |=
249+44:17 name p
250+44:18 tight glyph =
251+44:19 tight name packet
252+44:26 glyph ^-
253+44:29 name msg
254+45:3 INDENT
255+45:3 glyph ?-
256+45:6 name p
257+46:5 INDENT
258+46:5 glyph [
259+46:6 tight lit %go
260+46:10 name u
261+46:11 tight glyph ]
262+46:13 lit %oops
263+47:1 DEDENT
264+47:1 DEDENT
265+47:1 NEWLINE
266+47:1 glyph ++
267+47:4 name contextual-list
268+47:20 glyph |=
269+47:23 name p
270+47:24 tight glyph =
271+47:25 tight name packet
272+47:32 glyph ^-
273+47:35 glyph (
274+47:36 tight name list
275+47:41 aura @t
276+47:43 tight glyph )
277+48:3 INDENT
278+48:3 glyph ?-
279+48:6 name p
280+49:5 INDENT
281+49:5 glyph [
282+49:6 tight lit %go
283+49:10 name u
284+49:11 tight glyph ]
285+49:13 glyph ~[
286+49:15 tight name u
287+49:16 tight glyph ]
288+50:1 DEDENT
289+50:1 DEDENT
290+50:1 NEWLINE
291+50:1 glyph ++
292+50:4 name bad-list
293+50:13 glyph |=
294+50:16 name p
295+50:17 tight glyph =
296+50:18 tight name packet
297+50:25 glyph ^-
298+50:28 glyph (
299+50:29 tight name list
300+50:34 aura @t
301+50:36 tight glyph )
302+51:3 INDENT
303+51:3 glyph ?-
304+51:6 name p
305+52:5 INDENT
306+52:5 glyph [
307+52:6 tight lit %go
308+52:10 name u
309+52:11 tight glyph ]
310+52:13 glyph ~[
311+52:15 tight lit ~zod
312+52:19 tight glyph ]
313+53:1 DEDENT
314+53:1 DEDENT
315+53:1 NEWLINE
316+53:1 glyph ++
317+53:4 name forced-capital
318+53:19 glyph |=
319+53:22 glyph [
320+53:23 tight name x
321+53:24 tight glyph =
322+53:25 tight tvar A
323+53:27 name p
324+53:28 tight glyph =
325+53:29 tight name packet
326+53:35 tight glyph ]
327+53:37 glyph ^-
328+53:40 tvar A
329+54:3 INDENT
330+54:3 glyph ?-
331+54:6 name p
332+55:5 INDENT
333+55:5 glyph [
334+55:6 tight lit %go
335+55:10 name u
336+55:11 tight glyph ]
337+55:13 str "text"
338+56:1 DEDENT
339+56:1 DEDENT
340+56:1 NEWLINE
341+56:1 glyph ++
342+56:4 name unrelated-context
343+56:22 glyph |=
344+56:25 name p
345+56:26 tight glyph =
346+56:27 tight name packet
347+56:34 glyph ^-
348+56:37 name msg
349+57:3 INDENT
350+57:3 glyph ~&
351+57:6 lit %dangling
352+58:5 INDENT
353+58:5 glyph ?-
354+58:8 name p
355+59:7 INDENT
356+59:7 glyph [
357+59:8 tight lit %go
358+59:12 name u
359+59:13 tight glyph ]
360+59:15 lit %fine
361+59:20 DEDENT
362+59:20 DEDENT
363+59:20 DEDENT
364+59:20 NEWLINE
tests/golden/types-single-case-pattern/tree.txtnew file+182
@@ -0,0 +1,182 @@
1+(module
2+ (mold 1:1 packet
3+ (cell 1:11
4+ (const 1:12 %go)
5+ (face 1:16 url (aura 1:20 @t))))
6+ (value 2:1 extract
7+ (gate 2:12
8+ (face 2:15 p (ref 2:17 packet))
9+ (body 3:3
10+ (branch 3:3
11+ (wing 3:6 p)
12+ (arm 4:5
13+ (cell 4:5 (lit 4:6 %go) (bind 4:10 u))
14+ (wing 4:13 u))))))
15+ (value 5:1 fallback
16+ (gate 5:13
17+ (face 5:16 p (ref 5:18 packet))
18+ (body 6:3
19+ (branch 6:3
20+ (wing 6:6 p)
21+ (arm 7:5 (bind 7:5 value) (wing 7:11 value))))))
22+ (value 8:1 missing
23+ (gate 8:12
24+ (face 8:15 p (ref 8:17 packet))
25+ (body 9:3
26+ (branch 9:3
27+ (wing 9:6 p)
28+ (arm 10:5
29+ (cell 10:5 (lit 10:6 %stop) (bind 10:12 u))
30+ (wing 10:15 u))))))
31+ (value 11:1 shadow
32+ (gate 11:11
33+ (face 11:14 p (ref 11:16 packet))
34+ (body 12:3
35+ (branch 12:3
36+ (wing 12:6 p)
37+ (arm 13:5
38+ (cell 13:5 (lit 13:6 %go) (bind 13:10 same))
39+ (wing 13:16 same))))))
40+ (value 14:1 unknown
41+ (gate 14:12
42+ (bind 14:15 p)
43+ (body 15:3
44+ (branch 15:3
45+ (wing 15:6 p)
46+ (arm 16:5
47+ (cell 16:5 (lit 16:6 %go) (bind 16:10 u))
48+ (wing 16:13 u))))))
49+ (value 17:1 invalid
50+ (gate 17:12
51+ (face 17:15 p (aura 17:17 @t))
52+ (body 18:3
53+ (branch 18:3
54+ (wing 18:6 p)
55+ (arm 19:5
56+ (cell 19:5 (lit 19:6 %go) (bind 19:10 u))
57+ (wing 19:13 u))))))
58+ (value 20:1 pending
59+ (gate 20:12
60+ (face 20:15 p (ref 20:17 packet))
61+ (body 21:3
62+ (trace 21:3
63+ (lit 21:6 %dangling)
64+ (body 22:5
65+ (branch 22:5
66+ (wing 22:8 p)
67+ (arm 23:7
68+ (cell 23:7 (lit 23:8 %go) (bind 23:12 u))
69+ (wing 23:15 u))))))))
70+ (value 24:1 pending-result
71+ (gate 24:19
72+ (face 24:22 p (ref 24:24 packet))
73+ (body 25:3
74+ (branch 25:3
75+ (wing 25:6 p)
76+ (arm 26:5
77+ (cell 26:5 (lit 26:6 %go) (bind 26:10 u))
78+ (lit 26:13 %dangling))))))
79+ (value 27:1 duplicate
80+ (gate 27:14
81+ (face 27:17 p (ref 27:19 packet))
82+ (body 28:3
83+ (branch 28:3
84+ (wing 28:6 p)
85+ (arm 29:5
86+ (cell 29:5 (lit 29:6 %go) (bind 29:10 u) (bind 29:12 u))
87+ (wing 29:15 u))))))
88+ (value 30:1 extra
89+ (gate 30:10
90+ (face 30:13 p (ref 30:15 packet))
91+ (body 31:3
92+ (branch 31:3
93+ (wing 31:6 p)
94+ (arm 32:5
95+ (cell 32:5 (lit 32:6 %go) (bind 32:10 u))
96+ (wing 32:13 u))
97+ (arm 33:5 (any 33:5) (str 33:7 "dead"))))))
98+ (value 34:1 contextual
99+ (cast 34:15
100+ (fn 34:18 (ref 34:21 packet) (aura 34:28 @t))
101+ (body 35:3
102+ (gate 35:3
103+ (face 35:6 p (ref 35:8 packet))
104+ (body 36:5
105+ (branch 36:5
106+ (wing 36:8 p)
107+ (arm 37:7
108+ (cell 37:7 (lit 37:8 %go) (bind 37:12 u))
109+ (wing 37:15 u))))))))
110+ (mold 38:1 msg
111+ (union 39:3 (const 39:3 %fine) (const 40:3 %other)))
112+ (value 41:1 contextual-union
113+ (gate 41:21
114+ (face 41:24 p (ref 41:26 packet))
115+ (cast 41:33
116+ (ref 41:36 msg)
117+ (body 42:3
118+ (branch 42:3
119+ (wing 42:6 p)
120+ (arm 43:5
121+ (cell 43:5 (lit 43:6 %go) (bind 43:10 u))
122+ (lit 43:13 %fine)))))))
123+ (value 44:1 bad-union
124+ (gate 44:14
125+ (face 44:17 p (ref 44:19 packet))
126+ (cast 44:26
127+ (ref 44:29 msg)
128+ (body 45:3
129+ (branch 45:3
130+ (wing 45:6 p)
131+ (arm 46:5
132+ (cell 46:5 (lit 46:6 %go) (bind 46:10 u))
133+ (lit 46:13 %oops)))))))
134+ (value 47:1 contextual-list
135+ (gate 47:20
136+ (face 47:23 p (ref 47:25 packet))
137+ (cast 47:32
138+ (apply 47:35 list (aura 47:41 @t))
139+ (body 48:3
140+ (branch 48:3
141+ (wing 48:6 p)
142+ (arm 49:5
143+ (cell 49:5 (lit 49:6 %go) (bind 49:10 u))
144+ (list 49:13 (wing 49:15 u))))))))
145+ (value 50:1 bad-list
146+ (gate 50:13
147+ (face 50:16 p (ref 50:18 packet))
148+ (cast 50:25
149+ (apply 50:28 list (aura 50:34 @t))
150+ (body 51:3
151+ (branch 51:3
152+ (wing 51:6 p)
153+ (arm 52:5
154+ (cell 52:5 (lit 52:6 %go) (bind 52:10 u))
155+ (list 52:13 (lit 52:15 ~zod))))))))
156+ (value 53:1 forced-capital
157+ (gate 53:19
158+ (cell 53:22
159+ (face 53:23 x (tvar 53:25 A))
160+ (face 53:27 p (ref 53:29 packet)))
161+ (cast 53:37
162+ (tvar 53:40 A)
163+ (body 54:3
164+ (branch 54:3
165+ (wing 54:6 p)
166+ (arm 55:5
167+ (cell 55:5 (lit 55:6 %go) (bind 55:10 u))
168+ (str 55:13 "text")))))))
169+ (value 56:1 unrelated-context
170+ (gate 56:22
171+ (face 56:25 p (ref 56:27 packet))
172+ (cast 56:34
173+ (ref 56:37 msg)
174+ (body 57:3
175+ (trace 57:3
176+ (lit 57:6 %dangling)
177+ (body 58:5
178+ (branch 58:5
179+ (wing 58:8 p)
180+ (arm 59:7
181+ (cell 59:7 (lit 59:8 %go) (bind 59:12 u))
182+ (lit 59:15 %fine))))))))))
tests/golden/types-single-case-pattern/types.txtnew file+32
@@ -0,0 +1,32 @@
1+partial inference; module not checked
2++$ packet: not checked
3+++ extract: $-([%go url=@t] @t)
4+++ fallback: branch pattern is not supported by partial inference
5+++ missing: single-case pattern needs unsupported inference
6+++ shadow: pattern binder shadows a name
7+++ unknown: single-case pattern needs unsupported inference
8+++ invalid: single-case pattern needs unsupported inference
9+++ pending: tag needs context in partial inference
10+++ pending-result: tag needs context in partial inference
11+++ duplicate: single-case pattern needs unsupported inference
12+++ extra: branch is not supported by partial inference
13+++ contextual: $-([%go url=@t] @t)
14++$ msg: cases proven disjoint; mold not checked
15+++ contextual-union: $-([%go url=@t] msg)
16+++ bad-union: msg has no case `%oops`
17+/tests/golden/types-single-case-pattern/source.jibb:44:29: expected union
18+++ bad-union |= p=packet ^- msg
19+ ^
20+/tests/golden/types-single-case-pattern/source.jibb:46:13: tag
21+ [%go u] %oops
22+ ^
23+++ contextual-list: $-([%go url=@t] (list @t))
24+++ bad-list: list item does not fit its expected type
25+/tests/golden/types-single-case-pattern/source.jibb:50:28: expected item has type @t
26+++ bad-list |= p=packet ^- (list @t)
27+ ^
28+/tests/golden/types-single-case-pattern/source.jibb:52:15: list item has type @p
29+ [%go u] ~[~zod]
30+ ^
31+++ forced-capital: explicit capital constraints are not supported by partial inference
32+++ unrelated-context: tag needs context in partial inference
tests/lib/jibb.hoon+383−371
@@ -1762,308 +1762,316 @@
17621762/* tok-498 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
17631763/* tre-498 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
17641764/* typ-498 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1765−/* src-499 %jibb /tests/golden/types-prelude-direct/source/jibb
1766−/* tok-499 %txt /tests/golden/types-prelude-direct/tokens/txt
1767−/* tre-499 %txt /tests/golden/types-prelude-direct/tree/txt
1768−/* typ-499 %txt /tests/golden/types-prelude-direct/types/txt
1769−/* src-500 %jibb /tests/golden/types-prelude-functional/source/jibb
1770−/* tok-500 %txt /tests/golden/types-prelude-functional/tokens/txt
1771−/* tre-500 %txt /tests/golden/types-prelude-functional/tree/txt
1772−/* typ-500 %txt /tests/golden/types-prelude-functional/types/txt
1773−/* src-501 %jibb /tests/golden/types-prelude-interface/source/jibb
1774−/* tok-501 %txt /tests/golden/types-prelude-interface/tokens/txt
1775−/* tre-501 %txt /tests/golden/types-prelude-interface/tree/txt
1776−/* mod-501-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1777−/* mod-501-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1778−/* typ-501 %txt /tests/golden/types-prelude-interface/types/txt
1779−/* mtre-501 %txt /tests/golden/types-prelude-interface/module-trees/txt
1780−/* src-502 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1781−/* tok-502 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1782−/* tre-502 %txt /tests/golden/types-prelude-list-functions/tree/txt
1783−/* mod-502-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1784−/* typ-502 %txt /tests/golden/types-prelude-list-functions/types/txt
1785−/* mtre-502 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1786−/* src-503 %jibb /tests/golden/types-prelude-list-helpers/source/jibb
1787−/* tok-503 %txt /tests/golden/types-prelude-list-helpers/tokens/txt
1788−/* tre-503 %txt /tests/golden/types-prelude-list-helpers/tree/txt
1789−/* typ-503 %txt /tests/golden/types-prelude-list-helpers/types/txt
1790−/* src-504 %jibb /tests/golden/types-prelude-unit-helpers/source/jibb
1791−/* tok-504 %txt /tests/golden/types-prelude-unit-helpers/tokens/txt
1792−/* tre-504 %txt /tests/golden/types-prelude-unit-helpers/tree/txt
1793−/* typ-504 %txt /tests/golden/types-prelude-unit-helpers/types/txt
1794−/* src-505 %jibb /tests/golden/types-record-bound-variable/source/jibb
1795−/* tok-505 %txt /tests/golden/types-record-bound-variable/tokens/txt
1796−/* tre-505 %txt /tests/golden/types-record-bound-variable/tree/txt
1797−/* typ-505 %txt /tests/golden/types-record-bound-variable/types/txt
1798−/* src-506 %jibb /tests/golden/types-record-cast-context/source/jibb
1799−/* tok-506 %txt /tests/golden/types-record-cast-context/tokens/txt
1800−/* tre-506 %txt /tests/golden/types-record-cast-context/tree/txt
1801−/* typ-506 %txt /tests/golden/types-record-cast-context/types/txt
1802−/* src-507 %jibb /tests/golden/types-record-change/source/jibb
1803−/* tok-507 %txt /tests/golden/types-record-change/tokens/txt
1804−/* tre-507 %txt /tests/golden/types-record-change/tree/txt
1805−/* typ-507 %txt /tests/golden/types-record-change/types/txt
1806−/* src-508 %jibb /tests/golden/types-record-change-generic/source/jibb
1807−/* tok-508 %txt /tests/golden/types-record-change-generic/tokens/txt
1808−/* tre-508 %txt /tests/golden/types-record-change-generic/tree/txt
1809−/* typ-508 %txt /tests/golden/types-record-change-generic/types/txt
1810−/* src-509 %jibb /tests/golden/types-record-faces/source/jibb
1811−/* tok-509 %txt /tests/golden/types-record-faces/tokens/txt
1812−/* tre-509 %txt /tests/golden/types-record-faces/tree/txt
1813−/* typ-509 %txt /tests/golden/types-record-faces/types/txt
1814−/* src-510 %jibb /tests/golden/types-record-import/source/jibb
1815−/* tok-510 %txt /tests/golden/types-record-import/tokens/txt
1816−/* tre-510 %txt /tests/golden/types-record-import/tree/txt
1817−/* mod-510-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1818−/* typ-510 %txt /tests/golden/types-record-import/types/txt
1819−/* mtre-510 %txt /tests/golden/types-record-import/module-trees/txt
1820−/* src-511 %jibb /tests/golden/types-record-local-scheme/source/jibb
1821−/* tok-511 %txt /tests/golden/types-record-local-scheme/tokens/txt
1822−/* tre-511 %txt /tests/golden/types-record-local-scheme/tree/txt
1823−/* typ-511 %txt /tests/golden/types-record-local-scheme/types/txt
1824−/* src-512 %jibb /tests/golden/types-record-nested/source/jibb
1825−/* tok-512 %txt /tests/golden/types-record-nested/tokens/txt
1826−/* tre-512 %txt /tests/golden/types-record-nested/tree/txt
1827−/* typ-512 %txt /tests/golden/types-record-nested/types/txt
1828−/* src-513 %jibb /tests/golden/types-record-to-tuple/source/jibb
1829−/* tok-513 %txt /tests/golden/types-record-to-tuple/tokens/txt
1830−/* tre-513 %txt /tests/golden/types-record-to-tuple/tree/txt
1831−/* typ-513 %txt /tests/golden/types-record-to-tuple/types/txt
1832−/* src-514 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1833−/* tok-514 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1834−/* tre-514 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1835−/* typ-514 %txt /tests/golden/types-recursion-scc-failures/types/txt
1836−/* src-515 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1837−/* tok-515 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1838−/* tre-515 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1839−/* typ-515 %txt /tests/golden/types-recursion-scc-groups/types/txt
1840−/* src-516 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1841−/* tok-516 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1842−/* tre-516 %txt /tests/golden/types-recursion-scc-import/tree/txt
1843−/* mod-516-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1844−/* typ-516 %txt /tests/golden/types-recursion-scc-import/types/txt
1845−/* mtre-516 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1846−/* src-517 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1847−/* tok-517 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1848−/* tre-517 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1849−/* mod-517-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1850−/* typ-517 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1851−/* mtre-517 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1852−/* src-518 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1853−/* tok-518 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1854−/* tre-518 %txt /tests/golden/types-recursion-scc-local/tree/txt
1855−/* typ-518 %txt /tests/golden/types-recursion-scc-local/types/txt
1856−/* src-519 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1857−/* tok-519 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1858−/* tre-519 %txt /tests/golden/types-recursion-scc-order/tree/txt
1859−/* typ-519 %txt /tests/golden/types-recursion-scc-order/types/txt
1860−/* src-520 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1861−/* tok-520 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1862−/* tre-520 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1863−/* typ-520 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1864−/* src-521 %jibb /tests/golden/types-recursive-branch/source/jibb
1865−/* tok-521 %txt /tests/golden/types-recursive-branch/tokens/txt
1866−/* tre-521 %txt /tests/golden/types-recursive-branch/tree/txt
1867−/* typ-521 %txt /tests/golden/types-recursive-branch/types/txt
1868−/* src-522 %jibb /tests/golden/types-recursive-gate/source/jibb
1869−/* tok-522 %txt /tests/golden/types-recursive-gate/tokens/txt
1870−/* tre-522 %txt /tests/golden/types-recursive-gate/tree/txt
1871−/* typ-522 %txt /tests/golden/types-recursive-gate/types/txt
1872−/* src-523 %jibb /tests/golden/types-recursive-sample/source/jibb
1873−/* tok-523 %txt /tests/golden/types-recursive-sample/tokens/txt
1874−/* tre-523 %txt /tests/golden/types-recursive-sample/tree/txt
1875−/* typ-523 %txt /tests/golden/types-recursive-sample/types/txt
1876−/* src-524 %jibb /tests/golden/types-scope-library-poke/source/jibb
1877−/* tok-524 %txt /tests/golden/types-scope-library-poke/tokens/txt
1878−/* tre-524 %txt /tests/golden/types-scope-library-poke/tree/txt
1879−/* typ-524 %txt /tests/golden/types-scope-library-poke/types/txt
1880−/* src-525 %jibb /tests/golden/types-scope-root-api/source/jibb
1881−/* tok-525 %txt /tests/golden/types-scope-root-api/tokens/txt
1882−/* tre-525 %txt /tests/golden/types-scope-root-api/tree/txt
1883−/* typ-525 %txt /tests/golden/types-scope-root-api/types/txt
1884−/* src-526 %jibb /tests/golden/types-scope-store-duplicate/source/jibb
1885−/* tok-526 %txt /tests/golden/types-scope-store-duplicate/tokens/txt
1886−/* tre-526 %txt /tests/golden/types-scope-store-duplicate/tree/txt
1887−/* typ-526 %txt /tests/golden/types-scope-store-duplicate/types/txt
1888−/* src-527 %jibb /tests/golden/types-scope-store-shadow/source/jibb
1889−/* tok-527 %txt /tests/golden/types-scope-store-shadow/tokens/txt
1890−/* tre-527 %txt /tests/golden/types-scope-store-shadow/tree/txt
1891−/* typ-527 %txt /tests/golden/types-scope-store-shadow/types/txt
1892−/* src-528 %jibb /tests/golden/types-string-interpolation/source/jibb
1893−/* tok-528 %txt /tests/golden/types-string-interpolation/tokens/txt
1894−/* tre-528 %txt /tests/golden/types-string-interpolation/tree/txt
1895−/* typ-528 %txt /tests/golden/types-string-interpolation/types/txt
1896−/* src-529 %jibb /tests/golden/types-tuple-context/source/jibb
1897−/* tok-529 %txt /tests/golden/types-tuple-context/tokens/txt
1898−/* tre-529 %txt /tests/golden/types-tuple-context/tree/txt
1899−/* typ-529 %txt /tests/golden/types-tuple-context/types/txt
1900−/* src-530 %jibb /tests/golden/types-tuple-context-nested/source/jibb
1901−/* tok-530 %txt /tests/golden/types-tuple-context-nested/tokens/txt
1902−/* tre-530 %txt /tests/golden/types-tuple-context-nested/tree/txt
1903−/* typ-530 %txt /tests/golden/types-tuple-context-nested/types/txt
1904−/* src-531 %jibb /tests/golden/types-union-alias/source/jibb
1905−/* tok-531 %txt /tests/golden/types-union-alias/tokens/txt
1906−/* tre-531 %txt /tests/golden/types-union-alias/tree/txt
1907−/* typ-531 %txt /tests/golden/types-union-alias/types/txt
1908−/* src-532 %jibb /tests/golden/types-union-branch-context/source/jibb
1909−/* tok-532 %txt /tests/golden/types-union-branch-context/tokens/txt
1910−/* tre-532 %txt /tests/golden/types-union-branch-context/tree/txt
1911−/* typ-532 %txt /tests/golden/types-union-branch-context/types/txt
1912−/* src-533 %jibb /tests/golden/types-union-branch-pending/source/jibb
1913−/* tok-533 %txt /tests/golden/types-union-branch-pending/tokens/txt
1914−/* tre-533 %txt /tests/golden/types-union-branch-pending/tree/txt
1915−/* typ-533 %txt /tests/golden/types-union-branch-pending/types/txt
1916−/* src-534 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1917−/* tok-534 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1918−/* tre-534 %txt /tests/golden/types-union-constructor-shape/tree/txt
1919−/* typ-534 %txt /tests/golden/types-union-constructor-shape/types/txt
1920−/* src-535 %jibb /tests/golden/types-union-context-flow/source/jibb
1921−/* tok-535 %txt /tests/golden/types-union-context-flow/tokens/txt
1922−/* tre-535 %txt /tests/golden/types-union-context-flow/tree/txt
1923−/* typ-535 %txt /tests/golden/types-union-context-flow/types/txt
1924−/* src-536 %jibb /tests/golden/types-union-finite/source/jibb
1925−/* tok-536 %txt /tests/golden/types-union-finite/tokens/txt
1926−/* tre-536 %txt /tests/golden/types-union-finite/tree/txt
1927−/* typ-536 %txt /tests/golden/types-union-finite/types/txt
1928−/* src-537 %jibb /tests/golden/types-union-finite-context/source/jibb
1929−/* tok-537 %txt /tests/golden/types-union-finite-context/tokens/txt
1930−/* tre-537 %txt /tests/golden/types-union-finite-context/tree/txt
1931−/* typ-537 %txt /tests/golden/types-union-finite-context/types/txt
1932−/* src-538 %jibb /tests/golden/types-union-finite-generic/source/jibb
1933−/* tok-538 %txt /tests/golden/types-union-finite-generic/tokens/txt
1934−/* tre-538 %txt /tests/golden/types-union-finite-generic/tree/txt
1935−/* typ-538 %txt /tests/golden/types-union-finite-generic/types/txt
1936−/* src-539 %jibb /tests/golden/types-union-finite-limit/source/jibb
1937−/* tok-539 %txt /tests/golden/types-union-finite-limit/tokens/txt
1938−/* tre-539 %txt /tests/golden/types-union-finite-limit/tree/txt
1939−/* typ-539 %txt /tests/golden/types-union-finite-limit/types/txt
1940−/* src-540 %jibb /tests/golden/types-union-import/source/jibb
1941−/* tok-540 %txt /tests/golden/types-union-import/tokens/txt
1942−/* tre-540 %txt /tests/golden/types-union-import/tree/txt
1943−/* mod-540-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1944−/* typ-540 %txt /tests/golden/types-union-import/types/txt
1945−/* mtre-540 %txt /tests/golden/types-union-import/module-trees/txt
1946−/* src-541 %jibb /tests/golden/types-union-local-pending/source/jibb
1947−/* tok-541 %txt /tests/golden/types-union-local-pending/tokens/txt
1948−/* tre-541 %txt /tests/golden/types-union-local-pending/tree/txt
1949−/* typ-541 %txt /tests/golden/types-union-local-pending/types/txt
1950−/* src-542 %jibb /tests/golden/types-union-overlap/source/jibb
1951−/* tok-542 %txt /tests/golden/types-union-overlap/tokens/txt
1952−/* tre-542 %txt /tests/golden/types-union-overlap/tree/txt
1953−/* typ-542 %txt /tests/golden/types-union-overlap/types/txt
1954−/* src-543 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1955−/* tok-543 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1956−/* tre-543 %txt /tests/golden/types-union-overlap-nested/tree/txt
1957−/* typ-543 %txt /tests/golden/types-union-overlap-nested/types/txt
1958−/* src-544 %jibb /tests/golden/types-union-pattern-result-context/source/jibb
1959−/* tok-544 %txt /tests/golden/types-union-pattern-result-context/tokens/txt
1960−/* tre-544 %txt /tests/golden/types-union-pattern-result-context/tree/txt
1961−/* typ-544 %txt /tests/golden/types-union-pattern-result-context/types/txt
1962−/* src-545 %jibb /tests/golden/types-union-pattern-result-controls/source/jibb
1963−/* tok-545 %txt /tests/golden/types-union-pattern-result-controls/tokens/txt
1964−/* tre-545 %txt /tests/golden/types-union-pattern-result-controls/tree/txt
1965−/* typ-545 %txt /tests/golden/types-union-pattern-result-controls/types/txt
1966−/* src-546 %jibb /tests/golden/types-union-patterns/source/jibb
1967−/* tok-546 %txt /tests/golden/types-union-patterns/tokens/txt
1968−/* tre-546 %txt /tests/golden/types-union-patterns/tree/txt
1969−/* typ-546 %txt /tests/golden/types-union-patterns/types/txt
1970−/* src-547 %jibb /tests/golden/types-union-patterns-generic/source/jibb
1971−/* tok-547 %txt /tests/golden/types-union-patterns-generic/tokens/txt
1972−/* tre-547 %txt /tests/golden/types-union-patterns-generic/tree/txt
1973−/* typ-547 %txt /tests/golden/types-union-patterns-generic/types/txt
1974−/* src-548 %jibb /tests/golden/types-union-patterns-import/source/jibb
1975−/* tok-548 %txt /tests/golden/types-union-patterns-import/tokens/txt
1976−/* tre-548 %txt /tests/golden/types-union-patterns-import/tree/txt
1977−/* mod-548-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
1978−/* typ-548 %txt /tests/golden/types-union-patterns-import/types/txt
1979−/* mtre-548 %txt /tests/golden/types-union-patterns-import/module-trees/txt
1980−/* src-549 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1981−/* tok-549 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1982−/* tre-549 %txt /tests/golden/types-union-phantom-generic/tree/txt
1983−/* typ-549 %txt /tests/golden/types-union-phantom-generic/types/txt
1984−/* src-550 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1985−/* tok-550 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1986−/* tre-550 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1987−/* mod-550-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1988−/* typ-550 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1989−/* mtre-550 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1990−/* src-551 %jibb /tests/golden/types-union-print-distinct/source/jibb
1991−/* tok-551 %txt /tests/golden/types-union-print-distinct/tokens/txt
1992−/* tre-551 %txt /tests/golden/types-union-print-distinct/tree/txt
1993−/* mod-551-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1994−/* mod-551-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1995−/* mod-551-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1996−/* typ-551 %txt /tests/golden/types-union-print-distinct/types/txt
1997−/* mtre-551 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1998−/* src-552 %jibb /tests/golden/types-union-print-escape/source/jibb
1999−/* tok-552 %txt /tests/golden/types-union-print-escape/tokens/txt
2000−/* tre-552 %txt /tests/golden/types-union-print-escape/tree/txt
2001−/* typ-552 %txt /tests/golden/types-union-print-escape/types/txt
2002−/* src-553 %jibb /tests/golden/types-union-print-local/source/jibb
2003−/* tok-553 %txt /tests/golden/types-union-print-local/tokens/txt
2004−/* tre-553 %txt /tests/golden/types-union-print-local/tree/txt
2005−/* typ-553 %txt /tests/golden/types-union-print-local/types/txt
2006−/* src-554 %jibb /tests/golden/types-union-print-nested/source/jibb
2007−/* tok-554 %txt /tests/golden/types-union-print-nested/tokens/txt
2008−/* tre-554 %txt /tests/golden/types-union-print-nested/tree/txt
2009−/* typ-554 %txt /tests/golden/types-union-print-nested/types/txt
2010−/* src-555 %jibb /tests/golden/types-union-print-same-origin/source/jibb
2011−/* tok-555 %txt /tests/golden/types-union-print-same-origin/tokens/txt
2012−/* tre-555 %txt /tests/golden/types-union-print-same-origin/tree/txt
2013−/* mod-555-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
2014−/* typ-555 %txt /tests/golden/types-union-print-same-origin/types/txt
2015−/* mtre-555 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
2016−/* src-556 %jibb /tests/golden/types-union-print-transitive/source/jibb
2017−/* tok-556 %txt /tests/golden/types-union-print-transitive/tokens/txt
2018−/* tre-556 %txt /tests/golden/types-union-print-transitive/tree/txt
2019−/* mod-556-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
2020−/* mod-556-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
2021−/* typ-556 %txt /tests/golden/types-union-print-transitive/types/txt
2022−/* mtre-556 %txt /tests/golden/types-union-print-transitive/module-trees/txt
2023−/* src-557 %jibb /tests/golden/types-union-singleton/source/jibb
2024−/* tok-557 %txt /tests/golden/types-union-singleton/tokens/txt
2025−/* tre-557 %txt /tests/golden/types-union-singleton/tree/txt
2026−/* typ-557 %txt /tests/golden/types-union-singleton/types/txt
2027−/* src-558 %jibb /tests/golden/types-union-tag-atoms/source/jibb
2028−/* tok-558 %txt /tests/golden/types-union-tag-atoms/tokens/txt
2029−/* tre-558 %txt /tests/golden/types-union-tag-atoms/tree/txt
2030−/* typ-558 %txt /tests/golden/types-union-tag-atoms/types/txt
2031−/* src-559 %jibb /tests/golden/types-union-tags/source/jibb
2032−/* tok-559 %txt /tests/golden/types-union-tags/tokens/txt
2033−/* tre-559 %txt /tests/golden/types-union-tags/tree/txt
2034−/* typ-559 %txt /tests/golden/types-union-tags/types/txt
2035−/* src-560 %jibb /tests/golden/types-union-unresolved/source/jibb
2036−/* tok-560 %txt /tests/golden/types-union-unresolved/tokens/txt
2037−/* tre-560 %txt /tests/golden/types-union-unresolved/tree/txt
2038−/* typ-560 %txt /tests/golden/types-union-unresolved/types/txt
2039−/* src-561 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
2040−/* tok-561 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
2041−/* tre-561 %txt /tests/golden/types-union-unresolved-flow/tree/txt
2042−/* typ-561 %txt /tests/golden/types-union-unresolved-flow/types/txt
2043−/* src-562 %jibb /tests/golden/types-unit-construction/source/jibb
2044−/* tok-562 %txt /tests/golden/types-unit-construction/tokens/txt
2045−/* tre-562 %txt /tests/golden/types-unit-construction/tree/txt
2046−/* typ-562 %txt /tests/golden/types-unit-construction/types/txt
2047−/* src-563 %jibb /tests/golden/types-unit-context/source/jibb
2048−/* tok-563 %txt /tests/golden/types-unit-context/tokens/txt
2049−/* tre-563 %txt /tests/golden/types-unit-context/tree/txt
2050−/* typ-563 %txt /tests/golden/types-unit-context/types/txt
2051−/* src-564 %jibb /tests/golden/types-unit-patterns/source/jibb
2052−/* tok-564 %txt /tests/golden/types-unit-patterns/tokens/txt
2053−/* tre-564 %txt /tests/golden/types-unit-patterns/tree/txt
2054−/* typ-564 %txt /tests/golden/types-unit-patterns/types/txt
2055−/* src-565 %jibb /tests/golden/types-value-cycle-shadow/source/jibb
2056−/* tok-565 %txt /tests/golden/types-value-cycle-shadow/tokens/txt
2057−/* tre-565 %txt /tests/golden/types-value-cycle-shadow/tree/txt
2058−/* typ-565 %txt /tests/golden/types-value-cycle-shadow/types/txt
2059−/* src-566 %jibb /tests/golden/types-value-cycle-unsupported/source/jibb
2060−/* tok-566 %txt /tests/golden/types-value-cycle-unsupported/tokens/txt
2061−/* tre-566 %txt /tests/golden/types-value-cycle-unsupported/tree/txt
2062−/* typ-566 %txt /tests/golden/types-value-cycle-unsupported/types/txt
2063−/* src-567 %jibb /tests/golden/types-value-cycles/source/jibb
2064−/* tok-567 %txt /tests/golden/types-value-cycles/tokens/txt
2065−/* tre-567 %txt /tests/golden/types-value-cycles/tree/txt
2066−/* typ-567 %txt /tests/golden/types-value-cycles/types/txt
1765+/* src-499 %jibb /tests/golden/types-prelude-cmd/source/jibb
1766+/* tok-499 %txt /tests/golden/types-prelude-cmd/tokens/txt
1767+/* tre-499 %txt /tests/golden/types-prelude-cmd/tree/txt
1768+/* typ-499 %txt /tests/golden/types-prelude-cmd/types/txt
1769+/* src-500 %jibb /tests/golden/types-prelude-direct/source/jibb
1770+/* tok-500 %txt /tests/golden/types-prelude-direct/tokens/txt
1771+/* tre-500 %txt /tests/golden/types-prelude-direct/tree/txt
1772+/* typ-500 %txt /tests/golden/types-prelude-direct/types/txt
1773+/* src-501 %jibb /tests/golden/types-prelude-functional/source/jibb
1774+/* tok-501 %txt /tests/golden/types-prelude-functional/tokens/txt
1775+/* tre-501 %txt /tests/golden/types-prelude-functional/tree/txt
1776+/* typ-501 %txt /tests/golden/types-prelude-functional/types/txt
1777+/* src-502 %jibb /tests/golden/types-prelude-interface/source/jibb
1778+/* tok-502 %txt /tests/golden/types-prelude-interface/tokens/txt
1779+/* tre-502 %txt /tests/golden/types-prelude-interface/tree/txt
1780+/* mod-502-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1781+/* mod-502-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1782+/* typ-502 %txt /tests/golden/types-prelude-interface/types/txt
1783+/* mtre-502 %txt /tests/golden/types-prelude-interface/module-trees/txt
1784+/* src-503 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1785+/* tok-503 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1786+/* tre-503 %txt /tests/golden/types-prelude-list-functions/tree/txt
1787+/* mod-503-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1788+/* typ-503 %txt /tests/golden/types-prelude-list-functions/types/txt
1789+/* mtre-503 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1790+/* src-504 %jibb /tests/golden/types-prelude-list-helpers/source/jibb
1791+/* tok-504 %txt /tests/golden/types-prelude-list-helpers/tokens/txt
1792+/* tre-504 %txt /tests/golden/types-prelude-list-helpers/tree/txt
1793+/* typ-504 %txt /tests/golden/types-prelude-list-helpers/types/txt
1794+/* src-505 %jibb /tests/golden/types-prelude-unit-helpers/source/jibb
1795+/* tok-505 %txt /tests/golden/types-prelude-unit-helpers/tokens/txt
1796+/* tre-505 %txt /tests/golden/types-prelude-unit-helpers/tree/txt
1797+/* typ-505 %txt /tests/golden/types-prelude-unit-helpers/types/txt
1798+/* src-506 %jibb /tests/golden/types-record-bound-variable/source/jibb
1799+/* tok-506 %txt /tests/golden/types-record-bound-variable/tokens/txt
1800+/* tre-506 %txt /tests/golden/types-record-bound-variable/tree/txt
1801+/* typ-506 %txt /tests/golden/types-record-bound-variable/types/txt
1802+/* src-507 %jibb /tests/golden/types-record-cast-context/source/jibb
1803+/* tok-507 %txt /tests/golden/types-record-cast-context/tokens/txt
1804+/* tre-507 %txt /tests/golden/types-record-cast-context/tree/txt
1805+/* typ-507 %txt /tests/golden/types-record-cast-context/types/txt
1806+/* src-508 %jibb /tests/golden/types-record-change/source/jibb
1807+/* tok-508 %txt /tests/golden/types-record-change/tokens/txt
1808+/* tre-508 %txt /tests/golden/types-record-change/tree/txt
1809+/* typ-508 %txt /tests/golden/types-record-change/types/txt
1810+/* src-509 %jibb /tests/golden/types-record-change-generic/source/jibb
1811+/* tok-509 %txt /tests/golden/types-record-change-generic/tokens/txt
1812+/* tre-509 %txt /tests/golden/types-record-change-generic/tree/txt
1813+/* typ-509 %txt /tests/golden/types-record-change-generic/types/txt
1814+/* src-510 %jibb /tests/golden/types-record-faces/source/jibb
1815+/* tok-510 %txt /tests/golden/types-record-faces/tokens/txt
1816+/* tre-510 %txt /tests/golden/types-record-faces/tree/txt
1817+/* typ-510 %txt /tests/golden/types-record-faces/types/txt
1818+/* src-511 %jibb /tests/golden/types-record-import/source/jibb
1819+/* tok-511 %txt /tests/golden/types-record-import/tokens/txt
1820+/* tre-511 %txt /tests/golden/types-record-import/tree/txt
1821+/* mod-511-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1822+/* typ-511 %txt /tests/golden/types-record-import/types/txt
1823+/* mtre-511 %txt /tests/golden/types-record-import/module-trees/txt
1824+/* src-512 %jibb /tests/golden/types-record-local-scheme/source/jibb
1825+/* tok-512 %txt /tests/golden/types-record-local-scheme/tokens/txt
1826+/* tre-512 %txt /tests/golden/types-record-local-scheme/tree/txt
1827+/* typ-512 %txt /tests/golden/types-record-local-scheme/types/txt
1828+/* src-513 %jibb /tests/golden/types-record-nested/source/jibb
1829+/* tok-513 %txt /tests/golden/types-record-nested/tokens/txt
1830+/* tre-513 %txt /tests/golden/types-record-nested/tree/txt
1831+/* typ-513 %txt /tests/golden/types-record-nested/types/txt
1832+/* src-514 %jibb /tests/golden/types-record-to-tuple/source/jibb
1833+/* tok-514 %txt /tests/golden/types-record-to-tuple/tokens/txt
1834+/* tre-514 %txt /tests/golden/types-record-to-tuple/tree/txt
1835+/* typ-514 %txt /tests/golden/types-record-to-tuple/types/txt
1836+/* src-515 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1837+/* tok-515 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1838+/* tre-515 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1839+/* typ-515 %txt /tests/golden/types-recursion-scc-failures/types/txt
1840+/* src-516 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1841+/* tok-516 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1842+/* tre-516 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1843+/* typ-516 %txt /tests/golden/types-recursion-scc-groups/types/txt
1844+/* src-517 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1845+/* tok-517 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1846+/* tre-517 %txt /tests/golden/types-recursion-scc-import/tree/txt
1847+/* mod-517-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1848+/* typ-517 %txt /tests/golden/types-recursion-scc-import/types/txt
1849+/* mtre-517 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1850+/* src-518 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1851+/* tok-518 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1852+/* tre-518 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1853+/* mod-518-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1854+/* typ-518 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1855+/* mtre-518 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1856+/* src-519 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1857+/* tok-519 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1858+/* tre-519 %txt /tests/golden/types-recursion-scc-local/tree/txt
1859+/* typ-519 %txt /tests/golden/types-recursion-scc-local/types/txt
1860+/* src-520 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1861+/* tok-520 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1862+/* tre-520 %txt /tests/golden/types-recursion-scc-order/tree/txt
1863+/* typ-520 %txt /tests/golden/types-recursion-scc-order/types/txt
1864+/* src-521 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1865+/* tok-521 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1866+/* tre-521 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1867+/* typ-521 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1868+/* src-522 %jibb /tests/golden/types-recursive-branch/source/jibb
1869+/* tok-522 %txt /tests/golden/types-recursive-branch/tokens/txt
1870+/* tre-522 %txt /tests/golden/types-recursive-branch/tree/txt
1871+/* typ-522 %txt /tests/golden/types-recursive-branch/types/txt
1872+/* src-523 %jibb /tests/golden/types-recursive-gate/source/jibb
1873+/* tok-523 %txt /tests/golden/types-recursive-gate/tokens/txt
1874+/* tre-523 %txt /tests/golden/types-recursive-gate/tree/txt
1875+/* typ-523 %txt /tests/golden/types-recursive-gate/types/txt
1876+/* src-524 %jibb /tests/golden/types-recursive-sample/source/jibb
1877+/* tok-524 %txt /tests/golden/types-recursive-sample/tokens/txt
1878+/* tre-524 %txt /tests/golden/types-recursive-sample/tree/txt
1879+/* typ-524 %txt /tests/golden/types-recursive-sample/types/txt
1880+/* src-525 %jibb /tests/golden/types-scope-library-poke/source/jibb
1881+/* tok-525 %txt /tests/golden/types-scope-library-poke/tokens/txt
1882+/* tre-525 %txt /tests/golden/types-scope-library-poke/tree/txt
1883+/* typ-525 %txt /tests/golden/types-scope-library-poke/types/txt
1884+/* src-526 %jibb /tests/golden/types-scope-root-api/source/jibb
1885+/* tok-526 %txt /tests/golden/types-scope-root-api/tokens/txt
1886+/* tre-526 %txt /tests/golden/types-scope-root-api/tree/txt
1887+/* typ-526 %txt /tests/golden/types-scope-root-api/types/txt
1888+/* src-527 %jibb /tests/golden/types-scope-store-duplicate/source/jibb
1889+/* tok-527 %txt /tests/golden/types-scope-store-duplicate/tokens/txt
1890+/* tre-527 %txt /tests/golden/types-scope-store-duplicate/tree/txt
1891+/* typ-527 %txt /tests/golden/types-scope-store-duplicate/types/txt
1892+/* src-528 %jibb /tests/golden/types-scope-store-shadow/source/jibb
1893+/* tok-528 %txt /tests/golden/types-scope-store-shadow/tokens/txt
1894+/* tre-528 %txt /tests/golden/types-scope-store-shadow/tree/txt
1895+/* typ-528 %txt /tests/golden/types-scope-store-shadow/types/txt
1896+/* src-529 %jibb /tests/golden/types-single-case-pattern/source/jibb
1897+/* tok-529 %txt /tests/golden/types-single-case-pattern/tokens/txt
1898+/* tre-529 %txt /tests/golden/types-single-case-pattern/tree/txt
1899+/* typ-529 %txt /tests/golden/types-single-case-pattern/types/txt
1900+/* src-530 %jibb /tests/golden/types-string-interpolation/source/jibb
1901+/* tok-530 %txt /tests/golden/types-string-interpolation/tokens/txt
1902+/* tre-530 %txt /tests/golden/types-string-interpolation/tree/txt
1903+/* typ-530 %txt /tests/golden/types-string-interpolation/types/txt
1904+/* src-531 %jibb /tests/golden/types-tuple-context/source/jibb
1905+/* tok-531 %txt /tests/golden/types-tuple-context/tokens/txt
1906+/* tre-531 %txt /tests/golden/types-tuple-context/tree/txt
1907+/* typ-531 %txt /tests/golden/types-tuple-context/types/txt
1908+/* src-532 %jibb /tests/golden/types-tuple-context-nested/source/jibb
1909+/* tok-532 %txt /tests/golden/types-tuple-context-nested/tokens/txt
1910+/* tre-532 %txt /tests/golden/types-tuple-context-nested/tree/txt
1911+/* typ-532 %txt /tests/golden/types-tuple-context-nested/types/txt
1912+/* src-533 %jibb /tests/golden/types-union-alias/source/jibb
1913+/* tok-533 %txt /tests/golden/types-union-alias/tokens/txt
1914+/* tre-533 %txt /tests/golden/types-union-alias/tree/txt
1915+/* typ-533 %txt /tests/golden/types-union-alias/types/txt
1916+/* src-534 %jibb /tests/golden/types-union-branch-context/source/jibb
1917+/* tok-534 %txt /tests/golden/types-union-branch-context/tokens/txt
1918+/* tre-534 %txt /tests/golden/types-union-branch-context/tree/txt
1919+/* typ-534 %txt /tests/golden/types-union-branch-context/types/txt
1920+/* src-535 %jibb /tests/golden/types-union-branch-pending/source/jibb
1921+/* tok-535 %txt /tests/golden/types-union-branch-pending/tokens/txt
1922+/* tre-535 %txt /tests/golden/types-union-branch-pending/tree/txt
1923+/* typ-535 %txt /tests/golden/types-union-branch-pending/types/txt
1924+/* src-536 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1925+/* tok-536 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1926+/* tre-536 %txt /tests/golden/types-union-constructor-shape/tree/txt
1927+/* typ-536 %txt /tests/golden/types-union-constructor-shape/types/txt
1928+/* src-537 %jibb /tests/golden/types-union-context-flow/source/jibb
1929+/* tok-537 %txt /tests/golden/types-union-context-flow/tokens/txt
1930+/* tre-537 %txt /tests/golden/types-union-context-flow/tree/txt
1931+/* typ-537 %txt /tests/golden/types-union-context-flow/types/txt
1932+/* src-538 %jibb /tests/golden/types-union-finite/source/jibb
1933+/* tok-538 %txt /tests/golden/types-union-finite/tokens/txt
1934+/* tre-538 %txt /tests/golden/types-union-finite/tree/txt
1935+/* typ-538 %txt /tests/golden/types-union-finite/types/txt
1936+/* src-539 %jibb /tests/golden/types-union-finite-context/source/jibb
1937+/* tok-539 %txt /tests/golden/types-union-finite-context/tokens/txt
1938+/* tre-539 %txt /tests/golden/types-union-finite-context/tree/txt
1939+/* typ-539 %txt /tests/golden/types-union-finite-context/types/txt
1940+/* src-540 %jibb /tests/golden/types-union-finite-generic/source/jibb
1941+/* tok-540 %txt /tests/golden/types-union-finite-generic/tokens/txt
1942+/* tre-540 %txt /tests/golden/types-union-finite-generic/tree/txt
1943+/* typ-540 %txt /tests/golden/types-union-finite-generic/types/txt
1944+/* src-541 %jibb /tests/golden/types-union-finite-limit/source/jibb
1945+/* tok-541 %txt /tests/golden/types-union-finite-limit/tokens/txt
1946+/* tre-541 %txt /tests/golden/types-union-finite-limit/tree/txt
1947+/* typ-541 %txt /tests/golden/types-union-finite-limit/types/txt
1948+/* src-542 %jibb /tests/golden/types-union-import/source/jibb
1949+/* tok-542 %txt /tests/golden/types-union-import/tokens/txt
1950+/* tre-542 %txt /tests/golden/types-union-import/tree/txt
1951+/* mod-542-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1952+/* typ-542 %txt /tests/golden/types-union-import/types/txt
1953+/* mtre-542 %txt /tests/golden/types-union-import/module-trees/txt
1954+/* src-543 %jibb /tests/golden/types-union-local-pending/source/jibb
1955+/* tok-543 %txt /tests/golden/types-union-local-pending/tokens/txt
1956+/* tre-543 %txt /tests/golden/types-union-local-pending/tree/txt
1957+/* typ-543 %txt /tests/golden/types-union-local-pending/types/txt
1958+/* src-544 %jibb /tests/golden/types-union-overlap/source/jibb
1959+/* tok-544 %txt /tests/golden/types-union-overlap/tokens/txt
1960+/* tre-544 %txt /tests/golden/types-union-overlap/tree/txt
1961+/* typ-544 %txt /tests/golden/types-union-overlap/types/txt
1962+/* src-545 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1963+/* tok-545 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1964+/* tre-545 %txt /tests/golden/types-union-overlap-nested/tree/txt
1965+/* typ-545 %txt /tests/golden/types-union-overlap-nested/types/txt
1966+/* src-546 %jibb /tests/golden/types-union-pattern-result-context/source/jibb
1967+/* tok-546 %txt /tests/golden/types-union-pattern-result-context/tokens/txt
1968+/* tre-546 %txt /tests/golden/types-union-pattern-result-context/tree/txt
1969+/* typ-546 %txt /tests/golden/types-union-pattern-result-context/types/txt
1970+/* src-547 %jibb /tests/golden/types-union-pattern-result-controls/source/jibb
1971+/* tok-547 %txt /tests/golden/types-union-pattern-result-controls/tokens/txt
1972+/* tre-547 %txt /tests/golden/types-union-pattern-result-controls/tree/txt
1973+/* typ-547 %txt /tests/golden/types-union-pattern-result-controls/types/txt
1974+/* src-548 %jibb /tests/golden/types-union-patterns/source/jibb
1975+/* tok-548 %txt /tests/golden/types-union-patterns/tokens/txt
1976+/* tre-548 %txt /tests/golden/types-union-patterns/tree/txt
1977+/* typ-548 %txt /tests/golden/types-union-patterns/types/txt
1978+/* src-549 %jibb /tests/golden/types-union-patterns-generic/source/jibb
1979+/* tok-549 %txt /tests/golden/types-union-patterns-generic/tokens/txt
1980+/* tre-549 %txt /tests/golden/types-union-patterns-generic/tree/txt
1981+/* typ-549 %txt /tests/golden/types-union-patterns-generic/types/txt
1982+/* src-550 %jibb /tests/golden/types-union-patterns-import/source/jibb
1983+/* tok-550 %txt /tests/golden/types-union-patterns-import/tokens/txt
1984+/* tre-550 %txt /tests/golden/types-union-patterns-import/tree/txt
1985+/* mod-550-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
1986+/* typ-550 %txt /tests/golden/types-union-patterns-import/types/txt
1987+/* mtre-550 %txt /tests/golden/types-union-patterns-import/module-trees/txt
1988+/* src-551 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1989+/* tok-551 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1990+/* tre-551 %txt /tests/golden/types-union-phantom-generic/tree/txt
1991+/* typ-551 %txt /tests/golden/types-union-phantom-generic/types/txt
1992+/* src-552 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1993+/* tok-552 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1994+/* tre-552 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1995+/* mod-552-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1996+/* typ-552 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1997+/* mtre-552 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1998+/* src-553 %jibb /tests/golden/types-union-print-distinct/source/jibb
1999+/* tok-553 %txt /tests/golden/types-union-print-distinct/tokens/txt
2000+/* tre-553 %txt /tests/golden/types-union-print-distinct/tree/txt
2001+/* mod-553-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
2002+/* mod-553-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
2003+/* mod-553-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
2004+/* typ-553 %txt /tests/golden/types-union-print-distinct/types/txt
2005+/* mtre-553 %txt /tests/golden/types-union-print-distinct/module-trees/txt
2006+/* src-554 %jibb /tests/golden/types-union-print-escape/source/jibb
2007+/* tok-554 %txt /tests/golden/types-union-print-escape/tokens/txt
2008+/* tre-554 %txt /tests/golden/types-union-print-escape/tree/txt
2009+/* typ-554 %txt /tests/golden/types-union-print-escape/types/txt
2010+/* src-555 %jibb /tests/golden/types-union-print-local/source/jibb
2011+/* tok-555 %txt /tests/golden/types-union-print-local/tokens/txt
2012+/* tre-555 %txt /tests/golden/types-union-print-local/tree/txt
2013+/* typ-555 %txt /tests/golden/types-union-print-local/types/txt
2014+/* src-556 %jibb /tests/golden/types-union-print-nested/source/jibb
2015+/* tok-556 %txt /tests/golden/types-union-print-nested/tokens/txt
2016+/* tre-556 %txt /tests/golden/types-union-print-nested/tree/txt
2017+/* typ-556 %txt /tests/golden/types-union-print-nested/types/txt
2018+/* src-557 %jibb /tests/golden/types-union-print-same-origin/source/jibb
2019+/* tok-557 %txt /tests/golden/types-union-print-same-origin/tokens/txt
2020+/* tre-557 %txt /tests/golden/types-union-print-same-origin/tree/txt
2021+/* mod-557-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
2022+/* typ-557 %txt /tests/golden/types-union-print-same-origin/types/txt
2023+/* mtre-557 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
2024+/* src-558 %jibb /tests/golden/types-union-print-transitive/source/jibb
2025+/* tok-558 %txt /tests/golden/types-union-print-transitive/tokens/txt
2026+/* tre-558 %txt /tests/golden/types-union-print-transitive/tree/txt
2027+/* mod-558-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
2028+/* mod-558-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
2029+/* typ-558 %txt /tests/golden/types-union-print-transitive/types/txt
2030+/* mtre-558 %txt /tests/golden/types-union-print-transitive/module-trees/txt
2031+/* src-559 %jibb /tests/golden/types-union-singleton/source/jibb
2032+/* tok-559 %txt /tests/golden/types-union-singleton/tokens/txt
2033+/* tre-559 %txt /tests/golden/types-union-singleton/tree/txt
2034+/* typ-559 %txt /tests/golden/types-union-singleton/types/txt
2035+/* src-560 %jibb /tests/golden/types-union-tag-atoms/source/jibb
2036+/* tok-560 %txt /tests/golden/types-union-tag-atoms/tokens/txt
2037+/* tre-560 %txt /tests/golden/types-union-tag-atoms/tree/txt
2038+/* typ-560 %txt /tests/golden/types-union-tag-atoms/types/txt
2039+/* src-561 %jibb /tests/golden/types-union-tags/source/jibb
2040+/* tok-561 %txt /tests/golden/types-union-tags/tokens/txt
2041+/* tre-561 %txt /tests/golden/types-union-tags/tree/txt
2042+/* typ-561 %txt /tests/golden/types-union-tags/types/txt
2043+/* src-562 %jibb /tests/golden/types-union-unresolved/source/jibb
2044+/* tok-562 %txt /tests/golden/types-union-unresolved/tokens/txt
2045+/* tre-562 %txt /tests/golden/types-union-unresolved/tree/txt
2046+/* typ-562 %txt /tests/golden/types-union-unresolved/types/txt
2047+/* src-563 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
2048+/* tok-563 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
2049+/* tre-563 %txt /tests/golden/types-union-unresolved-flow/tree/txt
2050+/* typ-563 %txt /tests/golden/types-union-unresolved-flow/types/txt
2051+/* src-564 %jibb /tests/golden/types-unit-construction/source/jibb
2052+/* tok-564 %txt /tests/golden/types-unit-construction/tokens/txt
2053+/* tre-564 %txt /tests/golden/types-unit-construction/tree/txt
2054+/* typ-564 %txt /tests/golden/types-unit-construction/types/txt
2055+/* src-565 %jibb /tests/golden/types-unit-context/source/jibb
2056+/* tok-565 %txt /tests/golden/types-unit-context/tokens/txt
2057+/* tre-565 %txt /tests/golden/types-unit-context/tree/txt
2058+/* typ-565 %txt /tests/golden/types-unit-context/types/txt
2059+/* src-566 %jibb /tests/golden/types-unit-patterns/source/jibb
2060+/* tok-566 %txt /tests/golden/types-unit-patterns/tokens/txt
2061+/* tre-566 %txt /tests/golden/types-unit-patterns/tree/txt
2062+/* typ-566 %txt /tests/golden/types-unit-patterns/types/txt
2063+/* src-567 %jibb /tests/golden/types-value-cycle-shadow/source/jibb
2064+/* tok-567 %txt /tests/golden/types-value-cycle-shadow/tokens/txt
2065+/* tre-567 %txt /tests/golden/types-value-cycle-shadow/tree/txt
2066+/* typ-567 %txt /tests/golden/types-value-cycle-shadow/types/txt
2067+/* src-568 %jibb /tests/golden/types-value-cycle-unsupported/source/jibb
2068+/* tok-568 %txt /tests/golden/types-value-cycle-unsupported/tokens/txt
2069+/* tre-568 %txt /tests/golden/types-value-cycle-unsupported/tree/txt
2070+/* typ-568 %txt /tests/golden/types-value-cycle-unsupported/types/txt
2071+/* src-569 %jibb /tests/golden/types-value-cycles/source/jibb
2072+/* tok-569 %txt /tests/golden/types-value-cycles/tokens/txt
2073+/* tre-569 %txt /tests/golden/types-value-cycles/tree/txt
2074+/* typ-569 %txt /tests/golden/types-value-cycles/types/txt
20672075=/ prepared-prelude (prepare-prelude-with-internal:jibb prelude-source internal-source)
20682076|%
20692077:: one arm per case
@@ -3064,144 +3072,148 @@
30643072 (weld (check ~.types-partial-union-edges src-497 `tok-497 `tre-497) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-497 `typ-497))
30653073++ test-types-partial-unresolved-tag
30663074 (weld (check ~.types-partial-unresolved-tag src-498 `tok-498 `tre-498) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-498 `typ-498))
3075+++ test-types-prelude-cmd
3076+ (weld (check ~.types-prelude-cmd src-499 `tok-499 `tre-499) (check-module-types ~.types-prelude-cmd ~[%tests %golden ~.types-prelude-cmd %source %jibb] src-499 `typ-499 ~ ~ ~))
30673077++ test-types-prelude-direct
3068− (weld (check ~.types-prelude-direct src-499 `tok-499 `tre-499) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-499 `typ-499 ~ ~ ~))
3078+ (weld (check ~.types-prelude-direct src-500 `tok-500 `tre-500) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-500 `typ-500 ~ ~ ~))
30693079++ test-types-prelude-functional
3070− (weld (check ~.types-prelude-functional src-500 `tok-500 `tre-500) (check-module-types ~.types-prelude-functional ~[%tests %golden ~.types-prelude-functional %source %jibb] src-500 `typ-500 ~ ~ ~))
3080+ (weld (check ~.types-prelude-functional src-501 `tok-501 `tre-501) (check-module-types ~.types-prelude-functional ~[%tests %golden ~.types-prelude-functional %source %jibb] src-501 `typ-501 ~ ~ ~))
30713081++ test-types-prelude-interface
3072− (weld (weld (check ~.types-prelude-interface src-501 `tok-501 `tre-501) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-501 `typ-501 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-501-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-501-2]])) (check-module-trees ~.types-prelude-interface `mtre-501 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-501-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-501-2]]))
3082+ (weld (weld (check ~.types-prelude-interface src-502 `tok-502 `tre-502) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-502 `typ-502 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-502-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-502-2]])) (check-module-trees ~.types-prelude-interface `mtre-502 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-502-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-502-2]]))
30733083++ test-types-prelude-list-functions
3074− (weld (weld (check ~.types-prelude-list-functions src-502 `tok-502 `tre-502) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-502 `typ-502 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-502-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-502 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-502-1]]))
3084+ (weld (weld (check ~.types-prelude-list-functions src-503 `tok-503 `tre-503) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-503 `typ-503 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-503-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-503 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-503-1]]))
30753085++ test-types-prelude-list-helpers
3076− (weld (check ~.types-prelude-list-helpers src-503 `tok-503 `tre-503) (check-module-types ~.types-prelude-list-helpers ~[%tests %golden ~.types-prelude-list-helpers %source %jibb] src-503 `typ-503 ~ ~ ~))
3086+ (weld (check ~.types-prelude-list-helpers src-504 `tok-504 `tre-504) (check-module-types ~.types-prelude-list-helpers ~[%tests %golden ~.types-prelude-list-helpers %source %jibb] src-504 `typ-504 ~ ~ ~))
30773087++ test-types-prelude-unit-helpers
3078− (weld (check ~.types-prelude-unit-helpers src-504 `tok-504 `tre-504) (check-module-types ~.types-prelude-unit-helpers ~[%tests %golden ~.types-prelude-unit-helpers %source %jibb] src-504 `typ-504 ~ ~ ~))
3088+ (weld (check ~.types-prelude-unit-helpers src-505 `tok-505 `tre-505) (check-module-types ~.types-prelude-unit-helpers ~[%tests %golden ~.types-prelude-unit-helpers %source %jibb] src-505 `typ-505 ~ ~ ~))
30793089++ test-types-record-bound-variable
3080− (weld (check ~.types-record-bound-variable src-505 `tok-505 `tre-505) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-505 `typ-505))
3090+ (weld (check ~.types-record-bound-variable src-506 `tok-506 `tre-506) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-506 `typ-506))
30813091++ test-types-record-cast-context
3082− (weld (check ~.types-record-cast-context src-506 `tok-506 `tre-506) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-506 `typ-506 ~ ~ ~))
3092+ (weld (check ~.types-record-cast-context src-507 `tok-507 `tre-507) (check-module-types ~.types-record-cast-context ~[%tests %golden ~.types-record-cast-context %source %jibb] src-507 `typ-507 ~ ~ ~))
30833093++ test-types-record-change
3084− (weld (check ~.types-record-change src-507 `tok-507 `tre-507) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-507 `typ-507 ~ ~ ~))
3094+ (weld (check ~.types-record-change src-508 `tok-508 `tre-508) (check-module-types ~.types-record-change ~[%tests %golden ~.types-record-change %source %jibb] src-508 `typ-508 ~ ~ ~))
30853095++ test-types-record-change-generic
3086− (weld (check ~.types-record-change-generic src-508 `tok-508 `tre-508) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-508 `typ-508 ~ ~ ~))
3096+ (weld (check ~.types-record-change-generic src-509 `tok-509 `tre-509) (check-module-types ~.types-record-change-generic ~[%tests %golden ~.types-record-change-generic %source %jibb] src-509 `typ-509 ~ ~ ~))
30873097++ test-types-record-faces
3088− (weld (check ~.types-record-faces src-509 `tok-509 `tre-509) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-509 `typ-509))
3098+ (weld (check ~.types-record-faces src-510 `tok-510 `tre-510) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-510 `typ-510))
30893099++ test-types-record-import
3090− (weld (weld (check ~.types-record-import src-510 `tok-510 `tre-510) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-510 `typ-510 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-510-1]])) (check-module-trees ~.types-record-import `mtre-510 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-510-1]]))
3100+ (weld (weld (check ~.types-record-import src-511 `tok-511 `tre-511) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-511 `typ-511 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-511-1]])) (check-module-trees ~.types-record-import `mtre-511 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-511-1]]))
30913101++ test-types-record-local-scheme
3092− (weld (check ~.types-record-local-scheme src-511 `tok-511 `tre-511) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-511 `typ-511))
3102+ (weld (check ~.types-record-local-scheme src-512 `tok-512 `tre-512) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-512 `typ-512))
30933103++ test-types-record-nested
3094− (weld (check ~.types-record-nested src-512 `tok-512 `tre-512) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-512 `typ-512))
3104+ (weld (check ~.types-record-nested src-513 `tok-513 `tre-513) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-513 `typ-513))
30953105++ test-types-record-to-tuple
3096− (weld (check ~.types-record-to-tuple src-513 `tok-513 `tre-513) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-513 `typ-513))
3106+ (weld (check ~.types-record-to-tuple src-514 `tok-514 `tre-514) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-514 `typ-514))
30973107++ test-types-recursion-scc-failures
3098− (weld (check ~.types-recursion-scc-failures src-514 `tok-514 `tre-514) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-514 `typ-514 ~ ~ ~))
3108+ (weld (check ~.types-recursion-scc-failures src-515 `tok-515 `tre-515) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-515 `typ-515 ~ ~ ~))
30993109++ test-types-recursion-scc-groups
3100− (weld (check ~.types-recursion-scc-groups src-515 `tok-515 `tre-515) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-515 `typ-515 ~ ~ ~))
3110+ (weld (check ~.types-recursion-scc-groups src-516 `tok-516 `tre-516) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-516 `typ-516 ~ ~ ~))
31013111++ test-types-recursion-scc-import
3102− (weld (weld (check ~.types-recursion-scc-import src-516 `tok-516 `tre-516) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-516 `typ-516 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-516-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-516 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-516-1]]))
3112+ (weld (weld (check ~.types-recursion-scc-import src-517 `tok-517 `tre-517) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-517 `typ-517 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-517-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-517 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-517-1]]))
31033113++ test-types-recursion-scc-import-bad
3104− (weld (weld (check ~.types-recursion-scc-import-bad src-517 `tok-517 `tre-517) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-517 `typ-517 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-517-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-517 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-517-1]]))
3114+ (weld (weld (check ~.types-recursion-scc-import-bad src-518 `tok-518 `tre-518) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-518 `typ-518 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-518-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-518 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-518-1]]))
31053115++ test-types-recursion-scc-local
3106− (weld (check ~.types-recursion-scc-local src-518 `tok-518 `tre-518) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-518 `typ-518 ~ ~ ~))
3116+ (weld (check ~.types-recursion-scc-local src-519 `tok-519 `tre-519) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-519 `typ-519 ~ ~ ~))
31073117++ test-types-recursion-scc-order
3108− (weld (check ~.types-recursion-scc-order src-519 `tok-519 `tre-519) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-519 `typ-519 ~ ~ ~))
3118+ (weld (check ~.types-recursion-scc-order src-520 `tok-520 `tre-520) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-520 `typ-520 ~ ~ ~))
31093119++ test-types-recursion-scc-shadow
3110− (weld (check ~.types-recursion-scc-shadow src-520 `tok-520 `tre-520) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-520 `typ-520 ~ ~ ~))
3120+ (weld (check ~.types-recursion-scc-shadow src-521 `tok-521 `tre-521) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-521 `typ-521 ~ ~ ~))
31113121++ test-types-recursive-branch
3112− (weld (check ~.types-recursive-branch src-521 `tok-521 `tre-521) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-521 `typ-521 ~ ~ ~))
3122+ (weld (check ~.types-recursive-branch src-522 `tok-522 `tre-522) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-522 `typ-522 ~ ~ ~))
31133123++ test-types-recursive-gate
3114− (weld (check ~.types-recursive-gate src-522 `tok-522 `tre-522) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-522 `typ-522))
3124+ (weld (check ~.types-recursive-gate src-523 `tok-523 `tre-523) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-523 `typ-523))
31153125++ test-types-recursive-sample
3116− (weld (check ~.types-recursive-sample src-523 `tok-523 `tre-523) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-523 `typ-523))
3126+ (weld (check ~.types-recursive-sample src-524 `tok-524 `tre-524) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-524 `typ-524))
31173127++ test-types-scope-library-poke
3118− (weld (check-at ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-524 `tok-524 `tre-524) (check-module-types ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-524 `typ-524 ~ ~ ~))
3128+ (weld (check-at ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-525 `tok-525 `tre-525) (check-module-types ~.types-scope-library-poke ~[~.ui ~.lib ~.library ~.jibb] src-525 `typ-525 ~ ~ ~))
31193129++ test-types-scope-root-api
3120− (weld (check-at ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-525 `tok-525 `tre-525) (check-module-types ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-525 `typ-525 ~ ~ ~))
3130+ (weld (check-at ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-526 `tok-526 `tre-526) (check-module-types ~.types-scope-root-api ~[~.ui ~.api ~.todo ~.jibb] src-526 `typ-526 ~ ~ ~))
31213131++ test-types-scope-store-duplicate
3122− (weld (check-at ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-526 `tok-526 `tre-526) (check-module-types ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-526 `typ-526 ~ ~ ~))
3132+ (weld (check-at ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-527 `tok-527 `tre-527) (check-module-types ~.types-scope-store-duplicate ~[~.ui ~.stores ~.cart ~.jibb] src-527 `typ-527 ~ ~ ~))
31233133++ test-types-scope-store-shadow
3124− (weld (check-at ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-527 `tok-527 `tre-527) (check-module-types ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-527 `typ-527 ~ ~ ~))
3134+ (weld (check-at ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-528 `tok-528 `tre-528) (check-module-types ~.types-scope-store-shadow ~[~.ui ~.stores ~.cart ~.jibb] src-528 `typ-528 ~ ~ ~))
3135+++ test-types-single-case-pattern
3136+ (weld (check ~.types-single-case-pattern src-529 `tok-529 `tre-529) (check-module-types ~.types-single-case-pattern ~[%tests %golden ~.types-single-case-pattern %source %jibb] src-529 `typ-529 ~ ~ ~))
31253137++ test-types-string-interpolation
3126− (weld (check ~.types-string-interpolation src-528 `tok-528 `tre-528) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-528 `typ-528 ~ ~ ~))
3138+ (weld (check ~.types-string-interpolation src-530 `tok-530 `tre-530) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-530 `typ-530 ~ ~ ~))
31273139++ test-types-tuple-context
3128− (weld (check ~.types-tuple-context src-529 `tok-529 `tre-529) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-529 `typ-529 ~ ~ ~))
3140+ (weld (check ~.types-tuple-context src-531 `tok-531 `tre-531) (check-module-types ~.types-tuple-context ~[%tests %golden ~.types-tuple-context %source %jibb] src-531 `typ-531 ~ ~ ~))
31293141++ test-types-tuple-context-nested
3130− (weld (check ~.types-tuple-context-nested src-530 `tok-530 `tre-530) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-530 `typ-530 ~ ~ ~))
3142+ (weld (check ~.types-tuple-context-nested src-532 `tok-532 `tre-532) (check-module-types ~.types-tuple-context-nested ~[%tests %golden ~.types-tuple-context-nested %source %jibb] src-532 `typ-532 ~ ~ ~))
31313143++ test-types-union-alias
3132− (weld (check ~.types-union-alias src-531 `tok-531 `tre-531) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-531 `typ-531))
3144+ (weld (check ~.types-union-alias src-533 `tok-533 `tre-533) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-533 `typ-533))
31333145++ test-types-union-branch-context
3134− (weld (check ~.types-union-branch-context src-532 `tok-532 `tre-532) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-532 `typ-532))
3146+ (weld (check ~.types-union-branch-context src-534 `tok-534 `tre-534) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-534 `typ-534))
31353147++ test-types-union-branch-pending
3136− (weld (check ~.types-union-branch-pending src-533 `tok-533 `tre-533) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-533 `typ-533))
3148+ (weld (check ~.types-union-branch-pending src-535 `tok-535 `tre-535) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-535 `typ-535))
31373149++ test-types-union-constructor-shape
3138− (weld (check ~.types-union-constructor-shape src-534 `tok-534 `tre-534) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-534 `typ-534))
3150+ (weld (check ~.types-union-constructor-shape src-536 `tok-536 `tre-536) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-536 `typ-536))
31393151++ test-types-union-context-flow
3140− (weld (check ~.types-union-context-flow src-535 `tok-535 `tre-535) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-535 `typ-535))
3152+ (weld (check ~.types-union-context-flow src-537 `tok-537 `tre-537) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-537 `typ-537))
31413153++ test-types-union-finite
3142− (weld (check ~.types-union-finite src-536 `tok-536 `tre-536) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-536 `typ-536 ~ ~ ~))
3154+ (weld (check ~.types-union-finite src-538 `tok-538 `tre-538) (check-module-types ~.types-union-finite ~[%tests %golden ~.types-union-finite %source %jibb] src-538 `typ-538 ~ ~ ~))
31433155++ test-types-union-finite-context
3144− (weld (check ~.types-union-finite-context src-537 `tok-537 `tre-537) (check-module-types ~.types-union-finite-context ~[%tests %golden ~.types-union-finite-context %source %jibb] src-537 `typ-537 ~ ~ ~))
3156+ (weld (check ~.types-union-finite-context src-539 `tok-539 `tre-539) (check-module-types ~.types-union-finite-context ~[%tests %golden ~.types-union-finite-context %source %jibb] src-539 `typ-539 ~ ~ ~))
31453157++ test-types-union-finite-generic
3146− (weld (check ~.types-union-finite-generic src-538 `tok-538 `tre-538) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-538 `typ-538 ~ ~ ~))
3158+ (weld (check ~.types-union-finite-generic src-540 `tok-540 `tre-540) (check-module-types ~.types-union-finite-generic ~[%tests %golden ~.types-union-finite-generic %source %jibb] src-540 `typ-540 ~ ~ ~))
31473159++ test-types-union-finite-limit
3148− (weld (check ~.types-union-finite-limit src-539 `tok-539 `tre-539) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-539 `typ-539 ~ ~ ~))
3160+ (weld (check ~.types-union-finite-limit src-541 `tok-541 `tre-541) (check-module-types ~.types-union-finite-limit ~[%tests %golden ~.types-union-finite-limit %source %jibb] src-541 `typ-541 ~ ~ ~))
31493161++ test-types-union-import
3150− (weld (weld (check ~.types-union-import src-540 `tok-540 `tre-540) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-540 `typ-540 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-540-1]])) (check-module-trees ~.types-union-import `mtre-540 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-540-1]]))
3162+ (weld (weld (check ~.types-union-import src-542 `tok-542 `tre-542) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-542 `typ-542 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-542-1]])) (check-module-trees ~.types-union-import `mtre-542 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-542-1]]))
31513163++ test-types-union-local-pending
3152− (weld (check ~.types-union-local-pending src-541 `tok-541 `tre-541) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-541 `typ-541))
3164+ (weld (check ~.types-union-local-pending src-543 `tok-543 `tre-543) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-543 `typ-543))
31533165++ test-types-union-overlap
3154− (weld (check ~.types-union-overlap src-542 `tok-542 `tre-542) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-542 `typ-542))
3166+ (weld (check ~.types-union-overlap src-544 `tok-544 `tre-544) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-544 `typ-544))
31553167++ test-types-union-overlap-nested
3156− (weld (check ~.types-union-overlap-nested src-543 `tok-543 `tre-543) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-543 `typ-543))
3168+ (weld (check ~.types-union-overlap-nested src-545 `tok-545 `tre-545) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-545 `typ-545))
31573169++ test-types-union-pattern-result-context
3158− (weld (check ~.types-union-pattern-result-context src-544 `tok-544 `tre-544) (check-module-types ~.types-union-pattern-result-context ~[%tests %golden ~.types-union-pattern-result-context %source %jibb] src-544 `typ-544 ~ ~ ~))
3170+ (weld (check ~.types-union-pattern-result-context src-546 `tok-546 `tre-546) (check-module-types ~.types-union-pattern-result-context ~[%tests %golden ~.types-union-pattern-result-context %source %jibb] src-546 `typ-546 ~ ~ ~))
31593171++ test-types-union-pattern-result-controls
3160− (weld (check ~.types-union-pattern-result-controls src-545 `tok-545 `tre-545) (check-module-types ~.types-union-pattern-result-controls ~[%tests %golden ~.types-union-pattern-result-controls %source %jibb] src-545 `typ-545 ~ ~ ~))
3172+ (weld (check ~.types-union-pattern-result-controls src-547 `tok-547 `tre-547) (check-module-types ~.types-union-pattern-result-controls ~[%tests %golden ~.types-union-pattern-result-controls %source %jibb] src-547 `typ-547 ~ ~ ~))
31613173++ test-types-union-patterns
3162− (weld (check ~.types-union-patterns src-546 `tok-546 `tre-546) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-546 `typ-546 ~ ~ ~))
3174+ (weld (check ~.types-union-patterns src-548 `tok-548 `tre-548) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-548 `typ-548 ~ ~ ~))
31633175++ test-types-union-patterns-generic
3164− (weld (check ~.types-union-patterns-generic src-547 `tok-547 `tre-547) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-547 `typ-547 ~ ~ ~))
3176+ (weld (check ~.types-union-patterns-generic src-549 `tok-549 `tre-549) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-549 `typ-549 ~ ~ ~))
31653177++ test-types-union-patterns-import
3166− (weld (weld (check ~.types-union-patterns-import src-548 `tok-548 `tre-548) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-548 `typ-548 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-548-1]])) (check-module-trees ~.types-union-patterns-import `mtre-548 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-548-1]]))
3178+ (weld (weld (check ~.types-union-patterns-import src-550 `tok-550 `tre-550) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-550 `typ-550 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-550-1]])) (check-module-trees ~.types-union-patterns-import `mtre-550 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-550-1]]))
31673179++ test-types-union-phantom-generic
3168− (weld (check ~.types-union-phantom-generic src-549 `tok-549 `tre-549) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-549 `typ-549))
3180+ (weld (check ~.types-union-phantom-generic src-551 `tok-551 `tre-551) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-551 `typ-551))
31693181++ test-types-union-print-cross-namespace
3170− (weld (weld (check ~.types-union-print-cross-namespace src-550 `tok-550 `tre-550) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-550 `typ-550 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-550-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-550 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-550-1]]))
3182+ (weld (weld (check ~.types-union-print-cross-namespace src-552 `tok-552 `tre-552) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-552 `typ-552 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-552-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-552 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-552-1]]))
31713183++ test-types-union-print-distinct
3172− (weld (weld (check ~.types-union-print-distinct src-551 `tok-551 `tre-551) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-551 `typ-551 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-551-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-551-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-551-3]])) (check-module-trees ~.types-union-print-distinct `mtre-551 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-551-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-551-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-551-3]]))
3184+ (weld (weld (check ~.types-union-print-distinct src-553 `tok-553 `tre-553) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-553 `typ-553 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-553-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-553-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-553-3]])) (check-module-trees ~.types-union-print-distinct `mtre-553 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-553-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-553-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-553-3]]))
31733185++ test-types-union-print-escape
3174− (weld (check ~.types-union-print-escape src-552 `tok-552 `tre-552) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-552 `typ-552))
3186+ (weld (check ~.types-union-print-escape src-554 `tok-554 `tre-554) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-554 `typ-554))
31753187++ test-types-union-print-local
3176− (weld (check ~.types-union-print-local src-553 `tok-553 `tre-553) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-553 `typ-553))
3188+ (weld (check ~.types-union-print-local src-555 `tok-555 `tre-555) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-555 `typ-555))
31773189++ test-types-union-print-nested
3178− (weld (check ~.types-union-print-nested src-554 `tok-554 `tre-554) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-554 `typ-554))
3190+ (weld (check ~.types-union-print-nested src-556 `tok-556 `tre-556) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-556 `typ-556))
31793191++ test-types-union-print-same-origin
3180− (weld (weld (check ~.types-union-print-same-origin src-555 `tok-555 `tre-555) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-555 `typ-555 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-555-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-555 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-555-1]]))
3192+ (weld (weld (check ~.types-union-print-same-origin src-557 `tok-557 `tre-557) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-557 `typ-557 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-557-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-557 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-557-1]]))
31813193++ test-types-union-print-transitive
3182− (weld (weld (check ~.types-union-print-transitive src-556 `tok-556 `tre-556) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-556 `typ-556 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-556-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-556-2]])) (check-module-trees ~.types-union-print-transitive `mtre-556 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-556-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-556-2]]))
3194+ (weld (weld (check ~.types-union-print-transitive src-558 `tok-558 `tre-558) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-558 `typ-558 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-558-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-558-2]])) (check-module-trees ~.types-union-print-transitive `mtre-558 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-558-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-558-2]]))
31833195++ test-types-union-singleton
3184− (weld (check ~.types-union-singleton src-557 `tok-557 `tre-557) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-557 `typ-557))
3196+ (weld (check ~.types-union-singleton src-559 `tok-559 `tre-559) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-559 `typ-559))
31853197++ test-types-union-tag-atoms
3186− (weld (check ~.types-union-tag-atoms src-558 `tok-558 `tre-558) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-558 `typ-558))
3198+ (weld (check ~.types-union-tag-atoms src-560 `tok-560 `tre-560) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-560 `typ-560))
31873199++ test-types-union-tags
3188− (weld (check ~.types-union-tags src-559 `tok-559 `tre-559) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-559 `typ-559))
3200+ (weld (check ~.types-union-tags src-561 `tok-561 `tre-561) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-561 `typ-561))
31893201++ test-types-union-unresolved
3190− (weld (check ~.types-union-unresolved src-560 `tok-560 `tre-560) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-560 `typ-560))
3202+ (weld (check ~.types-union-unresolved src-562 `tok-562 `tre-562) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-562 `typ-562))
31913203++ test-types-union-unresolved-flow
3192− (weld (check ~.types-union-unresolved-flow src-561 `tok-561 `tre-561) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-561 `typ-561))
3204+ (weld (check ~.types-union-unresolved-flow src-563 `tok-563 `tre-563) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-563 `typ-563))
31933205++ test-types-unit-construction
3194− (weld (check ~.types-unit-construction src-562 `tok-562 `tre-562) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-562 `typ-562 ~ ~ ~))
3206+ (weld (check ~.types-unit-construction src-564 `tok-564 `tre-564) (check-module-types ~.types-unit-construction ~[%tests %golden ~.types-unit-construction %source %jibb] src-564 `typ-564 ~ ~ ~))
31953207++ test-types-unit-context
3196− (weld (check ~.types-unit-context src-563 `tok-563 `tre-563) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-563 `typ-563 ~ ~ ~))
3208+ (weld (check ~.types-unit-context src-565 `tok-565 `tre-565) (check-module-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-565 `typ-565 ~ ~ ~))
31973209++ test-types-unit-patterns
3198− (weld (check ~.types-unit-patterns src-564 `tok-564 `tre-564) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-564 `typ-564))
3210+ (weld (check ~.types-unit-patterns src-566 `tok-566 `tre-566) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-566 `typ-566))
31993211++ test-types-value-cycle-shadow
3200− (weld (check ~.types-value-cycle-shadow src-565 `tok-565 `tre-565) (check-module-types ~.types-value-cycle-shadow ~[%tests %golden ~.types-value-cycle-shadow %source %jibb] src-565 `typ-565 ~ ~ ~))
3212+ (weld (check ~.types-value-cycle-shadow src-567 `tok-567 `tre-567) (check-module-types ~.types-value-cycle-shadow ~[%tests %golden ~.types-value-cycle-shadow %source %jibb] src-567 `typ-567 ~ ~ ~))
32013213++ test-types-value-cycle-unsupported
3202− (weld (check ~.types-value-cycle-unsupported src-566 `tok-566 `tre-566) (check-module-types ~.types-value-cycle-unsupported ~[%tests %golden ~.types-value-cycle-unsupported %source %jibb] src-566 `typ-566 ~ ~ ~))
3214+ (weld (check ~.types-value-cycle-unsupported src-568 `tok-568 `tre-568) (check-module-types ~.types-value-cycle-unsupported ~[%tests %golden ~.types-value-cycle-unsupported %source %jibb] src-568 `typ-568 ~ ~ ~))
32033215++ test-types-value-cycles
3204− (weld (check ~.types-value-cycles src-567 `tok-567 `tre-567) (check-module-types ~.types-value-cycles ~[%tests %golden ~.types-value-cycles %source %jibb] src-567 `typ-567 ~ ~ ~))
3216+ (weld (check ~.types-value-cycles src-569 `tok-569 `tre-569) (check-module-types ~.types-value-cycles ~[%tests %golden ~.types-value-cycles %source %jibb] src-569 `typ-569 ~ ~ ~))
32053217::
32063218:: +check: run golden:jibb on a case and compare both outputs
32073219::