on master help sign in
Record type decisions and enforce capital equality
commitd782b45a50f2df647eb9407196221160f2553a14 authoriko <mail@iko.soy> dateFri 30 Oct 2026, 22:20 (12 hours ago) parent9ab52e8
54 files changed+2587−1153
docs/compiler.md+4−4 docs/open-questions.md+4−4 docs/prelude-inventory.md+1−1 docs/prompts/milestone-2.md+4−4 docs/spec/decisions.md+3−3 docs/spec/grammar.md+2−2 docs/spec/overview.md+3−3 docs/status.md+7−6 jibb-dev/lib/jibb-import.hoon+2−3 jibb-dev/lib/jibb.hoon+101−9 jibb-dev/lib/jibb/prelude.jibb+10 tests/golden/prelude-unit-list-transforms/about.txt+2−2 tests/golden/prelude-unit-list-transforms/source.jibb+10 tests/golden/prelude-unit-list-transforms/tokens.txt+428−362 tests/golden/prelude-unit-list-transforms/tree.txt+208−179 tests/golden/prelude-unit-list-transforms/types.txt+1 tests/golden/types-capital-distinct/about.txt+4 tests/golden/types-capital-distinct/source.jibb+6 tests/golden/types-capital-distinct/tokens.txt+73 tests/golden/types-capital-distinct/tree.txt+33 tests/golden/types-capital-distinct/types.txt+19 tests/golden/types-generic-union-alias/about.txt+1−1 tests/golden/types-generic-union-alias/types.txt+7−1 tests/golden/types-generic-union-capitals/about.txt+1−1 tests/golden/types-generic-union-capitals/types.txt+28−4 tests/golden/types-import-duplicate-mark/about.txt+4 tests/golden/types-import-duplicate-mark/mar/duplicate.txt+5 tests/golden/types-import-duplicate-mark/marks.txt+1 tests/golden/types-import-duplicate-mark/source.jibb+2 tests/golden/types-import-duplicate-mark/tokens.txt+11 tests/golden/types-import-duplicate-mark/tree.txt+6 tests/golden/types-import-duplicate-mark/types.txt+2 tests/golden/types-import-duplicate-sur/about.txt+4 tests/golden/types-import-duplicate-sur/imports.txt+3 tests/golden/types-import-duplicate-sur/source.jibb+5 tests/golden/types-import-duplicate-sur/sur/fixture.txt+6 tests/golden/types-import-duplicate-sur/tokens.txt+35 tests/golden/types-import-duplicate-sur/tree.txt+18 tests/golden/types-import-duplicate-sur/types.txt+5 tests/golden/types-list-branch/about.txt+4 tests/golden/types-list-branch/modules.txt+1 tests/golden/types-list-branch/source.jibb+81 tests/golden/types-list-branch/tokens.txt+521 tests/golden/types-list-branch/tree.txt+237 tests/golden/types-list-branch/types.txt+35 tests/golden/types-list-imported/about.txt+1−1 tests/golden/types-list-imported/source.jibb+5 tests/golden/types-list-imported/tokens.txt+27−1 tests/golden/types-list-imported/tree.txt+14−1 tests/golden/types-list-imported/types.txt+1 tests/lib/jibb-module-scope.hoon+1−1 tests/lib/jibb.hoon+587−559 tests/type-module-scope/about.txt+1−1 tests/type-module-scope/expected.txt+2
docs/compiler.md+4−4
@@ -56,21 +56,21 @@ 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 two-binder cell pattern, a complete two-arm loobean branch, a complete two-arm unit-shaped branch, closed local mold aliases and acyclic forward value references. A supported single syntactic top-level gate can refer to itself through one monomorphic placeholder; the completed body must unify with it before the gate is generalized. 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. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Acyclic local value definitions can refer forward and generalize variables that are free of their enclosing environment; captured variables and explicit capitals remain shared. Acyclic simple local mold aliases can also refer forward, and are scoped to the body, not its gate's sample. Nonrecursive generic aliases of supported molds can be applied at exact arity, including locally and through library interfaces; their parameters are lexical. Closed, provably disjoint nonrecursive unions and tagged single-case molds support contextual term values, `~` and `|=%tag` constructors. 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 recursive local groups and recursive molds. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. A differing-variable face constraint remains unsupported. It can infer and generalize atom constraints arising from explicit capitals or bare sample binders, preserve those constraints through aliases, instantiate them independently, and print multiple constraints. Unresolved decimal variables default to `@ud` for inferred types without gates; defaulting inside gate types and other constraint cases remain incomplete. It does not yet check a module, complete imports, general patterns, general deferred constraints, recursive molds, dependency cycles or most errors with both conflicting excerpts. Definite cast and call mismatches, incompatible branches and overlapping union cases report both sites and excerpts. Concrete branch results can join at an explicitly present parent aura or `@`. Some known tuple and record positions acquire matching faces; other variable-dependent face merges, general branch tag context and ambiguous call-result propagation remain unsupported; function compatibility involving nested `@` and variable-dependent joins remain unsupported except for equal types. The reporting path repeats inference of a recursive gate rather than instantiating its generalized interface inside its own body. 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 two-binder cell pattern, a complete two-arm loobean branch, a complete two-arm unit-shaped branch, closed local mold aliases and acyclic forward value references. A supported single syntactic top-level gate can refer to itself through one monomorphic placeholder; the completed body must unify with it before the gate is generalized. 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. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Acyclic local value definitions can refer forward and generalize variables that are free of their enclosing environment; captured variables and explicit capitals remain shared. Acyclic simple local mold aliases can also refer forward, and are scoped to the body, not its gate's sample. Nonrecursive generic aliases of supported molds can be applied at exact arity, including locally and through library interfaces; their parameters are lexical. Closed, provably disjoint nonrecursive unions and tagged single-case molds support contextual term values, `~` and `|=%tag` constructors. 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 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. The reporting path repeats inference of a recursive gate rather than instantiating its generalized interface inside its own body. 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
6161For supported closed unions, the type printer keeps the union’s origin separate from its displayed name. It prints an in-scope name such as `msg` or `msg.lib`, including in records and gates; an accessible imported nongeneric alias may name a transitive union. A nongeneric body-local union that escapes its scope, or an origin without an accessible name, prints its cases separated by spaces, parenthesized when nested. That case-list form is print-only. A supported generic union prints its name and all arguments, including unused arguments; when its name is unavailable, the partial printer reports that limitation instead of dropping its arguments. Two faces for the same imported origin remain compatible; compatibility between distinct union origins, including in gate types, remains unsupported. Some comparisons of generic union arguments also remain unsupported rather than deciding equality or mismatch. The Hoon bridge also translates some imported unnamed unions into this representation; unsupported cases remain errors.
6262
63−A list literal can be inferred when a cast or known gate sample supplies a list type and the supplied prelude has the validated standard list definition. Empty, nonempty and nested literals work, including contextual union tags in elements; mismatched elements report the item and expected type. Imported Hoon lists share this representation. Under the same known context, `~` and zero-valued term literals fit an empty list, and a two-item unfaced cell `[head tail]` is a cons; cons cells and list literals can be nested. Mismatched heads or tails report both sites. Faced or longer cells, uncontextualized construction, and a missing or altered prelude list remain unsupported. For a known standard list with a supported element type, it also infers a complete two-arm branch using `~` and `[item rest]`, in either order. The binders have the element and list types and cannot shadow or duplicate names. Unknown subjects, unsupported element types, other patterns and incomplete arms remain unsupported.
63+A list literal can be inferred when a cast or known gate sample supplies a list type and the supplied prelude has the validated standard list definition. Empty, nonempty and nested literals work, including contextual union tags in elements; mismatched elements report the item and expected type. Imported Hoon lists share this representation. Under the same known context, `~` and zero-valued term literals fit an empty list, and a two-item unfaced cell `[head tail]` is a cons; cons cells and list literals can be nested. Mismatched heads or tails report both sites. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. Faced or longer cells, uncontextualized construction, and a missing or altered prelude list remain unsupported. For a known standard list with a supported element type, it also infers a complete two-arm branch using `~` and `[item rest]`, in either order. The binders have the element and list types and cannot shadow or duplicate names. Unknown subjects, unsupported element types, other patterns and incomplete arms remain unsupported.
6464
6565A known union of `~` and a null-headed cell can be matched by `~` and `[~ value]` arms in either order. The payload binder is checked for shadowing. Unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported; this fragment infers the prelude’s `fall` and `need` signatures.
6666
6767A known closed union can also provide context to each arm of a complete loobean or unit-shaped branch in a cast or a call with a known union sample. Nested branches and transparent groups work; a mismatch reports the expected union and the offending arm. General patterns and context through bodies with local definitions remain unsupported, and unrelated unresolved tags stay pending.
6868
69−The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles named recursion, nested map, set, queue, list, unit, jar and jug arguments, direct ordered maps, and direct `$^` unions whose source branches can be proved disjoint. It also reads ordered map fields in records when the map arguments are syntactically fixed atom molds and other fields are fixed atom molds or standard collections of static atom molds. Collection names must not be shadowed. The reader can also import a mark door sample, removing its outer sample face and validating its build subject. The reader checks explicit Hoon `$%`, `$?` and `$^` unions against the Grammar’s disjointness rule (doc question 22). It re-evaluates statically recognizable source branches before Hoon can collapse them, checks materialized fork cases, and rejects shapes it cannot prove disjoint. Static records may also have verified standard-collection and `path` siblings. One direct explicit union argument in a standard list, set, map or unit is accepted when its call wrapper and collection provenance are verified and its static cases are pairwise disjoint. A synthetic regression checks that forged wrapper subjects, samples and tails are rejected. Other collection-union forms, nested ordered maps, general source-level disjointness and complete integration with the checker remain unfinished. `+golden-types-imports` can consume fixed-aura atoms, valid term singletons, nested faced or unfaced cells, unions of supported, pairwise-disjoint cases, and opaque standard collections with supported arguments from caller-supplied reader results for declared `/-` imports; `+golden-types-with-marks` accepts the same shapes for declared marks. The caller must pass unchanged results from the source-aware reader: the bridge validates the supplied graph but cannot detect source cases Hoon collapsed before that graph was built. The opaque collection types retain their names and arguments for identity, unification and printing. The validated standard prelude `list` mold shares the imported list representation; other Jibb-written collection molds and prelude collection operations are not yet connected. Other forms remain unsupported. Its disjointness proof is conservative and can reject a valid union it cannot prove disjoint. Collection recognition requires the originating `/sur` core. The reader validates direct zuse subjects and Ford subjects consisting of faced imported cores and a validated tail, checking imported cores transitively; it rejects shadowed names, inconsistent core subjects and other subject shapes. For a recursive reference, the reader matches the exact Hoon hold against named arms in validated cores, including transitive Ford imports; it rejects missing, unlabelled or ambiguous origins. Its fixtures include three real Tlon files; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output. `tools/type-import-test` and `tools/type-mark-test` compare bridge reports under eval and on the ship. `tools/clay-fixtures` also passes Clay-built `/sur` molds and mark samples through the Clay-built importer and partial checker.
69+The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles named recursion, nested map, set, queue, list, unit, jar and jug arguments, direct ordered maps, and direct `$^` unions whose source branches can be proved disjoint. It also reads ordered map fields in records when the map arguments are syntactically fixed atom molds and other fields are fixed atom molds or standard collections of static atom molds. Collection names must not be shadowed. The reader can also import a mark door sample, removing its outer sample face and validating its build subject. The reader checks explicit Hoon `$%`, `$?` and `$^` unions against the Grammar’s disjointness rule, as @iko confirmed on 2026-10-30. It re-evaluates statically recognizable source branches before Hoon can collapse them, checks materialized fork cases, and rejects shapes it cannot prove disjoint. Static records may also have verified standard-collection and `path` siblings. One direct explicit union argument in a standard list, set, map or unit is accepted when its call wrapper and collection provenance are verified and its static cases are pairwise disjoint. A synthetic regression checks that forged wrapper subjects, samples and tails are rejected. Other collection-union forms, nested ordered maps, general source-level disjointness and complete integration with the checker remain unfinished. `+golden-types-imports` can consume fixed-aura atoms, valid term singletons, nested faced or unfaced cells, unions of supported, pairwise-disjoint cases, and opaque standard collections with supported arguments from caller-supplied reader results for declared `/-` imports; `+golden-types-with-marks` accepts the same shapes for declared marks. The caller must pass unchanged results from the source-aware reader: the bridge validates the supplied graph but cannot detect source cases Hoon collapsed before that graph was built. The opaque collection types retain their names and arguments for identity, unification and printing. The validated standard prelude `list` mold shares the imported list representation; other Jibb-written collection molds and prelude collection operations are not yet connected. Other forms remain unsupported. Its disjointness proof is conservative and can reject a valid union it cannot prove disjoint. Collection recognition requires the originating `/sur` core. The reader validates direct zuse subjects and Ford subjects consisting of faced imported cores and a validated tail, checking imported cores transitively; it rejects shadowed names, inconsistent core subjects and other subject shapes. For a recursive reference, the reader matches the exact Hoon hold against named arms in validated cores, including transitive Ford imports; it rejects missing, unlabelled or ambiguous origins. Its fixtures include three real Tlon files; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output. `tools/type-import-test` and `tools/type-mark-test` compare bridge reports under eval and on the ship. `tools/clay-fixtures` also passes Clay-built `/sur` molds and mark samples through the Clay-built importer and partial checker.
7070
7171Self-recursive `/sur` molds can cross the bridge as opaque module-and-name identities when their supported source-aware graph passes validation. Aliases, foreign references, recursive marks, unfolding, construction and field access remain unsupported; the partial printer declines recursive names that are not in scope.
7272
73−Callers that have a `/sur` core and a name can use `+read-named`: it checks for a locally declared arm before asking Hoon to evaluate the mold, and reports evaluation failures with the final Hoon trace line. `+read-mold-in` remains available when the caller already has the selected type. The checker currently treats a failed import as unsupported rather than rendering the importer's error.
73+Callers that have a `/sur` core and a name can use `+read-named`: it checks for a locally declared arm before asking Hoon to evaluate the mold, and reports evaluation failures with the final Hoon trace line. `+read-mold-in` remains available when the caller already has the selected type. The checker currently treats a failed import as unsupported rather than rendering the importer's error. It also fails closed on repeated field faces along an imported record spine, including recursive roots; the diagnostic remains generic. Hoon type graphs can erase unfaced nested-cell boundaries, so the check may conservatively reject a valid source with equal names in distinct erased scopes. Faced nested records and union alternatives keep separate scopes.
7474
7575`+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.
7676
docs/open-questions.md+4−4
@@ -39,10 +39,10 @@ Found while writing [prompts/milestone-2.md](prompts/milestone-2.md), checking i
393917. **Settled: empty cases in union disjointness.** On 2026-10-30, @iko said `!!` is disjoint from every case. A cell containing an empty position at any depth is itself empty and is also disjoint from every case.
404018. **The two uses of Hoon `like`.** Hoon `+like` is a wet mold builder, but the gate it returns is callable and applies its supplied gate to the product. In a verified Hoon 135 example, applying `(like f)` to `[[1 2] [7 8 ~]]` produces an edge whose product is `8` when `f` is identity and `42` when `f` returns `42`; the resulting nail is the original input. Jibb molds are types, not callable values. The prelude now declares a generic `(like A)` mold and a `wonk` extractor; both parse, but their full type and backend validation remain outstanding. Should it also expose a value gate under `like`? If so, should the value preserve Hoon's input shape and behavior, or instead map the product of an already constructed edge? @iko is reviewing these alternatives; the exact public signature is not yet decided.
414119. **Settled: Hoon aura families and `step.hoon`.** On 2026-10-30, @iko chose `step.hoon` for Hoon 1c `step`, avoiding a clash with the Grammar example's `step`, and chose one-way widening across Hoon aura families: for example, `@ud` and `@ux` fit `@u`, and `@tD` fits `@t`. The reverse needs a check. The `step.hoon` group representation is not implemented yet.
42−20. **The type of Hoon `clap`.** Hoon allows its two input units and combining gate's result to have different types. If only one unit is present it returns that unit; when both are present it returns the combining gate's result. Jibb branches normally need a common type, while every union written in Jibb has a name. Should the Jibb gate require a shared type, infer an unnamed union of the possible values, or wait for a different typing design? Asked @iko on 2026-10-30. `clap` is not implemented while this is open.
43−21. **Duplicate faces in imported Hoon records.** Hoon permits `[a=@ud a=@t]`, and its lookup picks the first `a`. Should Jibb reject the imported type where it is used, use the first field, or permit the type but reject access to the ambiguous field? Asked @iko on 2026-10-30. The inference fragment currently permits the type but declines ambiguous field access (doc question).
44−22. **Overlapping imported `$%` and `$?` cases.** The Grammar says a union whose cases don't all differ as nouns is rejected, while the import table explicitly mentions that condition only for `$^`; its `$%` and `$?` row says they become a union. Does the general disjointness rule reject imported `$%` and `$?` cases such as `[%x @ud]` and `[%x @t]` where the type is used? Asked @iko on 2026-10-30. The general rule is the provisional reading (doc question); the importer rejects recognizable overlaps and fails closed when it cannot verify them.
45−23. **Converging explicit capitals.** May a body constrain two separately written capitals to the same type? For `++ repeated |= x=(choice A A) x`, should `++ f |= x=(choice A B) (repeated x)` infer `$-((choice A A) (choice A A))`, or reject it because `A` and `B` are distinct? The same issue arises when casting `(phantom A)` to `(phantom B)` and across local captures. Asked @iko on 2026-10-30. Pending an answer, partial inference declines to merge distinct explicitly written capitals (doc question).
42+20. **Settled: the type of `clap`.** On 2026-10-30, @iko chose one shared value type for both units and the combining gate. If either unit is absent, `clap` returns the other; if both are present, it applies the gate to their values and wraps the result.
43+21. **Settled: duplicate faces in imported Hoon records.** On 2026-10-30, @iko chose to reject an imported Hoon record with duplicate field names where its type is used. Hoon permits `[a=@ud a=@t]` and picks the first `a`; Jibb rejects it.
44+22. **Settled: overlapping imported `$%` and `$?` cases.** On 2026-10-30, @iko confirmed that the general union disjointness rule rejects imported `$%` and `$?` cases that overlap as nouns where the type is used, as it does for `$^`. The importer rejects recognizable overlaps and fails closed when it cannot verify them.
45+23. **Settled: converging explicit capitals.** On 2026-10-30, @iko chose that a body cannot force two separately written capitals to be equal. For `++ repeated |= x=(choice A A) x`, `++ f |= x=(choice A B) (repeated x)` is an error; use `A` in both positions when the type must be shared. This also applies across local captures and within generic mold applications.
4646
4747## Grammar questions never put to the doc's author
4848
docs/prelude-inventory.md+1−1
@@ -28,7 +28,7 @@ The following is an audit of the Hoon 135 bodies, not a completed Jibb interface
2828| `bind` | Applies a gate to a present value and wraps the result; absent stays absent. | Written |
2929| `bond` | Calls a fallback trap for an absent unit, otherwise returns its value. | Missing |
3030| `both` | Returns a unit of both values when both units are present. | Written |
31−| `clap` | Returns the present unit if only one is present; combines both values with a gate if both are present. | Missing; Hoon permits different input and output types |
31+| `clap` | Returns the present unit if only one is present; combines both values with a gate if both are present. | Written with one shared type for both units and the combining gate, as @iko chose |
3232| `clef` | Applies a gate returning a unit when both inputs are present; otherwise returns an absent unit. | Written |
3333| `drop` | Converts an absent unit to an empty list and a present unit to a singleton. | Written |
3434| `fall` | Returns the value of a present unit or the supplied fallback. | Written |
docs/prompts/milestone-2.md+4−4
@@ -62,7 +62,7 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
6262- Hindley–Milner with aura variables: "every expression has a principal type, and there is no general subtyping". A specific atom fits `@`, a specific noun fits `*`, and a more specific aura fits an ancestor in its Hoon aura family, each only in that direction; the reverse needs a check.
6363- `@` means any atom, independently at each occurrence. A specific atom such as `@ud` fits where `@` is expected; an `@` value needs a check to fit `@ud`. `@ud` and `@ux` also fit `@u`, and `@tD` fits `@t`, following Hoon aura families; the reverse needs a check. Distinct specific auras remain distinct. `add` takes `[A A]` and returns `A`, with an atom constraint inferred for the shared type variable.
6464- Faces are part of record types: `[a=@ b=@]` and `[x=@ y=@]` don't unify. An unnamed position can unify with a faced one and take its face, so `[0 0]` fits `[x=@ud y=@ud]`. A single-item cell `[a]` is `a`; an empty `[]` is an error.
65−- Type variables are capitals, "generalized per `++`". A capital in a local `++` shares the enclosing `++`'s variable of that name; a different type takes a different capital. "A type variable used where an atom is required gains an atom constraint", so `++ clamp |= [lo=A hi=A n=A]`, calling `gth` and `max`, works on any one aura; "It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error." Names "may refer to each other in any order", so infer `++` definitions in dependency order, a group of mutually recursive ones together.
65+- Type variables are capitals, "generalized per `++`". A capital in a local `++` shares the enclosing `++`'s variable of that name; a different type takes a different capital. A body cannot force two distinct capitals to be equal; use the same capital where a type is shared. "A type variable used where an atom is required gains an atom constraint", so `++ clamp |= [lo=A hi=A n=A]`, calling `gth` and `max`, works on any one aura; "It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error." Names "may refer to each other in any order", so infer `++` definitions in dependency order, a group of mutually recursive ones together.
6666- The checker infers a gate-free constraint for `eq` arguments and map and set keys and retains it when a type variable is generalized. The requirement applies recursively to nested values; union-case matching treats gates as opaque. Print a gate-free constraint as `$-([A A] ?) where A contains no gates` and an atom constraint as `$-([A A] A) where A is an atom`; separate multiple clauses with commas, as `where A is an atom, B contains no gates`.
6767- Gates may call themselves and their siblings; a non-gate value that depends on itself, even through a gate, is an error. Molds may be recursive, and "recursive molds go by name and module".
6868- A sample's mold may be left out: every bare name in a sample binds, at any depth, as in `|=(p title.p)` "when the call fixes the type", `|= [a=@ b]` and `|=(m ~)`.
@@ -98,7 +98,7 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
9898- `main`'s type decides a module's kind: `(element !!)` a page, `(page R D)` a page with data, `(program D X M)` an island, `(store S)` a store; no `main`, a library.
9999
100100**Importing Hoon types** (overview: Importing Hoon types; Decisions: Hoon types)
101−- The table: `$%` and `$?` become a union; `$@` a union with an atom case; `$^` a union if its cases differ as nouns, else an error where used; `$~` dropped; `map`, `set`, `qeu`, `jar`, `jug` the same, by name; `mop` as `(mop K V)`, read with `on`; other `$|` their base type; `%0`, `%&` and `%|` tags; recursive molds recursive, matched by name; cores, gates, vases, signed and float auras an error where used.
101+- The table: `$%`, `$?` and `$^` become unions only if their cases differ as nouns, else an error where used; `$@` a union with an atom case; `$~` dropped; `map`, `set`, `qeu`, `jar`, `jug` the same, by name; `mop` as `(mop K V)`, read with `on`; other `$|` their base type; `%0`, `%&` and `%|` tags; recursive molds recursive, matched by name; imported records with duplicate field names, cores, gates, vases, signed and float auras are errors where used.
102102- "Unused molds are skipped, so unsupported constructs elsewhere in a `/sur` file are fine." A field's unnamed union imports too, although Jibb cannot write one.
103103
104104**Islands, pages and stores** (overview: The Elm architecture on Urbit; Grammar: Modules and the store example)
@@ -113,13 +113,13 @@ The rules are scattered across the tabs. This is a map of them, not a replacemen
113113
114114**The prelude** (overview: Prelude, Layout and styling, Links and URLs, Effects)
115115- Hoon's standard library regrouped, "written in Jibb and vendored as `/lib/jibb/prelude`", plus `eq`, `not`, `page`, `program`, `store`, `pure`, `island`, the layout elements and molds, `attr`, `theme`, and `cmd` and `sub` as the overview's Effects block writes them.
116−- Signatures change where the Prelude table says: maps and sets are plain gates over Hoon's trees, as `(get.by m k)`; folds take a start, as `(roll xs init f)`, `rep.by` and `rep.in`; ordered maps go through lull's `on`, as `(get.on lte m k)`.
116+- Signatures change where the Prelude table says: `clap` takes two units of one value type and a combining gate over that type; maps and sets are plain gates over Hoon's trees, as `(get.by m k)`; folds take a start, as `(roll xs init f)`, `rep.by` and `rep.in`; ordered maps go through lull's `on`, as `(get.on lte m k)`.
117117- Left out: signed and float gates, parser helpers outside 3g other than the explicitly listed `slav` and `slaw`, and the table's "The rest" (1b, 2p, 3d, 3f, 4c, 4n, 4o, 5a–5f); "`jam`, `cue` and `fein` run inside the runtime".
118118- Write the prelude in Jibb, enough to give every name its type. Foundational gates use private low-level primitives from the internal prelude module. Jetted functions have working Jibb implementations; the compiler recognizes their shapes and uses the Hoon versions so jets can fire. They may take gates as arguments; the Nock backend comes in milestone 3.
119119- Element signatures are in the Layout and styling table. Paths and unchecked cords have separate declarations, with `link-unsafe`, `image-unsafe` and `go-unsafe` for the unchecked forms. Both navigation declarations produce `[%go url=@t]`; `go` converts its application path to a cord including the app's base path. "The same attribute twice in a literal list is an error."
120120
121121**Errors**
122−- Each one the Grammar tab describes needs a golden case with its message. A start on the list: an aura mismatch; mismatched faces; "msg has no case %submitt"; an unresolved tag, as the Grammar's `add-button` ("nothing fixes the union of %add"); an open constraint at the end of a module; a `|=%tag` whose union has no such case tagged at its head; a union whose cases overlap; a missing `?-` case, named; an arm that earlier arms cover; a value that refers to itself; a shadowed name, including a prelude or imported one; a cell in `{…}` with no printer; an atom of a generic aura in `{…}` or a path's `(…)`; a capital that a body makes a `@ud` or a list; `~[text "hi"]`, where the checker suggests `~[(text "hi")]`; clashing derived names; an import cycle; from an import, a signed or float aura, a core, gate or vase, or a `$^` whose cases don't differ as nouns, each where used; a `(facts …)` outside an API file's `paths`; a gate in island data or a model, naming the field; a repeated attribute in a literal list. Read the Grammar tab, and the other tabs' mentions of "error" and "the checker", and make the list complete.
122+- Each one the Grammar tab describes needs a golden case with its message. A start on the list: an aura mismatch; mismatched faces; "msg has no case %submitt"; an unresolved tag, as the Grammar's `add-button` ("nothing fixes the union of %add"); an open constraint at the end of a module; a `|=%tag` whose union has no such case tagged at its head; a union whose cases overlap; a missing `?-` case, named; an arm that earlier arms cover; a value that refers to itself; a shadowed name, including a prelude or imported one; a cell in `{…}` with no printer; an atom of a generic aura in `{…}` or a path's `(…)`; a capital that a body makes a `@ud` or a list; `~[text "hi"]`, where the checker suggests `~[(text "hi")]`; clashing derived names; an import cycle; from an import, a signed or float aura, a core, gate or vase, or a `$%`, `$?` or `$^` whose cases don't differ as nouns, or a record with duplicate field names, each where used; a `(facts …)` outside an API file's `paths`; a gate in island data or a model, naming the field; a repeated attribute in a literal list. Read the Grammar tab, and the other tabs' mentions of "error" and "the checker", and make the list complete.
123123- For a `+$` whose cases overlap or do not fit, suggest that a record or tuple leaves its `[` open on the `+$` line. `+$ pt` above `@t` and `[@ud @ud]` is a valid union.
124124- "Each error names both conflicting sites, with excerpts." Today's `error` is `[file line col msg]`, a start only; spans keep each node's end so that a type error can underline both sites.
125125- Messages name things in the doc's words and quote the code they're about in backticks, as milestone 1's do. Their wording is fixed by the golden tests once written.
docs/spec/decisions.md+3−3
@@ -35,14 +35,14 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
3535| Agent APIs | `/ui/api/<agent>.jibb` with `+$ poke` and `+$ paths`, over the agent's mark types; a case is a name, a path and a type, with `(facts full diff …)` for diffs, told apart by mark; an optional scry path, for pages; an island watching such a request has a type error; typed segments by aura | Decided 2026-10-30 |
3636| Mark names | Any name: `/%` names types after marks, and constructors poke with their type's mark; no alias marks | Decided 2026-10-26 |
3737| Derived gates | API files and stores give a constructor per poke type and a checked request per path or store state; clashing names are errors, including a derived name that clashes with an import face | Decided 2026-10-30 |
38−| Hoon types | A fixed translation table; `map`, `set`, `qeu`, `jar`, `jug` by name; `mop` as `(mop K V)`, read with `on`; unused molds skipped | Decided 2026-10-29 |
38+| Hoon types | A fixed translation table; `map`, `set`, `qeu`, `jar`, `jug` by name; `mop` as `(mop K V)`, read with `on`; imported `$%`, `$?` and `$^` cases must differ as nouns, and records with duplicate field names are errors where used; unused molds skipped | Decided 2026-10-30 |
3939| Layout | Indentation; juxtaposed calls; a bracket open at line end takes one item per line, with no closer | Decided |
4040| Elements | Ordinary gates; containers take attribute lists; `stack` switches at `wide`; `el` adds attributes and wins; headings 1 to 6; `form` sends on Enter, the innermost when nested; `image` from an application path, sized from the file, or a sized URL; no focus control for now | Decided 2026-10-29 |
4141| Long calls | One argument per line inside parentheses | Decided |
4242| Inline gates | Hoon's wide form; the mold may be inferred; a bare sample name binds; `\|=%got` is a case's constructor, typed by the gate expected; a bare tag is always a value | Decided 2026-10-29 |
4343| Empty mold | `!!`, with no values; the expression has any type; pages are `(element !!)`, which keeps islands out of islands | Decided 2026-10-29 |
4444| Noun mold | `*` is the noun type, not a type variable; use a capital for a generic type; a value of a more specific noun type can be used where `*` is expected | Decided 2026-10-30 |
45−| Type variables | Capitals, generalized per `++`; a capital in a local `++` shares the enclosing `++`'s variable of that name, and a different type takes a different capital; one used where an atom is required gains an inferred atom constraint, and cannot be fixed to a more specific type in its body | Decided 2026-10-30 |
45+| Type variables | Capitals, generalized per `++`; a capital in a local `++` shares the enclosing `++`'s variable of that name, and a different type takes a different capital; a body cannot force distinct capitals to be equal, so a shared type uses the same capital; one used where an atom is required gains an inferred atom constraint, and cannot be fixed to a more specific type in its body | Decided 2026-10-30 |
4646| Loobean mold | `?`, switched with `?-` | Decided 2026-10-26 |
4747| Defaults | None | Decided |
4848| Modules | Records, not cores | Decided |
@@ -76,7 +76,7 @@ The choices behind the Language tab, made on 2026-10-23; a later date marks a re
7676| Dark mode | Hand-written dark tones under `dark`, used when the reader prefers dark | Decided 2026-10-27 |
7777| Links | All text escaped; in-app links are application paths, as `%/blog/(slug)`, with no query or fragment, checked at compile time against routes and static files; paths and unchecked `https`, `mailto` and `tel` URLs and root-relative cords such as `"/apps/groups"` have separate declarations; `link-unsafe`, `image-unsafe` and `go-unsafe` are the unchecked forms; both navigation declarations produce `[%go url=@t]`, with `go` converting the path to a cord including the app's base path; other cords render as text; a CSP on every page | Decided 2026-10-30 |
7878| Data layer | Hoon's nouns: units, treaps, loobeans | Decided |
79−| Prelude | Hoon's standard library regrouped: all names from the listed sections except explicitly excluded groups, including all of 3g, with Hoon's `tone` exposed as `tone.hoon` and Hoon's 1c `step` as `step.hoon`; arithmetic over aura variables, units, lists, maps, sets, queues, ordered maps, function helpers, text, atom printing, a zoned date printer, time and data molds; folds take a start; jetted functions have working Jibb implementations, whose shapes the compiler recognizes to use the Hoon versions, and may take gates; private helpers and low-level primitives live in a separate internal module imported without exposing them, with public foundational gates implemented in Jibb on those primitives; no signed or float gates, or parser gates outside 3g except `slav` and `slaw`; signed or float auras are errors | Decided 2026-10-30 |
79+| Prelude | Hoon's standard library regrouped: all names from the listed sections except explicitly excluded groups, including all of 3g, with Hoon's `tone` exposed as `tone.hoon` and Hoon's 1c `step` as `step.hoon`; arithmetic over aura variables, units, lists, maps, sets, queues, ordered maps, function helpers, text, atom printing, a zoned date printer, time and data molds; folds take a start; jetted functions have working Jibb implementations, whose shapes the compiler recognizes to use the Hoon versions, and may take gates; private helpers and low-level primitives live in a separate internal module imported without exposing them, with public foundational gates implemented in Jibb on those primitives; `clap` takes two units of the same type and a combining gate over that type; no signed or float gates, or parser gates outside 3g except `slav` and `slaw`; signed or float auras are errors | Decided 2026-10-30 |
8080| Wire format | Noun channels; Jibb's own noun codec in the browser | Decided 2026-10-29 |
8181| Hosting | One thin host agent on `%jibb` binds, caches and serves every Jibb desk; each desk vendors jibb-dev, names its base path in docket's `site+`, and builds and renders with its own copy through fixed entry points; install `%jibb` first; app agents stay plain Hoon; pokes only from the ship | Decided 2026-10-29 |
8282| Private pages | Served by the host per request and never cached; non-owners go to the login page | Decided 2026-10-29 |
docs/spec/grammar.md+2−2
@@ -91,7 +91,7 @@ Imports come first:
9191/= card /ui/components/card :: a Jibb module
9292```
9393
94−`/%` names a type after its mark, so it takes no face, and any mark name works; Hoon's `/%` binds the mark's core instead. Derived constructors such as `todo-action.todo` supply the agent and mark, so code never writes one. API modules re-export their `/%` types, not `/-` faces or `/=` modules. Import cycles are errors.
94+An imported Hoon record with duplicate field names is an error where used; imported union cases must differ as nouns. `/%` names a type after its mark, so it takes no face, and any mark name works; Hoon's `/%` binds the mark's core instead. Derived constructors such as `todo-action.todo` supply the agent and mark, so code never writes one. API modules re-export their `/%` types, not `/-` faces or `/=` modules. Import cycles are errors.
9595
9696## Modules
9797
@@ -125,7 +125,7 @@ A mold is only a type: never called on a noun, and with no default. Types are in
125125- **Records and tuples**: `[text=@t done=?]`, `[@t ?]`. An empty `[]` is an error. Faces are part of the type, so `[a=@ b=@]` and `[x=@ y=@]` don't unify. An unnamed position can unify with a faced position and take its face, so `[0 0]` fits `[x=@ud y=@ud]`; two different faces don't unify. A record too long for one line can leave its `[` open, with one field per deeper line, as an expression's bracket does.
126126- **Unions**: a `+$` with several cases below it. Every union written in Jibb has a name, so one used in a field, a sample, a cast, a gate's mold or an argument gets its own `+$`; only imports bring in unions without one. Tags take their union from context, as Tag resolution describes. Cases must differ as nouns: inhabited cases must differ at some position of their right-nested cells, where one is an atom and the other a cell, or both are different constants. `*`, type variables and molds that can be either, such as `(list A)`, can overlap atoms and cells. `?` counts as the two atoms `%.y` and `%.n`: it is disjoint from cells and overlaps the constants 0 and 1. The empty mold `!!` is disjoint from every case; a cell with an empty position at any depth is itself empty and is also disjoint from every case. A union whose cases don't all differ is rejected.
127127- **Containers**: `(list A)`, `(unit A)`, `(set A)`, `(map K V)`, `(mop K V)`, `(qeu A)`, `(jar K V)`, `(jug K V)`.
128−- **Gates**: `$-(A B)`. Type variables are capitals, generalized per `++`. A capital in a local `++` shares the enclosing `++`'s variable of the same name; use another capital for a different type. A type variable used where an atom is required gains an atom constraint, so `++ clamp |= [lo=A hi=A n=A]`, whose body calls `gth` and `max`, works on any one aura. It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error.
128+- **Gates**: `$-(A B)`. Type variables are capitals, generalized per `++`. A capital in a local `++` shares the enclosing `++`'s variable of the same name; use another capital for a different type. A body can't force two distinct capitals to be equal; use the same capital wherever a type must be shared. A type variable used where an atom is required gains an atom constraint, so `++ clamp |= [lo=A hi=A n=A]`, whose body calls `gth` and `max`, works on any one aura. It can become nothing more specific: a body that makes `A` a `@ud` or a list is an error.
129129- **Paths**: `/todos` is constant, `/` empty, and `/todo/[id=@ud]` typed by aura. `%/blog/(slug)` is an `qath`, checked against routes and static files.
130130- **Generic molds**: `+$ result |$ [V E]` with cases below; `|$` goes only right after a `+$`'s name.
131131- **Noun**: `*`, not a type variable; use a capital for a generic type. A value already known to have a more specific noun type, such as `@ud`, can be used where `*` is expected. **Empty**: `!!`.
docs/spec/overview.md+3−3
@@ -63,7 +63,7 @@ Hoon's runes and literals in an indentation layout, over Hoon's nouns and molds,
6363
6464| Hoon | Jibb |
6565| --- | --- |
66−| `$%`, `$?` | A union |
66+| `$%`, `$?` | A union if its cases differ as nouns, else an error where used |
6767| `$@` | A union with an atom case |
6868| `$^` | A union if its cases differ as nouns, else an error where used |
6969| `$~` | Dropped |
@@ -72,7 +72,7 @@ Hoon's runes and literals in an indentation layout, over Hoon's nouns and molds,
7272| Other `$\|` | Its base type |
7373| `%0`, `%&`, `%\|` | Tags |
7474| Recursive molds, such as `json` | Recursive, matched by name |
75−| Cores, gates, vases, signed and float auras | An error where used |
75+| Records with duplicate field names; cores, gates, vases, signed and float auras | An error where used |
7676
7777Unused molds are skipped, so unsupported constructs elsewhere in a `/sur` file are fine. A union without a name, as a field's `?(%approve %deny)`, imports too, though Jibb can't write one. Messages and printed types show its cases separated by spaces, as `%approve %deny`; this notation is print-only.
7878
@@ -83,7 +83,7 @@ Hoon's standard library regrouped, written in Jibb and vendored as `/lib/jibb/pr
8383| Group | Hoon | Jibb |
8484| --- | --- | --- |
8585| Arithmetic | [1a](https://docs.urbit.org/hoon/stdlib/1a), [2g](https://docs.urbit.org/hoon/stdlib/2g) | Jibb gates over shared atom-constrained type variables, using private low-level primitives: `add`, `sub`, `div`, `mod`, `gth`, `max`, `pow` |
86−| Units | [2a](https://docs.urbit.org/hoon/stdlib/2a) | `fall`, `need`, `bind`, `biff` |
86+| Units | [2a](https://docs.urbit.org/hoon/stdlib/2a) | `fall`, `need`, `bind`, `biff`, `clap`; `clap` takes two units of the same type and a gate combining two values of that type into one of that type |
8787| Lists | [2b](https://docs.urbit.org/hoon/stdlib/2b) | `turn`, `weld`, `snag`, `lent`, `sort`, `skim`; `(roll xs init f)` takes a start |
8888| Maps, sets, queues | [2h](https://docs.urbit.org/hoon/stdlib/2h)–[2m](https://docs.urbit.org/hoon/stdlib/2m), [2o](https://docs.urbit.org/hoon/stdlib/2o) | Plain gates over Hoon's trees, such as `(get.by m k)`; `rep.by` and `rep.in` take a start; ordered maps through lull's `on`, as `(get.on lte m k)` |
8989| Function helpers | [2n](https://docs.urbit.org/hoon/stdlib/2n) | `same`, `head`, `tail`, `cork`, `cury` |
docs/status.md+7−6
@@ -19,7 +19,7 @@ On 2026-10-30, @iko decided that Jibb drops `$?`, so a `+$` takes a union's case
1919
2020## Milestone 2: in progress
2121
22−The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; partial bridges pass selected Hoon atoms, term singletons, nested faced or unfaced cells, supported disjoint unions and opaque standard collections from `/sur` molds and marks into inference. Collections retain their names and supported arguments for printing and unification; nested supported union arguments are retained too. The bridge trusts unchanged results from the source-aware reader; a materialized type graph alone cannot reveal cases Hoon already collapsed. The source-validated standard prelude `list` mold shares this representation with imported lists; other Jibb-written collection molds and prelude collection operations are not yet connected; malformed names and arities fail closed. Selected self-recursive `/sur` molds cross as opaque module-and-name identities; aliases, foreign references, recursive marks, unfolding and construction remain unsupported. The reader handles mark samples, recursive molds whose origins can be verified through Ford imports, nested collections, direct ordered maps, certain ordered-map fields, direct `$^` unions whose cases can be proved disjoint, and one verified explicit union argument in a list, set, map or unit. Ambiguous recursive origins fail closed; recognizable explicit unions are checked from source before Hoon can collapse their cases (doc question 22), while other nested unions, nested ordered maps, general union disjointness and complete import integration remain unfinished. The partial checker resolves a subset of ordinary library imports in dependency order using supplied Jibb sources and a source-derived partial prelude interface, caches completed interfaces per run, and detects missing sources and cycles. It does not yet check API or kind semantics, and the prelude inventory is incomplete. The inference fragment supports unrestricted `@`, selected one-way widenings including aura-family ancestors, generalized atom constraints arising from explicit capitals or bare sample binders, acyclic local value definitions with captures, selected single self-recursive top-level gates, simple and nonrecursive generic mold aliases, selected faced record casts and field reads, and contextual tags, `~` and constructors for closed disjoint unions, including direct nonrecursive generic unions and propagation through complete loobean and unit-shaped branches in casts and known union-sample calls, including nested branches. A recursive gate uses one monomorphic self reference while its body is inferred, then generalizes after the body is checked; subsequent uses instantiate it independently. For a complete loobean branch with one direct self-call arm, a separately inferred closed base type can seed the recursive result before the whole body is checked. Open or pending base types do not seed it; other branch shapes remain subject to the fragment’s existing limits. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Reporting repeats inference for a recursive gate, so its performance cost remains unmeasured. Contextual null-headed cells fit their cases, but do not supply a `|=%$` constructor; unresolved nulls remain pending and are reported separately from tags. A known union of `~` and a null-headed cell supports a complete `~` / `[~ value]` branch in either order, including shadow checks; unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported. This fragment infers the prelude’s `fall` and `need` signatures. With the validated prelude list and a known cast or gate sample, empty, nonempty and nested list literals infer their element types, including contextual union tags; a mismatched element names both sites. In that context `~` and zero-valued terms fit an empty list, and two-item unfaced cells form cons lists, including nested cons and imported-list contexts; invalid heads or tails name both sites. Faced or longer cells and a missing or altered prelude list fail closed. For a known standard list with a supported element type, a complete `~` / `[item rest]` branch infers the element and tail types in either arm order and checks binders for shadowing. Uncontextualized list construction, unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. Other variable-dependent face merges remain unsupported. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do differing-variable face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive local groups and molds, general branch tag context, other constraint cases and defaulting inside gate types still need work. Collection recognition checks the originating core and fails closed on shadows or unsupported Ford subject shapes; a wrapper regression also rejects forged subjects, samples and tails. Its golden fixtures include three real Tlon files. A Clay test passes a Ford-built nested union through the reader into partial inference. The partial prelude includes `murn`, `join`, `snip` and `rear`, parsed but still awaiting checker and backend validation, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
22+The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; partial bridges pass selected Hoon atoms, term singletons, nested faced or unfaced cells, supported disjoint unions and opaque standard collections from `/sur` molds and marks into inference. Collections retain their names and supported arguments for printing and unification; nested supported union arguments are retained too. The bridge trusts unchanged results from the source-aware reader; a materialized type graph alone cannot reveal cases Hoon already collapsed. The source-validated standard prelude `list` mold shares this representation with imported lists; other Jibb-written collection molds and prelude collection operations are not yet connected; malformed names and arities fail closed. Selected self-recursive `/sur` molds cross as opaque module-and-name identities; aliases, foreign references, recursive marks, unfolding and construction remain unsupported. The reader handles mark samples, recursive molds whose origins can be verified through Ford imports, nested collections, direct ordered maps, certain ordered-map fields, direct `$^` unions whose cases can be proved disjoint, and one verified explicit union argument in a list, set, map or unit. Ambiguous recursive origins fail closed; recognizable explicit unions are checked from source before Hoon can collapse their cases, as @iko confirmed for imported `$%`, `$?` and `$^`, while other nested unions, nested ordered maps, general union disjointness and complete import integration remain unfinished. The partial checker resolves a subset of ordinary library imports in dependency order using supplied Jibb sources and a source-derived partial prelude interface, caches completed interfaces per run, and detects missing sources and cycles. It does not yet check API or kind semantics, and the prelude inventory is incomplete. The inference fragment supports unrestricted `@`, selected one-way widenings including aura-family ancestors, generalized atom constraints arising from explicit capitals or bare sample binders, acyclic local value definitions with captures, selected single self-recursive top-level gates, simple and nonrecursive generic mold aliases, selected faced record casts and field reads, and contextual tags, `~` and constructors for closed disjoint unions, including direct nonrecursive generic unions and propagation through complete loobean and unit-shaped branches in casts and known union-sample calls, including nested branches. A recursive gate uses one monomorphic self reference while its body is inferred, then generalizes after the body is checked; subsequent uses instantiate it independently. For a complete loobean branch with one direct self-call arm, a separately inferred closed base type can seed the recursive result before the whole body is checked. Open or pending base types do not seed it; other branch shapes remain subject to the fragment’s existing limits. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Reporting repeats inference for a recursive gate, so its performance cost remains unmeasured. Contextual null-headed cells fit their cases, but do not supply a `|=%$` constructor; unresolved nulls remain pending and are reported separately from tags. A known union of `~` and a null-headed cell supports a complete `~` / `[~ value]` branch in either order, including shadow checks; unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported. This fragment infers the prelude’s `fall` and `need` signatures. With the validated prelude list and a known cast or gate sample, empty, nonempty and nested list literals infer their element types, including contextual union tags; a mismatched element names both sites. In that context `~` and zero-valued terms fit an empty list, and two-item unfaced cells form cons lists, including nested cons and imported-list contexts; invalid heads or tails name both sites. Faced or longer cells and a missing or altered prelude list fail closed. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. For a known standard list with a supported element type, a complete `~` / `[item rest]` branch infers the element and tail types in either arm order and checks binders for shadowing. Uncontextualized list construction, unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. Other variable-dependent face merges remain unsupported. Forced equality of distinct written capitals now reports both source sites, following @iko’s decision; forcing one to a concrete type remains unsupported. Imported record spines with repeated faces fail closed where used, but only with a generic unsupported diagnostic. Hoon may erase unfaced nested-cell boundaries, so the check can conservatively reject valid names in distinct erased scopes. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do differing-variable face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive local groups and molds, general branch tag context, other constraint cases and defaulting inside gate types still need work. Collection recognition checks the originating core and fails closed on shadows or unsupported Ford subject shapes; a wrapper regression also rejects forged subjects, samples and tails. Its golden fixtures include three real Tlon files. A Clay test passes a Ford-built nested union through the reader into partial inference. The partial prelude includes `murn`, `join`, `snip`, `rear` and the newly agreed shared-type `clap`, parsed but still awaiting checker and backend validation, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
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` and `need`. Unsupported entries such as most list helpers remain reserved but unavailable. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. Preparation rejects empty, malformed, conflicting or import-bearing source; the prepared value is trusted and must come unchanged from `+prepare-prelude`. The module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship. The source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
2525
@@ -39,8 +39,8 @@ What the plan asks for, and where it is:
3939
4040Besides the plan's list:
4141
42−- 504 golden cases: 288 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 504-case corpus passed under `urbit eval` in 56.4 s. The fake ship passed all 509 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 29.0 s for sync and 32.6 s for tests. The importer golden compares 141 projections; `tools/clay-fixtures` builds the example Hoon fixtures through Clay, checks a recursive Ford import's origin, and passes Clay-built types through the Clay-built importer and partial checker.
42+- 508 golden cases: 292 that parse and 216 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
43+- The 508-case corpus passed under `urbit eval` in 56.0 s. The fake ship passed all 513 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 28.1 s for sync and 54.9 s for tests. The importer golden compares 141 projections; `tools/clay-fixtures` builds the example Hoon fixtures through Clay, checks a recursive Ford import's origin, and passes Clay-built types through the Clay-built importer and partial checker.
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).
@@ -84,14 +84,15 @@ Besides the plan's list:
8484| a2a6ef5 | 2026-10-30 | Infer complete list-shaped branches |
8585| 671fe72 | 2026-10-30 | Infer contextual list nulls and cons cells |
8686| 7e69436 | 2026-10-30 | Infer selected self-recursive gates |
87−| This change | 2026-10-30 | Infer recursive branches with closed base types |
87+| 9ab52e8 | 2026-10-30 | Infer recursive branches with closed base types |
88+| This change | 2026-10-30 | Propagate list context and apply settled type decisions |
8889
8990## Checking it
9091
9192On a machine set up as [development.md](development.md) says:
9293
9394```
94−tools/golden # 504 cases under urbit eval
95+tools/golden # 508 cases under urbit eval
9596tools/importer-test # the Hoon importer fixture projection
9697tools/type-import-test # the importer/checker bridge fixture
9798tools/type-mark-test # the mark/checker bridge fixture
@@ -101,7 +102,7 @@ tools/testdata/selftest # the tools themselves
101102tools/doc-blocks docs/spec # the doc's examples are golden cases
102103tools/ship start
103104tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
104−tools/ship test # the same 504 cases as -test arms on the ship
105+tools/ship test # the same 508 cases as -test arms on the ship
105106tools/testdata/ship-selftest
106107tools/ship check-commit # |commit stores .jibb files
107108tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb-import.hoon+2−3
@@ -386,9 +386,8 @@
386386 ?: ?=([%bckt ^ ^] h) &
387387 |($(h -.h) $(h +.h))
388388::
389−:: (doc question 22) The Grammar's disjointness rule is applied to
390−:: imported $% and $? too. The import table singles out $^, so @iko
391−:: has been asked whether that general rule also covers those unions.
389+:: The Grammar's disjointness rule applies to imported $% and $? too;
390+:: @iko confirmed the rule for imported unions on 2026-10-30.
392391++ has-spec-general-union
393392 |= h=*
394393 ^- ?
jibb-dev/lib/jibb.hoon+101−9
@@ -5234,7 +5234,8 @@
52345234+$ imold-types (list [name=term template=ischeme])
52355235+$ ifile [values=ienv molds=imold-types at=path]
52365236+$ ijimports (list [face=term interface=ifile])
5237−+$ icaps (list [name=@t id=@ud])
5237++$ icap [name=@t id=@ud at=span]
5238++$ icaps (list icap)
52385239+$ iparams (list [name=@t typ=itype])
52395240+$ imolds (list [name=term body=shape])
52405241:: A caller supplies the exact noun returned by +read-mold:jibb-import.
@@ -5524,6 +5525,48 @@
55245525 $(pats t.pats)
55255526::
55265527::
5528+::
5529+:: Repeated faces along an imported record spine fail closed. Hoon's type
5530+:: graph can erase unfaced nested-cell boundaries, so that alone does not
5531+:: prove the original source repeated a name within one record. A faced
5532+:: body and each union alternative have separate scopes. Check recursive
5533+:: roots before making them opaque; unused molds are never inspected.
5534+::
5535+++ imported-faces-valid
5536+ |= node=*
5537+ ^- ?
5538+ ?@ node &
5539+ ?+ -.node &
5540+ %face ?:(?=([%face @ *] node) $(node +>.node) |)
5541+ %cell ?:(?=([%cell * *] node) (imported-record-faces-valid node ~) |)
5542+ %fork (imported-faces-valid-list +.node)
5543+ %apply ?:(?=([%apply @ *] node) (imported-faces-valid-list +>.node) |)
5544+ ==
5545+::
5546+++ imported-faces-valid-list
5547+ |= nodes=*
5548+ ^- ?
5549+ ?@ nodes =(nodes 0)
5550+ ?. (imported-faces-valid -.nodes) |
5551+ $(nodes +.nodes)
5552+::
5553+++ imported-record-faces-valid
5554+ |= [node=* names=(list @)]
5555+ ^- ?
5556+ ?: ?=([%cell * *] node)
5557+ =/ head=* +<.node
5558+ =/ rest=* +>.node
5559+ ?: ?=([%face @ *] head)
5560+ ?: (lien names |=(n=@ =(n +<.head))) |
5561+ ?. (imported-faces-valid +>.head) |
5562+ $(node rest, names [+<.head names])
5563+ ?. (imported-faces-valid head) |
5564+ $(node rest)
5565+ ?: ?=([%face @ *] node)
5566+ ?: (lien names |=(n=@ =(n +<.node))) |
5567+ (imported-faces-valid +>.node)
5568+ (imported-faces-valid node)
5569+::
55275570++ import-to-itype
55285571 |= node=*
55295572 ^- (unit itype)
@@ -5616,6 +5659,7 @@
56165659 ?@ result ~
56175660 ?. ?=(%& -.result) ~
56185661 =/ node=* +.result
5662+ ?. (imported-faces-valid node) ~
56195663 ?@ node (import-to-itype node)
56205664 ?: ?=(%ref -.node) (import-to-itype node)
56215665 =/ pattern=(unit irec-pattern) (rec-pattern node module name)
@@ -5651,6 +5695,7 @@
56515695 =/ result=* result.i.found
56525696 ?@ result ~
56535697 ?. ?=(%& -.result) ~
5698+ ?. (imported-faces-valid +.result) ~
56545699 (import-to-itype +.result)
56555700::
56565701++ find-jibb-interface
@@ -5895,7 +5940,7 @@
58955940 ?: in-mold.state ~
58965941 =/ n=(unit @ud) (icap-lookup name.sh caps.state)
58975942 ?^ n `[[%var u.n] state]
5898− `[[%var next.state] state(next +(next.state), caps [[name.sh next.state] caps.state])]
5943+ `[[%var next.state] state(next +(next.state), caps [[name.sh next.state at.sh] caps.state])]
58995944 * ~
59005945 ==
59015946::
@@ -6067,8 +6112,8 @@
60676112 $(ds t.ds, env [[name.d [typ vars]] env], state state.p.inferred, progressed &)
60686113::
60696114:: Read only fields of a known record. Unresolved field constraints and
6070−:: ambiguous repeated faces are outside this fragment (doc question:
6071−:: whether duplicate imported Hoon faces are valid or select a field).
6115+:: ambiguous repeated faces are outside this fragment. Imported record
6116+:: spines with repeated names are unavailable when used.
60726117::
60736118++ record-fields-named
60746119 |= [name=term t=itype sub=isub]
@@ -6099,9 +6144,9 @@
60996144 ?^ t.found [%| ["field name is ambiguous in partial inference" ~]]
61006145 $(fields t.fields, typ i.found)
61016146::
6102−:: Propagate a known union through supported loobean and unit branches. Empty bodies
6103−:: and groups are transparent; bodies with definitions keep their normal
6104−:: scoping and wait for general bidirectional inference.
6147+:: Propagate a known union or list through supported loobean, unit and list
6148+:: branches. Empty bodies and groups are transparent; bodies with definitions
6149+:: keep their normal scoping and wait for general bidirectional inference.
61056150::
61066151++ context-union-branch
61076152 |= e=expr
@@ -6118,6 +6163,8 @@
61186163 ^- iresult
61196164 ?: ?=(%group -.e) $(e inner.e)
61206165 ?: &(?=(%body -.e) ?=(~ defs.e)) $(e final.e)
6166+ ?: &(?=(%collection -.expected) =(%list name.expected) (context-list-expression e))
6167+ (infer-list-context e expected env state context)
61216168 ?: ?=(%branch -.e)
61226169 ?~ arms.e [%| ["branch is not supported by partial inference" ~]]
61236170 ?~ t.arms.e [%| ["branch pattern is not supported by partial inference" ~]]
@@ -6145,8 +6192,12 @@
61456192 ?: ?=(%| -.value) value
61466193 =/ fit=ifit (itype-fit typ.p.value expected sub.state.p.value next.state.p.value)
61476194 ?: ?=(%unknown -.fit)
6195+ ?: &(?=(%collection -.expected) =(%list name.expected))
6196+ [%| ["branch list constraint is not supported by partial inference" ~]]
61486197 [%| ["branch union constraint is not supported by partial inference" ~]]
61496198 ?: ?=(%bad -.fit)
6199+ ?: &(?=(%collection -.expected) =(%list name.expected))
6200+ [%| ["branch arm does not fit its expected list" ~[[context "expected list"] [(span-of e) "branch arm"]]]]
61506201 [%| ["branch arm does not fit its expected union" ~[[context "expected union"] [(span-of e) "branch arm"]]]]
61516202 [%& expected state.p.value(sub sub.fit, next next.fit)]
61526203::
@@ -6219,6 +6270,8 @@
62196270 =/ value=iresult
62206271 ?: &(?=(%union -.target) (context-union-branch i.items))
62216272 (infer-union-context i.items target env state context)
6273+ ?: &(?=(%collection -.target) =(%list name.target) (context-union-branch i.items))
6274+ (infer-union-context i.items target env state context)
62226275 ?: &(?=(%collection -.target) =(%list name.target) (context-list-expression i.items))
62236276 (infer-list-context i.items target env state context)
62246277 (infer-fragment i.items env state)
@@ -6485,6 +6538,8 @@
64856538 =/ value=iresult
64866539 ?: &(?=(%union -.typ.u.target) (context-union-branch val.e))
64876540 (infer-union-context val.e typ.u.target env state.u.target at.shape.e)
6541+ ?: &(?=(%collection -.typ.u.target) =(%list name.typ.u.target) (context-union-branch val.e))
6542+ (infer-union-context val.e typ.u.target env state.u.target at.shape.e)
64886543 ?: &(?=(%collection -.typ.u.target) =(%list name.typ.u.target) (context-list-expression val.e))
64896544 (infer-list-context val.e typ.u.target env state.u.target at.shape.e)
64906545 $(e val.e, state state.u.target)
@@ -6517,6 +6572,8 @@
65176572 =/ arg=iresult
65186573 ?: &(?=(%fn -.head-type) ?=(%union -.sample.head-type) (context-union-branch i.args.e))
65196574 (infer-union-context i.args.e sample.head-type env state.p.head (span-of head.e))
6575+ ?: &(?=(%fn -.head-type) ?=(%collection -.sample.head-type) =(%list name.sample.head-type) (context-union-branch i.args.e))
6576+ (infer-union-context i.args.e sample.head-type env state.p.head (span-of head.e))
65206577 ?: &(?=(%fn -.head-type) ?=(%collection -.sample.head-type) =(%list name.sample.head-type) (context-list-expression i.args.e))
65216578 (infer-list-context i.args.e sample.head-type env state.p.head (span-of head.e))
65226579 $(e i.args.e, state state.p.head)
@@ -6675,8 +6732,8 @@
66756732:: A capital in a written mold is generalized with its enclosing ++.
66766733:: Atom constraints may remain generic; until full rigidity checking
66776734:: is implemented, do not report a type if one became more specific.
6678−:: Whether distinct written capitals may become equal is a doc question;
6679−:: the partial checker leaves such inference unsupported for now.
6735+:: Distinct written capitals cannot be forced equal; use the same
6736+:: capital where a type must be shared (Decisions 2026-10-30).
66806737::
66816738++ cap-id-in
66826739 |= [n=@ud caps=icaps sub=isub]
@@ -6692,6 +6749,35 @@
66926749 ?: =(n u.ident) &
66936750 $(caps t.caps)
66946751::
6752+++ cap-with-id
6753+ |= [n=@ud caps=icaps sub=isub]
6754+ ^- (unit icap)
6755+ ?~ caps ~
6756+ =/ resolved=itype (itype-walk [%var id.i.caps] sub)
6757+ =/ ident=(unit @ud)
6758+ ?+ -.resolved ~
6759+ %var `id.resolved
6760+ %avar `id.resolved
6761+ ==
6762+ ?~ ident $(caps t.caps)
6763+ ?: =(n u.ident) `i.caps
6764+ $(caps t.caps)
6765+::
6766+++ merged-capitals
6767+ |= [caps=icaps sub=isub]
6768+ ^- (unit [first=icap second=icap])
6769+ ?~ caps ~
6770+ =/ resolved=itype (itype-walk [%var id.i.caps] sub)
6771+ =/ ident=(unit @ud)
6772+ ?+ -.resolved ~
6773+ %var `id.resolved
6774+ %avar `id.resolved
6775+ ==
6776+ ?~ ident $(caps t.caps)
6777+ =/ found=(unit icap) (cap-with-id u.ident t.caps sub)
6778+ ?^ found `[u.found i.caps]
6779+ $(caps t.caps)
6780+::
66956781++ constrained-capitals
66966782 |= [caps=icaps sub=isub]
66976783 ^- ?
@@ -7392,6 +7478,12 @@
73927478 (infer-fragment val.d env initial)
73937479 ?: ?=(%| -.result)
73947480 $(ds t.ds, lines [(show-inference-diagnostic file src name.d p.result) lines])
7481+ =/ merged=(unit [first=icap second=icap])
7482+ (merged-capitals caps.state.p.result sub.state.p.result)
7483+ ?^ merged
7484+ =/ diag=idiag
7485+ ["distinct type variables `{(trip name.first.u.merged)}` and `{(trip name.second.u.merged)}` must not be forced equal; use the same capital for a shared type" ~[[at.first.u.merged "first type variable"] [at.second.u.merged "second type variable"]]]
7486+ $(ds t.ds, lines [(show-inference-diagnostic file src name.d diag) lines])
73957487 ?: (constrained-capitals caps.state.p.result sub.state.p.result)
73967488 $(ds t.ds, lines [(crip "++ {(trip name.d)}: explicit capital constraints are not supported by partial inference") lines])
73977489 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
jibb-dev/lib/jibb/prelude.jibb+10
@@ -166,6 +166,16 @@
166166 ~ ~
167167 [~ b] `[a b]
168168
169+++ clap |= args=[(unit A) (unit A) $-([A A] A)]
170+ ?- args
171+ [first second combine]
172+ ?- first
173+ ~ second
174+ [~ a]
175+ ?- second
176+ ~ first
177+ [~ b] `(combine a b)
178+
169179++ clef |= args=[(unit A) (unit B) $-([A B] (unit C))]
170180 ?- args
171181 [first second combine]
tests/golden/prelude-unit-list-transforms/about.txt+2−2
@@ -1,4 +1,4 @@
1−source: Overview, Prelude: "The exported inventory includes all names from the Hoon library sections listed below, excluding the groups explicitly left out"; Hoon 2a includes `drop`, `bind`, `biff`, `flit`, `both` and `clef`, and 2b includes `join`, `murn`, `rear`, `snip`, `skim`, `skip`, `levy`, `lien`, `roll` and `reel`. Folds take an explicit start.
2−tests: The complete current prelude parses, including unit-to-list conversion, unit mapping and flat mapping, a curried unit-producing filter, two ways to combine units, complementary list filters, present-product mapping, joining, last-item operations, all/any predicates, and left and right folds. The filters retain the order of their selected items.
1+source: Overview, Prelude: "The exported inventory includes all names from the Hoon library sections listed below, excluding the groups explicitly left out"; Hoon 2a includes `drop`, `bind`, `biff`, `flit`, `both`, `clap` and `clef`, and 2b includes `join`, `murn`, `rear`, `snip`, `skim`, `skip`, `levy`, `lien`, `roll` and `reel`. Folds take an explicit start.
2+tests: The complete current prelude parses, including unit-to-list conversion, unit mapping and flat mapping, a curried unit-producing filter, three ways to combine units, including `clap` with one shared value type, complementary list filters, present-product mapping, joining, last-item operations, all/any predicates, and left and right folds. The filters retain the order of their selected items.
33expect: parses
44expect-types: a partial inference report, not a checked module; unit and list gate typing is not complete
tests/golden/prelude-unit-list-transforms/source.jibb+10
@@ -166,6 +166,16 @@
166166 ~ ~
167167 [~ b] `[a b]
168168
169+++ clap |= args=[(unit A) (unit A) $-([A A] A)]
170+ ?- args
171+ [first second combine]
172+ ?- first
173+ ~ second
174+ [~ a]
175+ ?- second
176+ ~ first
177+ [~ b] `(combine a b)
178+
169179++ clef |= args=[(unit A) (unit B) $-([A B] (unit C))]
170180 ?- args
171181 [first second combine]
tests/golden/prelude-unit-list-transforms/tokens.txt+428−362
@@ -1012,7 +1012,7 @@
10121012169:1 DEDENT
10131013169:1 NEWLINE
10141014169:1 glyph ++
1015−169:4 name clef
1015+169:4 name clap
10161016169:9 glyph |=
10171017169:12 name args
10181018169:16 tight glyph =
@@ -1023,19 +1023,16 @@
10231023169:25 tight glyph )
10241024169:27 glyph (
10251025169:28 tight name unit
1026−169:33 tvar B
1026+169:33 tvar A
10271027169:34 tight glyph )
10281028169:36 glyph $-(
10291029169:39 tight glyph [
10301030169:40 tight tvar A
1031−169:42 tvar B
1031+169:42 tvar A
10321032169:43 tight glyph ]
1033−169:45 glyph (
1034−169:46 tight name unit
1035−169:51 tvar C
1036−169:52 tight glyph )
1037−169:53 tight glyph )
1038−169:54 tight glyph ]
1033+169:45 tvar A
1034+169:46 tight glyph )
1035+169:47 tight glyph ]
10391036170:3 INDENT
10401037170:3 glyph ?-
10411038170:6 name args
@@ -1050,7 +1047,7 @@
10501047172:10 name first
10511048173:9 INDENT
10521049173:9 lit ~
1053−173:11 lit ~
1050+173:11 name second
10541051174:9 NEWLINE
10551052174:9 glyph [
10561053174:10 tight lit ~
@@ -1061,17 +1058,18 @@
10611058175:14 name second
10621059176:13 INDENT
10631060176:13 lit ~
1064−176:15 lit ~
1061+176:15 name first
10651062177:13 NEWLINE
10661063177:13 glyph [
10671064177:14 tight lit ~
10681065177:16 name b
10691066177:17 tight glyph ]
1070−177:19 glyph (
1071−177:20 tight name combine
1072−177:28 name a
1073−177:30 name b
1074−177:31 tight glyph )
1067+177:19 glyph `
1068+177:20 tight glyph (
1069+177:21 tight name combine
1070+177:29 name a
1071+177:31 name b
1072+177:32 tight glyph )
10751073179:1 DEDENT
10761074179:1 DEDENT
10771075179:1 DEDENT
@@ -1080,62 +1078,66 @@
10801078179:1 DEDENT
10811079179:1 NEWLINE
10821080179:1 glyph ++
1083−179:4 name skim
1081+179:4 name clef
10841082179:9 glyph |=
10851083179:12 name args
10861084179:16 tight glyph =
10871085179:17 tight glyph [
10881086179:18 tight glyph (
1089−179:19 tight name list
1087+179:19 tight name unit
10901088179:24 tvar A
10911089179:25 tight glyph )
1092−179:27 glyph $-(
1093−179:30 tight tvar A
1094−179:32 glyph ?
1095−179:33 tight glyph )
1096−179:34 tight glyph ]
1090+179:27 glyph (
1091+179:28 tight name unit
1092+179:33 tvar B
1093+179:34 tight glyph )
1094+179:36 glyph $-(
1095+179:39 tight glyph [
1096+179:40 tight tvar A
1097+179:42 tvar B
1098+179:43 tight glyph ]
1099+179:45 glyph (
1100+179:46 tight name unit
1101+179:51 tvar C
1102+179:52 tight glyph )
1103+179:53 tight glyph )
1104+179:54 tight glyph ]
10971105180:3 INDENT
10981106180:3 glyph ?-
10991107180:6 name args
11001108181:5 INDENT
11011109181:5 glyph [
1102−181:6 tight name xs
1103−181:9 name predicate
1104−181:18 tight glyph ]
1110+181:6 tight name first
1111+181:12 name second
1112+181:19 name combine
1113+181:26 tight glyph ]
11051114182:7 INDENT
11061115182:7 glyph ?-
1107−182:10 name xs
1116+182:10 name first
11081117183:9 INDENT
11091118183:9 lit ~
11101119183:11 lit ~
11111120184:9 NEWLINE
11121121184:9 glyph [
1113−184:10 tight name item
1114−184:15 name rest
1115−184:19 tight glyph ]
1122+184:10 tight lit ~
1123+184:12 name a
1124+184:13 tight glyph ]
11161125185:11 INDENT
11171126185:11 glyph ?-
1118−185:14 glyph (
1119−185:15 tight name predicate
1120−185:25 name item
1121−185:29 tight glyph )
1127+185:14 name second
11221128186:13 INDENT
1123−186:13 lit %.y
1124−186:17 glyph [
1125−186:18 tight name item
1126−186:23 glyph (
1127−186:24 tight name skim
1128−186:29 name rest
1129−186:34 name predicate
1130−186:43 tight glyph )
1131−186:44 tight glyph ]
1129+186:13 lit ~
1130+186:15 lit ~
11321131187:13 NEWLINE
1133−187:13 lit %.n
1134−187:17 glyph (
1135−187:18 tight name skim
1136−187:23 name rest
1137−187:28 name predicate
1138−187:37 tight glyph )
1132+187:13 glyph [
1133+187:14 tight lit ~
1134+187:16 name b
1135+187:17 tight glyph ]
1136+187:19 glyph (
1137+187:20 tight name combine
1138+187:28 name a
1139+187:30 name b
1140+187:31 tight glyph )
11391141189:1 DEDENT
11401142189:1 DEDENT
11411143189:1 DEDENT
@@ -1144,7 +1146,7 @@
11441146189:1 DEDENT
11451147189:1 NEWLINE
11461148189:1 glyph ++
1147−189:4 name skip
1149+189:4 name skim
11481150189:9 glyph |=
11491151189:12 name args
11501152189:16 tight glyph =
@@ -1185,21 +1187,21 @@
11851187195:29 tight glyph )
11861188196:13 INDENT
11871189196:13 lit %.y
1188−196:17 glyph (
1189−196:18 tight name skip
1190−196:23 name rest
1191−196:28 name predicate
1192−196:37 tight glyph )
1190+196:17 glyph [
1191+196:18 tight name item
1192+196:23 glyph (
1193+196:24 tight name skim
1194+196:29 name rest
1195+196:34 name predicate
1196+196:43 tight glyph )
1197+196:44 tight glyph ]
11931198197:13 NEWLINE
11941199197:13 lit %.n
1195−197:17 glyph [
1196−197:18 tight name item
1197−197:23 glyph (
1198−197:24 tight name skip
1199−197:29 name rest
1200−197:34 name predicate
1201−197:43 tight glyph )
1202−197:44 tight glyph ]
1200+197:17 glyph (
1201+197:18 tight name skim
1202+197:23 name rest
1203+197:28 name predicate
1204+197:37 tight glyph )
12031205199:1 DEDENT
12041206199:1 DEDENT
12051207199:1 DEDENT
@@ -1208,7 +1210,7 @@
12081210199:1 DEDENT
12091211199:1 NEWLINE
12101212199:1 glyph ++
1211−199:4 name levy
1213+199:4 name skip
12121214199:9 glyph |=
12131215199:12 name args
12141216199:16 tight glyph =
@@ -1235,7 +1237,7 @@
12351237202:10 name xs
12361238203:9 INDENT
12371239203:9 lit ~
1238−203:11 lit %.y
1240+203:11 lit ~
12391241204:9 NEWLINE
12401242204:9 glyph [
12411243204:10 tight name item
@@ -1250,13 +1252,20 @@
12501252206:13 INDENT
12511253206:13 lit %.y
12521254206:17 glyph (
1253−206:18 tight name levy
1255+206:18 tight name skip
12541256206:23 name rest
12551257206:28 name predicate
12561258206:37 tight glyph )
12571259207:13 NEWLINE
12581260207:13 lit %.n
1259−207:17 lit %.n
1261+207:17 glyph [
1262+207:18 tight name item
1263+207:23 glyph (
1264+207:24 tight name skip
1265+207:29 name rest
1266+207:34 name predicate
1267+207:43 tight glyph )
1268+207:44 tight glyph ]
12601269209:1 DEDENT
12611270209:1 DEDENT
12621271209:1 DEDENT
@@ -1265,7 +1274,7 @@
12651274209:1 DEDENT
12661275209:1 NEWLINE
12671276209:1 glyph ++
1268−209:4 name lien
1277+209:4 name levy
12691278209:9 glyph |=
12701279209:12 name args
12711280209:16 tight glyph =
@@ -1292,7 +1301,7 @@
12921301212:10 name xs
12931302213:9 INDENT
12941303213:9 lit ~
1295−213:11 lit %.n
1304+213:11 lit %.y
12961305214:9 NEWLINE
12971306214:9 glyph [
12981307214:10 tight name item
@@ -1306,14 +1315,14 @@
13061315215:29 tight glyph )
13071316216:13 INDENT
13081317216:13 lit %.y
1309−216:17 lit %.y
1318+216:17 glyph (
1319+216:18 tight name levy
1320+216:23 name rest
1321+216:28 name predicate
1322+216:37 tight glyph )
13101323217:13 NEWLINE
13111324217:13 lit %.n
1312−217:17 glyph (
1313−217:18 tight name lien
1314−217:23 name rest
1315−217:28 name predicate
1316−217:37 tight glyph )
1325+217:17 lit %.n
13171326219:1 DEDENT
13181327219:1 DEDENT
13191328219:1 DEDENT
@@ -1322,7 +1331,7 @@
13221331219:1 DEDENT
13231332219:1 NEWLINE
13241333219:1 glyph ++
1325−219:4 name roll
1334+219:4 name lien
13261335219:9 glyph |=
13271336219:12 name args
13281337219:16 tight glyph =
@@ -1331,225 +1340,218 @@
13311340219:19 tight name list
13321341219:24 tvar A
13331342219:25 tight glyph )
1334−219:27 tvar B
1335−219:29 glyph $-(
1336−219:32 tight glyph [
1337−219:33 tight tvar A
1338−219:35 tvar B
1339−219:36 tight glyph ]
1340−219:38 tvar B
1341−219:39 tight glyph )
1342−219:40 tight glyph ]
1343+219:27 glyph $-(
1344+219:30 tight tvar A
1345+219:32 glyph ?
1346+219:33 tight glyph )
1347+219:34 tight glyph ]
13431348220:3 INDENT
13441349220:3 glyph ?-
13451350220:6 name args
13461351221:5 INDENT
13471352221:5 glyph [
13481353221:6 tight name xs
1349−221:9 name start
1350−221:15 name combine
1351−221:22 tight glyph ]
1354+221:9 name predicate
1355+221:18 tight glyph ]
13521356222:7 INDENT
13531357222:7 glyph ?-
13541358222:10 name xs
13551359223:9 INDENT
13561360223:9 lit ~
1357−223:11 name start
1361+223:11 lit %.n
13581362224:9 NEWLINE
13591363224:9 glyph [
13601364224:10 tight name item
13611365224:15 name rest
13621366224:19 tight glyph ]
1363−224:21 glyph (
1364−224:22 tight name roll
1365−224:27 name rest
1366−224:32 glyph (
1367−224:33 tight name combine
1368−224:41 name item
1369−224:46 name start
1370−224:51 tight glyph )
1371−224:53 name combine
1372−224:60 tight glyph )
1373−226:1 DEDENT
1374−226:1 DEDENT
1375−226:1 DEDENT
1376−226:1 DEDENT
1377−226:1 NEWLINE
1378−226:1 glyph ++
1379−226:4 name reel
1380−226:9 glyph |=
1381−226:12 name args
1382−226:16 tight glyph =
1383−226:17 tight glyph [
1384−226:18 tight glyph (
1385−226:19 tight name list
1386−226:24 tvar A
1387−226:25 tight glyph )
1388−226:27 tvar B
1389−226:29 glyph $-(
1390−226:32 tight glyph [
1391−226:33 tight tvar A
1392−226:35 tvar B
1393−226:36 tight glyph ]
1394−226:38 tvar B
1395−226:39 tight glyph )
1396−226:40 tight glyph ]
1397−227:3 INDENT
1398−227:3 glyph ?-
1399−227:6 name args
1400−228:5 INDENT
1401−228:5 glyph [
1402−228:6 tight name xs
1403−228:9 name start
1404−228:15 name combine
1405−228:22 tight glyph ]
1406−229:7 INDENT
1407−229:7 glyph ?-
1408−229:10 name xs
1409−230:9 INDENT
1410−230:9 lit ~
1411−230:11 name start
1412−231:9 NEWLINE
1413−231:9 glyph [
1414−231:10 tight name item
1415−231:15 name rest
1416−231:19 tight glyph ]
1417−231:21 glyph (
1418−231:22 tight name combine
1419−231:30 name item
1420−231:35 glyph (
1421−231:36 tight name reel
1422−231:41 name rest
1423−231:46 name start
1424−231:52 name combine
1425−231:59 tight glyph )
1426−231:60 tight glyph )
1427−233:1 DEDENT
1428−233:1 DEDENT
1429−233:1 DEDENT
1430−233:1 DEDENT
1431−233:1 NEWLINE
1432−233:1 glyph ++
1433−233:4 name flit
1434−233:9 glyph |=
1435−233:12 name predicate
1436−233:21 tight glyph =
1437−233:22 tight glyph $-(
1438−233:25 tight tvar A
1439−233:27 glyph ?
1440−233:28 tight glyph )
1441−234:3 INDENT
1442−234:3 glyph |=
1443−234:6 name value
1444−234:11 tight glyph =
1445−234:12 tight tvar A
1446−235:5 INDENT
1447−235:5 glyph ?-
1448−235:8 glyph (
1449−235:9 tight name predicate
1450−235:19 name value
1451−235:24 tight glyph )
1452−236:7 INDENT
1453−236:7 lit %.y
1454−236:11 glyph `
1455−236:12 tight name value
1456−237:7 NEWLINE
1457−237:7 lit %.n
1458−237:11 lit ~
1459−239:1 DEDENT
1460−239:1 DEDENT
1461−239:1 DEDENT
1462−239:1 NEWLINE
1463−239:1 glyph ++
1464−239:4 name murn
1465−239:9 glyph |=
1466−239:12 name args
1467−239:16 tight glyph =
1468−239:17 tight glyph [
1469−239:18 tight glyph (
1470−239:19 tight name list
1471−239:24 tvar A
1472−239:25 tight glyph )
1473−239:27 glyph $-(
1474−239:30 tight tvar A
1475−239:32 glyph (
1476−239:33 tight name unit
1477−239:38 tvar B
1478−239:39 tight glyph )
1479−239:40 tight glyph )
1480−239:41 tight glyph ]
1481−240:3 INDENT
1482−240:3 glyph ?-
1483−240:6 name args
1484−241:5 INDENT
1485−241:5 glyph [
1486−241:6 tight name xs
1487−241:9 name f
1488−241:10 tight glyph ]
1489−242:7 INDENT
1490−242:7 glyph ?-
1491−242:10 name xs
1492−243:9 INDENT
1493−243:9 lit ~
1494−243:11 lit ~
1495−244:9 NEWLINE
1496−244:9 glyph [
1497−244:10 tight name item
1498−244:15 name rest
1499−244:19 tight glyph ]
1500−245:11 INDENT
1501−245:11 glyph ?-
1502−245:14 glyph (
1503−245:15 tight name f
1504−245:17 name item
1505−245:21 tight glyph )
1506−246:13 INDENT
1507−246:13 lit ~
1508−246:15 glyph (
1509−246:16 tight name murn
1510−246:21 name rest
1511−246:26 name f
1512−246:27 tight glyph )
1513−247:13 NEWLINE
1514−247:13 glyph [
1515−247:14 tight lit ~
1516−247:16 name value
1517−247:21 tight glyph ]
1518−247:23 glyph [
1519−247:24 tight name value
1520−247:30 glyph (
1521−247:31 tight name murn
1522−247:36 name rest
1523−247:41 name f
1524−247:42 tight glyph )
1525−247:43 tight glyph ]
1526−249:1 DEDENT
1527−249:1 DEDENT
1528−249:1 DEDENT
1367+225:11 INDENT
1368+225:11 glyph ?-
1369+225:14 glyph (
1370+225:15 tight name predicate
1371+225:25 name item
1372+225:29 tight glyph )
1373+226:13 INDENT
1374+226:13 lit %.y
1375+226:17 lit %.y
1376+227:13 NEWLINE
1377+227:13 lit %.n
1378+227:17 glyph (
1379+227:18 tight name lien
1380+227:23 name rest
1381+227:28 name predicate
1382+227:37 tight glyph )
1383+229:1 DEDENT
1384+229:1 DEDENT
1385+229:1 DEDENT
1386+229:1 DEDENT
1387+229:1 DEDENT
1388+229:1 DEDENT
1389+229:1 NEWLINE
1390+229:1 glyph ++
1391+229:4 name roll
1392+229:9 glyph |=
1393+229:12 name args
1394+229:16 tight glyph =
1395+229:17 tight glyph [
1396+229:18 tight glyph (
1397+229:19 tight name list
1398+229:24 tvar A
1399+229:25 tight glyph )
1400+229:27 tvar B
1401+229:29 glyph $-(
1402+229:32 tight glyph [
1403+229:33 tight tvar A
1404+229:35 tvar B
1405+229:36 tight glyph ]
1406+229:38 tvar B
1407+229:39 tight glyph )
1408+229:40 tight glyph ]
1409+230:3 INDENT
1410+230:3 glyph ?-
1411+230:6 name args
1412+231:5 INDENT
1413+231:5 glyph [
1414+231:6 tight name xs
1415+231:9 name start
1416+231:15 name combine
1417+231:22 tight glyph ]
1418+232:7 INDENT
1419+232:7 glyph ?-
1420+232:10 name xs
1421+233:9 INDENT
1422+233:9 lit ~
1423+233:11 name start
1424+234:9 NEWLINE
1425+234:9 glyph [
1426+234:10 tight name item
1427+234:15 name rest
1428+234:19 tight glyph ]
1429+234:21 glyph (
1430+234:22 tight name roll
1431+234:27 name rest
1432+234:32 glyph (
1433+234:33 tight name combine
1434+234:41 name item
1435+234:46 name start
1436+234:51 tight glyph )
1437+234:53 name combine
1438+234:60 tight glyph )
1439+236:1 DEDENT
1440+236:1 DEDENT
1441+236:1 DEDENT
1442+236:1 DEDENT
1443+236:1 NEWLINE
1444+236:1 glyph ++
1445+236:4 name reel
1446+236:9 glyph |=
1447+236:12 name args
1448+236:16 tight glyph =
1449+236:17 tight glyph [
1450+236:18 tight glyph (
1451+236:19 tight name list
1452+236:24 tvar A
1453+236:25 tight glyph )
1454+236:27 tvar B
1455+236:29 glyph $-(
1456+236:32 tight glyph [
1457+236:33 tight tvar A
1458+236:35 tvar B
1459+236:36 tight glyph ]
1460+236:38 tvar B
1461+236:39 tight glyph )
1462+236:40 tight glyph ]
1463+237:3 INDENT
1464+237:3 glyph ?-
1465+237:6 name args
1466+238:5 INDENT
1467+238:5 glyph [
1468+238:6 tight name xs
1469+238:9 name start
1470+238:15 name combine
1471+238:22 tight glyph ]
1472+239:7 INDENT
1473+239:7 glyph ?-
1474+239:10 name xs
1475+240:9 INDENT
1476+240:9 lit ~
1477+240:11 name start
1478+241:9 NEWLINE
1479+241:9 glyph [
1480+241:10 tight name item
1481+241:15 name rest
1482+241:19 tight glyph ]
1483+241:21 glyph (
1484+241:22 tight name combine
1485+241:30 name item
1486+241:35 glyph (
1487+241:36 tight name reel
1488+241:41 name rest
1489+241:46 name start
1490+241:52 name combine
1491+241:59 tight glyph )
1492+241:60 tight glyph )
1493+243:1 DEDENT
1494+243:1 DEDENT
1495+243:1 DEDENT
1496+243:1 DEDENT
1497+243:1 NEWLINE
1498+243:1 glyph ++
1499+243:4 name flit
1500+243:9 glyph |=
1501+243:12 name predicate
1502+243:21 tight glyph =
1503+243:22 tight glyph $-(
1504+243:25 tight tvar A
1505+243:27 glyph ?
1506+243:28 tight glyph )
1507+244:3 INDENT
1508+244:3 glyph |=
1509+244:6 name value
1510+244:11 tight glyph =
1511+244:12 tight tvar A
1512+245:5 INDENT
1513+245:5 glyph ?-
1514+245:8 glyph (
1515+245:9 tight name predicate
1516+245:19 name value
1517+245:24 tight glyph )
1518+246:7 INDENT
1519+246:7 lit %.y
1520+246:11 glyph `
1521+246:12 tight name value
1522+247:7 NEWLINE
1523+247:7 lit %.n
1524+247:11 lit ~
15291525249:1 DEDENT
15301526249:1 DEDENT
15311527249:1 DEDENT
15321528249:1 NEWLINE
15331529249:1 glyph ++
1534−249:4 name join
1530+249:4 name murn
15351531249:9 glyph |=
15361532249:12 name args
15371533249:16 tight glyph =
15381534249:17 tight glyph [
1539−249:18 tight tvar A
1540−249:20 glyph (
1541−249:21 tight name list
1542−249:26 tvar A
1543−249:27 tight glyph )
1544−249:28 tight glyph ]
1535+249:18 tight glyph (
1536+249:19 tight name list
1537+249:24 tvar A
1538+249:25 tight glyph )
1539+249:27 glyph $-(
1540+249:30 tight tvar A
1541+249:32 glyph (
1542+249:33 tight name unit
1543+249:38 tvar B
1544+249:39 tight glyph )
1545+249:40 tight glyph )
1546+249:41 tight glyph ]
15451547250:3 INDENT
15461548250:3 glyph ?-
15471549250:6 name args
15481550251:5 INDENT
15491551251:5 glyph [
1550−251:6 tight name separator
1551−251:16 name xs
1552−251:18 tight glyph ]
1552+251:6 tight name xs
1553+251:9 name f
1554+251:10 tight glyph ]
15531555252:7 INDENT
15541556252:7 glyph ?-
15551557252:10 name xs
@@ -1563,29 +1565,30 @@
15631565254:19 tight glyph ]
15641566255:11 INDENT
15651567255:11 glyph ?-
1566−255:14 name rest
1568+255:14 glyph (
1569+255:15 tight name f
1570+255:17 name item
1571+255:21 tight glyph )
15671572256:13 INDENT
15681573256:13 lit ~
1569−256:15 glyph [
1570−256:16 tight name item
1571−256:21 lit ~
1572−256:22 tight glyph ]
1574+256:15 glyph (
1575+256:16 tight name murn
1576+256:21 name rest
1577+256:26 name f
1578+256:27 tight glyph )
15731579257:13 NEWLINE
15741580257:13 glyph [
1575−257:14 tight name next
1576−257:19 name more
1577−257:23 tight glyph ]
1578−257:25 glyph [
1579−257:26 tight name item
1580−257:31 glyph [
1581−257:32 tight name separator
1582−257:42 glyph (
1583−257:43 tight name join
1584−257:48 name separator
1585−257:58 name rest
1586−257:62 tight glyph )
1587−257:63 tight glyph ]
1588−257:64 tight glyph ]
1581+257:14 tight lit ~
1582+257:16 name value
1583+257:21 tight glyph ]
1584+257:23 glyph [
1585+257:24 tight name value
1586+257:30 glyph (
1587+257:31 tight name murn
1588+257:36 name rest
1589+257:41 name f
1590+257:42 tight glyph )
1591+257:43 tight glyph ]
15891592259:1 DEDENT
15901593259:1 DEDENT
15911594259:1 DEDENT
@@ -1594,85 +1597,148 @@
15941597259:1 DEDENT
15951598259:1 NEWLINE
15961599259:1 glyph ++
1597−259:4 name snip
1600+259:4 name join
15981601259:9 glyph |=
1599−259:12 name xs
1600−259:14 tight glyph =
1601−259:15 tight glyph (
1602−259:16 tight name list
1603−259:21 tvar A
1604−259:22 tight glyph )
1602+259:12 name args
1603+259:16 tight glyph =
1604+259:17 tight glyph [
1605+259:18 tight tvar A
1606+259:20 glyph (
1607+259:21 tight name list
1608+259:26 tvar A
1609+259:27 tight glyph )
1610+259:28 tight glyph ]
16051611260:3 INDENT
16061612260:3 glyph ?-
1607−260:6 name xs
1613+260:6 name args
16081614261:5 INDENT
1609−261:5 lit ~
1610−261:7 lit ~
1611−262:5 NEWLINE
1612−262:5 glyph [
1613−262:6 tight name item
1614−262:11 name rest
1615−262:15 tight glyph ]
1616−263:7 INDENT
1617−263:7 glyph ?-
1618−263:10 name rest
1619−264:9 INDENT
1620−264:9 lit ~
1621−264:11 lit ~
1622−265:9 NEWLINE
1623−265:9 glyph [
1624−265:10 tight name next
1625−265:15 name more
1626−265:19 tight glyph ]
1627−265:21 glyph [
1628−265:22 tight name item
1629−265:27 glyph (
1630−265:28 tight name snip
1631−265:33 name rest
1632−265:37 tight glyph )
1633−265:38 tight glyph ]
1634−267:1 DEDENT
1635−267:1 DEDENT
1636−267:1 DEDENT
1637−267:1 DEDENT
1638−267:1 NEWLINE
1639−267:1 glyph ++
1640−267:4 name rear
1641−267:9 glyph |=
1642−267:12 name xs
1643−267:14 tight glyph =
1644−267:15 tight glyph (
1645−267:16 tight name list
1646−267:21 tvar A
1647−267:22 tight glyph )
1648−268:3 INDENT
1649−268:3 glyph ?-
1650−268:6 name xs
1651−269:5 INDENT
1652−269:5 lit ~
1653−269:7 glyph !!
1654−270:5 NEWLINE
1655−270:5 glyph [
1656−270:6 tight name item
1657−270:11 name rest
1658−270:15 tight glyph ]
1659−271:7 INDENT
1660−271:7 glyph ?-
1661−271:10 name rest
1662−272:9 INDENT
1663−272:9 lit ~
1664−272:11 name item
1665−273:9 NEWLINE
1666−273:9 glyph [
1667−273:10 tight name next
1668−273:15 name more
1669−273:19 tight glyph ]
1670−273:21 glyph (
1671−273:22 tight name rear
1672−273:27 name rest
1673−273:31 tight glyph )
1674−273:32 DEDENT
1675−273:32 DEDENT
1676−273:32 DEDENT
1677−273:32 DEDENT
1678−273:32 NEWLINE
1615+261:5 glyph [
1616+261:6 tight name separator
1617+261:16 name xs
1618+261:18 tight glyph ]
1619+262:7 INDENT
1620+262:7 glyph ?-
1621+262:10 name xs
1622+263:9 INDENT
1623+263:9 lit ~
1624+263:11 lit ~
1625+264:9 NEWLINE
1626+264:9 glyph [
1627+264:10 tight name item
1628+264:15 name rest
1629+264:19 tight glyph ]
1630+265:11 INDENT
1631+265:11 glyph ?-
1632+265:14 name rest
1633+266:13 INDENT
1634+266:13 lit ~
1635+266:15 glyph [
1636+266:16 tight name item
1637+266:21 lit ~
1638+266:22 tight glyph ]
1639+267:13 NEWLINE
1640+267:13 glyph [
1641+267:14 tight name next
1642+267:19 name more
1643+267:23 tight glyph ]
1644+267:25 glyph [
1645+267:26 tight name item
1646+267:31 glyph [
1647+267:32 tight name separator
1648+267:42 glyph (
1649+267:43 tight name join
1650+267:48 name separator
1651+267:58 name rest
1652+267:62 tight glyph )
1653+267:63 tight glyph ]
1654+267:64 tight glyph ]
1655+269:1 DEDENT
1656+269:1 DEDENT
1657+269:1 DEDENT
1658+269:1 DEDENT
1659+269:1 DEDENT
1660+269:1 DEDENT
1661+269:1 NEWLINE
1662+269:1 glyph ++
1663+269:4 name snip
1664+269:9 glyph |=
1665+269:12 name xs
1666+269:14 tight glyph =
1667+269:15 tight glyph (
1668+269:16 tight name list
1669+269:21 tvar A
1670+269:22 tight glyph )
1671+270:3 INDENT
1672+270:3 glyph ?-
1673+270:6 name xs
1674+271:5 INDENT
1675+271:5 lit ~
1676+271:7 lit ~
1677+272:5 NEWLINE
1678+272:5 glyph [
1679+272:6 tight name item
1680+272:11 name rest
1681+272:15 tight glyph ]
1682+273:7 INDENT
1683+273:7 glyph ?-
1684+273:10 name rest
1685+274:9 INDENT
1686+274:9 lit ~
1687+274:11 lit ~
1688+275:9 NEWLINE
1689+275:9 glyph [
1690+275:10 tight name next
1691+275:15 name more
1692+275:19 tight glyph ]
1693+275:21 glyph [
1694+275:22 tight name item
1695+275:27 glyph (
1696+275:28 tight name snip
1697+275:33 name rest
1698+275:37 tight glyph )
1699+275:38 tight glyph ]
1700+277:1 DEDENT
1701+277:1 DEDENT
1702+277:1 DEDENT
1703+277:1 DEDENT
1704+277:1 NEWLINE
1705+277:1 glyph ++
1706+277:4 name rear
1707+277:9 glyph |=
1708+277:12 name xs
1709+277:14 tight glyph =
1710+277:15 tight glyph (
1711+277:16 tight name list
1712+277:21 tvar A
1713+277:22 tight glyph )
1714+278:3 INDENT
1715+278:3 glyph ?-
1716+278:6 name xs
1717+279:5 INDENT
1718+279:5 lit ~
1719+279:7 glyph !!
1720+280:5 NEWLINE
1721+280:5 glyph [
1722+280:6 tight name item
1723+280:11 name rest
1724+280:15 tight glyph ]
1725+281:7 INDENT
1726+281:7 glyph ?-
1727+281:10 name rest
1728+282:9 INDENT
1729+282:9 lit ~
1730+282:11 name item
1731+283:9 NEWLINE
1732+283:9 glyph [
1733+283:10 tight name next
1734+283:15 name more
1735+283:19 tight glyph ]
1736+283:21 glyph (
1737+283:22 tight name rear
1738+283:27 name rest
1739+283:31 tight glyph )
1740+283:32 DEDENT
1741+283:32 DEDENT
1742+283:32 DEDENT
1743+283:32 DEDENT
1744+283:32 NEWLINE
tests/golden/prelude-unit-list-transforms/tree.txt+208−179
@@ -415,15 +415,15 @@
415415 (cell 167:13 (lit 167:14 ~) (bind 167:16 b))
416416 (unit 167:19
417417 (tuple 167:20 (wing 167:21 a) (wing 167:23 b))))))))))))))
418− (value 169:1 clef
418+ (value 169:1 clap
419419 (gate 169:9
420420 (face 169:12 args
421421 (cell 169:17
422422 (apply 169:18 unit (tvar 169:24 A))
423− (apply 169:27 unit (tvar 169:33 B))
423+ (apply 169:27 unit (tvar 169:33 A))
424424 (fn 169:36
425− (cell 169:39 (tvar 169:40 A) (tvar 169:42 B))
426− (apply 169:45 unit (tvar 169:51 C)))))
425+ (cell 169:39 (tvar 169:40 A) (tvar 169:42 A))
426+ (tvar 169:45 A))))
427427 (body 170:3
428428 (branch 170:3
429429 (wing 170:6 args)
@@ -432,49 +432,47 @@
432432 (body 172:7
433433 (branch 172:7
434434 (wing 172:10 first)
435− (arm 173:9 (lit 173:9 ~) (lit 173:11 ~))
435+ (arm 173:9 (lit 173:9 ~) (wing 173:11 second))
436436 (arm 174:9
437437 (cell 174:9 (lit 174:10 ~) (bind 174:12 a))
438438 (body 175:11
439439 (branch 175:11
440440 (wing 175:14 second)
441− (arm 176:13 (lit 176:13 ~) (lit 176:15 ~))
441+ (arm 176:13 (lit 176:13 ~) (wing 176:15 first))
442442 (arm 177:13
443443 (cell 177:13 (lit 177:14 ~) (bind 177:16 b))
444− (group 177:19
445− (call 177:20 (wing 177:20 combine) (wing 177:28 a) (wing 177:30 b))))))))))))))
446− (value 179:1 skim
444+ (unit 177:19
445+ (group 177:20
446+ (call 177:21 (wing 177:21 combine) (wing 177:29 a) (wing 177:31 b)))))))))))))))
447+ (value 179:1 clef
447448 (gate 179:9
448449 (face 179:12 args
449450 (cell 179:17
450− (apply 179:18 list (tvar 179:24 A))
451− (fn 179:27 (tvar 179:30 A) (flag 179:32))))
451+ (apply 179:18 unit (tvar 179:24 A))
452+ (apply 179:27 unit (tvar 179:33 B))
453+ (fn 179:36
454+ (cell 179:39 (tvar 179:40 A) (tvar 179:42 B))
455+ (apply 179:45 unit (tvar 179:51 C)))))
452456 (body 180:3
453457 (branch 180:3
454458 (wing 180:6 args)
455459 (arm 181:5
456− (cell 181:5 (bind 181:6 xs) (bind 181:9 predicate))
460+ (cell 181:5 (bind 181:6 first) (bind 181:12 second) (bind 181:19 combine))
457461 (body 182:7
458462 (branch 182:7
459− (wing 182:10 xs)
463+ (wing 182:10 first)
460464 (arm 183:9 (lit 183:9 ~) (lit 183:11 ~))
461465 (arm 184:9
462− (cell 184:9 (bind 184:10 item) (bind 184:15 rest))
466+ (cell 184:9 (lit 184:10 ~) (bind 184:12 a))
463467 (body 185:11
464468 (branch 185:11
465− (group 185:14
466− (call 185:15 (wing 185:15 predicate) (wing 185:25 item)))
467− (arm 186:13
468− (lit 186:13 %.y)
469− (tuple 186:17
470− (wing 186:18 item)
471− (group 186:23
472− (call 186:24 (wing 186:24 skim) (wing 186:29 rest) (wing 186:34 predicate)))))
469+ (wing 185:14 second)
470+ (arm 186:13 (lit 186:13 ~) (lit 186:15 ~))
473471 (arm 187:13
474− (lit 187:13 %.n)
475− (group 187:17
476− (call 187:18 (wing 187:18 skim) (wing 187:23 rest) (wing 187:28 predicate))))))))))))))
477− (value 189:1 skip
472+ (cell 187:13 (lit 187:14 ~) (bind 187:16 b))
473+ (group 187:19
474+ (call 187:20 (wing 187:20 combine) (wing 187:28 a) (wing 187:30 b))))))))))))))
475+ (value 189:1 skim
478476 (gate 189:9
479477 (face 189:12 args
480478 (cell 189:17
@@ -497,15 +495,15 @@
497495 (call 195:15 (wing 195:15 predicate) (wing 195:25 item)))
498496 (arm 196:13
499497 (lit 196:13 %.y)
500− (group 196:17
501− (call 196:18 (wing 196:18 skip) (wing 196:23 rest) (wing 196:28 predicate))))
498+ (tuple 196:17
499+ (wing 196:18 item)
500+ (group 196:23
501+ (call 196:24 (wing 196:24 skim) (wing 196:29 rest) (wing 196:34 predicate)))))
502502 (arm 197:13
503503 (lit 197:13 %.n)
504− (tuple 197:17
505− (wing 197:18 item)
506− (group 197:23
507− (call 197:24 (wing 197:24 skip) (wing 197:29 rest) (wing 197:34 predicate)))))))))))))))
508− (value 199:1 levy
504+ (group 197:17
505+ (call 197:18 (wing 197:18 skim) (wing 197:23 rest) (wing 197:28 predicate))))))))))))))
506+ (value 199:1 skip
509507 (gate 199:9
510508 (face 199:12 args
511509 (cell 199:17
@@ -519,7 +517,7 @@
519517 (body 202:7
520518 (branch 202:7
521519 (wing 202:10 xs)
522− (arm 203:9 (lit 203:9 ~) (lit 203:11 %.y))
520+ (arm 203:9 (lit 203:9 ~) (lit 203:11 ~))
523521 (arm 204:9
524522 (cell 204:9 (bind 204:10 item) (bind 204:15 rest))
525523 (body 205:11
@@ -529,9 +527,14 @@
529527 (arm 206:13
530528 (lit 206:13 %.y)
531529 (group 206:17
532− (call 206:18 (wing 206:18 levy) (wing 206:23 rest) (wing 206:28 predicate))))
533− (arm 207:13 (lit 207:13 %.n) (lit 207:17 %.n))))))))))))
534− (value 209:1 lien
530+ (call 206:18 (wing 206:18 skip) (wing 206:23 rest) (wing 206:28 predicate))))
531+ (arm 207:13
532+ (lit 207:13 %.n)
533+ (tuple 207:17
534+ (wing 207:18 item)
535+ (group 207:23
536+ (call 207:24 (wing 207:24 skip) (wing 207:29 rest) (wing 207:34 predicate)))))))))))))))
537+ (value 209:1 levy
535538 (gate 209:9
536539 (face 209:12 args
537540 (cell 209:17
@@ -545,130 +548,125 @@
545548 (body 212:7
546549 (branch 212:7
547550 (wing 212:10 xs)
548− (arm 213:9 (lit 213:9 ~) (lit 213:11 %.n))
551+ (arm 213:9 (lit 213:9 ~) (lit 213:11 %.y))
549552 (arm 214:9
550553 (cell 214:9 (bind 214:10 item) (bind 214:15 rest))
551554 (body 215:11
552555 (branch 215:11
553556 (group 215:14
554557 (call 215:15 (wing 215:15 predicate) (wing 215:25 item)))
555− (arm 216:13 (lit 216:13 %.y) (lit 216:17 %.y))
556− (arm 217:13
557− (lit 217:13 %.n)
558− (group 217:17
559− (call 217:18 (wing 217:18 lien) (wing 217:23 rest) (wing 217:28 predicate))))))))))))))
560− (value 219:1 roll
558+ (arm 216:13
559+ (lit 216:13 %.y)
560+ (group 216:17
561+ (call 216:18 (wing 216:18 levy) (wing 216:23 rest) (wing 216:28 predicate))))
562+ (arm 217:13 (lit 217:13 %.n) (lit 217:17 %.n))))))))))))
563+ (value 219:1 lien
561564 (gate 219:9
562565 (face 219:12 args
563566 (cell 219:17
564567 (apply 219:18 list (tvar 219:24 A))
565− (tvar 219:27 B)
566− (fn 219:29
567− (cell 219:32 (tvar 219:33 A) (tvar 219:35 B))
568− (tvar 219:38 B))))
568+ (fn 219:27 (tvar 219:30 A) (flag 219:32))))
569569 (body 220:3
570570 (branch 220:3
571571 (wing 220:6 args)
572572 (arm 221:5
573− (cell 221:5 (bind 221:6 xs) (bind 221:9 start) (bind 221:15 combine))
573+ (cell 221:5 (bind 221:6 xs) (bind 221:9 predicate))
574574 (body 222:7
575575 (branch 222:7
576576 (wing 222:10 xs)
577− (arm 223:9 (lit 223:9 ~) (wing 223:11 start))
577+ (arm 223:9 (lit 223:9 ~) (lit 223:11 %.n))
578578 (arm 224:9
579579 (cell 224:9 (bind 224:10 item) (bind 224:15 rest))
580− (group 224:21
581− (call 224:22
582− (wing 224:22 roll)
583− (wing 224:27 rest)
584− (group 224:32
585− (call 224:33 (wing 224:33 combine) (wing 224:41 item) (wing 224:46 start)))
586− (wing 224:53 combine)))))))))))
587− (value 226:1 reel
588− (gate 226:9
589− (face 226:12 args
590− (cell 226:17
591− (apply 226:18 list (tvar 226:24 A))
592− (tvar 226:27 B)
593− (fn 226:29
594− (cell 226:32 (tvar 226:33 A) (tvar 226:35 B))
595− (tvar 226:38 B))))
596− (body 227:3
597− (branch 227:3
598− (wing 227:6 args)
599− (arm 228:5
600− (cell 228:5 (bind 228:6 xs) (bind 228:9 start) (bind 228:15 combine))
601− (body 229:7
602− (branch 229:7
603− (wing 229:10 xs)
604− (arm 230:9 (lit 230:9 ~) (wing 230:11 start))
605− (arm 231:9
606− (cell 231:9 (bind 231:10 item) (bind 231:15 rest))
607− (group 231:21
608− (call 231:22
609− (wing 231:22 combine)
610− (wing 231:30 item)
611− (group 231:35
612− (call 231:36 (wing 231:36 reel) (wing 231:41 rest) (wing 231:46 start) (wing 231:52 combine)))))))))))))
613− (value 233:1 flit
614− (gate 233:9
615− (face 233:12 predicate
616− (fn 233:22 (tvar 233:25 A) (flag 233:27)))
617− (body 234:3
618− (gate 234:3
619− (face 234:6 value (tvar 234:12 A))
620− (body 235:5
621− (branch 235:5
622− (group 235:8
623− (call 235:9 (wing 235:9 predicate) (wing 235:19 value)))
624− (arm 236:7
625− (lit 236:7 %.y)
626− (unit 236:11 (wing 236:12 value)))
627− (arm 237:7 (lit 237:7 %.n) (lit 237:11 ~))))))))
628− (value 239:1 murn
629− (gate 239:9
630− (face 239:12 args
631− (cell 239:17
632− (apply 239:18 list (tvar 239:24 A))
633− (fn 239:27
634− (tvar 239:30 A)
635− (apply 239:32 unit (tvar 239:38 B)))))
636− (body 240:3
637− (branch 240:3
638− (wing 240:6 args)
639− (arm 241:5
640− (cell 241:5 (bind 241:6 xs) (bind 241:9 f))
641− (body 242:7
642− (branch 242:7
643− (wing 242:10 xs)
644− (arm 243:9 (lit 243:9 ~) (lit 243:11 ~))
645− (arm 244:9
646− (cell 244:9 (bind 244:10 item) (bind 244:15 rest))
647− (body 245:11
648− (branch 245:11
649− (group 245:14
650− (call 245:15 (wing 245:15 f) (wing 245:17 item)))
651− (arm 246:13
652− (lit 246:13 ~)
653− (group 246:15
654− (call 246:16 (wing 246:16 murn) (wing 246:21 rest) (wing 246:26 f))))
655− (arm 247:13
656− (cell 247:13 (lit 247:14 ~) (bind 247:16 value))
657− (tuple 247:23
658− (wing 247:24 value)
659− (group 247:30
660− (call 247:31 (wing 247:31 murn) (wing 247:36 rest) (wing 247:41 f)))))))))))))))
661− (value 249:1 join
580+ (body 225:11
581+ (branch 225:11
582+ (group 225:14
583+ (call 225:15 (wing 225:15 predicate) (wing 225:25 item)))
584+ (arm 226:13 (lit 226:13 %.y) (lit 226:17 %.y))
585+ (arm 227:13
586+ (lit 227:13 %.n)
587+ (group 227:17
588+ (call 227:18 (wing 227:18 lien) (wing 227:23 rest) (wing 227:28 predicate))))))))))))))
589+ (value 229:1 roll
590+ (gate 229:9
591+ (face 229:12 args
592+ (cell 229:17
593+ (apply 229:18 list (tvar 229:24 A))
594+ (tvar 229:27 B)
595+ (fn 229:29
596+ (cell 229:32 (tvar 229:33 A) (tvar 229:35 B))
597+ (tvar 229:38 B))))
598+ (body 230:3
599+ (branch 230:3
600+ (wing 230:6 args)
601+ (arm 231:5
602+ (cell 231:5 (bind 231:6 xs) (bind 231:9 start) (bind 231:15 combine))
603+ (body 232:7
604+ (branch 232:7
605+ (wing 232:10 xs)
606+ (arm 233:9 (lit 233:9 ~) (wing 233:11 start))
607+ (arm 234:9
608+ (cell 234:9 (bind 234:10 item) (bind 234:15 rest))
609+ (group 234:21
610+ (call 234:22
611+ (wing 234:22 roll)
612+ (wing 234:27 rest)
613+ (group 234:32
614+ (call 234:33 (wing 234:33 combine) (wing 234:41 item) (wing 234:46 start)))
615+ (wing 234:53 combine)))))))))))
616+ (value 236:1 reel
617+ (gate 236:9
618+ (face 236:12 args
619+ (cell 236:17
620+ (apply 236:18 list (tvar 236:24 A))
621+ (tvar 236:27 B)
622+ (fn 236:29
623+ (cell 236:32 (tvar 236:33 A) (tvar 236:35 B))
624+ (tvar 236:38 B))))
625+ (body 237:3
626+ (branch 237:3
627+ (wing 237:6 args)
628+ (arm 238:5
629+ (cell 238:5 (bind 238:6 xs) (bind 238:9 start) (bind 238:15 combine))
630+ (body 239:7
631+ (branch 239:7
632+ (wing 239:10 xs)
633+ (arm 240:9 (lit 240:9 ~) (wing 240:11 start))
634+ (arm 241:9
635+ (cell 241:9 (bind 241:10 item) (bind 241:15 rest))
636+ (group 241:21
637+ (call 241:22
638+ (wing 241:22 combine)
639+ (wing 241:30 item)
640+ (group 241:35
641+ (call 241:36 (wing 241:36 reel) (wing 241:41 rest) (wing 241:46 start) (wing 241:52 combine)))))))))))))
642+ (value 243:1 flit
643+ (gate 243:9
644+ (face 243:12 predicate
645+ (fn 243:22 (tvar 243:25 A) (flag 243:27)))
646+ (body 244:3
647+ (gate 244:3
648+ (face 244:6 value (tvar 244:12 A))
649+ (body 245:5
650+ (branch 245:5
651+ (group 245:8
652+ (call 245:9 (wing 245:9 predicate) (wing 245:19 value)))
653+ (arm 246:7
654+ (lit 246:7 %.y)
655+ (unit 246:11 (wing 246:12 value)))
656+ (arm 247:7 (lit 247:7 %.n) (lit 247:11 ~))))))))
657+ (value 249:1 murn
662658 (gate 249:9
663659 (face 249:12 args
664660 (cell 249:17
665− (tvar 249:18 A)
666− (apply 249:20 list (tvar 249:26 A))))
661+ (apply 249:18 list (tvar 249:24 A))
662+ (fn 249:27
663+ (tvar 249:30 A)
664+ (apply 249:32 unit (tvar 249:38 B)))))
667665 (body 250:3
668666 (branch 250:3
669667 (wing 250:6 args)
670668 (arm 251:5
671− (cell 251:5 (bind 251:6 separator) (bind 251:16 xs))
669+ (cell 251:5 (bind 251:6 xs) (bind 251:9 f))
672670 (body 252:7
673671 (branch 252:7
674672 (wing 252:10 xs)
@@ -677,53 +675,84 @@
677675 (cell 254:9 (bind 254:10 item) (bind 254:15 rest))
678676 (body 255:11
679677 (branch 255:11
680− (wing 255:14 rest)
678+ (group 255:14
679+ (call 255:15 (wing 255:15 f) (wing 255:17 item)))
681680 (arm 256:13
682681 (lit 256:13 ~)
683− (tuple 256:15 (wing 256:16 item) (lit 256:21 ~)))
682+ (group 256:15
683+ (call 256:16 (wing 256:16 murn) (wing 256:21 rest) (wing 256:26 f))))
684684 (arm 257:13
685− (cell 257:13 (bind 257:14 next) (bind 257:19 more))
686− (tuple 257:25
687− (wing 257:26 item)
688− (tuple 257:31
689− (wing 257:32 separator)
690− (group 257:42
691− (call 257:43 (wing 257:43 join) (wing 257:48 separator) (wing 257:58 rest))))))))))))))))
692− (value 259:1 snip
685+ (cell 257:13 (lit 257:14 ~) (bind 257:16 value))
686+ (tuple 257:23
687+ (wing 257:24 value)
688+ (group 257:30
689+ (call 257:31 (wing 257:31 murn) (wing 257:36 rest) (wing 257:41 f)))))))))))))))
690+ (value 259:1 join
693691 (gate 259:9
694− (face 259:12 xs
695− (apply 259:15 list (tvar 259:21 A)))
692+ (face 259:12 args
693+ (cell 259:17
694+ (tvar 259:18 A)
695+ (apply 259:20 list (tvar 259:26 A))))
696696 (body 260:3
697697 (branch 260:3
698− (wing 260:6 xs)
699− (arm 261:5 (lit 261:5 ~) (lit 261:7 ~))
700− (arm 262:5
701− (cell 262:5 (bind 262:6 item) (bind 262:11 rest))
702− (body 263:7
703− (branch 263:7
704− (wing 263:10 rest)
705− (arm 264:9 (lit 264:9 ~) (lit 264:11 ~))
706− (arm 265:9
707− (cell 265:9 (bind 265:10 next) (bind 265:15 more))
708− (tuple 265:21
709− (wing 265:22 item)
710− (group 265:27
711− (call 265:28 (wing 265:28 snip) (wing 265:33 rest))))))))))))
712− (value 267:1 rear
713− (gate 267:9
714− (face 267:12 xs
715− (apply 267:15 list (tvar 267:21 A)))
716− (body 268:3
717− (branch 268:3
718− (wing 268:6 xs)
719− (arm 269:5 (lit 269:5 ~) (crash 269:7))
720− (arm 270:5
721− (cell 270:5 (bind 270:6 item) (bind 270:11 rest))
722− (body 271:7
723− (branch 271:7
724− (wing 271:10 rest)
725− (arm 272:9 (lit 272:9 ~) (wing 272:11 item))
726− (arm 273:9
727− (cell 273:9 (bind 273:10 next) (bind 273:15 more))
728− (group 273:21
729− (call 273:22 (wing 273:22 rear) (wing 273:27 rest))))))))))))
698+ (wing 260:6 args)
699+ (arm 261:5
700+ (cell 261:5 (bind 261:6 separator) (bind 261:16 xs))
701+ (body 262:7
702+ (branch 262:7
703+ (wing 262:10 xs)
704+ (arm 263:9 (lit 263:9 ~) (lit 263:11 ~))
705+ (arm 264:9
706+ (cell 264:9 (bind 264:10 item) (bind 264:15 rest))
707+ (body 265:11
708+ (branch 265:11
709+ (wing 265:14 rest)
710+ (arm 266:13
711+ (lit 266:13 ~)
712+ (tuple 266:15 (wing 266:16 item) (lit 266:21 ~)))
713+ (arm 267:13
714+ (cell 267:13 (bind 267:14 next) (bind 267:19 more))
715+ (tuple 267:25
716+ (wing 267:26 item)
717+ (tuple 267:31
718+ (wing 267:32 separator)
719+ (group 267:42
720+ (call 267:43 (wing 267:43 join) (wing 267:48 separator) (wing 267:58 rest))))))))))))))))
721+ (value 269:1 snip
722+ (gate 269:9
723+ (face 269:12 xs
724+ (apply 269:15 list (tvar 269:21 A)))
725+ (body 270:3
726+ (branch 270:3
727+ (wing 270:6 xs)
728+ (arm 271:5 (lit 271:5 ~) (lit 271:7 ~))
729+ (arm 272:5
730+ (cell 272:5 (bind 272:6 item) (bind 272:11 rest))
731+ (body 273:7
732+ (branch 273:7
733+ (wing 273:10 rest)
734+ (arm 274:9 (lit 274:9 ~) (lit 274:11 ~))
735+ (arm 275:9
736+ (cell 275:9 (bind 275:10 next) (bind 275:15 more))
737+ (tuple 275:21
738+ (wing 275:22 item)
739+ (group 275:27
740+ (call 275:28 (wing 275:28 snip) (wing 275:33 rest))))))))))))
741+ (value 277:1 rear
742+ (gate 277:9
743+ (face 277:12 xs
744+ (apply 277:15 list (tvar 277:21 A)))
745+ (body 278:3
746+ (branch 278:3
747+ (wing 278:6 xs)
748+ (arm 279:5 (lit 279:5 ~) (crash 279:7))
749+ (arm 280:5
750+ (cell 280:5 (bind 280:6 item) (bind 280:11 rest))
751+ (body 281:7
752+ (branch 281:7
753+ (wing 281:10 rest)
754+ (arm 282:9 (lit 282:9 ~) (wing 282:11 item))
755+ (arm 283:9
756+ (cell 283:9 (bind 283:10 next) (bind 283:15 more))
757+ (group 283:21
758+ (call 283:22 (wing 283:22 rear) (wing 283:27 rest))))))))))))
tests/golden/prelude-unit-list-transforms/types.txt+1
@@ -43,6 +43,7 @@ partial inference; module not checked
4343++ bind: expression is not supported by partial inference
4444++ biff: unit branch results need unsupported inference
4545++ both: expression is not supported by partial inference
46+++ clap: branch pattern is not supported by partial inference
4647++ clef: branch pattern is not supported by partial inference
4748++ skim: sample mold is not supported by partial inference
4849++ skip: sample mold is not supported by partial inference
tests/golden/types-capital-distinct/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Decisions, Type variables: "Capitals, generalized per `++`"; "a different type takes a different capital".
2+tests: Different explicitly written capitals cannot be forced equal via a call or cast; their source sites are reported. Repeated spelling, independent capitals and concrete-forcing controls retain their intended behavior.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-capital-distinct/source.jibbnew file+6
@@ -0,0 +1,6 @@
1+++ repeat |= p=[A A] p
2+++ same |= p=[A A] p
3+++ independent |= p=[A B] p
4+++ bad-call |= p=[A B] (repeat p)
5+++ bad-cast |= p=[A B] ^- [A A] p
6+++ concrete |= x=A ^- @t x
tests/golden/types-capital-distinct/tokens.txtnew file+73
@@ -0,0 +1,73 @@
1+1:1 glyph ++
2+1:4 name repeat
3+1:11 glyph |=
4+1:14 name p
5+1:15 tight glyph =
6+1:16 tight glyph [
7+1:17 tight tvar A
8+1:19 tvar A
9+1:20 tight glyph ]
10+1:22 name p
11+2:1 NEWLINE
12+2:1 glyph ++
13+2:4 name same
14+2:9 glyph |=
15+2:12 name p
16+2:13 tight glyph =
17+2:14 tight glyph [
18+2:15 tight tvar A
19+2:17 tvar A
20+2:18 tight glyph ]
21+2:20 name p
22+3:1 NEWLINE
23+3:1 glyph ++
24+3:4 name independent
25+3:16 glyph |=
26+3:19 name p
27+3:20 tight glyph =
28+3:21 tight glyph [
29+3:22 tight tvar A
30+3:24 tvar B
31+3:25 tight glyph ]
32+3:27 name p
33+4:1 NEWLINE
34+4:1 glyph ++
35+4:4 name bad-call
36+4:13 glyph |=
37+4:16 name p
38+4:17 tight glyph =
39+4:18 tight glyph [
40+4:19 tight tvar A
41+4:21 tvar B
42+4:22 tight glyph ]
43+4:24 glyph (
44+4:25 tight name repeat
45+4:32 name p
46+4:33 tight glyph )
47+5:1 NEWLINE
48+5:1 glyph ++
49+5:4 name bad-cast
50+5:13 glyph |=
51+5:16 name p
52+5:17 tight glyph =
53+5:18 tight glyph [
54+5:19 tight tvar A
55+5:21 tvar B
56+5:22 tight glyph ]
57+5:24 glyph ^-
58+5:27 glyph [
59+5:28 tight tvar A
60+5:30 tvar A
61+5:31 tight glyph ]
62+5:33 name p
63+6:1 NEWLINE
64+6:1 glyph ++
65+6:4 name concrete
66+6:13 glyph |=
67+6:16 name x
68+6:17 tight glyph =
69+6:18 tight tvar A
70+6:20 glyph ^-
71+6:23 aura @t
72+6:26 name x
73+6:27 NEWLINE
tests/golden/types-capital-distinct/tree.txtnew file+33
@@ -0,0 +1,33 @@
1+(module
2+ (value 1:1 repeat
3+ (gate 1:11
4+ (face 1:14 p
5+ (cell 1:16 (tvar 1:17 A) (tvar 1:19 A)))
6+ (wing 1:22 p)))
7+ (value 2:1 same
8+ (gate 2:9
9+ (face 2:12 p
10+ (cell 2:14 (tvar 2:15 A) (tvar 2:17 A)))
11+ (wing 2:20 p)))
12+ (value 3:1 independent
13+ (gate 3:16
14+ (face 3:19 p
15+ (cell 3:21 (tvar 3:22 A) (tvar 3:24 B)))
16+ (wing 3:27 p)))
17+ (value 4:1 bad-call
18+ (gate 4:13
19+ (face 4:16 p
20+ (cell 4:18 (tvar 4:19 A) (tvar 4:21 B)))
21+ (group 4:24
22+ (call 4:25 (wing 4:25 repeat) (wing 4:32 p)))))
23+ (value 5:1 bad-cast
24+ (gate 5:13
25+ (face 5:16 p
26+ (cell 5:18 (tvar 5:19 A) (tvar 5:21 B)))
27+ (cast 5:24
28+ (cell 5:27 (tvar 5:28 A) (tvar 5:30 A))
29+ (wing 5:33 p))))
30+ (value 6:1 concrete
31+ (gate 6:13
32+ (face 6:16 x (tvar 6:18 A))
33+ (cast 6:20 (aura 6:23 @t) (wing 6:26 x)))))
tests/golden/types-capital-distinct/types.txtnew file+19
@@ -0,0 +1,19 @@
1+partial inference; module not checked
2+++ repeat: $-([A A] [A A])
3+++ same: $-([A A] [A A])
4+++ independent: $-([A B] [A B])
5+++ bad-call: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
6+/tests/golden/types-capital-distinct/source.jibb:4:19: first type variable
7+++ bad-call |= p=[A B] (repeat p)
8+ ^
9+/tests/golden/types-capital-distinct/source.jibb:4:21: second type variable
10+++ bad-call |= p=[A B] (repeat p)
11+ ^
12+++ bad-cast: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
13+/tests/golden/types-capital-distinct/source.jibb:5:19: first type variable
14+++ bad-cast |= p=[A B] ^- [A A] p
15+ ^
16+/tests/golden/types-capital-distinct/source.jibb:5:21: second type variable
17+++ bad-cast |= p=[A B] ^- [A A] p
18+ ^
19+++ concrete: explicit capital constraints are not supported by partial inference
tests/golden/types-generic-union-alias/about.txt+1−1
@@ -1,4 +1,4 @@
11source: Grammar, Molds: generic molds are applied with their arguments; Modules: "Everything is exported and read through the import's face".
2−tests: Generic aliases swap or repeat a union's arguments, ignore an alias parameter, and keep the original union identity; local aliases retain their scope; a merge of distinct capitals remains unsupported.
2+tests: Generic aliases swap or repeat a union's arguments, ignore an alias parameter, and keep the original union identity; local aliases retain their scope; a forced merge of distinct capitals is reported at both sites.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-generic-union-alias/types.txt+7−1
@@ -6,7 +6,13 @@ partial inference; module not checked
66++ reverse-value: (choice @p @t)
77++ reverse-gate: $-((choice A B) (choice A B))
88++ repeat-gate: $-((choice A A) (choice A A))
9−++ repeated-call: explicit capital constraints are not supported by partial inference
9+++ repeated-call: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
10+/tests/golden/types-generic-union-alias/source.jibb:10:31: first type variable
11+++ repeated-call |= x=(choice A B) (repeat-gate x)
12+ ^
13+/tests/golden/types-generic-union-alias/source.jibb:10:33: second type variable
14+++ repeated-call |= x=(choice A B) (repeat-gate x)
15+ ^
1016++ ghost-a: (choice @t @p)
1117++ ghost-b: (choice @t @p)
1218++ use-ghost: $-((choice @t @p) (choice @t @p))
tests/golden/types-generic-union-capitals/about.txt+1−1
@@ -1,4 +1,4 @@
11source: Decisions, Type variables: "Capitals, generalized per `++`; a capital in a local `++` shares the enclosing `++`'s variable of that name, and a different type takes a different capital".
2−tests: Distinct explicit capitals, repeated capitals, and local captures in generic-union molds. The partial checker must not silently merge distinct explicit capitals pending the doc question; the same repeated capital remains usable.
2+tests: Distinct explicit capitals, repeated capitals, and local captures in generic-union molds. The checker rejects a forced merge of distinct capitals with both source sites; the same repeated capital remains usable.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-generic-union-capitals/types.txt+28−4
@@ -4,7 +4,31 @@ partial inference; module not checked
44++ repeated: $-((choice A A) (choice A A))
55++ independent: $-((choice A B) (choice A B))
66++ already-same: $-((choice A A) (choice A A))
7−++ merge-call: explicit capital constraints are not supported by partial inference
8−++ phantom-cast: explicit capital constraints are not supported by partial inference
9−++ local-merge: explicit capital constraints are not supported by partial inference
10−++ captured-merge: explicit capital constraints are not supported by partial inference
7+++ merge-call: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
8+/tests/golden/types-generic-union-capitals/source.jibb:10:28: first type variable
9+++ merge-call |= x=(choice A B) (repeated x)
10+ ^
11+/tests/golden/types-generic-union-capitals/source.jibb:10:30: second type variable
12+++ merge-call |= x=(choice A B) (repeated x)
13+ ^
14+++ phantom-cast: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
15+/tests/golden/types-generic-union-capitals/source.jibb:11:31: first type variable
16+++ phantom-cast |= x=(phantom A) ^- (phantom B) x
17+ ^
18+/tests/golden/types-generic-union-capitals/source.jibb:11:46: second type variable
19+++ phantom-cast |= x=(phantom A) ^- (phantom B) x
20+ ^
21+++ local-merge: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
22+/tests/golden/types-generic-union-capitals/source.jibb:12:29: first type variable
23+++ local-merge |= x=(choice A B)
24+ ^
25+/tests/golden/types-generic-union-capitals/source.jibb:12:31: second type variable
26+++ local-merge |= x=(choice A B)
27+ ^
28+++ captured-merge: distinct type variables `A` and `B` must not be forced equal; use the same capital for a shared type
29+/tests/golden/types-generic-union-capitals/source.jibb:15:32: first type variable
30+++ captured-merge |= x=(choice A B)
31+ ^
32+/tests/golden/types-generic-union-capitals/source.jibb:15:34: second type variable
33+++ captured-merge |= x=(choice A B)
34+ ^
tests/golden/types-import-duplicate-mark/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Overview, Importing Hoon types: `/%` translates marks; Grammar, Molds: "Faces are part of the type".
2+tests: A mark with a duplicate face in a nested record is reported unsupported where used by the partial checker.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-import-duplicate-mark/mar/duplicate.txtnew file+5
@@ -0,0 +1,5 @@
1+|_ a=[nested=[same=@t same=@ud] id=@ud]
2+++ grab |% ++ noun [nested=[same=@t same=@ud] id=@ud] --
3+++ grow |% ++ noun a --
4+++ grad %noun
5+--
tests/golden/types-import-duplicate-mark/marks.txtnew file+1
@@ -0,0 +1 @@
1+duplicate
tests/golden/types-import-duplicate-mark/source.jibbnew file+2
@@ -0,0 +1,2 @@
1+/% %duplicate
2+++ identity |= x=duplicate x
tests/golden/types-import-duplicate-mark/tokens.txtnew file+11
@@ -0,0 +1,11 @@
1+1:1 glyph /%
2+1:5 lit %duplicate
3+2:1 NEWLINE
4+2:1 glyph ++
5+2:4 name identity
6+2:13 glyph |=
7+2:16 name x
8+2:17 tight glyph =
9+2:18 tight name duplicate
10+2:28 name x
11+2:29 NEWLINE
tests/golden/types-import-duplicate-mark/tree.txtnew file+6
@@ -0,0 +1,6 @@
1+(module
2+ (mark 1:1 %duplicate)
3+ (value 2:1 identity
4+ (gate 2:13
5+ (face 2:16 x (ref 2:18 duplicate))
6+ (wing 2:28 x))))
tests/golden/types-import-duplicate-mark/types.txtnew file+2
@@ -0,0 +1,2 @@
1+partial inference; module not checked
2+++ identity: sample mold is not supported by partial inference
tests/golden/types-import-duplicate-sur/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Molds: "Faces are part of the type"; Overview, Importing Hoon types: "Unused molds are skipped".
2+tests: A used imported Hoon record with duplicate sibling faces, including a nested record, is reported unsupported by the partial checker; identical names at separate nesting levels remain valid and an unselected duplicate mold is skipped.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-import-duplicate-sur/imports.txtnew file+3
@@ -0,0 +1,3 @@
1+fixture direct
2+fixture nested
3+fixture valid
tests/golden/types-import-duplicate-sur/source.jibbnew file+5
@@ -0,0 +1,5 @@
1+/- fixture
2+++ direct-id |= x=direct.fixture x
3+++ nested-id |= x=nested.fixture x
4+++ valid-id |= x=valid.fixture x
5+++ valid-read |= x=valid.fixture same.nested.x
tests/golden/types-import-duplicate-sur/sur/fixture.txtnew file+6
@@ -0,0 +1,6 @@
1+|%
2++$ direct [same=@t same=@ud]
3++$ nested [outer=[same=@t same=@ud] id=@ud]
4++$ valid [same=@t nested=[same=@ud other=@t]]
5++$ unused [same=@t same=@ud]
6+--
tests/golden/types-import-duplicate-sur/tokens.txtnew file+35
@@ -0,0 +1,35 @@
1+1:1 glyph /-
2+1:5 name fixture
3+2:1 NEWLINE
4+2:1 glyph ++
5+2:4 name direct-id
6+2:14 glyph |=
7+2:17 name x
8+2:18 tight glyph =
9+2:19 tight wing direct.fixture
10+2:34 name x
11+3:1 NEWLINE
12+3:1 glyph ++
13+3:4 name nested-id
14+3:14 glyph |=
15+3:17 name x
16+3:18 tight glyph =
17+3:19 tight wing nested.fixture
18+3:34 name x
19+4:1 NEWLINE
20+4:1 glyph ++
21+4:4 name valid-id
22+4:13 glyph |=
23+4:16 name x
24+4:17 tight glyph =
25+4:18 tight wing valid.fixture
26+4:32 name x
27+5:1 NEWLINE
28+5:1 glyph ++
29+5:4 name valid-read
30+5:15 glyph |=
31+5:18 name x
32+5:19 tight glyph =
33+5:20 tight wing valid.fixture
34+5:34 wing same.nested.x
35+5:47 NEWLINE
tests/golden/types-import-duplicate-sur/tree.txtnew file+18
@@ -0,0 +1,18 @@
1+(module
2+ (sur 1:1 fixture)
3+ (value 2:1 direct-id
4+ (gate 2:14
5+ (face 2:17 x (ref 2:19 direct.fixture))
6+ (wing 2:34 x)))
7+ (value 3:1 nested-id
8+ (gate 3:14
9+ (face 3:17 x (ref 3:19 nested.fixture))
10+ (wing 3:34 x)))
11+ (value 4:1 valid-id
12+ (gate 4:13
13+ (face 4:16 x (ref 4:18 valid.fixture))
14+ (wing 4:32 x)))
15+ (value 5:1 valid-read
16+ (gate 5:15
17+ (face 5:18 x (ref 5:20 valid.fixture))
18+ (wing 5:34 same.nested.x))))
tests/golden/types-import-duplicate-sur/types.txtnew file+5
@@ -0,0 +1,5 @@
1+partial inference; module not checked
2+++ direct-id: sample mold is not supported by partial inference
3+++ nested-id: sample mold is not supported by partial inference
4+++ valid-id: $-([same=@t nested=[same=@ud other=@t]] [same=@t nested=[same=@ud other=@t]])
5+++ valid-read: $-([same=@t nested=[same=@ud other=@t]] @ud)
tests/golden/types-list-branch/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Patterns: "Every case needs an arm or a catch-all"; Literals by context: "Where a list is expected, `[x xs]` is `x` in front of `xs`."
2+tests: List casts and known-sample calls provide context through complete loobean, unit and list branches, including recursive and nested forms; bad arms and unrelated constraints fail closed.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-list-branch/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the source-validated prelude.
tests/golden/types-list-branch/source.jibbnew file+81
@@ -0,0 +1,81 @@
1+++ copy |= xs=(list @t)
2+ ^- (list @t)
3+ ?- xs
4+ ~ ~
5+ [item rest] [item (copy rest)]
6+++ copy-reverse |= xs=(list @t)
7+ ^- (list @t)
8+ ?- xs
9+ [item rest] [item (copy-reverse rest)]
10+ ~ ~
11+++ boolean |= b=?
12+ ^- (list @t)
13+ ?- b
14+ %.y ~[]
15+ %.n ["hi" ~]
16+++ unit-branch |= x=(unit @t)
17+ ^- (list @t)
18+ ?- x
19+ ~ ~[]
20+ [~ item] [item ~]
21+++ nested |= xs=(list @t)
22+ ^- (list @t)
23+ ?- xs
24+ ~
25+ ?- %.y
26+ %.y ~[]
27+ %.n ["x" ~]
28+ [item rest] [item (copy rest)]
29+++ consume |= xs=(list @t) xs
30+++ call |= b=?
31+ (consume
32+ ?- b
33+ %.y ~[]
34+ %.n ["hi" ~]
35+++ bad-head |= b=?
36+ ^- (list @t)
37+ ?- b
38+ %.y ~[]
39+ %.n [~zod ~]
40+++ bad-tail |= b=?
41+ ^- (list @t)
42+ ?- b
43+ %.y ["hi" ~zod]
44+ %.n ~[]
45+++ pending |= b=?
46+ ~& %unknown
47+ ^- (list @t)
48+ ?- b
49+ %.y ~[]
50+ %.n ["hi" ~]
51+++ pending-null |= b=?
52+ ~& ~
53+ ^- (list @t)
54+ ?- b
55+ %.y ~[]
56+ %.n ["hi" ~]
57+++ incomplete |= xs=(list @t)
58+ ^- (list @t)
59+ ?- xs
60+ ~ ~[]
61+++ duplicate |= xs=(list @t)
62+ ^- (list @t)
63+ ?- xs
64+ ~ ~[]
65+ ~ ~[]
66+ [item rest] [item ~]
67+++ opposite |= b=?
68+ ^- (list @t)
69+ ?- b
70+ %.y [~zod ~]
71+ %.n ["hi" ~]
72+++ escape |= xs=(list @t)
73+ ^- (list @t)
74+ ?- xs
75+ ~ [item ~]
76+ [item rest] [item ~]
77+++ bad-recursive |= xs=(list @t)
78+ ^- (list @t)
79+ ?- xs
80+ ~ ~[]
81+ [item rest] [item (bad-recursive ~zod)]
tests/golden/types-list-branch/tokens.txtnew file+521
@@ -0,0 +1,521 @@
1+1:1 glyph ++
2+1:4 name copy
3+1:9 glyph |=
4+1:12 name xs
5+1:14 tight glyph =
6+1:15 tight glyph (
7+1:16 tight name list
8+1:21 aura @t
9+1:23 tight glyph )
10+2:3 INDENT
11+2:3 glyph ^-
12+2:6 glyph (
13+2:7 tight name list
14+2:12 aura @t
15+2:14 tight glyph )
16+3:5 INDENT
17+3:5 glyph ?-
18+3:8 name xs
19+4:7 INDENT
20+4:7 lit ~
21+4:9 lit ~
22+5:7 NEWLINE
23+5:7 glyph [
24+5:8 tight name item
25+5:13 name rest
26+5:17 tight glyph ]
27+5:19 glyph [
28+5:20 tight name item
29+5:25 glyph (
30+5:26 tight name copy
31+5:31 name rest
32+5:35 tight glyph )
33+5:36 tight glyph ]
34+6:1 DEDENT
35+6:1 DEDENT
36+6:1 DEDENT
37+6:1 NEWLINE
38+6:1 glyph ++
39+6:4 name copy-reverse
40+6:17 glyph |=
41+6:20 name xs
42+6:22 tight glyph =
43+6:23 tight glyph (
44+6:24 tight name list
45+6:29 aura @t
46+6:31 tight glyph )
47+7:3 INDENT
48+7:3 glyph ^-
49+7:6 glyph (
50+7:7 tight name list
51+7:12 aura @t
52+7:14 tight glyph )
53+8:5 INDENT
54+8:5 glyph ?-
55+8:8 name xs
56+9:7 INDENT
57+9:7 glyph [
58+9:8 tight name item
59+9:13 name rest
60+9:17 tight glyph ]
61+9:19 glyph [
62+9:20 tight name item
63+9:25 glyph (
64+9:26 tight name copy-reverse
65+9:39 name rest
66+9:43 tight glyph )
67+9:44 tight glyph ]
68+10:7 NEWLINE
69+10:7 lit ~
70+10:9 lit ~
71+11:1 DEDENT
72+11:1 DEDENT
73+11:1 DEDENT
74+11:1 NEWLINE
75+11:1 glyph ++
76+11:4 name boolean
77+11:12 glyph |=
78+11:15 name b
79+11:16 tight glyph =
80+11:17 tight glyph ?
81+12:3 INDENT
82+12:3 glyph ^-
83+12:6 glyph (
84+12:7 tight name list
85+12:12 aura @t
86+12:14 tight glyph )
87+13:5 INDENT
88+13:5 glyph ?-
89+13:8 name b
90+14:7 INDENT
91+14:7 lit %.y
92+14:11 glyph ~[
93+14:13 tight glyph ]
94+15:7 NEWLINE
95+15:7 lit %.n
96+15:11 glyph [
97+15:12 tight str "hi"
98+15:17 lit ~
99+15:18 tight glyph ]
100+16:1 DEDENT
101+16:1 DEDENT
102+16:1 DEDENT
103+16:1 NEWLINE
104+16:1 glyph ++
105+16:4 name unit-branch
106+16:16 glyph |=
107+16:19 name x
108+16:20 tight glyph =
109+16:21 tight glyph (
110+16:22 tight name unit
111+16:27 aura @t
112+16:29 tight glyph )
113+17:3 INDENT
114+17:3 glyph ^-
115+17:6 glyph (
116+17:7 tight name list
117+17:12 aura @t
118+17:14 tight glyph )
119+18:5 INDENT
120+18:5 glyph ?-
121+18:8 name x
122+19:7 INDENT
123+19:7 lit ~
124+19:9 glyph ~[
125+19:11 tight glyph ]
126+20:7 NEWLINE
127+20:7 glyph [
128+20:8 tight lit ~
129+20:10 name item
130+20:14 tight glyph ]
131+20:16 glyph [
132+20:17 tight name item
133+20:22 lit ~
134+20:23 tight glyph ]
135+21:1 DEDENT
136+21:1 DEDENT
137+21:1 DEDENT
138+21:1 NEWLINE
139+21:1 glyph ++
140+21:4 name nested
141+21:11 glyph |=
142+21:14 name xs
143+21:16 tight glyph =
144+21:17 tight glyph (
145+21:18 tight name list
146+21:23 aura @t
147+21:25 tight glyph )
148+22:3 INDENT
149+22:3 glyph ^-
150+22:6 glyph (
151+22:7 tight name list
152+22:12 aura @t
153+22:14 tight glyph )
154+23:5 INDENT
155+23:5 glyph ?-
156+23:8 name xs
157+24:7 INDENT
158+24:7 lit ~
159+25:9 INDENT
160+25:9 glyph ?-
161+25:12 lit %.y
162+26:11 INDENT
163+26:11 lit %.y
164+26:15 glyph ~[
165+26:17 tight glyph ]
166+27:11 NEWLINE
167+27:11 lit %.n
168+27:15 glyph [
169+27:16 tight str "x"
170+27:20 lit ~
171+27:21 tight glyph ]
172+28:7 DEDENT
173+28:7 DEDENT
174+28:7 NEWLINE
175+28:7 glyph [
176+28:8 tight name item
177+28:13 name rest
178+28:17 tight glyph ]
179+28:19 glyph [
180+28:20 tight name item
181+28:25 glyph (
182+28:26 tight name copy
183+28:31 name rest
184+28:35 tight glyph )
185+28:36 tight glyph ]
186+29:1 DEDENT
187+29:1 DEDENT
188+29:1 DEDENT
189+29:1 NEWLINE
190+29:1 glyph ++
191+29:4 name consume
192+29:12 glyph |=
193+29:15 name xs
194+29:17 tight glyph =
195+29:18 tight glyph (
196+29:19 tight name list
197+29:24 aura @t
198+29:26 tight glyph )
199+29:28 name xs
200+30:1 NEWLINE
201+30:1 glyph ++
202+30:4 name call
203+30:9 glyph |=
204+30:12 name b
205+30:13 tight glyph =
206+30:14 tight glyph ?
207+31:3 INDENT
208+31:3 glyph (
209+31:4 tight name consume
210+32:5 INDENT
211+32:5 glyph ?-
212+32:8 name b
213+33:7 INDENT
214+33:7 lit %.y
215+33:11 glyph ~[
216+33:13 tight glyph ]
217+34:7 NEWLINE
218+34:7 lit %.n
219+34:11 glyph [
220+34:12 tight str "hi"
221+34:17 lit ~
222+34:18 tight glyph ]
223+35:1 DEDENT
224+35:1 DEDENT
225+35:1 DEDENT
226+35:1 NEWLINE
227+35:1 glyph ++
228+35:4 name bad-head
229+35:13 glyph |=
230+35:16 name b
231+35:17 tight glyph =
232+35:18 tight glyph ?
233+36:3 INDENT
234+36:3 glyph ^-
235+36:6 glyph (
236+36:7 tight name list
237+36:12 aura @t
238+36:14 tight glyph )
239+37:5 INDENT
240+37:5 glyph ?-
241+37:8 name b
242+38:7 INDENT
243+38:7 lit %.y
244+38:11 glyph ~[
245+38:13 tight glyph ]
246+39:7 NEWLINE
247+39:7 lit %.n
248+39:11 glyph [
249+39:12 tight lit ~zod
250+39:17 lit ~
251+39:18 tight glyph ]
252+40:1 DEDENT
253+40:1 DEDENT
254+40:1 DEDENT
255+40:1 NEWLINE
256+40:1 glyph ++
257+40:4 name bad-tail
258+40:13 glyph |=
259+40:16 name b
260+40:17 tight glyph =
261+40:18 tight glyph ?
262+41:3 INDENT
263+41:3 glyph ^-
264+41:6 glyph (
265+41:7 tight name list
266+41:12 aura @t
267+41:14 tight glyph )
268+42:5 INDENT
269+42:5 glyph ?-
270+42:8 name b
271+43:7 INDENT
272+43:7 lit %.y
273+43:11 glyph [
274+43:12 tight str "hi"
275+43:17 lit ~zod
276+43:21 tight glyph ]
277+44:7 NEWLINE
278+44:7 lit %.n
279+44:11 glyph ~[
280+44:13 tight glyph ]
281+45:1 DEDENT
282+45:1 DEDENT
283+45:1 DEDENT
284+45:1 NEWLINE
285+45:1 glyph ++
286+45:4 name pending
287+45:12 glyph |=
288+45:15 name b
289+45:16 tight glyph =
290+45:17 tight glyph ?
291+46:3 INDENT
292+46:3 glyph ~&
293+46:6 lit %unknown
294+47:5 INDENT
295+47:5 glyph ^-
296+47:8 glyph (
297+47:9 tight name list
298+47:14 aura @t
299+47:16 tight glyph )
300+48:7 INDENT
301+48:7 glyph ?-
302+48:10 name b
303+49:9 INDENT
304+49:9 lit %.y
305+49:13 glyph ~[
306+49:15 tight glyph ]
307+50:9 NEWLINE
308+50:9 lit %.n
309+50:13 glyph [
310+50:14 tight str "hi"
311+50:19 lit ~
312+50:20 tight glyph ]
313+51:1 DEDENT
314+51:1 DEDENT
315+51:1 DEDENT
316+51:1 DEDENT
317+51:1 NEWLINE
318+51:1 glyph ++
319+51:4 name pending-null
320+51:17 glyph |=
321+51:20 name b
322+51:21 tight glyph =
323+51:22 tight glyph ?
324+52:3 INDENT
325+52:3 glyph ~&
326+52:6 lit ~
327+53:5 INDENT
328+53:5 glyph ^-
329+53:8 glyph (
330+53:9 tight name list
331+53:14 aura @t
332+53:16 tight glyph )
333+54:7 INDENT
334+54:7 glyph ?-
335+54:10 name b
336+55:9 INDENT
337+55:9 lit %.y
338+55:13 glyph ~[
339+55:15 tight glyph ]
340+56:9 NEWLINE
341+56:9 lit %.n
342+56:13 glyph [
343+56:14 tight str "hi"
344+56:19 lit ~
345+56:20 tight glyph ]
346+57:1 DEDENT
347+57:1 DEDENT
348+57:1 DEDENT
349+57:1 DEDENT
350+57:1 NEWLINE
351+57:1 glyph ++
352+57:4 name incomplete
353+57:15 glyph |=
354+57:18 name xs
355+57:20 tight glyph =
356+57:21 tight glyph (
357+57:22 tight name list
358+57:27 aura @t
359+57:29 tight glyph )
360+58:3 INDENT
361+58:3 glyph ^-
362+58:6 glyph (
363+58:7 tight name list
364+58:12 aura @t
365+58:14 tight glyph )
366+59:5 INDENT
367+59:5 glyph ?-
368+59:8 name xs
369+60:7 INDENT
370+60:7 lit ~
371+60:9 glyph ~[
372+60:11 tight glyph ]
373+61:1 DEDENT
374+61:1 DEDENT
375+61:1 DEDENT
376+61:1 NEWLINE
377+61:1 glyph ++
378+61:4 name duplicate
379+61:14 glyph |=
380+61:17 name xs
381+61:19 tight glyph =
382+61:20 tight glyph (
383+61:21 tight name list
384+61:26 aura @t
385+61:28 tight glyph )
386+62:3 INDENT
387+62:3 glyph ^-
388+62:6 glyph (
389+62:7 tight name list
390+62:12 aura @t
391+62:14 tight glyph )
392+63:5 INDENT
393+63:5 glyph ?-
394+63:8 name xs
395+64:7 INDENT
396+64:7 lit ~
397+64:9 glyph ~[
398+64:11 tight glyph ]
399+65:7 NEWLINE
400+65:7 lit ~
401+65:9 glyph ~[
402+65:11 tight glyph ]
403+66:7 NEWLINE
404+66:7 glyph [
405+66:8 tight name item
406+66:13 name rest
407+66:17 tight glyph ]
408+66:19 glyph [
409+66:20 tight name item
410+66:25 lit ~
411+66:26 tight glyph ]
412+67:1 DEDENT
413+67:1 DEDENT
414+67:1 DEDENT
415+67:1 NEWLINE
416+67:1 glyph ++
417+67:4 name opposite
418+67:13 glyph |=
419+67:16 name b
420+67:17 tight glyph =
421+67:18 tight glyph ?
422+68:3 INDENT
423+68:3 glyph ^-
424+68:6 glyph (
425+68:7 tight name list
426+68:12 aura @t
427+68:14 tight glyph )
428+69:5 INDENT
429+69:5 glyph ?-
430+69:8 name b
431+70:7 INDENT
432+70:7 lit %.y
433+70:11 glyph [
434+70:12 tight lit ~zod
435+70:17 lit ~
436+70:18 tight glyph ]
437+71:7 NEWLINE
438+71:7 lit %.n
439+71:11 glyph [
440+71:12 tight str "hi"
441+71:17 lit ~
442+71:18 tight glyph ]
443+72:1 DEDENT
444+72:1 DEDENT
445+72:1 DEDENT
446+72:1 NEWLINE
447+72:1 glyph ++
448+72:4 name escape
449+72:11 glyph |=
450+72:14 name xs
451+72:16 tight glyph =
452+72:17 tight glyph (
453+72:18 tight name list
454+72:23 aura @t
455+72:25 tight glyph )
456+73:3 INDENT
457+73:3 glyph ^-
458+73:6 glyph (
459+73:7 tight name list
460+73:12 aura @t
461+73:14 tight glyph )
462+74:5 INDENT
463+74:5 glyph ?-
464+74:8 name xs
465+75:7 INDENT
466+75:7 lit ~
467+75:9 glyph [
468+75:10 tight name item
469+75:15 lit ~
470+75:16 tight glyph ]
471+76:7 NEWLINE
472+76:7 glyph [
473+76:8 tight name item
474+76:13 name rest
475+76:17 tight glyph ]
476+76:19 glyph [
477+76:20 tight name item
478+76:25 lit ~
479+76:26 tight glyph ]
480+77:1 DEDENT
481+77:1 DEDENT
482+77:1 DEDENT
483+77:1 NEWLINE
484+77:1 glyph ++
485+77:4 name bad-recursive
486+77:18 glyph |=
487+77:21 name xs
488+77:23 tight glyph =
489+77:24 tight glyph (
490+77:25 tight name list
491+77:30 aura @t
492+77:32 tight glyph )
493+78:3 INDENT
494+78:3 glyph ^-
495+78:6 glyph (
496+78:7 tight name list
497+78:12 aura @t
498+78:14 tight glyph )
499+79:5 INDENT
500+79:5 glyph ?-
501+79:8 name xs
502+80:7 INDENT
503+80:7 lit ~
504+80:9 glyph ~[
505+80:11 tight glyph ]
506+81:7 NEWLINE
507+81:7 glyph [
508+81:8 tight name item
509+81:13 name rest
510+81:17 tight glyph ]
511+81:19 glyph [
512+81:20 tight name item
513+81:25 glyph (
514+81:26 tight name bad-recursive
515+81:40 lit ~zod
516+81:44 tight glyph )
517+81:45 tight glyph ]
518+81:46 DEDENT
519+81:46 DEDENT
520+81:46 DEDENT
521+81:46 NEWLINE
tests/golden/types-list-branch/tree.txtnew file+237
@@ -0,0 +1,237 @@
1+(module
2+ (value 1:1 copy
3+ (gate 1:9
4+ (face 1:12 xs
5+ (apply 1:15 list (aura 1:21 @t)))
6+ (body 2:3
7+ (cast 2:3
8+ (apply 2:6 list (aura 2:12 @t))
9+ (body 3:5
10+ (branch 3:5
11+ (wing 3:8 xs)
12+ (arm 4:7 (lit 4:7 ~) (lit 4:9 ~))
13+ (arm 5:7
14+ (cell 5:7 (bind 5:8 item) (bind 5:13 rest))
15+ (tuple 5:19
16+ (wing 5:20 item)
17+ (group 5:25
18+ (call 5:26 (wing 5:26 copy) (wing 5:31 rest)))))))))))
19+ (value 6:1 copy-reverse
20+ (gate 6:17
21+ (face 6:20 xs
22+ (apply 6:23 list (aura 6:29 @t)))
23+ (body 7:3
24+ (cast 7:3
25+ (apply 7:6 list (aura 7:12 @t))
26+ (body 8:5
27+ (branch 8:5
28+ (wing 8:8 xs)
29+ (arm 9:7
30+ (cell 9:7 (bind 9:8 item) (bind 9:13 rest))
31+ (tuple 9:19
32+ (wing 9:20 item)
33+ (group 9:25
34+ (call 9:26 (wing 9:26 copy-reverse) (wing 9:39 rest)))))
35+ (arm 10:7 (lit 10:7 ~) (lit 10:9 ~))))))))
36+ (value 11:1 boolean
37+ (gate 11:12
38+ (face 11:15 b (flag 11:17))
39+ (body 12:3
40+ (cast 12:3
41+ (apply 12:6 list (aura 12:12 @t))
42+ (body 13:5
43+ (branch 13:5
44+ (wing 13:8 b)
45+ (arm 14:7 (lit 14:7 %.y) (list 14:11))
46+ (arm 15:7
47+ (lit 15:7 %.n)
48+ (tuple 15:11 (str 15:12 "hi") (lit 15:17 ~)))))))))
49+ (value 16:1 unit-branch
50+ (gate 16:16
51+ (face 16:19 x
52+ (apply 16:21 unit (aura 16:27 @t)))
53+ (body 17:3
54+ (cast 17:3
55+ (apply 17:6 list (aura 17:12 @t))
56+ (body 18:5
57+ (branch 18:5
58+ (wing 18:8 x)
59+ (arm 19:7 (lit 19:7 ~) (list 19:9))
60+ (arm 20:7
61+ (cell 20:7 (lit 20:8 ~) (bind 20:10 item))
62+ (tuple 20:16 (wing 20:17 item) (lit 20:22 ~)))))))))
63+ (value 21:1 nested
64+ (gate 21:11
65+ (face 21:14 xs
66+ (apply 21:17 list (aura 21:23 @t)))
67+ (body 22:3
68+ (cast 22:3
69+ (apply 22:6 list (aura 22:12 @t))
70+ (body 23:5
71+ (branch 23:5
72+ (wing 23:8 xs)
73+ (arm 24:7
74+ (lit 24:7 ~)
75+ (body 25:9
76+ (branch 25:9
77+ (lit 25:12 %.y)
78+ (arm 26:11 (lit 26:11 %.y) (list 26:15))
79+ (arm 27:11
80+ (lit 27:11 %.n)
81+ (tuple 27:15 (str 27:16 "x") (lit 27:20 ~))))))
82+ (arm 28:7
83+ (cell 28:7 (bind 28:8 item) (bind 28:13 rest))
84+ (tuple 28:19
85+ (wing 28:20 item)
86+ (group 28:25
87+ (call 28:26 (wing 28:26 copy) (wing 28:31 rest)))))))))))
88+ (value 29:1 consume
89+ (gate 29:12
90+ (face 29:15 xs
91+ (apply 29:18 list (aura 29:24 @t)))
92+ (wing 29:28 xs)))
93+ (value 30:1 call
94+ (gate 30:9
95+ (face 30:12 b (flag 30:14))
96+ (body 31:3
97+ (group 31:3
98+ (call 31:4
99+ (wing 31:4 consume)
100+ (branch 32:5
101+ (wing 32:8 b)
102+ (arm 33:7 (lit 33:7 %.y) (list 33:11))
103+ (arm 34:7
104+ (lit 34:7 %.n)
105+ (tuple 34:11 (str 34:12 "hi") (lit 34:17 ~)))))))))
106+ (value 35:1 bad-head
107+ (gate 35:13
108+ (face 35:16 b (flag 35:18))
109+ (body 36:3
110+ (cast 36:3
111+ (apply 36:6 list (aura 36:12 @t))
112+ (body 37:5
113+ (branch 37:5
114+ (wing 37:8 b)
115+ (arm 38:7 (lit 38:7 %.y) (list 38:11))
116+ (arm 39:7
117+ (lit 39:7 %.n)
118+ (tuple 39:11 (lit 39:12 ~zod) (lit 39:17 ~)))))))))
119+ (value 40:1 bad-tail
120+ (gate 40:13
121+ (face 40:16 b (flag 40:18))
122+ (body 41:3
123+ (cast 41:3
124+ (apply 41:6 list (aura 41:12 @t))
125+ (body 42:5
126+ (branch 42:5
127+ (wing 42:8 b)
128+ (arm 43:7
129+ (lit 43:7 %.y)
130+ (tuple 43:11 (str 43:12 "hi") (lit 43:17 ~zod)))
131+ (arm 44:7 (lit 44:7 %.n) (list 44:11))))))))
132+ (value 45:1 pending
133+ (gate 45:12
134+ (face 45:15 b (flag 45:17))
135+ (body 46:3
136+ (trace 46:3
137+ (lit 46:6 %unknown)
138+ (body 47:5
139+ (cast 47:5
140+ (apply 47:8 list (aura 47:14 @t))
141+ (body 48:7
142+ (branch 48:7
143+ (wing 48:10 b)
144+ (arm 49:9 (lit 49:9 %.y) (list 49:13))
145+ (arm 50:9
146+ (lit 50:9 %.n)
147+ (tuple 50:13 (str 50:14 "hi") (lit 50:19 ~)))))))))))
148+ (value 51:1 pending-null
149+ (gate 51:17
150+ (face 51:20 b (flag 51:22))
151+ (body 52:3
152+ (trace 52:3
153+ (lit 52:6 ~)
154+ (body 53:5
155+ (cast 53:5
156+ (apply 53:8 list (aura 53:14 @t))
157+ (body 54:7
158+ (branch 54:7
159+ (wing 54:10 b)
160+ (arm 55:9 (lit 55:9 %.y) (list 55:13))
161+ (arm 56:9
162+ (lit 56:9 %.n)
163+ (tuple 56:13 (str 56:14 "hi") (lit 56:19 ~)))))))))))
164+ (value 57:1 incomplete
165+ (gate 57:15
166+ (face 57:18 xs
167+ (apply 57:21 list (aura 57:27 @t)))
168+ (body 58:3
169+ (cast 58:3
170+ (apply 58:6 list (aura 58:12 @t))
171+ (body 59:5
172+ (branch 59:5
173+ (wing 59:8 xs)
174+ (arm 60:7 (lit 60:7 ~) (list 60:9))))))))
175+ (value 61:1 duplicate
176+ (gate 61:14
177+ (face 61:17 xs
178+ (apply 61:20 list (aura 61:26 @t)))
179+ (body 62:3
180+ (cast 62:3
181+ (apply 62:6 list (aura 62:12 @t))
182+ (body 63:5
183+ (branch 63:5
184+ (wing 63:8 xs)
185+ (arm 64:7 (lit 64:7 ~) (list 64:9))
186+ (arm 65:7 (lit 65:7 ~) (list 65:9))
187+ (arm 66:7
188+ (cell 66:7 (bind 66:8 item) (bind 66:13 rest))
189+ (tuple 66:19 (wing 66:20 item) (lit 66:25 ~)))))))))
190+ (value 67:1 opposite
191+ (gate 67:13
192+ (face 67:16 b (flag 67:18))
193+ (body 68:3
194+ (cast 68:3
195+ (apply 68:6 list (aura 68:12 @t))
196+ (body 69:5
197+ (branch 69:5
198+ (wing 69:8 b)
199+ (arm 70:7
200+ (lit 70:7 %.y)
201+ (tuple 70:11 (lit 70:12 ~zod) (lit 70:17 ~)))
202+ (arm 71:7
203+ (lit 71:7 %.n)
204+ (tuple 71:11 (str 71:12 "hi") (lit 71:17 ~)))))))))
205+ (value 72:1 escape
206+ (gate 72:11
207+ (face 72:14 xs
208+ (apply 72:17 list (aura 72:23 @t)))
209+ (body 73:3
210+ (cast 73:3
211+ (apply 73:6 list (aura 73:12 @t))
212+ (body 74:5
213+ (branch 74:5
214+ (wing 74:8 xs)
215+ (arm 75:7
216+ (lit 75:7 ~)
217+ (tuple 75:9 (wing 75:10 item) (lit 75:15 ~)))
218+ (arm 76:7
219+ (cell 76:7 (bind 76:8 item) (bind 76:13 rest))
220+ (tuple 76:19 (wing 76:20 item) (lit 76:25 ~)))))))))
221+ (value 77:1 bad-recursive
222+ (gate 77:18
223+ (face 77:21 xs
224+ (apply 77:24 list (aura 77:30 @t)))
225+ (body 78:3
226+ (cast 78:3
227+ (apply 78:6 list (aura 78:12 @t))
228+ (body 79:5
229+ (branch 79:5
230+ (wing 79:8 xs)
231+ (arm 80:7 (lit 80:7 ~) (list 80:9))
232+ (arm 81:7
233+ (cell 81:7 (bind 81:8 item) (bind 81:13 rest))
234+ (tuple 81:19
235+ (wing 81:20 item)
236+ (group 81:25
237+ (call 81:26 (wing 81:26 bad-recursive) (lit 81:40 ~zod))))))))))))
tests/golden/types-list-branch/types.txtnew file+35
@@ -0,0 +1,35 @@
1+partial inference; module not checked
2+++ copy: $-((list @t) (list @t))
3+++ copy-reverse: $-((list @t) (list @t))
4+++ boolean: $-(? (list @t))
5+++ unit-branch: $-((unit @t) (list @t))
6+++ nested: $-((list @t) (list @t))
7+++ consume: $-((list @t) (list @t))
8+++ call: $-(? (list @t))
9+++ bad-head: list item does not fit its expected type
10+/tests/golden/types-list-branch/source.jibb:36:6: expected item has type @t
11+ ^- (list @t)
12+ ^
13+/tests/golden/types-list-branch/source.jibb:39:12: list item has type @p
14+ %.n [~zod ~]
15+ ^
16+++ bad-tail: list tail does not fit its expected type
17+/tests/golden/types-list-branch/source.jibb:41:6: expected list has type (list @t)
18+ ^- (list @t)
19+ ^
20+/tests/golden/types-list-branch/source.jibb:43:17: list tail has type @p
21+ %.y ["hi" ~zod]
22+ ^
23+++ pending: tag needs context in partial inference
24+++ pending-null: `~` needs context in partial inference
25+++ incomplete: branch pattern is not supported by partial inference
26+++ duplicate: branch is not supported by partial inference
27+++ opposite: list item does not fit its expected type
28+/tests/golden/types-list-branch/source.jibb:68:6: expected item has type @t
29+ ^- (list @t)
30+ ^
31+/tests/golden/types-list-branch/source.jibb:70:12: list item has type @p
32+ %.y [~zod ~]
33+ ^
34+++ escape: name is not available to partial inference
35+++ bad-recursive: recursive gate constraint is not supported by partial inference
tests/golden/types-list-imported/about.txt+1−1
@@ -1,4 +1,4 @@
11source: Overview, Importing Hoon types: "`/-` and `/%` translate each mold a module uses from `/sur` files and marks"; Grammar, Molds: containers include `(list A)`.
2−tests: A real Hoon list import and the prelude list type agree in both directions, list literals, null and cons cells fit imported contexts, and incompatible element types report both sites.
2+tests: A real Hoon list import and the prelude list type agree in both directions, list literals, null, cons cells and branch results fit imported contexts, and incompatible element types report both sites.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-list-imported/source.jibb+5
@@ -7,3 +7,8 @@
77++ cons (take ["hi" ~])
88++ empty ^- texts.fixture ~
99++ bad-cons ^- texts.fixture [~zod ~]
10+++ branch |= b=?
11+ ^- texts.fixture
12+ ?- b
13+ %.y ~[]
14+ %.n ["hi" ~]
tests/golden/types-list-imported/tokens.txt+27−1
@@ -80,4 +80,30 @@
80809:31 tight lit ~zod
81819:36 lit ~
82829:37 tight glyph ]
83−9:38 NEWLINE
83+10:1 NEWLINE
84+10:1 glyph ++
85+10:4 name branch
86+10:11 glyph |=
87+10:14 name b
88+10:15 tight glyph =
89+10:16 tight glyph ?
90+11:3 INDENT
91+11:3 glyph ^-
92+11:6 wing texts.fixture
93+12:5 INDENT
94+12:5 glyph ?-
95+12:8 name b
96+13:7 INDENT
97+13:7 lit %.y
98+13:11 glyph ~[
99+13:13 tight glyph ]
100+14:7 NEWLINE
101+14:7 lit %.n
102+14:11 glyph [
103+14:12 tight str "hi"
104+14:17 lit ~
105+14:18 tight glyph ]
106+14:19 DEDENT
107+14:19 DEDENT
108+14:19 DEDENT
109+14:19 NEWLINE
tests/golden/types-list-imported/tree.txt+14−1
@@ -36,4 +36,17 @@
3636 (value 9:1 bad-cons
3737 (cast 9:13
3838 (ref 9:16 texts.fixture)
39− (tuple 9:30 (lit 9:31 ~zod) (lit 9:36 ~)))))
39+ (tuple 9:30 (lit 9:31 ~zod) (lit 9:36 ~))))
40+ (value 10:1 branch
41+ (gate 10:11
42+ (face 10:14 b (flag 10:16))
43+ (body 11:3
44+ (cast 11:3
45+ (ref 11:6 texts.fixture)
46+ (body 12:5
47+ (branch 12:5
48+ (wing 12:8 b)
49+ (arm 13:7 (lit 13:7 %.y) (list 13:11))
50+ (arm 14:7
51+ (lit 14:7 %.n)
52+ (tuple 14:11 (str 14:12 "hi") (lit 14:17 ~))))))))))
tests/golden/types-list-imported/types.txt+1
@@ -19,3 +19,4 @@ partial inference; module not checked
1919/tests/golden/types-list-imported/source.jibb:9:31: list item has type @p
2020++ bad-cons ^- texts.fixture [~zod ~]
2121 ^
22+++ branch: $-(? (list @t))
tests/lib/jibb-module-scope.hoon+1−1
@@ -54,7 +54,7 @@
5454::
5555++ list-guard
5656 ^- @t
57− =/ source=@t (crip "/- fixture\0a++ imported |= x=texts.fixture x\0a++ imported-cons ^- texts.fixture [\"hi\" ~]\0a++ imported-empty ^- texts.fixture ~\0a++ imported-pattern |= xs=texts.fixture\0a ?- xs\0a ~ !!\0a [item rest] item\0a++ imported-literal ^- texts.fixture ~[\"hi\"]\0a++ literal ^- (list @t) ~[\"hi\"]\0a++ bridge |= x=texts.fixture ^- (list @t) x\0a")
57+ =/ source=@t (crip "/- fixture\0a++ imported |= x=texts.fixture x\0a++ imported-branch |= b=?\0a ^- texts.fixture\0a ?- b\0a %.y ~[]\0a %.n [\"hi\" ~]\0a++ imported-cons ^- texts.fixture [\"hi\" ~]\0a++ imported-empty ^- texts.fixture ~\0a++ imported-pattern |= xs=texts.fixture\0a ?- xs\0a ~ !!\0a [item rest] item\0a++ imported-literal ^- texts.fixture ~[\"hi\"]\0a++ literal ^- (list @t) ~[\"hi\"]\0a++ bridge |= x=texts.fixture ^- (list @t) x\0a")
5858 =/ ext=(list [module=term name=term result=*])
5959 ~[[%fixture %texts [%& [%apply %list ~[[%atom %t ~]]]]]]
6060 =/ omitted=@t (crip "++ same |=(x x)\0a")
tests/lib/jibb.hoon+587−559
@@ -1315,464 +1315,484 @@
13151315/* tok-403 %txt /tests/golden/prelude-unit-list-transforms/tokens/txt
13161316/* tre-403 %txt /tests/golden/prelude-unit-list-transforms/tree/txt
13171317/* typ-403 %txt /tests/golden/prelude-unit-list-transforms/types/txt
1318−/* src-404 %jibb /tests/golden/types-generic-arity/source/jibb
1319−/* tok-404 %txt /tests/golden/types-generic-arity/tokens/txt
1320−/* tre-404 %txt /tests/golden/types-generic-arity/tree/txt
1321−/* typ-404 %txt /tests/golden/types-generic-arity/types/txt
1322−/* src-405 %jibb /tests/golden/types-generic-face-inference/source/jibb
1323−/* tok-405 %txt /tests/golden/types-generic-face-inference/tokens/txt
1324−/* tre-405 %txt /tests/golden/types-generic-face-inference/tree/txt
1325−/* typ-405 %txt /tests/golden/types-generic-face-inference/types/txt
1326−/* src-406 %jibb /tests/golden/types-generic-gates/source/jibb
1327−/* tok-406 %txt /tests/golden/types-generic-gates/tokens/txt
1328−/* tre-406 %txt /tests/golden/types-generic-gates/tree/txt
1329−/* typ-406 %txt /tests/golden/types-generic-gates/types/txt
1330−/* src-407 %jibb /tests/golden/types-generic-import-reverse/source/jibb
1331−/* tok-407 %txt /tests/golden/types-generic-import-reverse/tokens/txt
1332−/* tre-407 %txt /tests/golden/types-generic-import-reverse/tree/txt
1333−/* mod-407-1 %jibb /tests/golden/types-generic-import-reverse/modules/ui/lib/jibb
1334−/* typ-407 %txt /tests/golden/types-generic-import-reverse/types/txt
1335−/* mtre-407 %txt /tests/golden/types-generic-import-reverse/module-trees/txt
1336−/* src-408 %jibb /tests/golden/types-generic-lexical-alias/source/jibb
1337−/* tok-408 %txt /tests/golden/types-generic-lexical-alias/tokens/txt
1338−/* tre-408 %txt /tests/golden/types-generic-lexical-alias/tree/txt
1339−/* typ-408 %txt /tests/golden/types-generic-lexical-alias/types/txt
1340−/* src-409 %jibb /tests/golden/types-generic-local-parameter/source/jibb
1341−/* tok-409 %txt /tests/golden/types-generic-local-parameter/tokens/txt
1342−/* tre-409 %txt /tests/golden/types-generic-local-parameter/tree/txt
1343−/* typ-409 %txt /tests/golden/types-generic-local-parameter/types/txt
1344−/* src-410 %jibb /tests/golden/types-generic-local-scope/source/jibb
1345−/* tok-410 %txt /tests/golden/types-generic-local-scope/tokens/txt
1346−/* tre-410 %txt /tests/golden/types-generic-local-scope/tree/txt
1347−/* typ-410 %txt /tests/golden/types-generic-local-scope/types/txt
1348−/* src-411 %jibb /tests/golden/types-generic-module/source/jibb
1349−/* tok-411 %txt /tests/golden/types-generic-module/tokens/txt
1350−/* tre-411 %txt /tests/golden/types-generic-module/tree/txt
1351−/* mod-411-1 %jibb /tests/golden/types-generic-module/modules/ui/lib/jibb
1352−/* typ-411 %txt /tests/golden/types-generic-module/types/txt
1353−/* mtre-411 %txt /tests/golden/types-generic-module/module-trees/txt
1354−/* src-412 %jibb /tests/golden/types-generic-nested-scope/source/jibb
1355−/* tok-412 %txt /tests/golden/types-generic-nested-scope/tokens/txt
1356−/* tre-412 %txt /tests/golden/types-generic-nested-scope/tree/txt
1357−/* typ-412 %txt /tests/golden/types-generic-nested-scope/types/txt
1358−/* src-413 %jibb /tests/golden/types-generic-parameters/source/jibb
1359−/* tok-413 %txt /tests/golden/types-generic-parameters/tokens/txt
1360−/* tre-413 %txt /tests/golden/types-generic-parameters/tree/txt
1361−/* typ-413 %txt /tests/golden/types-generic-parameters/types/txt
1362−/* src-414 %jibb /tests/golden/types-generic-record/source/jibb
1363−/* tok-414 %txt /tests/golden/types-generic-record/tokens/txt
1364−/* tre-414 %txt /tests/golden/types-generic-record/tree/txt
1365−/* typ-414 %txt /tests/golden/types-generic-record/types/txt
1366−/* src-415 %jibb /tests/golden/types-generic-recursive-union/source/jibb
1367−/* tok-415 %txt /tests/golden/types-generic-recursive-union/tokens/txt
1368−/* tre-415 %txt /tests/golden/types-generic-recursive-union/tree/txt
1369−/* typ-415 %txt /tests/golden/types-generic-recursive-union/types/txt
1370−/* src-416 %jibb /tests/golden/types-generic-repeated/source/jibb
1371−/* tok-416 %txt /tests/golden/types-generic-repeated/tokens/txt
1372−/* tre-416 %txt /tests/golden/types-generic-repeated/tree/txt
1373−/* typ-416 %txt /tests/golden/types-generic-repeated/types/txt
1374−/* src-417 %jibb /tests/golden/types-generic-union-alias/source/jibb
1375−/* tok-417 %txt /tests/golden/types-generic-union-alias/tokens/txt
1376−/* tre-417 %txt /tests/golden/types-generic-union-alias/tree/txt
1377−/* typ-417 %txt /tests/golden/types-generic-union-alias/types/txt
1378−/* src-418 %jibb /tests/golden/types-generic-union-alias-face/source/jibb
1379−/* tok-418 %txt /tests/golden/types-generic-union-alias-face/tokens/txt
1380−/* tre-418 %txt /tests/golden/types-generic-union-alias-face/tree/txt
1381−/* mod-418-1 %jibb /tests/golden/types-generic-union-alias-face/modules/ui/base/jibb
1382−/* typ-418 %txt /tests/golden/types-generic-union-alias-face/types/txt
1383−/* mtre-418 %txt /tests/golden/types-generic-union-alias-face/module-trees/txt
1384−/* src-419 %jibb /tests/golden/types-generic-union-capitals/source/jibb
1385−/* tok-419 %txt /tests/golden/types-generic-union-capitals/tokens/txt
1386−/* tre-419 %txt /tests/golden/types-generic-union-capitals/tree/txt
1387−/* typ-419 %txt /tests/golden/types-generic-union-capitals/types/txt
1388−/* src-420 %jibb /tests/golden/types-generic-union-errors/source/jibb
1389−/* tok-420 %txt /tests/golden/types-generic-union-errors/tokens/txt
1390−/* tre-420 %txt /tests/golden/types-generic-union-errors/tree/txt
1391−/* typ-420 %txt /tests/golden/types-generic-union-errors/types/txt
1392−/* src-421 %jibb /tests/golden/types-generic-union-escaping/source/jibb
1393−/* tok-421 %txt /tests/golden/types-generic-union-escaping/tokens/txt
1394−/* tre-421 %txt /tests/golden/types-generic-union-escaping/tree/txt
1395−/* mod-421-1 %jibb /tests/golden/types-generic-union-escaping/modules/ui/base/jibb
1396−/* mod-421-2 %jibb /tests/golden/types-generic-union-escaping/modules/ui/mid/jibb
1397−/* typ-421 %txt /tests/golden/types-generic-union-escaping/types/txt
1398−/* mtre-421 %txt /tests/golden/types-generic-union-escaping/module-trees/txt
1399−/* src-422 %jibb /tests/golden/types-generic-union-import/source/jibb
1400−/* tok-422 %txt /tests/golden/types-generic-union-import/tokens/txt
1401−/* tre-422 %txt /tests/golden/types-generic-union-import/tree/txt
1402−/* mod-422-1 %jibb /tests/golden/types-generic-union-import/modules/ui/shared/jibb
1403−/* mod-422-2 %jibb /tests/golden/types-generic-union-import/modules/ui/twin/jibb
1404−/* typ-422 %txt /tests/golden/types-generic-union-import/types/txt
1405−/* mtre-422 %txt /tests/golden/types-generic-union-import/module-trees/txt
1406−/* src-423 %jibb /tests/golden/types-generic-union-local/source/jibb
1407−/* tok-423 %txt /tests/golden/types-generic-union-local/tokens/txt
1408−/* tre-423 %txt /tests/golden/types-generic-union-local/tree/txt
1409−/* typ-423 %txt /tests/golden/types-generic-union-local/types/txt
1410−/* src-424 %jibb /tests/golden/types-generic-union-transitive/source/jibb
1411−/* tok-424 %txt /tests/golden/types-generic-union-transitive/tokens/txt
1412−/* tre-424 %txt /tests/golden/types-generic-union-transitive/tree/txt
1413−/* mod-424-1 %jibb /tests/golden/types-generic-union-transitive/modules/ui/base/jibb
1414−/* mod-424-2 %jibb /tests/golden/types-generic-union-transitive/modules/ui/mid/jibb
1415−/* typ-424 %txt /tests/golden/types-generic-union-transitive/types/txt
1416−/* mtre-424 %txt /tests/golden/types-generic-union-transitive/module-trees/txt
1417−/* src-425 %jibb /tests/golden/types-import-mark/source/jibb
1418−/* tok-425 %txt /tests/golden/types-import-mark/tokens/txt
1419−/* tre-425 %txt /tests/golden/types-import-mark/tree/txt
1420−/* typ-425 %txt /tests/golden/types-import-mark/types/txt
1421−/* imp-425-1 %txt /tests/golden/types-import-mark/sur/fixture/txt
1422−/* mark-425-1 %txt /tests/golden/types-import-mark/mar/label/txt
1423−/* src-426 %jibb /tests/golden/types-import-mark-record/source/jibb
1424−/* tok-426 %txt /tests/golden/types-import-mark-record/tokens/txt
1425−/* tre-426 %txt /tests/golden/types-import-mark-record/tree/txt
1426−/* typ-426 %txt /tests/golden/types-import-mark-record/types/txt
1427−/* mark-426-1 %txt /tests/golden/types-import-mark-record/mar/note/txt
1428−/* mark-426-2 %txt /tests/golden/types-import-mark-record/mar/choice/txt
1429−/* src-427 %jibb /tests/golden/types-import-missing-mold/source/jibb
1430−/* tok-427 %txt /tests/golden/types-import-missing-mold/tokens/txt
1431−/* tre-427 %txt /tests/golden/types-import-missing-mold/tree/txt
1432−/* typ-427 %txt /tests/golden/types-import-missing-mold/types/txt
1433−/* imp-427-1 %txt /tests/golden/types-import-missing-mold/sur/fixture/txt
1434−/* src-428 %jibb /tests/golden/types-import-sur/source/jibb
1435−/* tok-428 %txt /tests/golden/types-import-sur/tokens/txt
1436−/* tre-428 %txt /tests/golden/types-import-sur/tree/txt
1437−/* typ-428 %txt /tests/golden/types-import-sur/types/txt
1438−/* imp-428-1 %txt /tests/golden/types-import-sur/sur/fixture/txt
1439−/* imp-428-2 %txt /tests/golden/types-import-sur/sur/fixture/txt
1440−/* src-429 %jibb /tests/golden/types-import-sur-record-graph/source/jibb
1441−/* tok-429 %txt /tests/golden/types-import-sur-record-graph/tokens/txt
1442−/* tre-429 %txt /tests/golden/types-import-sur-record-graph/tree/txt
1443−/* mod-429-1 %jibb /tests/golden/types-import-sur-record-graph/modules/ui/lib/jibb
1444−/* typ-429 %txt /tests/golden/types-import-sur-record-graph/types/txt
1445−/* imp-429-1 %txt /tests/golden/types-import-sur-record-graph/sur/fixture/txt
1446−/* mtre-429 %txt /tests/golden/types-import-sur-record-graph/module-trees/txt
1447−/* src-430 %jibb /tests/golden/types-list-cons/source/jibb
1448−/* tok-430 %txt /tests/golden/types-list-cons/tokens/txt
1449−/* tre-430 %txt /tests/golden/types-list-cons/tree/txt
1450−/* typ-430 %txt /tests/golden/types-list-cons/types/txt
1451−/* src-431 %jibb /tests/golden/types-list-context/source/jibb
1452−/* tok-431 %txt /tests/golden/types-list-context/tokens/txt
1453−/* tre-431 %txt /tests/golden/types-list-context/tree/txt
1454−/* typ-431 %txt /tests/golden/types-list-context/types/txt
1455−/* src-432 %jibb /tests/golden/types-list-imported/source/jibb
1456−/* tok-432 %txt /tests/golden/types-list-imported/tokens/txt
1457−/* tre-432 %txt /tests/golden/types-list-imported/tree/txt
1458−/* typ-432 %txt /tests/golden/types-list-imported/types/txt
1459−/* imp-432-1 %txt /tests/golden/types-list-imported/sur/fixture/txt
1460−/* imp-432-2 %txt /tests/golden/types-list-imported/sur/fixture/txt
1461−/* src-433 %jibb /tests/golden/types-list-pattern-imported/source/jibb
1462−/* tok-433 %txt /tests/golden/types-list-pattern-imported/tokens/txt
1463−/* tre-433 %txt /tests/golden/types-list-pattern-imported/tree/txt
1464−/* typ-433 %txt /tests/golden/types-list-pattern-imported/types/txt
1465−/* imp-433-1 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1466−/* imp-433-2 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1467−/* src-434 %jibb /tests/golden/types-list-patterns/source/jibb
1468−/* tok-434 %txt /tests/golden/types-list-patterns/tokens/txt
1469−/* tre-434 %txt /tests/golden/types-list-patterns/tree/txt
1470−/* typ-434 %txt /tests/golden/types-list-patterns/types/txt
1471−/* src-435 %jibb /tests/golden/types-module-fixtures/source/jibb
1472−/* tok-435 %txt /tests/golden/types-module-fixtures/tokens/txt
1473−/* tre-435 %txt /tests/golden/types-module-fixtures/tree/txt
1474−/* mod-435-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1475−/* mod-435-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1476−/* typ-435 %txt /tests/golden/types-module-fixtures/types/txt
1477−/* mtre-435 %txt /tests/golden/types-module-fixtures/module-trees/txt
1478−/* src-436 %jibb /tests/golden/types-module-mixed/source/jibb
1479−/* tok-436 %txt /tests/golden/types-module-mixed/tokens/txt
1480−/* tre-436 %txt /tests/golden/types-module-mixed/tree/txt
1481−/* mod-436-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1482−/* typ-436 %txt /tests/golden/types-module-mixed/types/txt
1483−/* imp-436-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1484−/* mark-436-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1485−/* mtre-436 %txt /tests/golden/types-module-mixed/module-trees/txt
1486−/* src-437 %jibb /tests/golden/types-null-context/source/jibb
1487−/* tok-437 %txt /tests/golden/types-null-context/tokens/txt
1488−/* tre-437 %txt /tests/golden/types-null-context/tree/txt
1489−/* typ-437 %txt /tests/golden/types-null-context/types/txt
1490−/* src-438 %jibb /tests/golden/types-null-overlap/source/jibb
1491−/* tok-438 %txt /tests/golden/types-null-overlap/tokens/txt
1492−/* tre-438 %txt /tests/golden/types-null-overlap/tree/txt
1493−/* typ-438 %txt /tests/golden/types-null-overlap/types/txt
1494−/* src-439 %jibb /tests/golden/types-null-unresolved/source/jibb
1495−/* tok-439 %txt /tests/golden/types-null-unresolved/tokens/txt
1496−/* tre-439 %txt /tests/golden/types-null-unresolved/tree/txt
1497−/* typ-439 %txt /tests/golden/types-null-unresolved/types/txt
1498−/* src-440 %jibb /tests/golden/types-partial-apply/source/jibb
1499−/* tok-440 %txt /tests/golden/types-partial-apply/tokens/txt
1500−/* tre-440 %txt /tests/golden/types-partial-apply/tree/txt
1501−/* typ-440 %txt /tests/golden/types-partial-apply/types/txt
1502−/* src-441 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1503−/* tok-441 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1504−/* tre-441 %txt /tests/golden/types-partial-atom-alias/tree/txt
1505−/* typ-441 %txt /tests/golden/types-partial-atom-alias/types/txt
1506−/* src-442 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1507−/* tok-442 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1508−/* tre-442 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1509−/* typ-442 %txt /tests/golden/types-partial-atom-constraint/types/txt
1510−/* src-443 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1511−/* tok-443 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1512−/* tre-443 %txt /tests/golden/types-partial-atom-widening/tree/txt
1513−/* typ-443 %txt /tests/golden/types-partial-atom-widening/types/txt
1514−/* src-444 %jibb /tests/golden/types-partial-aura/source/jibb
1515−/* tok-444 %txt /tests/golden/types-partial-aura/tokens/txt
1516−/* tre-444 %txt /tests/golden/types-partial-aura/tree/txt
1517−/* typ-444 %txt /tests/golden/types-partial-aura/types/txt
1518−/* src-445 %jibb /tests/golden/types-partial-aura-family/source/jibb
1519−/* tok-445 %txt /tests/golden/types-partial-aura-family/tokens/txt
1520−/* tre-445 %txt /tests/golden/types-partial-aura-family/tree/txt
1521−/* typ-445 %txt /tests/golden/types-partial-aura-family/types/txt
1522−/* src-446 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1523−/* tok-446 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1524−/* tre-446 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1525−/* typ-446 %txt /tests/golden/types-partial-aura-generalization/types/txt
1526−/* src-447 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1527−/* tok-447 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1528−/* tre-447 %txt /tests/golden/types-partial-bare-atom/tree/txt
1529−/* typ-447 %txt /tests/golden/types-partial-bare-atom/types/txt
1530−/* src-448 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1531−/* tok-448 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1532−/* tre-448 %txt /tests/golden/types-partial-branch-widening/tree/txt
1533−/* typ-448 %txt /tests/golden/types-partial-branch-widening/types/txt
1534−/* src-449 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1535−/* tok-449 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1536−/* tre-449 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1537−/* typ-449 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1538−/* src-450 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1539−/* tok-450 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1540−/* tre-450 %txt /tests/golden/types-partial-decimal-default/tree/txt
1541−/* typ-450 %txt /tests/golden/types-partial-decimal-default/types/txt
1542−/* src-451 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1543−/* tok-451 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1544−/* tre-451 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1545−/* typ-451 %txt /tests/golden/types-partial-dependency-chain/types/txt
1546−/* src-452 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1547−/* tok-452 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1548−/* tre-452 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1549−/* typ-452 %txt /tests/golden/types-partial-explicit-capital/types/txt
1550−/* src-453 %jibb /tests/golden/types-partial-forward/source/jibb
1551−/* tok-453 %txt /tests/golden/types-partial-forward/tokens/txt
1552−/* tre-453 %txt /tests/golden/types-partial-forward/tree/txt
1553−/* typ-453 %txt /tests/golden/types-partial-forward/types/txt
1554−/* src-454 %jibb /tests/golden/types-partial-generalization/source/jibb
1555−/* tok-454 %txt /tests/golden/types-partial-generalization/tokens/txt
1556−/* tre-454 %txt /tests/golden/types-partial-generalization/tree/txt
1557−/* typ-454 %txt /tests/golden/types-partial-generalization/types/txt
1558−/* src-455 %jibb /tests/golden/types-partial-identity/source/jibb
1559−/* tok-455 %txt /tests/golden/types-partial-identity/tokens/txt
1560−/* tre-455 %txt /tests/golden/types-partial-identity/tree/txt
1561−/* typ-455 %txt /tests/golden/types-partial-identity/types/txt
1562−/* src-456 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1563−/* tok-456 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1564−/* tre-456 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1565−/* typ-456 %txt /tests/golden/types-partial-independent-atoms/types/txt
1566−/* src-457 %jibb /tests/golden/types-partial-local-molds/source/jibb
1567−/* tok-457 %txt /tests/golden/types-partial-local-molds/tokens/txt
1568−/* tre-457 %txt /tests/golden/types-partial-local-molds/tree/txt
1569−/* typ-457 %txt /tests/golden/types-partial-local-molds/types/txt
1570−/* src-458 %jibb /tests/golden/types-partial-locals/source/jibb
1571−/* tok-458 %txt /tests/golden/types-partial-locals/tokens/txt
1572−/* tre-458 %txt /tests/golden/types-partial-locals/tree/txt
1573−/* typ-458 %txt /tests/golden/types-partial-locals/types/txt
1574−/* src-459 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1575−/* tok-459 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1576−/* tre-459 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1577−/* typ-459 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1578−/* src-460 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1579−/* tok-460 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1580−/* tre-460 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1581−/* typ-460 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1582−/* src-461 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1583−/* tok-461 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1584−/* tre-461 %txt /tests/golden/types-partial-mold-composite/tree/txt
1585−/* typ-461 %txt /tests/golden/types-partial-mold-composite/types/txt
1586−/* src-462 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1587−/* tok-462 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1588−/* tre-462 %txt /tests/golden/types-partial-mold-forward/tree/txt
1589−/* typ-462 %txt /tests/golden/types-partial-mold-forward/types/txt
1590−/* src-463 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1591−/* tok-463 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1592−/* tre-463 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1593−/* typ-463 %txt /tests/golden/types-partial-mold-recursive/types/txt
1594−/* src-464 %jibb /tests/golden/types-partial-occurs/source/jibb
1595−/* tok-464 %txt /tests/golden/types-partial-occurs/tokens/txt
1596−/* tre-464 %txt /tests/golden/types-partial-occurs/tree/txt
1597−/* typ-464 %txt /tests/golden/types-partial-occurs/types/txt
1598−/* src-465 %jibb /tests/golden/types-partial-projection/source/jibb
1599−/* tok-465 %txt /tests/golden/types-partial-projection/tokens/txt
1600−/* tre-465 %txt /tests/golden/types-partial-projection/tree/txt
1601−/* typ-465 %txt /tests/golden/types-partial-projection/types/txt
1602−/* src-466 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1603−/* tok-466 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1604−/* tre-466 %txt /tests/golden/types-partial-shadow-global/tree/txt
1605−/* typ-466 %txt /tests/golden/types-partial-shadow-global/types/txt
1606−/* src-467 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1607−/* tok-467 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1608−/* tre-467 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1609−/* typ-467 %txt /tests/golden/types-partial-shared-tvar/types/txt
1610−/* src-468 %jibb /tests/golden/types-partial-union-cases/source/jibb
1611−/* tok-468 %txt /tests/golden/types-partial-union-cases/tokens/txt
1612−/* tre-468 %txt /tests/golden/types-partial-union-cases/tree/txt
1613−/* typ-468 %txt /tests/golden/types-partial-union-cases/types/txt
1614−/* src-469 %jibb /tests/golden/types-partial-union-edges/source/jibb
1615−/* tok-469 %txt /tests/golden/types-partial-union-edges/tokens/txt
1616−/* tre-469 %txt /tests/golden/types-partial-union-edges/tree/txt
1617−/* typ-469 %txt /tests/golden/types-partial-union-edges/types/txt
1618−/* src-470 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1619−/* tok-470 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1620−/* tre-470 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1621−/* typ-470 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1622−/* src-471 %jibb /tests/golden/types-prelude-direct/source/jibb
1623−/* tok-471 %txt /tests/golden/types-prelude-direct/tokens/txt
1624−/* tre-471 %txt /tests/golden/types-prelude-direct/tree/txt
1625−/* typ-471 %txt /tests/golden/types-prelude-direct/types/txt
1626−/* src-472 %jibb /tests/golden/types-prelude-interface/source/jibb
1627−/* tok-472 %txt /tests/golden/types-prelude-interface/tokens/txt
1628−/* tre-472 %txt /tests/golden/types-prelude-interface/tree/txt
1629−/* mod-472-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1630−/* mod-472-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1631−/* typ-472 %txt /tests/golden/types-prelude-interface/types/txt
1632−/* mtre-472 %txt /tests/golden/types-prelude-interface/module-trees/txt
1633−/* src-473 %jibb /tests/golden/types-record-bound-variable/source/jibb
1634−/* tok-473 %txt /tests/golden/types-record-bound-variable/tokens/txt
1635−/* tre-473 %txt /tests/golden/types-record-bound-variable/tree/txt
1636−/* typ-473 %txt /tests/golden/types-record-bound-variable/types/txt
1637−/* src-474 %jibb /tests/golden/types-record-faces/source/jibb
1638−/* tok-474 %txt /tests/golden/types-record-faces/tokens/txt
1639−/* tre-474 %txt /tests/golden/types-record-faces/tree/txt
1640−/* typ-474 %txt /tests/golden/types-record-faces/types/txt
1641−/* src-475 %jibb /tests/golden/types-record-import/source/jibb
1642−/* tok-475 %txt /tests/golden/types-record-import/tokens/txt
1643−/* tre-475 %txt /tests/golden/types-record-import/tree/txt
1644−/* mod-475-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1645−/* typ-475 %txt /tests/golden/types-record-import/types/txt
1646−/* mtre-475 %txt /tests/golden/types-record-import/module-trees/txt
1647−/* src-476 %jibb /tests/golden/types-record-local-scheme/source/jibb
1648−/* tok-476 %txt /tests/golden/types-record-local-scheme/tokens/txt
1649−/* tre-476 %txt /tests/golden/types-record-local-scheme/tree/txt
1650−/* typ-476 %txt /tests/golden/types-record-local-scheme/types/txt
1651−/* src-477 %jibb /tests/golden/types-record-nested/source/jibb
1652−/* tok-477 %txt /tests/golden/types-record-nested/tokens/txt
1653−/* tre-477 %txt /tests/golden/types-record-nested/tree/txt
1654−/* typ-477 %txt /tests/golden/types-record-nested/types/txt
1655−/* src-478 %jibb /tests/golden/types-record-to-tuple/source/jibb
1656−/* tok-478 %txt /tests/golden/types-record-to-tuple/tokens/txt
1657−/* tre-478 %txt /tests/golden/types-record-to-tuple/tree/txt
1658−/* typ-478 %txt /tests/golden/types-record-to-tuple/types/txt
1659−/* src-479 %jibb /tests/golden/types-recursive-branch/source/jibb
1660−/* tok-479 %txt /tests/golden/types-recursive-branch/tokens/txt
1661−/* tre-479 %txt /tests/golden/types-recursive-branch/tree/txt
1662−/* typ-479 %txt /tests/golden/types-recursive-branch/types/txt
1663−/* src-480 %jibb /tests/golden/types-recursive-gate/source/jibb
1664−/* tok-480 %txt /tests/golden/types-recursive-gate/tokens/txt
1665−/* tre-480 %txt /tests/golden/types-recursive-gate/tree/txt
1666−/* typ-480 %txt /tests/golden/types-recursive-gate/types/txt
1667−/* src-481 %jibb /tests/golden/types-union-alias/source/jibb
1668−/* tok-481 %txt /tests/golden/types-union-alias/tokens/txt
1669−/* tre-481 %txt /tests/golden/types-union-alias/tree/txt
1670−/* typ-481 %txt /tests/golden/types-union-alias/types/txt
1671−/* src-482 %jibb /tests/golden/types-union-branch-context/source/jibb
1672−/* tok-482 %txt /tests/golden/types-union-branch-context/tokens/txt
1673−/* tre-482 %txt /tests/golden/types-union-branch-context/tree/txt
1674−/* typ-482 %txt /tests/golden/types-union-branch-context/types/txt
1675−/* src-483 %jibb /tests/golden/types-union-branch-pending/source/jibb
1676−/* tok-483 %txt /tests/golden/types-union-branch-pending/tokens/txt
1677−/* tre-483 %txt /tests/golden/types-union-branch-pending/tree/txt
1678−/* typ-483 %txt /tests/golden/types-union-branch-pending/types/txt
1679−/* src-484 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1680−/* tok-484 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1681−/* tre-484 %txt /tests/golden/types-union-constructor-shape/tree/txt
1682−/* typ-484 %txt /tests/golden/types-union-constructor-shape/types/txt
1683−/* src-485 %jibb /tests/golden/types-union-context-flow/source/jibb
1684−/* tok-485 %txt /tests/golden/types-union-context-flow/tokens/txt
1685−/* tre-485 %txt /tests/golden/types-union-context-flow/tree/txt
1686−/* typ-485 %txt /tests/golden/types-union-context-flow/types/txt
1687−/* src-486 %jibb /tests/golden/types-union-import/source/jibb
1688−/* tok-486 %txt /tests/golden/types-union-import/tokens/txt
1689−/* tre-486 %txt /tests/golden/types-union-import/tree/txt
1690−/* mod-486-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1691−/* typ-486 %txt /tests/golden/types-union-import/types/txt
1692−/* mtre-486 %txt /tests/golden/types-union-import/module-trees/txt
1693−/* src-487 %jibb /tests/golden/types-union-local-pending/source/jibb
1694−/* tok-487 %txt /tests/golden/types-union-local-pending/tokens/txt
1695−/* tre-487 %txt /tests/golden/types-union-local-pending/tree/txt
1696−/* typ-487 %txt /tests/golden/types-union-local-pending/types/txt
1697−/* src-488 %jibb /tests/golden/types-union-overlap/source/jibb
1698−/* tok-488 %txt /tests/golden/types-union-overlap/tokens/txt
1699−/* tre-488 %txt /tests/golden/types-union-overlap/tree/txt
1700−/* typ-488 %txt /tests/golden/types-union-overlap/types/txt
1701−/* src-489 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1702−/* tok-489 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1703−/* tre-489 %txt /tests/golden/types-union-overlap-nested/tree/txt
1704−/* typ-489 %txt /tests/golden/types-union-overlap-nested/types/txt
1705−/* src-490 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1706−/* tok-490 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1707−/* tre-490 %txt /tests/golden/types-union-phantom-generic/tree/txt
1708−/* typ-490 %txt /tests/golden/types-union-phantom-generic/types/txt
1709−/* src-491 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1710−/* tok-491 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1711−/* tre-491 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1712−/* mod-491-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1713−/* typ-491 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1714−/* mtre-491 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1715−/* src-492 %jibb /tests/golden/types-union-print-distinct/source/jibb
1716−/* tok-492 %txt /tests/golden/types-union-print-distinct/tokens/txt
1717−/* tre-492 %txt /tests/golden/types-union-print-distinct/tree/txt
1718−/* mod-492-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1719−/* mod-492-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1720−/* mod-492-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1721−/* typ-492 %txt /tests/golden/types-union-print-distinct/types/txt
1722−/* mtre-492 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1723−/* src-493 %jibb /tests/golden/types-union-print-escape/source/jibb
1724−/* tok-493 %txt /tests/golden/types-union-print-escape/tokens/txt
1725−/* tre-493 %txt /tests/golden/types-union-print-escape/tree/txt
1726−/* typ-493 %txt /tests/golden/types-union-print-escape/types/txt
1727−/* src-494 %jibb /tests/golden/types-union-print-local/source/jibb
1728−/* tok-494 %txt /tests/golden/types-union-print-local/tokens/txt
1729−/* tre-494 %txt /tests/golden/types-union-print-local/tree/txt
1730−/* typ-494 %txt /tests/golden/types-union-print-local/types/txt
1731−/* src-495 %jibb /tests/golden/types-union-print-nested/source/jibb
1732−/* tok-495 %txt /tests/golden/types-union-print-nested/tokens/txt
1733−/* tre-495 %txt /tests/golden/types-union-print-nested/tree/txt
1734−/* typ-495 %txt /tests/golden/types-union-print-nested/types/txt
1735−/* src-496 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1736−/* tok-496 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1737−/* tre-496 %txt /tests/golden/types-union-print-same-origin/tree/txt
1738−/* mod-496-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1739−/* typ-496 %txt /tests/golden/types-union-print-same-origin/types/txt
1740−/* mtre-496 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1741−/* src-497 %jibb /tests/golden/types-union-print-transitive/source/jibb
1742−/* tok-497 %txt /tests/golden/types-union-print-transitive/tokens/txt
1743−/* tre-497 %txt /tests/golden/types-union-print-transitive/tree/txt
1744−/* mod-497-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1745−/* mod-497-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1746−/* typ-497 %txt /tests/golden/types-union-print-transitive/types/txt
1747−/* mtre-497 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1748−/* src-498 %jibb /tests/golden/types-union-singleton/source/jibb
1749−/* tok-498 %txt /tests/golden/types-union-singleton/tokens/txt
1750−/* tre-498 %txt /tests/golden/types-union-singleton/tree/txt
1751−/* typ-498 %txt /tests/golden/types-union-singleton/types/txt
1752−/* src-499 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1753−/* tok-499 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1754−/* tre-499 %txt /tests/golden/types-union-tag-atoms/tree/txt
1755−/* typ-499 %txt /tests/golden/types-union-tag-atoms/types/txt
1756−/* src-500 %jibb /tests/golden/types-union-tags/source/jibb
1757−/* tok-500 %txt /tests/golden/types-union-tags/tokens/txt
1758−/* tre-500 %txt /tests/golden/types-union-tags/tree/txt
1759−/* typ-500 %txt /tests/golden/types-union-tags/types/txt
1760−/* src-501 %jibb /tests/golden/types-union-unresolved/source/jibb
1761−/* tok-501 %txt /tests/golden/types-union-unresolved/tokens/txt
1762−/* tre-501 %txt /tests/golden/types-union-unresolved/tree/txt
1763−/* typ-501 %txt /tests/golden/types-union-unresolved/types/txt
1764−/* src-502 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1765−/* tok-502 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1766−/* tre-502 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1767−/* typ-502 %txt /tests/golden/types-union-unresolved-flow/types/txt
1768−/* src-503 %jibb /tests/golden/types-unit-context/source/jibb
1769−/* tok-503 %txt /tests/golden/types-unit-context/tokens/txt
1770−/* tre-503 %txt /tests/golden/types-unit-context/tree/txt
1771−/* typ-503 %txt /tests/golden/types-unit-context/types/txt
1772−/* src-504 %jibb /tests/golden/types-unit-patterns/source/jibb
1773−/* tok-504 %txt /tests/golden/types-unit-patterns/tokens/txt
1774−/* tre-504 %txt /tests/golden/types-unit-patterns/tree/txt
1775−/* typ-504 %txt /tests/golden/types-unit-patterns/types/txt
1318+/* src-404 %jibb /tests/golden/types-capital-distinct/source/jibb
1319+/* tok-404 %txt /tests/golden/types-capital-distinct/tokens/txt
1320+/* tre-404 %txt /tests/golden/types-capital-distinct/tree/txt
1321+/* typ-404 %txt /tests/golden/types-capital-distinct/types/txt
1322+/* src-405 %jibb /tests/golden/types-generic-arity/source/jibb
1323+/* tok-405 %txt /tests/golden/types-generic-arity/tokens/txt
1324+/* tre-405 %txt /tests/golden/types-generic-arity/tree/txt
1325+/* typ-405 %txt /tests/golden/types-generic-arity/types/txt
1326+/* src-406 %jibb /tests/golden/types-generic-face-inference/source/jibb
1327+/* tok-406 %txt /tests/golden/types-generic-face-inference/tokens/txt
1328+/* tre-406 %txt /tests/golden/types-generic-face-inference/tree/txt
1329+/* typ-406 %txt /tests/golden/types-generic-face-inference/types/txt
1330+/* src-407 %jibb /tests/golden/types-generic-gates/source/jibb
1331+/* tok-407 %txt /tests/golden/types-generic-gates/tokens/txt
1332+/* tre-407 %txt /tests/golden/types-generic-gates/tree/txt
1333+/* typ-407 %txt /tests/golden/types-generic-gates/types/txt
1334+/* src-408 %jibb /tests/golden/types-generic-import-reverse/source/jibb
1335+/* tok-408 %txt /tests/golden/types-generic-import-reverse/tokens/txt
1336+/* tre-408 %txt /tests/golden/types-generic-import-reverse/tree/txt
1337+/* mod-408-1 %jibb /tests/golden/types-generic-import-reverse/modules/ui/lib/jibb
1338+/* typ-408 %txt /tests/golden/types-generic-import-reverse/types/txt
1339+/* mtre-408 %txt /tests/golden/types-generic-import-reverse/module-trees/txt
1340+/* src-409 %jibb /tests/golden/types-generic-lexical-alias/source/jibb
1341+/* tok-409 %txt /tests/golden/types-generic-lexical-alias/tokens/txt
1342+/* tre-409 %txt /tests/golden/types-generic-lexical-alias/tree/txt
1343+/* typ-409 %txt /tests/golden/types-generic-lexical-alias/types/txt
1344+/* src-410 %jibb /tests/golden/types-generic-local-parameter/source/jibb
1345+/* tok-410 %txt /tests/golden/types-generic-local-parameter/tokens/txt
1346+/* tre-410 %txt /tests/golden/types-generic-local-parameter/tree/txt
1347+/* typ-410 %txt /tests/golden/types-generic-local-parameter/types/txt
1348+/* src-411 %jibb /tests/golden/types-generic-local-scope/source/jibb
1349+/* tok-411 %txt /tests/golden/types-generic-local-scope/tokens/txt
1350+/* tre-411 %txt /tests/golden/types-generic-local-scope/tree/txt
1351+/* typ-411 %txt /tests/golden/types-generic-local-scope/types/txt
1352+/* src-412 %jibb /tests/golden/types-generic-module/source/jibb
1353+/* tok-412 %txt /tests/golden/types-generic-module/tokens/txt
1354+/* tre-412 %txt /tests/golden/types-generic-module/tree/txt
1355+/* mod-412-1 %jibb /tests/golden/types-generic-module/modules/ui/lib/jibb
1356+/* typ-412 %txt /tests/golden/types-generic-module/types/txt
1357+/* mtre-412 %txt /tests/golden/types-generic-module/module-trees/txt
1358+/* src-413 %jibb /tests/golden/types-generic-nested-scope/source/jibb
1359+/* tok-413 %txt /tests/golden/types-generic-nested-scope/tokens/txt
1360+/* tre-413 %txt /tests/golden/types-generic-nested-scope/tree/txt
1361+/* typ-413 %txt /tests/golden/types-generic-nested-scope/types/txt
1362+/* src-414 %jibb /tests/golden/types-generic-parameters/source/jibb
1363+/* tok-414 %txt /tests/golden/types-generic-parameters/tokens/txt
1364+/* tre-414 %txt /tests/golden/types-generic-parameters/tree/txt
1365+/* typ-414 %txt /tests/golden/types-generic-parameters/types/txt
1366+/* src-415 %jibb /tests/golden/types-generic-record/source/jibb
1367+/* tok-415 %txt /tests/golden/types-generic-record/tokens/txt
1368+/* tre-415 %txt /tests/golden/types-generic-record/tree/txt
1369+/* typ-415 %txt /tests/golden/types-generic-record/types/txt
1370+/* src-416 %jibb /tests/golden/types-generic-recursive-union/source/jibb
1371+/* tok-416 %txt /tests/golden/types-generic-recursive-union/tokens/txt
1372+/* tre-416 %txt /tests/golden/types-generic-recursive-union/tree/txt
1373+/* typ-416 %txt /tests/golden/types-generic-recursive-union/types/txt
1374+/* src-417 %jibb /tests/golden/types-generic-repeated/source/jibb
1375+/* tok-417 %txt /tests/golden/types-generic-repeated/tokens/txt
1376+/* tre-417 %txt /tests/golden/types-generic-repeated/tree/txt
1377+/* typ-417 %txt /tests/golden/types-generic-repeated/types/txt
1378+/* src-418 %jibb /tests/golden/types-generic-union-alias/source/jibb
1379+/* tok-418 %txt /tests/golden/types-generic-union-alias/tokens/txt
1380+/* tre-418 %txt /tests/golden/types-generic-union-alias/tree/txt
1381+/* typ-418 %txt /tests/golden/types-generic-union-alias/types/txt
1382+/* src-419 %jibb /tests/golden/types-generic-union-alias-face/source/jibb
1383+/* tok-419 %txt /tests/golden/types-generic-union-alias-face/tokens/txt
1384+/* tre-419 %txt /tests/golden/types-generic-union-alias-face/tree/txt
1385+/* mod-419-1 %jibb /tests/golden/types-generic-union-alias-face/modules/ui/base/jibb
1386+/* typ-419 %txt /tests/golden/types-generic-union-alias-face/types/txt
1387+/* mtre-419 %txt /tests/golden/types-generic-union-alias-face/module-trees/txt
1388+/* src-420 %jibb /tests/golden/types-generic-union-capitals/source/jibb
1389+/* tok-420 %txt /tests/golden/types-generic-union-capitals/tokens/txt
1390+/* tre-420 %txt /tests/golden/types-generic-union-capitals/tree/txt
1391+/* typ-420 %txt /tests/golden/types-generic-union-capitals/types/txt
1392+/* src-421 %jibb /tests/golden/types-generic-union-errors/source/jibb
1393+/* tok-421 %txt /tests/golden/types-generic-union-errors/tokens/txt
1394+/* tre-421 %txt /tests/golden/types-generic-union-errors/tree/txt
1395+/* typ-421 %txt /tests/golden/types-generic-union-errors/types/txt
1396+/* src-422 %jibb /tests/golden/types-generic-union-escaping/source/jibb
1397+/* tok-422 %txt /tests/golden/types-generic-union-escaping/tokens/txt
1398+/* tre-422 %txt /tests/golden/types-generic-union-escaping/tree/txt
1399+/* mod-422-1 %jibb /tests/golden/types-generic-union-escaping/modules/ui/base/jibb
1400+/* mod-422-2 %jibb /tests/golden/types-generic-union-escaping/modules/ui/mid/jibb
1401+/* typ-422 %txt /tests/golden/types-generic-union-escaping/types/txt
1402+/* mtre-422 %txt /tests/golden/types-generic-union-escaping/module-trees/txt
1403+/* src-423 %jibb /tests/golden/types-generic-union-import/source/jibb
1404+/* tok-423 %txt /tests/golden/types-generic-union-import/tokens/txt
1405+/* tre-423 %txt /tests/golden/types-generic-union-import/tree/txt
1406+/* mod-423-1 %jibb /tests/golden/types-generic-union-import/modules/ui/shared/jibb
1407+/* mod-423-2 %jibb /tests/golden/types-generic-union-import/modules/ui/twin/jibb
1408+/* typ-423 %txt /tests/golden/types-generic-union-import/types/txt
1409+/* mtre-423 %txt /tests/golden/types-generic-union-import/module-trees/txt
1410+/* src-424 %jibb /tests/golden/types-generic-union-local/source/jibb
1411+/* tok-424 %txt /tests/golden/types-generic-union-local/tokens/txt
1412+/* tre-424 %txt /tests/golden/types-generic-union-local/tree/txt
1413+/* typ-424 %txt /tests/golden/types-generic-union-local/types/txt
1414+/* src-425 %jibb /tests/golden/types-generic-union-transitive/source/jibb
1415+/* tok-425 %txt /tests/golden/types-generic-union-transitive/tokens/txt
1416+/* tre-425 %txt /tests/golden/types-generic-union-transitive/tree/txt
1417+/* mod-425-1 %jibb /tests/golden/types-generic-union-transitive/modules/ui/base/jibb
1418+/* mod-425-2 %jibb /tests/golden/types-generic-union-transitive/modules/ui/mid/jibb
1419+/* typ-425 %txt /tests/golden/types-generic-union-transitive/types/txt
1420+/* mtre-425 %txt /tests/golden/types-generic-union-transitive/module-trees/txt
1421+/* src-426 %jibb /tests/golden/types-import-duplicate-mark/source/jibb
1422+/* tok-426 %txt /tests/golden/types-import-duplicate-mark/tokens/txt
1423+/* tre-426 %txt /tests/golden/types-import-duplicate-mark/tree/txt
1424+/* typ-426 %txt /tests/golden/types-import-duplicate-mark/types/txt
1425+/* mark-426-1 %txt /tests/golden/types-import-duplicate-mark/mar/duplicate/txt
1426+/* src-427 %jibb /tests/golden/types-import-duplicate-sur/source/jibb
1427+/* tok-427 %txt /tests/golden/types-import-duplicate-sur/tokens/txt
1428+/* tre-427 %txt /tests/golden/types-import-duplicate-sur/tree/txt
1429+/* typ-427 %txt /tests/golden/types-import-duplicate-sur/types/txt
1430+/* imp-427-1 %txt /tests/golden/types-import-duplicate-sur/sur/fixture/txt
1431+/* imp-427-2 %txt /tests/golden/types-import-duplicate-sur/sur/fixture/txt
1432+/* imp-427-3 %txt /tests/golden/types-import-duplicate-sur/sur/fixture/txt
1433+/* src-428 %jibb /tests/golden/types-import-mark/source/jibb
1434+/* tok-428 %txt /tests/golden/types-import-mark/tokens/txt
1435+/* tre-428 %txt /tests/golden/types-import-mark/tree/txt
1436+/* typ-428 %txt /tests/golden/types-import-mark/types/txt
1437+/* imp-428-1 %txt /tests/golden/types-import-mark/sur/fixture/txt
1438+/* mark-428-1 %txt /tests/golden/types-import-mark/mar/label/txt
1439+/* src-429 %jibb /tests/golden/types-import-mark-record/source/jibb
1440+/* tok-429 %txt /tests/golden/types-import-mark-record/tokens/txt
1441+/* tre-429 %txt /tests/golden/types-import-mark-record/tree/txt
1442+/* typ-429 %txt /tests/golden/types-import-mark-record/types/txt
1443+/* mark-429-1 %txt /tests/golden/types-import-mark-record/mar/note/txt
1444+/* mark-429-2 %txt /tests/golden/types-import-mark-record/mar/choice/txt
1445+/* src-430 %jibb /tests/golden/types-import-missing-mold/source/jibb
1446+/* tok-430 %txt /tests/golden/types-import-missing-mold/tokens/txt
1447+/* tre-430 %txt /tests/golden/types-import-missing-mold/tree/txt
1448+/* typ-430 %txt /tests/golden/types-import-missing-mold/types/txt
1449+/* imp-430-1 %txt /tests/golden/types-import-missing-mold/sur/fixture/txt
1450+/* src-431 %jibb /tests/golden/types-import-sur/source/jibb
1451+/* tok-431 %txt /tests/golden/types-import-sur/tokens/txt
1452+/* tre-431 %txt /tests/golden/types-import-sur/tree/txt
1453+/* typ-431 %txt /tests/golden/types-import-sur/types/txt
1454+/* imp-431-1 %txt /tests/golden/types-import-sur/sur/fixture/txt
1455+/* imp-431-2 %txt /tests/golden/types-import-sur/sur/fixture/txt
1456+/* src-432 %jibb /tests/golden/types-import-sur-record-graph/source/jibb
1457+/* tok-432 %txt /tests/golden/types-import-sur-record-graph/tokens/txt
1458+/* tre-432 %txt /tests/golden/types-import-sur-record-graph/tree/txt
1459+/* mod-432-1 %jibb /tests/golden/types-import-sur-record-graph/modules/ui/lib/jibb
1460+/* typ-432 %txt /tests/golden/types-import-sur-record-graph/types/txt
1461+/* imp-432-1 %txt /tests/golden/types-import-sur-record-graph/sur/fixture/txt
1462+/* mtre-432 %txt /tests/golden/types-import-sur-record-graph/module-trees/txt
1463+/* src-433 %jibb /tests/golden/types-list-branch/source/jibb
1464+/* tok-433 %txt /tests/golden/types-list-branch/tokens/txt
1465+/* tre-433 %txt /tests/golden/types-list-branch/tree/txt
1466+/* typ-433 %txt /tests/golden/types-list-branch/types/txt
1467+/* src-434 %jibb /tests/golden/types-list-cons/source/jibb
1468+/* tok-434 %txt /tests/golden/types-list-cons/tokens/txt
1469+/* tre-434 %txt /tests/golden/types-list-cons/tree/txt
1470+/* typ-434 %txt /tests/golden/types-list-cons/types/txt
1471+/* src-435 %jibb /tests/golden/types-list-context/source/jibb
1472+/* tok-435 %txt /tests/golden/types-list-context/tokens/txt
1473+/* tre-435 %txt /tests/golden/types-list-context/tree/txt
1474+/* typ-435 %txt /tests/golden/types-list-context/types/txt
1475+/* src-436 %jibb /tests/golden/types-list-imported/source/jibb
1476+/* tok-436 %txt /tests/golden/types-list-imported/tokens/txt
1477+/* tre-436 %txt /tests/golden/types-list-imported/tree/txt
1478+/* typ-436 %txt /tests/golden/types-list-imported/types/txt
1479+/* imp-436-1 %txt /tests/golden/types-list-imported/sur/fixture/txt
1480+/* imp-436-2 %txt /tests/golden/types-list-imported/sur/fixture/txt
1481+/* src-437 %jibb /tests/golden/types-list-pattern-imported/source/jibb
1482+/* tok-437 %txt /tests/golden/types-list-pattern-imported/tokens/txt
1483+/* tre-437 %txt /tests/golden/types-list-pattern-imported/tree/txt
1484+/* typ-437 %txt /tests/golden/types-list-pattern-imported/types/txt
1485+/* imp-437-1 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1486+/* imp-437-2 %txt /tests/golden/types-list-pattern-imported/sur/fixture/txt
1487+/* src-438 %jibb /tests/golden/types-list-patterns/source/jibb
1488+/* tok-438 %txt /tests/golden/types-list-patterns/tokens/txt
1489+/* tre-438 %txt /tests/golden/types-list-patterns/tree/txt
1490+/* typ-438 %txt /tests/golden/types-list-patterns/types/txt
1491+/* src-439 %jibb /tests/golden/types-module-fixtures/source/jibb
1492+/* tok-439 %txt /tests/golden/types-module-fixtures/tokens/txt
1493+/* tre-439 %txt /tests/golden/types-module-fixtures/tree/txt
1494+/* mod-439-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1495+/* mod-439-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1496+/* typ-439 %txt /tests/golden/types-module-fixtures/types/txt
1497+/* mtre-439 %txt /tests/golden/types-module-fixtures/module-trees/txt
1498+/* src-440 %jibb /tests/golden/types-module-mixed/source/jibb
1499+/* tok-440 %txt /tests/golden/types-module-mixed/tokens/txt
1500+/* tre-440 %txt /tests/golden/types-module-mixed/tree/txt
1501+/* mod-440-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1502+/* typ-440 %txt /tests/golden/types-module-mixed/types/txt
1503+/* imp-440-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1504+/* mark-440-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1505+/* mtre-440 %txt /tests/golden/types-module-mixed/module-trees/txt
1506+/* src-441 %jibb /tests/golden/types-null-context/source/jibb
1507+/* tok-441 %txt /tests/golden/types-null-context/tokens/txt
1508+/* tre-441 %txt /tests/golden/types-null-context/tree/txt
1509+/* typ-441 %txt /tests/golden/types-null-context/types/txt
1510+/* src-442 %jibb /tests/golden/types-null-overlap/source/jibb
1511+/* tok-442 %txt /tests/golden/types-null-overlap/tokens/txt
1512+/* tre-442 %txt /tests/golden/types-null-overlap/tree/txt
1513+/* typ-442 %txt /tests/golden/types-null-overlap/types/txt
1514+/* src-443 %jibb /tests/golden/types-null-unresolved/source/jibb
1515+/* tok-443 %txt /tests/golden/types-null-unresolved/tokens/txt
1516+/* tre-443 %txt /tests/golden/types-null-unresolved/tree/txt
1517+/* typ-443 %txt /tests/golden/types-null-unresolved/types/txt
1518+/* src-444 %jibb /tests/golden/types-partial-apply/source/jibb
1519+/* tok-444 %txt /tests/golden/types-partial-apply/tokens/txt
1520+/* tre-444 %txt /tests/golden/types-partial-apply/tree/txt
1521+/* typ-444 %txt /tests/golden/types-partial-apply/types/txt
1522+/* src-445 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1523+/* tok-445 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1524+/* tre-445 %txt /tests/golden/types-partial-atom-alias/tree/txt
1525+/* typ-445 %txt /tests/golden/types-partial-atom-alias/types/txt
1526+/* src-446 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1527+/* tok-446 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1528+/* tre-446 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1529+/* typ-446 %txt /tests/golden/types-partial-atom-constraint/types/txt
1530+/* src-447 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1531+/* tok-447 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1532+/* tre-447 %txt /tests/golden/types-partial-atom-widening/tree/txt
1533+/* typ-447 %txt /tests/golden/types-partial-atom-widening/types/txt
1534+/* src-448 %jibb /tests/golden/types-partial-aura/source/jibb
1535+/* tok-448 %txt /tests/golden/types-partial-aura/tokens/txt
1536+/* tre-448 %txt /tests/golden/types-partial-aura/tree/txt
1537+/* typ-448 %txt /tests/golden/types-partial-aura/types/txt
1538+/* src-449 %jibb /tests/golden/types-partial-aura-family/source/jibb
1539+/* tok-449 %txt /tests/golden/types-partial-aura-family/tokens/txt
1540+/* tre-449 %txt /tests/golden/types-partial-aura-family/tree/txt
1541+/* typ-449 %txt /tests/golden/types-partial-aura-family/types/txt
1542+/* src-450 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1543+/* tok-450 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1544+/* tre-450 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1545+/* typ-450 %txt /tests/golden/types-partial-aura-generalization/types/txt
1546+/* src-451 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1547+/* tok-451 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1548+/* tre-451 %txt /tests/golden/types-partial-bare-atom/tree/txt
1549+/* typ-451 %txt /tests/golden/types-partial-bare-atom/types/txt
1550+/* src-452 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1551+/* tok-452 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1552+/* tre-452 %txt /tests/golden/types-partial-branch-widening/tree/txt
1553+/* typ-452 %txt /tests/golden/types-partial-branch-widening/types/txt
1554+/* src-453 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1555+/* tok-453 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1556+/* tre-453 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1557+/* typ-453 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1558+/* src-454 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1559+/* tok-454 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1560+/* tre-454 %txt /tests/golden/types-partial-decimal-default/tree/txt
1561+/* typ-454 %txt /tests/golden/types-partial-decimal-default/types/txt
1562+/* src-455 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1563+/* tok-455 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1564+/* tre-455 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1565+/* typ-455 %txt /tests/golden/types-partial-dependency-chain/types/txt
1566+/* src-456 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1567+/* tok-456 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1568+/* tre-456 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1569+/* typ-456 %txt /tests/golden/types-partial-explicit-capital/types/txt
1570+/* src-457 %jibb /tests/golden/types-partial-forward/source/jibb
1571+/* tok-457 %txt /tests/golden/types-partial-forward/tokens/txt
1572+/* tre-457 %txt /tests/golden/types-partial-forward/tree/txt
1573+/* typ-457 %txt /tests/golden/types-partial-forward/types/txt
1574+/* src-458 %jibb /tests/golden/types-partial-generalization/source/jibb
1575+/* tok-458 %txt /tests/golden/types-partial-generalization/tokens/txt
1576+/* tre-458 %txt /tests/golden/types-partial-generalization/tree/txt
1577+/* typ-458 %txt /tests/golden/types-partial-generalization/types/txt
1578+/* src-459 %jibb /tests/golden/types-partial-identity/source/jibb
1579+/* tok-459 %txt /tests/golden/types-partial-identity/tokens/txt
1580+/* tre-459 %txt /tests/golden/types-partial-identity/tree/txt
1581+/* typ-459 %txt /tests/golden/types-partial-identity/types/txt
1582+/* src-460 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1583+/* tok-460 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1584+/* tre-460 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1585+/* typ-460 %txt /tests/golden/types-partial-independent-atoms/types/txt
1586+/* src-461 %jibb /tests/golden/types-partial-local-molds/source/jibb
1587+/* tok-461 %txt /tests/golden/types-partial-local-molds/tokens/txt
1588+/* tre-461 %txt /tests/golden/types-partial-local-molds/tree/txt
1589+/* typ-461 %txt /tests/golden/types-partial-local-molds/types/txt
1590+/* src-462 %jibb /tests/golden/types-partial-locals/source/jibb
1591+/* tok-462 %txt /tests/golden/types-partial-locals/tokens/txt
1592+/* tre-462 %txt /tests/golden/types-partial-locals/tree/txt
1593+/* typ-462 %txt /tests/golden/types-partial-locals/types/txt
1594+/* src-463 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1595+/* tok-463 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1596+/* tre-463 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1597+/* typ-463 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1598+/* src-464 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1599+/* tok-464 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1600+/* tre-464 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1601+/* typ-464 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1602+/* src-465 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1603+/* tok-465 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1604+/* tre-465 %txt /tests/golden/types-partial-mold-composite/tree/txt
1605+/* typ-465 %txt /tests/golden/types-partial-mold-composite/types/txt
1606+/* src-466 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1607+/* tok-466 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1608+/* tre-466 %txt /tests/golden/types-partial-mold-forward/tree/txt
1609+/* typ-466 %txt /tests/golden/types-partial-mold-forward/types/txt
1610+/* src-467 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1611+/* tok-467 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1612+/* tre-467 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1613+/* typ-467 %txt /tests/golden/types-partial-mold-recursive/types/txt
1614+/* src-468 %jibb /tests/golden/types-partial-occurs/source/jibb
1615+/* tok-468 %txt /tests/golden/types-partial-occurs/tokens/txt
1616+/* tre-468 %txt /tests/golden/types-partial-occurs/tree/txt
1617+/* typ-468 %txt /tests/golden/types-partial-occurs/types/txt
1618+/* src-469 %jibb /tests/golden/types-partial-projection/source/jibb
1619+/* tok-469 %txt /tests/golden/types-partial-projection/tokens/txt
1620+/* tre-469 %txt /tests/golden/types-partial-projection/tree/txt
1621+/* typ-469 %txt /tests/golden/types-partial-projection/types/txt
1622+/* src-470 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1623+/* tok-470 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1624+/* tre-470 %txt /tests/golden/types-partial-shadow-global/tree/txt
1625+/* typ-470 %txt /tests/golden/types-partial-shadow-global/types/txt
1626+/* src-471 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1627+/* tok-471 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1628+/* tre-471 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1629+/* typ-471 %txt /tests/golden/types-partial-shared-tvar/types/txt
1630+/* src-472 %jibb /tests/golden/types-partial-union-cases/source/jibb
1631+/* tok-472 %txt /tests/golden/types-partial-union-cases/tokens/txt
1632+/* tre-472 %txt /tests/golden/types-partial-union-cases/tree/txt
1633+/* typ-472 %txt /tests/golden/types-partial-union-cases/types/txt
1634+/* src-473 %jibb /tests/golden/types-partial-union-edges/source/jibb
1635+/* tok-473 %txt /tests/golden/types-partial-union-edges/tokens/txt
1636+/* tre-473 %txt /tests/golden/types-partial-union-edges/tree/txt
1637+/* typ-473 %txt /tests/golden/types-partial-union-edges/types/txt
1638+/* src-474 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1639+/* tok-474 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1640+/* tre-474 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1641+/* typ-474 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1642+/* src-475 %jibb /tests/golden/types-prelude-direct/source/jibb
1643+/* tok-475 %txt /tests/golden/types-prelude-direct/tokens/txt
1644+/* tre-475 %txt /tests/golden/types-prelude-direct/tree/txt
1645+/* typ-475 %txt /tests/golden/types-prelude-direct/types/txt
1646+/* src-476 %jibb /tests/golden/types-prelude-interface/source/jibb
1647+/* tok-476 %txt /tests/golden/types-prelude-interface/tokens/txt
1648+/* tre-476 %txt /tests/golden/types-prelude-interface/tree/txt
1649+/* mod-476-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1650+/* mod-476-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1651+/* typ-476 %txt /tests/golden/types-prelude-interface/types/txt
1652+/* mtre-476 %txt /tests/golden/types-prelude-interface/module-trees/txt
1653+/* src-477 %jibb /tests/golden/types-record-bound-variable/source/jibb
1654+/* tok-477 %txt /tests/golden/types-record-bound-variable/tokens/txt
1655+/* tre-477 %txt /tests/golden/types-record-bound-variable/tree/txt
1656+/* typ-477 %txt /tests/golden/types-record-bound-variable/types/txt
1657+/* src-478 %jibb /tests/golden/types-record-faces/source/jibb
1658+/* tok-478 %txt /tests/golden/types-record-faces/tokens/txt
1659+/* tre-478 %txt /tests/golden/types-record-faces/tree/txt
1660+/* typ-478 %txt /tests/golden/types-record-faces/types/txt
1661+/* src-479 %jibb /tests/golden/types-record-import/source/jibb
1662+/* tok-479 %txt /tests/golden/types-record-import/tokens/txt
1663+/* tre-479 %txt /tests/golden/types-record-import/tree/txt
1664+/* mod-479-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1665+/* typ-479 %txt /tests/golden/types-record-import/types/txt
1666+/* mtre-479 %txt /tests/golden/types-record-import/module-trees/txt
1667+/* src-480 %jibb /tests/golden/types-record-local-scheme/source/jibb
1668+/* tok-480 %txt /tests/golden/types-record-local-scheme/tokens/txt
1669+/* tre-480 %txt /tests/golden/types-record-local-scheme/tree/txt
1670+/* typ-480 %txt /tests/golden/types-record-local-scheme/types/txt
1671+/* src-481 %jibb /tests/golden/types-record-nested/source/jibb
1672+/* tok-481 %txt /tests/golden/types-record-nested/tokens/txt
1673+/* tre-481 %txt /tests/golden/types-record-nested/tree/txt
1674+/* typ-481 %txt /tests/golden/types-record-nested/types/txt
1675+/* src-482 %jibb /tests/golden/types-record-to-tuple/source/jibb
1676+/* tok-482 %txt /tests/golden/types-record-to-tuple/tokens/txt
1677+/* tre-482 %txt /tests/golden/types-record-to-tuple/tree/txt
1678+/* typ-482 %txt /tests/golden/types-record-to-tuple/types/txt
1679+/* src-483 %jibb /tests/golden/types-recursive-branch/source/jibb
1680+/* tok-483 %txt /tests/golden/types-recursive-branch/tokens/txt
1681+/* tre-483 %txt /tests/golden/types-recursive-branch/tree/txt
1682+/* typ-483 %txt /tests/golden/types-recursive-branch/types/txt
1683+/* src-484 %jibb /tests/golden/types-recursive-gate/source/jibb
1684+/* tok-484 %txt /tests/golden/types-recursive-gate/tokens/txt
1685+/* tre-484 %txt /tests/golden/types-recursive-gate/tree/txt
1686+/* typ-484 %txt /tests/golden/types-recursive-gate/types/txt
1687+/* src-485 %jibb /tests/golden/types-union-alias/source/jibb
1688+/* tok-485 %txt /tests/golden/types-union-alias/tokens/txt
1689+/* tre-485 %txt /tests/golden/types-union-alias/tree/txt
1690+/* typ-485 %txt /tests/golden/types-union-alias/types/txt
1691+/* src-486 %jibb /tests/golden/types-union-branch-context/source/jibb
1692+/* tok-486 %txt /tests/golden/types-union-branch-context/tokens/txt
1693+/* tre-486 %txt /tests/golden/types-union-branch-context/tree/txt
1694+/* typ-486 %txt /tests/golden/types-union-branch-context/types/txt
1695+/* src-487 %jibb /tests/golden/types-union-branch-pending/source/jibb
1696+/* tok-487 %txt /tests/golden/types-union-branch-pending/tokens/txt
1697+/* tre-487 %txt /tests/golden/types-union-branch-pending/tree/txt
1698+/* typ-487 %txt /tests/golden/types-union-branch-pending/types/txt
1699+/* src-488 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1700+/* tok-488 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1701+/* tre-488 %txt /tests/golden/types-union-constructor-shape/tree/txt
1702+/* typ-488 %txt /tests/golden/types-union-constructor-shape/types/txt
1703+/* src-489 %jibb /tests/golden/types-union-context-flow/source/jibb
1704+/* tok-489 %txt /tests/golden/types-union-context-flow/tokens/txt
1705+/* tre-489 %txt /tests/golden/types-union-context-flow/tree/txt
1706+/* typ-489 %txt /tests/golden/types-union-context-flow/types/txt
1707+/* src-490 %jibb /tests/golden/types-union-import/source/jibb
1708+/* tok-490 %txt /tests/golden/types-union-import/tokens/txt
1709+/* tre-490 %txt /tests/golden/types-union-import/tree/txt
1710+/* mod-490-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1711+/* typ-490 %txt /tests/golden/types-union-import/types/txt
1712+/* mtre-490 %txt /tests/golden/types-union-import/module-trees/txt
1713+/* src-491 %jibb /tests/golden/types-union-local-pending/source/jibb
1714+/* tok-491 %txt /tests/golden/types-union-local-pending/tokens/txt
1715+/* tre-491 %txt /tests/golden/types-union-local-pending/tree/txt
1716+/* typ-491 %txt /tests/golden/types-union-local-pending/types/txt
1717+/* src-492 %jibb /tests/golden/types-union-overlap/source/jibb
1718+/* tok-492 %txt /tests/golden/types-union-overlap/tokens/txt
1719+/* tre-492 %txt /tests/golden/types-union-overlap/tree/txt
1720+/* typ-492 %txt /tests/golden/types-union-overlap/types/txt
1721+/* src-493 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1722+/* tok-493 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1723+/* tre-493 %txt /tests/golden/types-union-overlap-nested/tree/txt
1724+/* typ-493 %txt /tests/golden/types-union-overlap-nested/types/txt
1725+/* src-494 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1726+/* tok-494 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1727+/* tre-494 %txt /tests/golden/types-union-phantom-generic/tree/txt
1728+/* typ-494 %txt /tests/golden/types-union-phantom-generic/types/txt
1729+/* src-495 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1730+/* tok-495 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1731+/* tre-495 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1732+/* mod-495-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1733+/* typ-495 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1734+/* mtre-495 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1735+/* src-496 %jibb /tests/golden/types-union-print-distinct/source/jibb
1736+/* tok-496 %txt /tests/golden/types-union-print-distinct/tokens/txt
1737+/* tre-496 %txt /tests/golden/types-union-print-distinct/tree/txt
1738+/* mod-496-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1739+/* mod-496-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1740+/* mod-496-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1741+/* typ-496 %txt /tests/golden/types-union-print-distinct/types/txt
1742+/* mtre-496 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1743+/* src-497 %jibb /tests/golden/types-union-print-escape/source/jibb
1744+/* tok-497 %txt /tests/golden/types-union-print-escape/tokens/txt
1745+/* tre-497 %txt /tests/golden/types-union-print-escape/tree/txt
1746+/* typ-497 %txt /tests/golden/types-union-print-escape/types/txt
1747+/* src-498 %jibb /tests/golden/types-union-print-local/source/jibb
1748+/* tok-498 %txt /tests/golden/types-union-print-local/tokens/txt
1749+/* tre-498 %txt /tests/golden/types-union-print-local/tree/txt
1750+/* typ-498 %txt /tests/golden/types-union-print-local/types/txt
1751+/* src-499 %jibb /tests/golden/types-union-print-nested/source/jibb
1752+/* tok-499 %txt /tests/golden/types-union-print-nested/tokens/txt
1753+/* tre-499 %txt /tests/golden/types-union-print-nested/tree/txt
1754+/* typ-499 %txt /tests/golden/types-union-print-nested/types/txt
1755+/* src-500 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1756+/* tok-500 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1757+/* tre-500 %txt /tests/golden/types-union-print-same-origin/tree/txt
1758+/* mod-500-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1759+/* typ-500 %txt /tests/golden/types-union-print-same-origin/types/txt
1760+/* mtre-500 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1761+/* src-501 %jibb /tests/golden/types-union-print-transitive/source/jibb
1762+/* tok-501 %txt /tests/golden/types-union-print-transitive/tokens/txt
1763+/* tre-501 %txt /tests/golden/types-union-print-transitive/tree/txt
1764+/* mod-501-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1765+/* mod-501-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1766+/* typ-501 %txt /tests/golden/types-union-print-transitive/types/txt
1767+/* mtre-501 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1768+/* src-502 %jibb /tests/golden/types-union-singleton/source/jibb
1769+/* tok-502 %txt /tests/golden/types-union-singleton/tokens/txt
1770+/* tre-502 %txt /tests/golden/types-union-singleton/tree/txt
1771+/* typ-502 %txt /tests/golden/types-union-singleton/types/txt
1772+/* src-503 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1773+/* tok-503 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1774+/* tre-503 %txt /tests/golden/types-union-tag-atoms/tree/txt
1775+/* typ-503 %txt /tests/golden/types-union-tag-atoms/types/txt
1776+/* src-504 %jibb /tests/golden/types-union-tags/source/jibb
1777+/* tok-504 %txt /tests/golden/types-union-tags/tokens/txt
1778+/* tre-504 %txt /tests/golden/types-union-tags/tree/txt
1779+/* typ-504 %txt /tests/golden/types-union-tags/types/txt
1780+/* src-505 %jibb /tests/golden/types-union-unresolved/source/jibb
1781+/* tok-505 %txt /tests/golden/types-union-unresolved/tokens/txt
1782+/* tre-505 %txt /tests/golden/types-union-unresolved/tree/txt
1783+/* typ-505 %txt /tests/golden/types-union-unresolved/types/txt
1784+/* src-506 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1785+/* tok-506 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1786+/* tre-506 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1787+/* typ-506 %txt /tests/golden/types-union-unresolved-flow/types/txt
1788+/* src-507 %jibb /tests/golden/types-unit-context/source/jibb
1789+/* tok-507 %txt /tests/golden/types-unit-context/tokens/txt
1790+/* tre-507 %txt /tests/golden/types-unit-context/tree/txt
1791+/* typ-507 %txt /tests/golden/types-unit-context/types/txt
1792+/* src-508 %jibb /tests/golden/types-unit-patterns/source/jibb
1793+/* tok-508 %txt /tests/golden/types-unit-patterns/tokens/txt
1794+/* tre-508 %txt /tests/golden/types-unit-patterns/tree/txt
1795+/* typ-508 %txt /tests/golden/types-unit-patterns/types/txt
17761796=/ prepared-prelude (prepare-prelude:jibb prelude-source)
17771797|%
17781798:: one arm per case
@@ -2583,208 +2603,216 @@
25832603 (weld (check ~.prelude-list-unit src-402 `tok-402 `tre-402) (check-types ~.prelude-list-unit ~[%tests %golden ~.prelude-list-unit %source %jibb] src-402 `typ-402))
25842604++ test-prelude-unit-list-transforms
25852605 (weld (check ~.prelude-unit-list-transforms src-403 `tok-403 `tre-403) (check-types ~.prelude-unit-list-transforms ~[%tests %golden ~.prelude-unit-list-transforms %source %jibb] src-403 `typ-403))
2606+++ test-types-capital-distinct
2607+ (weld (check ~.types-capital-distinct src-404 `tok-404 `tre-404) (check-types ~.types-capital-distinct ~[%tests %golden ~.types-capital-distinct %source %jibb] src-404 `typ-404))
25862608++ test-types-generic-arity
2587− (weld (check ~.types-generic-arity src-404 `tok-404 `tre-404) (check-types ~.types-generic-arity ~[%tests %golden ~.types-generic-arity %source %jibb] src-404 `typ-404))
2609+ (weld (check ~.types-generic-arity src-405 `tok-405 `tre-405) (check-types ~.types-generic-arity ~[%tests %golden ~.types-generic-arity %source %jibb] src-405 `typ-405))
25882610++ test-types-generic-face-inference
2589− (weld (check ~.types-generic-face-inference src-405 `tok-405 `tre-405) (check-types ~.types-generic-face-inference ~[%tests %golden ~.types-generic-face-inference %source %jibb] src-405 `typ-405))
2611+ (weld (check ~.types-generic-face-inference src-406 `tok-406 `tre-406) (check-types ~.types-generic-face-inference ~[%tests %golden ~.types-generic-face-inference %source %jibb] src-406 `typ-406))
25902612++ test-types-generic-gates
2591− (weld (check ~.types-generic-gates src-406 `tok-406 `tre-406) (check-types ~.types-generic-gates ~[%tests %golden ~.types-generic-gates %source %jibb] src-406 `typ-406))
2613+ (weld (check ~.types-generic-gates src-407 `tok-407 `tre-407) (check-types ~.types-generic-gates ~[%tests %golden ~.types-generic-gates %source %jibb] src-407 `typ-407))
25922614++ test-types-generic-import-reverse
2593− (weld (weld (check ~.types-generic-import-reverse src-407 `tok-407 `tre-407) (check-module-types ~.types-generic-import-reverse ~[%tests %golden ~.types-generic-import-reverse %source %jibb] src-407 `typ-407 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-407-1]])) (check-module-trees ~.types-generic-import-reverse `mtre-407 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-407-1]]))
2615+ (weld (weld (check ~.types-generic-import-reverse src-408 `tok-408 `tre-408) (check-module-types ~.types-generic-import-reverse ~[%tests %golden ~.types-generic-import-reverse %source %jibb] src-408 `typ-408 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-408-1]])) (check-module-trees ~.types-generic-import-reverse `mtre-408 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-408-1]]))
25942616++ test-types-generic-lexical-alias
2595− (weld (check ~.types-generic-lexical-alias src-408 `tok-408 `tre-408) (check-types ~.types-generic-lexical-alias ~[%tests %golden ~.types-generic-lexical-alias %source %jibb] src-408 `typ-408))
2617+ (weld (check ~.types-generic-lexical-alias src-409 `tok-409 `tre-409) (check-types ~.types-generic-lexical-alias ~[%tests %golden ~.types-generic-lexical-alias %source %jibb] src-409 `typ-409))
25962618++ test-types-generic-local-parameter
2597− (weld (check ~.types-generic-local-parameter src-409 `tok-409 `tre-409) (check-types ~.types-generic-local-parameter ~[%tests %golden ~.types-generic-local-parameter %source %jibb] src-409 `typ-409))
2619+ (weld (check ~.types-generic-local-parameter src-410 `tok-410 `tre-410) (check-types ~.types-generic-local-parameter ~[%tests %golden ~.types-generic-local-parameter %source %jibb] src-410 `typ-410))
25982620++ test-types-generic-local-scope
2599− (weld (check ~.types-generic-local-scope src-410 `tok-410 `tre-410) (check-types ~.types-generic-local-scope ~[%tests %golden ~.types-generic-local-scope %source %jibb] src-410 `typ-410))
2621+ (weld (check ~.types-generic-local-scope src-411 `tok-411 `tre-411) (check-types ~.types-generic-local-scope ~[%tests %golden ~.types-generic-local-scope %source %jibb] src-411 `typ-411))
26002622++ test-types-generic-module
2601− (weld (weld (check ~.types-generic-module src-411 `tok-411 `tre-411) (check-module-types ~.types-generic-module ~[%tests %golden ~.types-generic-module %source %jibb] src-411 `typ-411 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-411-1]])) (check-module-trees ~.types-generic-module `mtre-411 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-411-1]]))
2623+ (weld (weld (check ~.types-generic-module src-412 `tok-412 `tre-412) (check-module-types ~.types-generic-module ~[%tests %golden ~.types-generic-module %source %jibb] src-412 `typ-412 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-412-1]])) (check-module-trees ~.types-generic-module `mtre-412 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-412-1]]))
26022624++ test-types-generic-nested-scope
2603− (weld (check ~.types-generic-nested-scope src-412 `tok-412 `tre-412) (check-types ~.types-generic-nested-scope ~[%tests %golden ~.types-generic-nested-scope %source %jibb] src-412 `typ-412))
2625+ (weld (check ~.types-generic-nested-scope src-413 `tok-413 `tre-413) (check-types ~.types-generic-nested-scope ~[%tests %golden ~.types-generic-nested-scope %source %jibb] src-413 `typ-413))
26042626++ test-types-generic-parameters
2605− (weld (check ~.types-generic-parameters src-413 `tok-413 `tre-413) (check-types ~.types-generic-parameters ~[%tests %golden ~.types-generic-parameters %source %jibb] src-413 `typ-413))
2627+ (weld (check ~.types-generic-parameters src-414 `tok-414 `tre-414) (check-types ~.types-generic-parameters ~[%tests %golden ~.types-generic-parameters %source %jibb] src-414 `typ-414))
26062628++ test-types-generic-record
2607− (weld (check ~.types-generic-record src-414 `tok-414 `tre-414) (check-types ~.types-generic-record ~[%tests %golden ~.types-generic-record %source %jibb] src-414 `typ-414))
2629+ (weld (check ~.types-generic-record src-415 `tok-415 `tre-415) (check-types ~.types-generic-record ~[%tests %golden ~.types-generic-record %source %jibb] src-415 `typ-415))
26082630++ test-types-generic-recursive-union
2609− (weld (check ~.types-generic-recursive-union src-415 `tok-415 `tre-415) (check-types ~.types-generic-recursive-union ~[%tests %golden ~.types-generic-recursive-union %source %jibb] src-415 `typ-415))
2631+ (weld (check ~.types-generic-recursive-union src-416 `tok-416 `tre-416) (check-types ~.types-generic-recursive-union ~[%tests %golden ~.types-generic-recursive-union %source %jibb] src-416 `typ-416))
26102632++ test-types-generic-repeated
2611− (weld (check ~.types-generic-repeated src-416 `tok-416 `tre-416) (check-types ~.types-generic-repeated ~[%tests %golden ~.types-generic-repeated %source %jibb] src-416 `typ-416))
2633+ (weld (check ~.types-generic-repeated src-417 `tok-417 `tre-417) (check-types ~.types-generic-repeated ~[%tests %golden ~.types-generic-repeated %source %jibb] src-417 `typ-417))
26122634++ test-types-generic-union-alias
2613− (weld (check ~.types-generic-union-alias src-417 `tok-417 `tre-417) (check-types ~.types-generic-union-alias ~[%tests %golden ~.types-generic-union-alias %source %jibb] src-417 `typ-417))
2635+ (weld (check ~.types-generic-union-alias src-418 `tok-418 `tre-418) (check-types ~.types-generic-union-alias ~[%tests %golden ~.types-generic-union-alias %source %jibb] src-418 `typ-418))
26142636++ test-types-generic-union-alias-face
2615− (weld (weld (check ~.types-generic-union-alias-face src-418 `tok-418 `tre-418) (check-module-types ~.types-generic-union-alias-face ~[%tests %golden ~.types-generic-union-alias-face %source %jibb] src-418 `typ-418 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-418-1]])) (check-module-trees ~.types-generic-union-alias-face `mtre-418 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-418-1]]))
2637+ (weld (weld (check ~.types-generic-union-alias-face src-419 `tok-419 `tre-419) (check-module-types ~.types-generic-union-alias-face ~[%tests %golden ~.types-generic-union-alias-face %source %jibb] src-419 `typ-419 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-419-1]])) (check-module-trees ~.types-generic-union-alias-face `mtre-419 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-419-1]]))
26162638++ test-types-generic-union-capitals
2617− (weld (check ~.types-generic-union-capitals src-419 `tok-419 `tre-419) (check-types ~.types-generic-union-capitals ~[%tests %golden ~.types-generic-union-capitals %source %jibb] src-419 `typ-419))
2639+ (weld (check ~.types-generic-union-capitals src-420 `tok-420 `tre-420) (check-types ~.types-generic-union-capitals ~[%tests %golden ~.types-generic-union-capitals %source %jibb] src-420 `typ-420))
26182640++ test-types-generic-union-errors
2619− (weld (check ~.types-generic-union-errors src-420 `tok-420 `tre-420) (check-types ~.types-generic-union-errors ~[%tests %golden ~.types-generic-union-errors %source %jibb] src-420 `typ-420))
2641+ (weld (check ~.types-generic-union-errors src-421 `tok-421 `tre-421) (check-types ~.types-generic-union-errors ~[%tests %golden ~.types-generic-union-errors %source %jibb] src-421 `typ-421))
26202642++ test-types-generic-union-escaping
2621− (weld (weld (check ~.types-generic-union-escaping src-421 `tok-421 `tre-421) (check-module-types ~.types-generic-union-escaping ~[%tests %golden ~.types-generic-union-escaping %source %jibb] src-421 `typ-421 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-421-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-421-2]])) (check-module-trees ~.types-generic-union-escaping `mtre-421 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-421-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-421-2]]))
2643+ (weld (weld (check ~.types-generic-union-escaping src-422 `tok-422 `tre-422) (check-module-types ~.types-generic-union-escaping ~[%tests %golden ~.types-generic-union-escaping %source %jibb] src-422 `typ-422 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-422-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-422-2]])) (check-module-trees ~.types-generic-union-escaping `mtre-422 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-422-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-422-2]]))
26222644++ test-types-generic-union-import
2623− (weld (weld (check ~.types-generic-union-import src-422 `tok-422 `tre-422) (check-module-types ~.types-generic-union-import ~[%tests %golden ~.types-generic-union-import %source %jibb] src-422 `typ-422 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-422-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-422-2]])) (check-module-trees ~.types-generic-union-import `mtre-422 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-422-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-422-2]]))
2645+ (weld (weld (check ~.types-generic-union-import src-423 `tok-423 `tre-423) (check-module-types ~.types-generic-union-import ~[%tests %golden ~.types-generic-union-import %source %jibb] src-423 `typ-423 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-423-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-423-2]])) (check-module-trees ~.types-generic-union-import `mtre-423 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-423-1] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-423-2]]))
26242646++ test-types-generic-union-local
2625− (weld (check ~.types-generic-union-local src-423 `tok-423 `tre-423) (check-types ~.types-generic-union-local ~[%tests %golden ~.types-generic-union-local %source %jibb] src-423 `typ-423))
2647+ (weld (check ~.types-generic-union-local src-424 `tok-424 `tre-424) (check-types ~.types-generic-union-local ~[%tests %golden ~.types-generic-union-local %source %jibb] src-424 `typ-424))
26262648++ test-types-generic-union-transitive
2627− (weld (weld (check ~.types-generic-union-transitive src-424 `tok-424 `tre-424) (check-module-types ~.types-generic-union-transitive ~[%tests %golden ~.types-generic-union-transitive %source %jibb] src-424 `typ-424 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-424-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-424-2]])) (check-module-trees ~.types-generic-union-transitive `mtre-424 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-424-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-424-2]]))
2649+ (weld (weld (check ~.types-generic-union-transitive src-425 `tok-425 `tre-425) (check-module-types ~.types-generic-union-transitive ~[%tests %golden ~.types-generic-union-transitive %source %jibb] src-425 `typ-425 ~ ~ ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-425-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-425-2]])) (check-module-trees ~.types-generic-union-transitive `mtre-425 ~[['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-425-1] ['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-425-2]]))
2650+++ test-types-import-duplicate-mark
2651+ (weld (check ~.types-import-duplicate-mark src-426 `tok-426 `tre-426) (check-mark-types ~.types-import-duplicate-mark ~[%tests %golden ~.types-import-duplicate-mark %source %jibb] src-426 `typ-426 ~ ~[[%duplicate mark-426-1]]))
2652+++ test-types-import-duplicate-sur
2653+ (weld (check ~.types-import-duplicate-sur src-427 `tok-427 `tre-427) (check-import-types ~.types-import-duplicate-sur ~[%tests %golden ~.types-import-duplicate-sur %source %jibb] src-427 `typ-427 ~[[%fixture %direct imp-427-1] [%fixture %nested imp-427-2] [%fixture %valid imp-427-3]]))
26282654++ test-types-import-mark
2629− (weld (check ~.types-import-mark src-425 `tok-425 `tre-425) (check-mark-types ~.types-import-mark ~[%tests %golden ~.types-import-mark %source %jibb] src-425 `typ-425 ~[[%fixture %title imp-425-1]] ~[[%label mark-425-1]]))
2655+ (weld (check ~.types-import-mark src-428 `tok-428 `tre-428) (check-mark-types ~.types-import-mark ~[%tests %golden ~.types-import-mark %source %jibb] src-428 `typ-428 ~[[%fixture %title imp-428-1]] ~[[%label mark-428-1]]))
26302656++ test-types-import-mark-record
2631− (weld (check ~.types-import-mark-record src-426 `tok-426 `tre-426) (check-mark-types ~.types-import-mark-record ~[%tests %golden ~.types-import-mark-record %source %jibb] src-426 `typ-426 ~ ~[[%note mark-426-1] [%choice mark-426-2]]))
2657+ (weld (check ~.types-import-mark-record src-429 `tok-429 `tre-429) (check-mark-types ~.types-import-mark-record ~[%tests %golden ~.types-import-mark-record %source %jibb] src-429 `typ-429 ~ ~[[%note mark-429-1] [%choice mark-429-2]]))
26322658++ test-types-import-missing-mold
2633− (weld (check ~.types-import-missing-mold src-427 `tok-427 `tre-427) (check-import-types ~.types-import-missing-mold ~[%tests %golden ~.types-import-missing-mold %source %jibb] src-427 `typ-427 ~[[%fixture %missing imp-427-1]]))
2659+ (weld (check ~.types-import-missing-mold src-430 `tok-430 `tre-430) (check-import-types ~.types-import-missing-mold ~[%tests %golden ~.types-import-missing-mold %source %jibb] src-430 `typ-430 ~[[%fixture %missing imp-430-1]]))
26342660++ test-types-import-sur
2635− (weld (check ~.types-import-sur src-428 `tok-428 `tre-428) (check-import-types ~.types-import-sur ~[%tests %golden ~.types-import-sur %source %jibb] src-428 `typ-428 ~[[%fixture %title imp-428-1] [%fixture %pair imp-428-2]]))
2661+ (weld (check ~.types-import-sur src-431 `tok-431 `tre-431) (check-import-types ~.types-import-sur ~[%tests %golden ~.types-import-sur %source %jibb] src-431 `typ-431 ~[[%fixture %title imp-431-1] [%fixture %pair imp-431-2]]))
26362662++ test-types-import-sur-record-graph
2637− (weld (weld (check ~.types-import-sur-record-graph src-429 `tok-429 `tre-429) (check-module-types ~.types-import-sur-record-graph ~[%tests %golden ~.types-import-sur-record-graph %source %jibb] src-429 `typ-429 ~[[%fixture %entry imp-429-1]] ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-429-1]])) (check-module-trees ~.types-import-sur-record-graph `mtre-429 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-429-1]]))
2663+ (weld (weld (check ~.types-import-sur-record-graph src-432 `tok-432 `tre-432) (check-module-types ~.types-import-sur-record-graph ~[%tests %golden ~.types-import-sur-record-graph %source %jibb] src-432 `typ-432 ~[[%fixture %entry imp-432-1]] ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-432-1]])) (check-module-trees ~.types-import-sur-record-graph `mtre-432 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-432-1]]))
2664+++ test-types-list-branch
2665+ (weld (check ~.types-list-branch src-433 `tok-433 `tre-433) (check-module-types ~.types-list-branch ~[%tests %golden ~.types-list-branch %source %jibb] src-433 `typ-433 ~ ~ ~))
26382666++ test-types-list-cons
2639− (weld (check ~.types-list-cons src-430 `tok-430 `tre-430) (check-module-types ~.types-list-cons ~[%tests %golden ~.types-list-cons %source %jibb] src-430 `typ-430 ~ ~ ~))
2667+ (weld (check ~.types-list-cons src-434 `tok-434 `tre-434) (check-module-types ~.types-list-cons ~[%tests %golden ~.types-list-cons %source %jibb] src-434 `typ-434 ~ ~ ~))
26402668++ test-types-list-context
2641− (weld (check ~.types-list-context src-431 `tok-431 `tre-431) (check-module-types ~.types-list-context ~[%tests %golden ~.types-list-context %source %jibb] src-431 `typ-431 ~ ~ ~))
2669+ (weld (check ~.types-list-context src-435 `tok-435 `tre-435) (check-module-types ~.types-list-context ~[%tests %golden ~.types-list-context %source %jibb] src-435 `typ-435 ~ ~ ~))
26422670++ test-types-list-imported
2643− (weld (check ~.types-list-imported src-432 `tok-432 `tre-432) (check-module-types ~.types-list-imported ~[%tests %golden ~.types-list-imported %source %jibb] src-432 `typ-432 ~[[%fixture %texts imp-432-1] [%fixture %ships imp-432-2]] ~ ~))
2671+ (weld (check ~.types-list-imported src-436 `tok-436 `tre-436) (check-module-types ~.types-list-imported ~[%tests %golden ~.types-list-imported %source %jibb] src-436 `typ-436 ~[[%fixture %texts imp-436-1] [%fixture %ships imp-436-2]] ~ ~))
26442672++ test-types-list-pattern-imported
2645− (weld (check ~.types-list-pattern-imported src-433 `tok-433 `tre-433) (check-module-types ~.types-list-pattern-imported ~[%tests %golden ~.types-list-pattern-imported %source %jibb] src-433 `typ-433 ~[[%fixture %texts imp-433-1] [%fixture %text-set imp-433-2]] ~ ~))
2673+ (weld (check ~.types-list-pattern-imported src-437 `tok-437 `tre-437) (check-module-types ~.types-list-pattern-imported ~[%tests %golden ~.types-list-pattern-imported %source %jibb] src-437 `typ-437 ~[[%fixture %texts imp-437-1] [%fixture %text-set imp-437-2]] ~ ~))
26462674++ test-types-list-patterns
2647− (weld (check ~.types-list-patterns src-434 `tok-434 `tre-434) (check-module-types ~.types-list-patterns ~[%tests %golden ~.types-list-patterns %source %jibb] src-434 `typ-434 ~ ~ ~))
2675+ (weld (check ~.types-list-patterns src-438 `tok-438 `tre-438) (check-module-types ~.types-list-patterns ~[%tests %golden ~.types-list-patterns %source %jibb] src-438 `typ-438 ~ ~ ~))
26482676++ test-types-module-fixtures
2649− (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-435 `tok-435 `tre-435) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-435 `typ-435 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-435-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-435-2]])) (check-module-trees ~.types-module-fixtures `mtre-435 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-435-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-435-2]]))
2677+ (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-439 `tok-439 `tre-439) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-439 `typ-439 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-439-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-439-2]])) (check-module-trees ~.types-module-fixtures `mtre-439 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-439-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-439-2]]))
26502678++ test-types-module-mixed
2651− (weld (weld (check ~.types-module-mixed src-436 `tok-436 `tre-436) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-436 `typ-436 ~[[%fixture %title imp-436-1]] ~[[%label mark-436-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-436-1]])) (check-module-trees ~.types-module-mixed `mtre-436 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-436-1]]))
2679+ (weld (weld (check ~.types-module-mixed src-440 `tok-440 `tre-440) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-440 `typ-440 ~[[%fixture %title imp-440-1]] ~[[%label mark-440-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-440-1]])) (check-module-trees ~.types-module-mixed `mtre-440 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-440-1]]))
26522680++ test-types-null-context
2653− (weld (check ~.types-null-context src-437 `tok-437 `tre-437) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-437 `typ-437))
2681+ (weld (check ~.types-null-context src-441 `tok-441 `tre-441) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-441 `typ-441))
26542682++ test-types-null-overlap
2655− (weld (check ~.types-null-overlap src-438 `tok-438 `tre-438) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-438 `typ-438))
2683+ (weld (check ~.types-null-overlap src-442 `tok-442 `tre-442) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-442 `typ-442))
26562684++ test-types-null-unresolved
2657− (weld (check ~.types-null-unresolved src-439 `tok-439 `tre-439) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-439 `typ-439))
2685+ (weld (check ~.types-null-unresolved src-443 `tok-443 `tre-443) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-443 `typ-443))
26582686++ test-types-partial-apply
2659− (weld (check ~.types-partial-apply src-440 `tok-440 `tre-440) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-440 `typ-440))
2687+ (weld (check ~.types-partial-apply src-444 `tok-444 `tre-444) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-444 `typ-444))
26602688++ test-types-partial-atom-alias
2661− (weld (check ~.types-partial-atom-alias src-441 `tok-441 `tre-441) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-441 `typ-441))
2689+ (weld (check ~.types-partial-atom-alias src-445 `tok-445 `tre-445) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-445 `typ-445))
26622690++ test-types-partial-atom-constraint
2663− (weld (check ~.types-partial-atom-constraint src-442 `tok-442 `tre-442) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-442 `typ-442))
2691+ (weld (check ~.types-partial-atom-constraint src-446 `tok-446 `tre-446) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-446 `typ-446))
26642692++ test-types-partial-atom-widening
2665− (weld (check ~.types-partial-atom-widening src-443 `tok-443 `tre-443) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-443 `typ-443))
2693+ (weld (check ~.types-partial-atom-widening src-447 `tok-447 `tre-447) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-447 `typ-447))
26662694++ test-types-partial-aura
2667− (weld (check ~.types-partial-aura src-444 `tok-444 `tre-444) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-444 `typ-444))
2695+ (weld (check ~.types-partial-aura src-448 `tok-448 `tre-448) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-448 `typ-448))
26682696++ test-types-partial-aura-family
2669− (weld (check ~.types-partial-aura-family src-445 `tok-445 `tre-445) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-445 `typ-445))
2697+ (weld (check ~.types-partial-aura-family src-449 `tok-449 `tre-449) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-449 `typ-449))
26702698++ test-types-partial-aura-generalization
2671− (weld (check ~.types-partial-aura-generalization src-446 `tok-446 `tre-446) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-446 `typ-446))
2699+ (weld (check ~.types-partial-aura-generalization src-450 `tok-450 `tre-450) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-450 `typ-450))
26722700++ test-types-partial-bare-atom
2673− (weld (check ~.types-partial-bare-atom src-447 `tok-447 `tre-447) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-447 `typ-447))
2701+ (weld (check ~.types-partial-bare-atom src-451 `tok-451 `tre-451) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-451 `typ-451))
26742702++ test-types-partial-branch-widening
2675− (weld (check ~.types-partial-branch-widening src-448 `tok-448 `tre-448) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-448 `typ-448))
2703+ (weld (check ~.types-partial-branch-widening src-452 `tok-452 `tre-452) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-452 `typ-452))
26762704++ test-types-partial-conflicting-sites
2677− (weld (check ~.types-partial-conflicting-sites src-449 `tok-449 `tre-449) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-449 `typ-449))
2705+ (weld (check ~.types-partial-conflicting-sites src-453 `tok-453 `tre-453) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-453 `typ-453))
26782706++ test-types-partial-decimal-default
2679− (weld (check ~.types-partial-decimal-default src-450 `tok-450 `tre-450) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-450 `typ-450))
2707+ (weld (check ~.types-partial-decimal-default src-454 `tok-454 `tre-454) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-454 `typ-454))
26802708++ test-types-partial-dependency-chain
2681− (weld (check ~.types-partial-dependency-chain src-451 `tok-451 `tre-451) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-451 `typ-451))
2709+ (weld (check ~.types-partial-dependency-chain src-455 `tok-455 `tre-455) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-455 `typ-455))
26822710++ test-types-partial-explicit-capital
2683− (weld (check ~.types-partial-explicit-capital src-452 `tok-452 `tre-452) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-452 `typ-452))
2711+ (weld (check ~.types-partial-explicit-capital src-456 `tok-456 `tre-456) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-456 `typ-456))
26842712++ test-types-partial-forward
2685− (weld (check ~.types-partial-forward src-453 `tok-453 `tre-453) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-453 `typ-453))
2713+ (weld (check ~.types-partial-forward src-457 `tok-457 `tre-457) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-457 `typ-457))
26862714++ test-types-partial-generalization
2687− (weld (check ~.types-partial-generalization src-454 `tok-454 `tre-454) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-454 `typ-454))
2715+ (weld (check ~.types-partial-generalization src-458 `tok-458 `tre-458) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-458 `typ-458))
26882716++ test-types-partial-identity
2689− (weld (check ~.types-partial-identity src-455 `tok-455 `tre-455) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-455 `typ-455))
2717+ (weld (check ~.types-partial-identity src-459 `tok-459 `tre-459) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-459 `typ-459))
26902718++ test-types-partial-independent-atoms
2691− (weld (check ~.types-partial-independent-atoms src-456 `tok-456 `tre-456) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-456 `typ-456))
2719+ (weld (check ~.types-partial-independent-atoms src-460 `tok-460 `tre-460) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-460 `typ-460))
26922720++ test-types-partial-local-molds
2693− (weld (check ~.types-partial-local-molds src-457 `tok-457 `tre-457) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-457 `typ-457))
2721+ (weld (check ~.types-partial-local-molds src-461 `tok-461 `tre-461) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-461 `typ-461))
26942722++ test-types-partial-locals
2695− (weld (check ~.types-partial-locals src-458 `tok-458 `tre-458) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-458 `typ-458))
2723+ (weld (check ~.types-partial-locals src-462 `tok-462 `tre-462) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-462 `typ-462))
26962724++ test-types-partial-many-atom-constraints
2697− (weld (check ~.types-partial-many-atom-constraints src-459 `tok-459 `tre-459) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-459 `typ-459))
2725+ (weld (check ~.types-partial-many-atom-constraints src-463 `tok-463 `tre-463) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-463 `typ-463))
26982726++ test-types-partial-mold-bare-aura
2699− (weld (check ~.types-partial-mold-bare-aura src-460 `tok-460 `tre-460) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-460 `typ-460))
2727+ (weld (check ~.types-partial-mold-bare-aura src-464 `tok-464 `tre-464) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-464 `typ-464))
27002728++ test-types-partial-mold-composite
2701− (weld (check ~.types-partial-mold-composite src-461 `tok-461 `tre-461) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-461 `typ-461))
2729+ (weld (check ~.types-partial-mold-composite src-465 `tok-465 `tre-465) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-465 `typ-465))
27022730++ test-types-partial-mold-forward
2703− (weld (check ~.types-partial-mold-forward src-462 `tok-462 `tre-462) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-462 `typ-462))
2731+ (weld (check ~.types-partial-mold-forward src-466 `tok-466 `tre-466) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-466 `typ-466))
27042732++ test-types-partial-mold-recursive
2705− (weld (check ~.types-partial-mold-recursive src-463 `tok-463 `tre-463) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-463 `typ-463))
2733+ (weld (check ~.types-partial-mold-recursive src-467 `tok-467 `tre-467) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-467 `typ-467))
27062734++ test-types-partial-occurs
2707− (weld (check ~.types-partial-occurs src-464 `tok-464 `tre-464) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-464 `typ-464))
2735+ (weld (check ~.types-partial-occurs src-468 `tok-468 `tre-468) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-468 `typ-468))
27082736++ test-types-partial-projection
2709− (weld (check ~.types-partial-projection src-465 `tok-465 `tre-465) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-465 `typ-465))
2737+ (weld (check ~.types-partial-projection src-469 `tok-469 `tre-469) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-469 `typ-469))
27102738++ test-types-partial-shadow-global
2711− (weld (check ~.types-partial-shadow-global src-466 `tok-466 `tre-466) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-466 `typ-466))
2739+ (weld (check ~.types-partial-shadow-global src-470 `tok-470 `tre-470) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-470 `typ-470))
27122740++ test-types-partial-shared-tvar
2713− (weld (check ~.types-partial-shared-tvar src-467 `tok-467 `tre-467) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-467 `typ-467))
2741+ (weld (check ~.types-partial-shared-tvar src-471 `tok-471 `tre-471) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-471 `typ-471))
27142742++ test-types-partial-union-cases
2715− (weld (check ~.types-partial-union-cases src-468 `tok-468 `tre-468) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-468 `typ-468))
2743+ (weld (check ~.types-partial-union-cases src-472 `tok-472 `tre-472) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-472 `typ-472))
27162744++ test-types-partial-union-edges
2717− (weld (check ~.types-partial-union-edges src-469 `tok-469 `tre-469) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-469 `typ-469))
2745+ (weld (check ~.types-partial-union-edges src-473 `tok-473 `tre-473) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-473 `typ-473))
27182746++ test-types-partial-unresolved-tag
2719− (weld (check ~.types-partial-unresolved-tag src-470 `tok-470 `tre-470) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-470 `typ-470))
2747+ (weld (check ~.types-partial-unresolved-tag src-474 `tok-474 `tre-474) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-474 `typ-474))
27202748++ test-types-prelude-direct
2721− (weld (check ~.types-prelude-direct src-471 `tok-471 `tre-471) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-471 `typ-471 ~ ~ ~))
2749+ (weld (check ~.types-prelude-direct src-475 `tok-475 `tre-475) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-475 `typ-475 ~ ~ ~))
27222750++ test-types-prelude-interface
2723− (weld (weld (check ~.types-prelude-interface src-472 `tok-472 `tre-472) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-472 `typ-472 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-472-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-472-2]])) (check-module-trees ~.types-prelude-interface `mtre-472 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-472-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-472-2]]))
2751+ (weld (weld (check ~.types-prelude-interface src-476 `tok-476 `tre-476) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-476 `typ-476 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-476-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-476-2]])) (check-module-trees ~.types-prelude-interface `mtre-476 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-476-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-476-2]]))
27242752++ test-types-record-bound-variable
2725− (weld (check ~.types-record-bound-variable src-473 `tok-473 `tre-473) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-473 `typ-473))
2753+ (weld (check ~.types-record-bound-variable src-477 `tok-477 `tre-477) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-477 `typ-477))
27262754++ test-types-record-faces
2727− (weld (check ~.types-record-faces src-474 `tok-474 `tre-474) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-474 `typ-474))
2755+ (weld (check ~.types-record-faces src-478 `tok-478 `tre-478) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-478 `typ-478))
27282756++ test-types-record-import
2729− (weld (weld (check ~.types-record-import src-475 `tok-475 `tre-475) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-475 `typ-475 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-475-1]])) (check-module-trees ~.types-record-import `mtre-475 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-475-1]]))
2757+ (weld (weld (check ~.types-record-import src-479 `tok-479 `tre-479) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-479 `typ-479 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]])) (check-module-trees ~.types-record-import `mtre-479 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]]))
27302758++ test-types-record-local-scheme
2731− (weld (check ~.types-record-local-scheme src-476 `tok-476 `tre-476) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-476 `typ-476))
2759+ (weld (check ~.types-record-local-scheme src-480 `tok-480 `tre-480) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-480 `typ-480))
27322760++ test-types-record-nested
2733− (weld (check ~.types-record-nested src-477 `tok-477 `tre-477) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-477 `typ-477))
2761+ (weld (check ~.types-record-nested src-481 `tok-481 `tre-481) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-481 `typ-481))
27342762++ test-types-record-to-tuple
2735− (weld (check ~.types-record-to-tuple src-478 `tok-478 `tre-478) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-478 `typ-478))
2763+ (weld (check ~.types-record-to-tuple src-482 `tok-482 `tre-482) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-482 `typ-482))
27362764++ test-types-recursive-branch
2737− (weld (check ~.types-recursive-branch src-479 `tok-479 `tre-479) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-479 `typ-479 ~ ~ ~))
2765+ (weld (check ~.types-recursive-branch src-483 `tok-483 `tre-483) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-483 `typ-483 ~ ~ ~))
27382766++ test-types-recursive-gate
2739− (weld (check ~.types-recursive-gate src-480 `tok-480 `tre-480) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-480 `typ-480))
2767+ (weld (check ~.types-recursive-gate src-484 `tok-484 `tre-484) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-484 `typ-484))
27402768++ test-types-union-alias
2741− (weld (check ~.types-union-alias src-481 `tok-481 `tre-481) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-481 `typ-481))
2769+ (weld (check ~.types-union-alias src-485 `tok-485 `tre-485) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-485 `typ-485))
27422770++ test-types-union-branch-context
2743− (weld (check ~.types-union-branch-context src-482 `tok-482 `tre-482) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-482 `typ-482))
2771+ (weld (check ~.types-union-branch-context src-486 `tok-486 `tre-486) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-486 `typ-486))
27442772++ test-types-union-branch-pending
2745− (weld (check ~.types-union-branch-pending src-483 `tok-483 `tre-483) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-483 `typ-483))
2773+ (weld (check ~.types-union-branch-pending src-487 `tok-487 `tre-487) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-487 `typ-487))
27462774++ test-types-union-constructor-shape
2747− (weld (check ~.types-union-constructor-shape src-484 `tok-484 `tre-484) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-484 `typ-484))
2775+ (weld (check ~.types-union-constructor-shape src-488 `tok-488 `tre-488) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-488 `typ-488))
27482776++ test-types-union-context-flow
2749− (weld (check ~.types-union-context-flow src-485 `tok-485 `tre-485) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-485 `typ-485))
2777+ (weld (check ~.types-union-context-flow src-489 `tok-489 `tre-489) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-489 `typ-489))
27502778++ test-types-union-import
2751− (weld (weld (check ~.types-union-import src-486 `tok-486 `tre-486) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-486 `typ-486 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-486-1]])) (check-module-trees ~.types-union-import `mtre-486 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-486-1]]))
2779+ (weld (weld (check ~.types-union-import src-490 `tok-490 `tre-490) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-490 `typ-490 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-490-1]])) (check-module-trees ~.types-union-import `mtre-490 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-490-1]]))
27522780++ test-types-union-local-pending
2753− (weld (check ~.types-union-local-pending src-487 `tok-487 `tre-487) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-487 `typ-487))
2781+ (weld (check ~.types-union-local-pending src-491 `tok-491 `tre-491) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-491 `typ-491))
27542782++ test-types-union-overlap
2755− (weld (check ~.types-union-overlap src-488 `tok-488 `tre-488) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-488 `typ-488))
2783+ (weld (check ~.types-union-overlap src-492 `tok-492 `tre-492) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-492 `typ-492))
27562784++ test-types-union-overlap-nested
2757− (weld (check ~.types-union-overlap-nested src-489 `tok-489 `tre-489) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-489 `typ-489))
2785+ (weld (check ~.types-union-overlap-nested src-493 `tok-493 `tre-493) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-493 `typ-493))
27582786++ test-types-union-phantom-generic
2759− (weld (check ~.types-union-phantom-generic src-490 `tok-490 `tre-490) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-490 `typ-490))
2787+ (weld (check ~.types-union-phantom-generic src-494 `tok-494 `tre-494) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-494 `typ-494))
27602788++ test-types-union-print-cross-namespace
2761− (weld (weld (check ~.types-union-print-cross-namespace src-491 `tok-491 `tre-491) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-491 `typ-491 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-491-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-491 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-491-1]]))
2789+ (weld (weld (check ~.types-union-print-cross-namespace src-495 `tok-495 `tre-495) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-495 `typ-495 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-495-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-495 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-495-1]]))
27622790++ test-types-union-print-distinct
2763− (weld (weld (check ~.types-union-print-distinct src-492 `tok-492 `tre-492) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-492 `typ-492 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-492-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-492-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-492-3]])) (check-module-trees ~.types-union-print-distinct `mtre-492 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-492-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-492-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-492-3]]))
2791+ (weld (weld (check ~.types-union-print-distinct src-496 `tok-496 `tre-496) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-496 `typ-496 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-496-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-496-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-496-3]])) (check-module-trees ~.types-union-print-distinct `mtre-496 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-496-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-496-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-496-3]]))
27642792++ test-types-union-print-escape
2765− (weld (check ~.types-union-print-escape src-493 `tok-493 `tre-493) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-493 `typ-493))
2793+ (weld (check ~.types-union-print-escape src-497 `tok-497 `tre-497) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-497 `typ-497))
27662794++ test-types-union-print-local
2767− (weld (check ~.types-union-print-local src-494 `tok-494 `tre-494) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-494 `typ-494))
2795+ (weld (check ~.types-union-print-local src-498 `tok-498 `tre-498) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-498 `typ-498))
27682796++ test-types-union-print-nested
2769− (weld (check ~.types-union-print-nested src-495 `tok-495 `tre-495) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-495 `typ-495))
2797+ (weld (check ~.types-union-print-nested src-499 `tok-499 `tre-499) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-499 `typ-499))
27702798++ test-types-union-print-same-origin
2771− (weld (weld (check ~.types-union-print-same-origin src-496 `tok-496 `tre-496) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-496 `typ-496 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-496-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-496 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-496-1]]))
2799+ (weld (weld (check ~.types-union-print-same-origin src-500 `tok-500 `tre-500) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-500 `typ-500 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-500-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-500 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-500-1]]))
27722800++ test-types-union-print-transitive
2773− (weld (weld (check ~.types-union-print-transitive src-497 `tok-497 `tre-497) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-497 `typ-497 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-497-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-497-2]])) (check-module-trees ~.types-union-print-transitive `mtre-497 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-497-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-497-2]]))
2801+ (weld (weld (check ~.types-union-print-transitive src-501 `tok-501 `tre-501) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-501 `typ-501 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-501-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-501-2]])) (check-module-trees ~.types-union-print-transitive `mtre-501 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-501-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-501-2]]))
27742802++ test-types-union-singleton
2775− (weld (check ~.types-union-singleton src-498 `tok-498 `tre-498) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-498 `typ-498))
2803+ (weld (check ~.types-union-singleton src-502 `tok-502 `tre-502) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-502 `typ-502))
27762804++ test-types-union-tag-atoms
2777− (weld (check ~.types-union-tag-atoms src-499 `tok-499 `tre-499) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-499 `typ-499))
2805+ (weld (check ~.types-union-tag-atoms src-503 `tok-503 `tre-503) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-503 `typ-503))
27782806++ test-types-union-tags
2779− (weld (check ~.types-union-tags src-500 `tok-500 `tre-500) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-500 `typ-500))
2807+ (weld (check ~.types-union-tags src-504 `tok-504 `tre-504) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-504 `typ-504))
27802808++ test-types-union-unresolved
2781− (weld (check ~.types-union-unresolved src-501 `tok-501 `tre-501) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-501 `typ-501))
2809+ (weld (check ~.types-union-unresolved src-505 `tok-505 `tre-505) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-505 `typ-505))
27822810++ test-types-union-unresolved-flow
2783− (weld (check ~.types-union-unresolved-flow src-502 `tok-502 `tre-502) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-502 `typ-502))
2811+ (weld (check ~.types-union-unresolved-flow src-506 `tok-506 `tre-506) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-506 `typ-506))
27842812++ test-types-unit-context
2785− (weld (check ~.types-unit-context src-503 `tok-503 `tre-503) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-503 `typ-503))
2813+ (weld (check ~.types-unit-context src-507 `tok-507 `tre-507) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-507 `typ-507))
27862814++ test-types-unit-patterns
2787− (weld (check ~.types-unit-patterns src-504 `tok-504 `tre-504) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-504 `typ-504))
2815+ (weld (check ~.types-unit-patterns src-508 `tok-508 `tre-508) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-508 `typ-508))
27882816::
27892817:: +check: run golden:jibb on a case and compare both outputs
27902818::
tests/type-module-scope/about.txt+1−1
@@ -10,4 +10,4 @@ The real vendored prelude and the existing two-module prelude golden check
1010that source-wrapper and prepared-interface outputs agree with each other and
1111with the golden report under eval and on the ship.
1212An imported list stays representable with an omitted or altered prelude
13−list, but its list literals, cons, null and list patterns fail closed; a malformed prelude is rejected.
13+list, but its list literals, cons, null and list patterns, including literals in branches, fail closed; a malformed prelude is rejected.
tests/type-module-scope/expected.txt+2
@@ -18,6 +18,7 @@ duplicate module sources: /ui/dup/jibb
1818real prelude prepared/wrapper and golden match
1919partial inference; module not checked
2020++ imported: $-((list @t) (list @t))
21+++ imported-branch: list literal needs the standard prelude in partial inference
2122++ imported-cons: list literal needs the standard prelude in partial inference
2223++ imported-empty: list literal needs the standard prelude in partial inference
2324++ imported-pattern: list pattern needs the standard prelude in partial inference
@@ -26,6 +27,7 @@ partial inference; module not checked
2627++ bridge: cast mold is not supported by partial inference
2728partial inference; module not checked
2829++ imported: $-((list @t) (list @t))
30+++ imported-branch: list literal needs the standard prelude in partial inference
2931++ imported-cons: list literal needs the standard prelude in partial inference
3032++ imported-empty: list literal needs the standard prelude in partial inference
3133++ imported-pattern: list pattern needs the standard prelude in partial inference