on master help sign in
Infer contextual prelude list literals
commit29bd39fc30506db8a58b6fa0b920aa387d62776c authoriko <mail@iko.soy> dateFri 30 Oct 2026, 21:34 (15 hours ago) parent3f90fa8
27 files changed+922−393
docs/compiler.md+4−2 docs/status.md+8−7 jibb-dev/lib/jibb.hoon+99 tests/golden/types-list-context/about.txt+4 tests/golden/types-list-context/modules.txt+1 tests/golden/types-list-context/source.jibb+17 tests/golden/types-list-context/tokens.txt+143 tests/golden/types-list-context/tree.txt+59 tests/golden/types-list-context/types.txt+18 tests/golden/types-list-imported/about.txt+4 tests/golden/types-list-imported/imports.txt+2 tests/golden/types-list-imported/modules.txt+1 tests/golden/types-list-imported/source.jibb+6 tests/golden/types-list-imported/sur/fixture.txt+4 tests/golden/types-list-imported/tokens.txt+58 tests/golden/types-list-imported/tree.txt+28 tests/golden/types-list-imported/types.txt+12 tests/golden/types-prelude-interface/about.txt+1−1 tests/golden/types-prelude-interface/source.jibb+1−1 tests/golden/types-prelude-interface/tokens.txt+9−9 tests/golden/types-prelude-interface/tree.txt+5−5 tests/golden/types-prelude-interface/types.txt+1−1 tests/lib/jibb-module-scope.hoon+31−1 tests/lib/jibb.hoon+379−365 tests/type-module-scope/about.txt+5 tests/type-module-scope/expected.txt+13 tools/type-module-scope-test+9−1
docs/compiler.md+4−2
@@ -60,11 +60,13 @@ The inference fragment supports fixed auras, unrestricted `@`, one-way widening
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. Without a known context or the validated prelude list, the partial checker fails closed; general list construction and list-pattern inference remain unfinished.
64+
6365A 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.
6466
6567A 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.
6668
67−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; Jibb-written collection molds and their prelude 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 (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.
6870
6971Self-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.
7072
@@ -72,7 +74,7 @@ Callers that have a `/sur` core and a name can use `+read-named`: it checks for
7274
7375`+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.
7476
75−The supplied prelude is parsed into a **partial interface**: all names actually declared in the source are reserved, while only the molds and values this fragment can infer are available. These include `unit`, `same`, `fall` and `need`; unsupported entries, such as the recursive `list` mold and its helpers, remain unavailable. A named prelude union keeps the fixed `/lib/jibb/prelude/jibb` origin in every module, and its name remains unqualified when a library exports a type containing it. The prelude inventory is incomplete, so reserving the names in this source does not establish complete shadowing coverage. Prelude imports, including the planned private internal module, are not supported by preparation.
77+The supplied prelude is parsed into a **partial interface**: all names actually declared in the source are reserved, while only the molds and values this fragment can infer are available. These include the validated standard `list` mold, `unit`, `same`, `fall` and `need`; unsupported entries, such as most list helpers, remain unavailable. A named prelude union keeps the fixed `/lib/jibb/prelude/jibb` origin in every module, and its name remains unqualified when a library exports a type containing it. The prelude inventory is incomplete, so reserving the names in this source does not establish complete shadowing coverage. Prelude imports, including the planned private internal module, are not supported by preparation. The shared module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship.
7678
7779`+prepare-prelude` derives the interface and declared-name inventory from the trusted vendored source. Hosts can reuse its result with `+golden-types-with-prepared-prelude`; they must pass the unchanged result of preparation, not an independently constructed value. Empty, malformed, duplicate-name or import-bearing prelude sources fail closed. `+golden-types-with-prelude` remains the source-taking wrapper. API files, modules with `main`, unsupported definitions and many other features remain outside this subset. The older `+golden-types-with-modules` entry point fails closed for imports because it has no prelude scope. None of these partial reports claims the module has been checked.
7880
docs/status.md+8−7
@@ -19,9 +19,9 @@ 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. Jibb-written collection molds and prelude collection operations are not yet connected to this representation; 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, 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. 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. 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 (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, 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. 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. Uncontextualized list literals and general list construction or 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.
2323
24−The shared prelude interface reserves every name present in the supplied vendored source and makes only supported inferred entries available, including `unit`, `same`, `fall` and `need`. Unsupported entries such as `list` 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 source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
24+The 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
2626## Milestone 1: parser and mark
2727
@@ -39,8 +39,8 @@ What the plan asks for, and where it is:
3939
4040Besides the plan's list:
4141
42−- 497 golden cases: 281 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 497-case corpus passed under `urbit eval` in 57.8 s. The fake ship passed all 502 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 27.8 s for sync and 31.3 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+- 499 golden cases: 283 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 499-case corpus passed under `urbit eval` in 56.2 s. The fake ship passed all 504 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 28.5 s for sync and 31.2 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).
@@ -79,14 +79,15 @@ Besides the plan's list:
7979| 4d45d2f | 2026-10-30 | Resolve selected contextual null literals |
8080| e878edc | 2026-10-30 | Infer complete unit-shaped branches and bridge selected recursive Hoon molds |
8181| 743dfd8 | 2026-10-30 | Propagate union context through unit-shaped branches |
82−| This change | 2026-10-30 | Share a partial prelude interface across module inference |
82+| 3f90fa8 | 2026-10-30 | Share a partial prelude interface across module inference |
83+| This change | 2026-10-30 | Infer contextual list literals and validate prelude parity |
8384
8485## Checking it
8586
8687On a machine set up as [development.md](development.md) says:
8788
8889```
89−tools/golden # 497 cases under urbit eval
90+tools/golden # 499 cases under urbit eval
9091tools/importer-test # the Hoon importer fixture projection
9192tools/type-import-test # the importer/checker bridge fixture
9293tools/type-mark-test # the mark/checker bridge fixture
@@ -96,7 +97,7 @@ tools/testdata/selftest # the tools themselves
9697tools/doc-blocks docs/spec # the doc's examples are golden cases
9798tools/ship start
9899tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
99−tools/ship test # the same 497 cases as -test arms on the ship
100+tools/ship test # the same 499 cases as -test arms on the ship
100101tools/testdata/ship-selftest
101102tools/ship check-commit # |commit stores .jibb files
102103tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+99
@@ -6150,6 +6150,60 @@
61506150 [%| ["branch arm does not fit its expected union" ~[[context "expected union"] [(span-of e) "branch arm"]]]]
61516151 [%& expected state.p.value(sub sub.fit, next next.fit)]
61526152::
6153+:: A list literal needs a known list target and the validated prelude list.
6154+:: Its items receive that target one by one; pending constraints elsewhere
6155+:: stay in the threaded state. Other list syntax remains unsupported.
6156+::
6157+++ context-list-literal
6158+ |= e=expr
6159+ ^- ?
6160+ ?- -.e
6161+ %list &
6162+ %group $(e inner.e)
6163+ %body ?~(defs.e $(e final.e) |)
6164+ * |
6165+ ==
6166+::
6167+++ infer-list-context
6168+ |= [e=expr expected=itype env=ienv state=istate context=span]
6169+ ^- iresult
6170+ ?: ?=(%group -.e) $(e inner.e)
6171+ ?: &(?=(%body -.e) ?=(~ defs.e)) $(e final.e)
6172+ ?> ?=(%list -.e)
6173+ ?~ prelude.state [%| ["list literal needs the standard prelude in partial inference" ~]]
6174+ ?. =(at.u.prelude.state /lib/jibb/prelude/jibb)
6175+ [%| ["list literal needs the standard prelude in partial inference" ~]]
6176+ =/ standard=(unit ischeme) (find-jibb-mold %list u.prelude.state)
6177+ ?~ standard [%| ["list literal needs the standard prelude in partial inference" ~]]
6178+ ?. =(u.standard [[%collection %list ~[[%var 0]]] ~[0]])
6179+ [%| ["list literal needs the standard prelude in partial inference" ~]]
6180+ =/ target=itype (itype-walk expected sub.state)
6181+ ?. ?=(%collection -.target) [%| ["list context is not supported by partial inference" ~]]
6182+ ?. =(%list name.target) [%| ["list context is not supported by partial inference" ~]]
6183+ ?~ args.target [%| ["list context is not supported by partial inference" ~]]
6184+ ?^ t.args.target [%| ["list context is not supported by partial inference" ~]]
6185+ =/ result=iresult (infer-list-items items.e i.args.target env state context)
6186+ ?: ?=(%| -.result) result
6187+ [%& target state.p.result]
6188+::
6189+++ infer-list-items
6190+ |= [items=(list expr) expected=itype env=ienv state=istate context=span]
6191+ ^- iresult
6192+ ?~ items [%& expected state]
6193+ =/ target=itype (itype-walk expected sub.state)
6194+ =/ value=iresult
6195+ ?: &(?=(%union -.target) (context-union-branch i.items))
6196+ (infer-union-context i.items target env state context)
6197+ ?: &(?=(%collection -.target) =(%list name.target) (context-list-literal i.items))
6198+ (infer-list-context i.items target env state context)
6199+ (infer-fragment i.items env state)
6200+ ?: ?=(%| -.value) value
6201+ =/ fit=ifit (itype-fit typ.p.value target sub.state.p.value next.state.p.value)
6202+ ?: ?=(%unknown -.fit) [%| ["list item constraint is not supported by partial inference" ~]]
6203+ ?: ?=(%bad -.fit)
6204+ [%| ["list item does not fit its expected type" ~[[context (site-type-note "expected item" target sub.state.p.value)] [(span-of i.items) (site-type-note "list item" typ.p.value sub.state.p.value)]]]]
6205+ $(items t.items, state state.p.value(sub sub.fit, next next.fit))
6206+::
61536207:: The supported unit pattern covers exactly an atom zero and a cell
61546208:: headed by zero, with a single binder for its payload. Unresolved
61556209:: subjects and all other pattern matrices stay outside this fragment.
@@ -6346,6 +6400,8 @@
63466400 =/ value=iresult
63476401 ?: &(?=(%union -.typ.u.target) (context-union-branch val.e))
63486402 (infer-union-context val.e typ.u.target env state.u.target at.shape.e)
6403+ ?: &(?=(%collection -.typ.u.target) =(%list name.typ.u.target) (context-list-literal val.e))
6404+ (infer-list-context val.e typ.u.target env state.u.target at.shape.e)
63496405 $(e val.e, state state.u.target)
63506406 ?: ?=(%| -.value) value
63516407 =/ fit=ifit (itype-fit typ.p.value typ.u.target sub.state.p.value next.state.p.value)
@@ -6376,6 +6432,8 @@
63766432 =/ arg=iresult
63776433 ?: &(?=(%fn -.head-type) ?=(%union -.sample.head-type) (context-union-branch i.args.e))
63786434 (infer-union-context i.args.e sample.head-type env state.p.head (span-of head.e))
6435+ ?: &(?=(%fn -.head-type) ?=(%collection -.sample.head-type) =(%list name.sample.head-type) (context-list-literal i.args.e))
6436+ (infer-list-context i.args.e sample.head-type env state.p.head (span-of head.e))
63796437 $(e i.args.e, state state.p.head)
63806438 ?: ?=(%| -.arg) arg
63816439 =/ st=istate state.p.arg
@@ -6926,11 +6984,52 @@
69266984:: and imports into the prelude are not supported yet. The fixed origin
69276985:: gives its named unions the same identity in every importing module.
69286986::
6987+:: Recognize only the complete standard prelude list shape. Its recursive
6988+:: tail uses the same parameter and the unqualified list name. The reader
6989+:: verifies Hoon's list provenance before producing the same collection type.
6990+:: The prelude source and reader output are trusted caller inputs.
6991+::
6992+++ standard-prelude-list
6993+ |= sh=shape
6994+ ^- ?
6995+ ?. ?=(%generic -.sh) |
6996+ ?~ vars.sh |
6997+ ?^ t.vars.sh |
6998+ =/ var=@t i.vars.sh
6999+ ?. ?=(%union -.body.sh) |
7000+ =/ cs=(list shape) cases.body.sh
7001+ ?~ cs |
7002+ ?~ t.cs |
7003+ ?^ t.t.cs |
7004+ ?. ?=(%const -.i.cs) |
7005+ ?. =(%null form.lit.i.cs) |
7006+ ?. ?=(%cell -.i.t.cs) |
7007+ =/ fs=(list field) fields.i.t.cs
7008+ ?~ fs |
7009+ ?~ t.fs |
7010+ ?^ t.t.fs |
7011+ ?. ?=(%face -.i.fs) |
7012+ ?. =(%i name.i.fs) |
7013+ ?. ?=(%tvar -.shape.i.fs) |
7014+ ?. =(var name.shape.i.fs) |
7015+ ?. ?=(%face -.i.t.fs) |
7016+ ?. =(%t name.i.t.fs) |
7017+ =/ tail=shape shape.i.t.fs
7018+ ?. ?=(%apply -.tail) |
7019+ ?. =(~[%list] ref.tail) |
7020+ ?~ args.tail |
7021+ ?^ t.args.tail |
7022+ ?. ?=(%tvar -.i.args.tail) |
7023+ =(var name.i.args.tail)
7024+::
69297025++ partial-prelude-molds
69307026 |= [molds=imolds state=istate]
69317027 ^- imold-types
69327028 ?~ molds ~
69337029 =/ m=[name=term body=shape] i.molds
7030+ ?: &(=(at.state /lib/jibb/prelude/jibb) =(%list name.m))
7031+ ?. (standard-prelude-list body.m) $(molds t.molds)
7032+ [[%list [[%collection %list ~[[%var 0]]] ~[0]]] $(molds t.molds)]
69347033 =/ out=(unit [template=ischeme state=istate])
69357034 (infer-mold-template body.m state(active [name.m active.state], in-mold &))
69367035 ?~ out $(molds t.molds)
tests/golden/types-list-context/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Literals: `~[1 2 3]` has type `(list A)`; Tag resolution: "A tag literal or `~` gets a fresh type variable and a pending constraint".
2+tests: Empty, nonempty and nested lists with cast or known-sample context, contextual tags, an incompatible element, an explicitly written capital, and unrelated pending tag and null literals.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-list-context/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the prelude-aware partial checker without module imports.
tests/golden/types-list-context/source.jibbnew file+17
@@ -0,0 +1,17 @@
1++$ msg
2+ %add
3+ %remove
4+++ empty ^- (list @t) ~[]
5+++ texts ^- (list @t) ~["a" "b"]
6+++ tags ^- (list msg) ~[%add %remove]
7+++ bad ^- (list @t) ~["hi" ~zod]
8+++ nested ^- (list (list @t)) ~[~["hi"] ~[]]
9+++ consume |= xs=(list @t) xs
10+++ call (consume ~["hi"])
11+++ pending
12+ ~& %unresolved
13+ ^- (list @t) ~["hi"]
14+++ pending-null
15+ ~& ~
16+ ^- (list @t) ~[]
17+++ forced |= xs=(list A) ^- (list A) ~["hi"]
tests/golden/types-list-context/tokens.txtnew file+143
@@ -0,0 +1,143 @@
1+1:1 glyph +$
2+1:4 name msg
3+2:3 INDENT
4+2:3 lit %add
5+3:3 NEWLINE
6+3:3 lit %remove
7+4:1 DEDENT
8+4:1 NEWLINE
9+4:1 glyph ++
10+4:4 name empty
11+4:10 glyph ^-
12+4:13 glyph (
13+4:14 tight name list
14+4:19 aura @t
15+4:21 tight glyph )
16+4:23 glyph ~[
17+4:25 tight glyph ]
18+5:1 NEWLINE
19+5:1 glyph ++
20+5:4 name texts
21+5:10 glyph ^-
22+5:13 glyph (
23+5:14 tight name list
24+5:19 aura @t
25+5:21 tight glyph )
26+5:23 glyph ~[
27+5:25 tight str "a"
28+5:29 str "b"
29+5:32 tight glyph ]
30+6:1 NEWLINE
31+6:1 glyph ++
32+6:4 name tags
33+6:9 glyph ^-
34+6:12 glyph (
35+6:13 tight name list
36+6:18 name msg
37+6:21 tight glyph )
38+6:23 glyph ~[
39+6:25 tight lit %add
40+6:30 lit %remove
41+6:37 tight glyph ]
42+7:1 NEWLINE
43+7:1 glyph ++
44+7:4 name bad
45+7:8 glyph ^-
46+7:11 glyph (
47+7:12 tight name list
48+7:17 aura @t
49+7:19 tight glyph )
50+7:21 glyph ~[
51+7:23 tight str "hi"
52+7:28 lit ~zod
53+7:32 tight glyph ]
54+8:1 NEWLINE
55+8:1 glyph ++
56+8:4 name nested
57+8:11 glyph ^-
58+8:14 glyph (
59+8:15 tight name list
60+8:20 glyph (
61+8:21 tight name list
62+8:26 aura @t
63+8:28 tight glyph )
64+8:29 tight glyph )
65+8:31 glyph ~[
66+8:33 tight glyph ~[
67+8:35 tight str "hi"
68+8:39 tight glyph ]
69+8:41 glyph ~[
70+8:43 tight glyph ]
71+8:44 tight glyph ]
72+9:1 NEWLINE
73+9:1 glyph ++
74+9:4 name consume
75+9:12 glyph |=
76+9:15 name xs
77+9:17 tight glyph =
78+9:18 tight glyph (
79+9:19 tight name list
80+9:24 aura @t
81+9:26 tight glyph )
82+9:28 name xs
83+10:1 NEWLINE
84+10:1 glyph ++
85+10:4 name call
86+10:9 glyph (
87+10:10 tight name consume
88+10:18 glyph ~[
89+10:20 tight str "hi"
90+10:24 tight glyph ]
91+10:25 tight glyph )
92+11:1 NEWLINE
93+11:1 glyph ++
94+11:4 name pending
95+12:3 INDENT
96+12:3 glyph ~&
97+12:6 lit %unresolved
98+13:5 INDENT
99+13:5 glyph ^-
100+13:8 glyph (
101+13:9 tight name list
102+13:14 aura @t
103+13:16 tight glyph )
104+13:18 glyph ~[
105+13:20 tight str "hi"
106+13:24 tight glyph ]
107+14:1 DEDENT
108+14:1 DEDENT
109+14:1 NEWLINE
110+14:1 glyph ++
111+14:4 name pending-null
112+15:3 INDENT
113+15:3 glyph ~&
114+15:6 lit ~
115+16:5 INDENT
116+16:5 glyph ^-
117+16:8 glyph (
118+16:9 tight name list
119+16:14 aura @t
120+16:16 tight glyph )
121+16:18 glyph ~[
122+16:20 tight glyph ]
123+17:1 DEDENT
124+17:1 DEDENT
125+17:1 NEWLINE
126+17:1 glyph ++
127+17:4 name forced
128+17:11 glyph |=
129+17:14 name xs
130+17:16 tight glyph =
131+17:17 tight glyph (
132+17:18 tight name list
133+17:23 tvar A
134+17:24 tight glyph )
135+17:26 glyph ^-
136+17:29 glyph (
137+17:30 tight name list
138+17:35 tvar A
139+17:36 tight glyph )
140+17:38 glyph ~[
141+17:40 tight str "hi"
142+17:44 tight glyph ]
143+17:45 NEWLINE
tests/golden/types-list-context/tree.txtnew file+59
@@ -0,0 +1,59 @@
1+(module
2+ (mold 1:1 msg
3+ (union 2:3 (const 2:3 %add) (const 3:3 %remove)))
4+ (value 4:1 empty
5+ (cast 4:10
6+ (apply 4:13 list (aura 4:19 @t))
7+ (list 4:23)))
8+ (value 5:1 texts
9+ (cast 5:10
10+ (apply 5:13 list (aura 5:19 @t))
11+ (list 5:23 (str 5:25 "a") (str 5:29 "b"))))
12+ (value 6:1 tags
13+ (cast 6:9
14+ (apply 6:12 list (ref 6:18 msg))
15+ (list 6:23 (lit 6:25 %add) (lit 6:30 %remove))))
16+ (value 7:1 bad
17+ (cast 7:8
18+ (apply 7:11 list (aura 7:17 @t))
19+ (list 7:21 (str 7:23 "hi") (lit 7:28 ~zod))))
20+ (value 8:1 nested
21+ (cast 8:11
22+ (apply 8:14 list
23+ (apply 8:20 list (aura 8:26 @t)))
24+ (list 8:31
25+ (list 8:33 (str 8:35 "hi"))
26+ (list 8:41))))
27+ (value 9:1 consume
28+ (gate 9:12
29+ (face 9:15 xs
30+ (apply 9:18 list (aura 9:24 @t)))
31+ (wing 9:28 xs)))
32+ (value 10:1 call
33+ (group 10:9
34+ (call 10:10
35+ (wing 10:10 consume)
36+ (list 10:18 (str 10:20 "hi")))))
37+ (value 11:1 pending
38+ (body 12:3
39+ (trace 12:3
40+ (lit 12:6 %unresolved)
41+ (body 13:5
42+ (cast 13:5
43+ (apply 13:8 list (aura 13:14 @t))
44+ (list 13:18 (str 13:20 "hi")))))))
45+ (value 14:1 pending-null
46+ (body 15:3
47+ (trace 15:3
48+ (lit 15:6 ~)
49+ (body 16:5
50+ (cast 16:5
51+ (apply 16:8 list (aura 16:14 @t))
52+ (list 16:18))))))
53+ (value 17:1 forced
54+ (gate 17:11
55+ (face 17:14 xs
56+ (apply 17:17 list (tvar 17:23 A)))
57+ (cast 17:26
58+ (apply 17:29 list (tvar 17:35 A))
59+ (list 17:38 (str 17:40 "hi"))))))
tests/golden/types-list-context/types.txtnew file+18
@@ -0,0 +1,18 @@
1+partial inference; module not checked
2++$ msg: cases proven disjoint; mold not checked
3+++ empty: (list @t)
4+++ texts: (list @t)
5+++ tags: (list msg)
6+++ bad: list item does not fit its expected type
7+/tests/golden/types-list-context/source.jibb:7:11: expected item has type @t
8+++ bad ^- (list @t) ~["hi" ~zod]
9+ ^
10+/tests/golden/types-list-context/source.jibb:7:28: list item has type @p
11+++ bad ^- (list @t) ~["hi" ~zod]
12+ ^
13+++ nested: (list (list @t))
14+++ consume: $-((list @t) (list @t))
15+++ call: (list @t)
16+++ pending: tag needs context in partial inference
17+++ pending-null: `~` needs context in partial inference
18+++ forced: explicit capital constraints are not supported by partial inference
tests/golden/types-list-imported/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: 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, a list literal fits an imported sample, and incompatible element types report both sites.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-list-imported/imports.txtnew file+2
@@ -0,0 +1,2 @@
1+fixture texts
2+fixture ships
tests/golden/types-list-imported/modules.txtnew file+1
@@ -0,0 +1 @@
1+# Use the prelude-aware checker.
tests/golden/types-list-imported/source.jibbnew file+6
@@ -0,0 +1,6 @@
1+/- fixture
2+++ take |= xs=texts.fixture xs
3+++ as-written |= xs=texts.fixture ^- (list @t) xs
4+++ to-imported |= xs=(list @t) (take xs)
5+++ literal (take ~["hi"])
6+++ bad |= xs=ships.fixture (take xs)
tests/golden/types-list-imported/sur/fixture.txtnew file+4
@@ -0,0 +1,4 @@
1+|%
2++$ texts (list @t)
3++$ ships (list @p)
4+--
tests/golden/types-list-imported/tokens.txtnew file+58
@@ -0,0 +1,58 @@
1+1:1 glyph /-
2+1:5 name fixture
3+2:1 NEWLINE
4+2:1 glyph ++
5+2:4 name take
6+2:9 glyph |=
7+2:12 name xs
8+2:14 tight glyph =
9+2:15 tight wing texts.fixture
10+2:29 name xs
11+3:1 NEWLINE
12+3:1 glyph ++
13+3:4 name as-written
14+3:15 glyph |=
15+3:18 name xs
16+3:20 tight glyph =
17+3:21 tight wing texts.fixture
18+3:35 glyph ^-
19+3:38 glyph (
20+3:39 tight name list
21+3:44 aura @t
22+3:46 tight glyph )
23+3:48 name xs
24+4:1 NEWLINE
25+4:1 glyph ++
26+4:4 name to-imported
27+4:16 glyph |=
28+4:19 name xs
29+4:21 tight glyph =
30+4:22 tight glyph (
31+4:23 tight name list
32+4:28 aura @t
33+4:30 tight glyph )
34+4:32 glyph (
35+4:33 tight name take
36+4:38 name xs
37+4:40 tight glyph )
38+5:1 NEWLINE
39+5:1 glyph ++
40+5:4 name literal
41+5:12 glyph (
42+5:13 tight name take
43+5:18 glyph ~[
44+5:20 tight str "hi"
45+5:24 tight glyph ]
46+5:25 tight glyph )
47+6:1 NEWLINE
48+6:1 glyph ++
49+6:4 name bad
50+6:8 glyph |=
51+6:11 name xs
52+6:13 tight glyph =
53+6:14 tight wing ships.fixture
54+6:28 glyph (
55+6:29 tight name take
56+6:34 name xs
57+6:36 tight glyph )
58+6:37 NEWLINE
tests/golden/types-list-imported/tree.txtnew file+28
@@ -0,0 +1,28 @@
1+(module
2+ (sur 1:1 fixture)
3+ (value 2:1 take
4+ (gate 2:9
5+ (face 2:12 xs (ref 2:15 texts.fixture))
6+ (wing 2:29 xs)))
7+ (value 3:1 as-written
8+ (gate 3:15
9+ (face 3:18 xs (ref 3:21 texts.fixture))
10+ (cast 3:35
11+ (apply 3:38 list (aura 3:44 @t))
12+ (wing 3:48 xs))))
13+ (value 4:1 to-imported
14+ (gate 4:16
15+ (face 4:19 xs
16+ (apply 4:22 list (aura 4:28 @t)))
17+ (group 4:32
18+ (call 4:33 (wing 4:33 take) (wing 4:38 xs)))))
19+ (value 5:1 literal
20+ (group 5:12
21+ (call 5:13
22+ (wing 5:13 take)
23+ (list 5:18 (str 5:20 "hi")))))
24+ (value 6:1 bad
25+ (gate 6:8
26+ (face 6:11 xs (ref 6:14 ships.fixture))
27+ (group 6:28
28+ (call 6:29 (wing 6:29 take) (wing 6:34 xs))))))
tests/golden/types-list-imported/types.txtnew file+12
@@ -0,0 +1,12 @@
1+partial inference; module not checked
2+++ take: $-((list @t) (list @t))
3+++ as-written: $-((list @t) (list @t))
4+++ to-imported: $-((list @t) (list @t))
5+++ literal: (list @t)
6+++ bad: call's sample and argument types do not unify
7+/tests/golden/types-list-imported/source.jibb:6:29: called gate has type $-((list @t) (list @t))
8+++ bad |= xs=ships.fixture (take xs)
9+ ^
10+/tests/golden/types-list-imported/source.jibb:6:34: argument has type (list @p)
11+++ bad |= xs=ships.fixture (take xs)
12+ ^
tests/golden/types-prelude-interface/about.txt+1−1
@@ -1,4 +1,4 @@
11source: Overview, Prelude: "Hoon's standard library regrouped, written in Jibb and vendored as `/lib/jibb/prelude`". Grammar, Modules: no name may shadow one already in scope.
2−tests: A unit constructed in one module passes through another module's generic identity and the root's prelude helpers, preserving one origin and printing `unit` unqualified. Unsupported prelude names and molds remain reserved and fail closed; a sample cannot shadow one.
2+tests: A unit constructed in one module passes through another module's generic identity and the root's prelude helpers, preserving one origin and printing `unit` unqualified. The prelude list mold is available; unavailable prelude values remain reserved and fail closed, and a sample cannot shadow one.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-prelude-interface/source.jibb+1−1
@@ -6,5 +6,5 @@
66++ fallback (fall [value.left "fallback"])
77++ unavailable (turn [~ |=(x x)])
88++ shadow |= turn turn
9−++ unsupported |= x=(list @t) x
9+++ list-id |= x=(list @t) x
1010++ get-gate identity.right
tests/golden/types-prelude-interface/tokens.txt+9−9
@@ -65,15 +65,15 @@
65658:19 name turn
66669:1 NEWLINE
67679:1 glyph ++
68−9:4 name unsupported
69−9:16 glyph |=
70−9:19 name x
71−9:20 tight glyph =
72−9:21 tight glyph (
73−9:22 tight name list
74−9:27 aura @t
75−9:29 tight glyph )
76−9:31 name x
68+9:4 name list-id
69+9:12 glyph |=
70+9:15 name x
71+9:16 tight glyph =
72+9:17 tight glyph (
73+9:18 tight name list
74+9:23 aura @t
75+9:25 tight glyph )
76+9:27 name x
777710:1 NEWLINE
787810:1 glyph ++
797910:4 name get-gate
tests/golden/types-prelude-interface/tree.txt+5−5
@@ -25,9 +25,9 @@
2525 (gate-wide 7:25 (bind 7:28 x) (wing 7:30 x))))))
2626 (value 8:1 shadow
2727 (gate 8:11 (bind 8:14 turn) (wing 8:19 turn)))
28− (value 9:1 unsupported
29− (gate 9:16
30− (face 9:19 x
31− (apply 9:21 list (aura 9:27 @t)))
32− (wing 9:31 x)))
28+ (value 9:1 list-id
29+ (gate 9:12
30+ (face 9:15 x
31+ (apply 9:17 list (aura 9:23 @t)))
32+ (wing 9:27 x)))
3333 (value 10:1 get-gate (wing 10:13 identity.right)))
tests/golden/types-prelude-interface/types.txt+1−1
@@ -5,5 +5,5 @@ partial inference; module not checked
55++ fallback: @t
66++ unavailable: name is not available to partial inference
77++ shadow: sample shadows a name
8−++ unsupported: sample mold is not supported by partial inference
8+++ list-id: $-((list @t) (list @t))
99++ get-gate: $-((unit A) (unit A))
tests/lib/jibb-module-scope.hoon+31−1
@@ -1,6 +1,11 @@
11:: Exercise supplied prelude scope and fail-closed module imports.
22/+ jibb
33/* expected %txt /tests/type-module-scope/expected/txt
4+/* real-prelude %jibb /lib/jibb/prelude/jibb
5+/* real-source %jibb /tests/golden/types-prelude-interface/source/jibb
6+/* real-left %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
7+/* real-right %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
8+/* real-expected %txt /tests/golden/types-prelude-interface/types/txt
49|%
510++ test-module-scope
611 ^- tang
@@ -33,5 +38,30 @@
3338 =/ after-fixtures=(list [at=path source=@t])
3439 [[~[%ui %safe %jibb] library] duplicates]
3540 =/ after (golden-types-with-prelude:jibb /ui/main/jibb after-source ~ ~ after-fixtures prelude)
36− (of-wain:format ~[okay empty bad bad-value bad-mold collision duplicate after])
41+ (of-wain:format ~[okay empty bad bad-value bad-mold collision duplicate after real-parity list-guard])
42+::
43+++ real-parity
44+ ^- @t
45+ =/ fixtures=(list [at=path source=@t])
46+ ~[[~[%ui %left %jibb] real-left] [~[%ui %right %jibb] real-right]]
47+ =/ prepared (prepare-prelude:jibb real-prelude)
48+ ?~ prepared 'real prelude preparation failed'
49+ =/ wrapper (golden-types-with-prelude:jibb /tests/golden/types-prelude-interface/source/jibb real-source ~ ~ fixtures real-prelude)
50+ =/ actual (golden-types-with-prepared-prelude:jibb /tests/golden/types-prelude-interface/source/jibb real-source ~ ~ fixtures prepared)
51+ ?. =(wrapper actual) 'real prelude prepared/wrapper mismatch'
52+ ?. =((to-wain:format (cat 3 actual '\0a')) real-expected) 'real prelude output differs from golden'
53+ 'real prelude prepared/wrapper and golden match'
54+::
55+++ list-guard
56+ ^- @t
57+ =/ source=@t (crip "/- fixture\0a++ imported |= x=texts.fixture x\0a++ imported-literal ^- texts.fixture ~[\"hi\"]\0a++ literal ^- (list @t) ~[\"hi\"]\0a++ bridge |= x=texts.fixture ^- (list @t) x\0a")
58+ =/ ext=(list [module=term name=term result=*])
59+ ~[[%fixture %texts [%& [%apply %list ~[[%atom %t ~]]]]]]
60+ =/ omitted=@t (crip "++ same |=(x x)\0a")
61+ =/ changed=@t (crip "+$ list |$ [A] [A A]\0a")
62+ =/ malformed=@t (crip "+$ list |$ [A]\0a")
63+ =/ a (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ omitted)
64+ =/ b (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ changed)
65+ =/ c (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ malformed)
66+ (of-wain:format ~[a b c])
3767--
tests/lib/jibb.hoon+379−365
@@ -1444,303 +1444,313 @@
14441444/* typ-429 %txt /tests/golden/types-import-sur-record-graph/types/txt
14451445/* imp-429-1 %txt /tests/golden/types-import-sur-record-graph/sur/fixture/txt
14461446/* mtre-429 %txt /tests/golden/types-import-sur-record-graph/module-trees/txt
1447−/* src-430 %jibb /tests/golden/types-module-fixtures/source/jibb
1448−/* tok-430 %txt /tests/golden/types-module-fixtures/tokens/txt
1449−/* tre-430 %txt /tests/golden/types-module-fixtures/tree/txt
1450−/* mod-430-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1451−/* mod-430-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1452−/* typ-430 %txt /tests/golden/types-module-fixtures/types/txt
1453−/* mtre-430 %txt /tests/golden/types-module-fixtures/module-trees/txt
1454−/* src-431 %jibb /tests/golden/types-module-mixed/source/jibb
1455−/* tok-431 %txt /tests/golden/types-module-mixed/tokens/txt
1456−/* tre-431 %txt /tests/golden/types-module-mixed/tree/txt
1457−/* mod-431-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1458−/* typ-431 %txt /tests/golden/types-module-mixed/types/txt
1459−/* imp-431-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1460−/* mark-431-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1461−/* mtre-431 %txt /tests/golden/types-module-mixed/module-trees/txt
1462−/* src-432 %jibb /tests/golden/types-null-context/source/jibb
1463−/* tok-432 %txt /tests/golden/types-null-context/tokens/txt
1464−/* tre-432 %txt /tests/golden/types-null-context/tree/txt
1465−/* typ-432 %txt /tests/golden/types-null-context/types/txt
1466−/* src-433 %jibb /tests/golden/types-null-overlap/source/jibb
1467−/* tok-433 %txt /tests/golden/types-null-overlap/tokens/txt
1468−/* tre-433 %txt /tests/golden/types-null-overlap/tree/txt
1469−/* typ-433 %txt /tests/golden/types-null-overlap/types/txt
1470−/* src-434 %jibb /tests/golden/types-null-unresolved/source/jibb
1471−/* tok-434 %txt /tests/golden/types-null-unresolved/tokens/txt
1472−/* tre-434 %txt /tests/golden/types-null-unresolved/tree/txt
1473−/* typ-434 %txt /tests/golden/types-null-unresolved/types/txt
1474−/* src-435 %jibb /tests/golden/types-partial-apply/source/jibb
1475−/* tok-435 %txt /tests/golden/types-partial-apply/tokens/txt
1476−/* tre-435 %txt /tests/golden/types-partial-apply/tree/txt
1477−/* typ-435 %txt /tests/golden/types-partial-apply/types/txt
1478−/* src-436 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1479−/* tok-436 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1480−/* tre-436 %txt /tests/golden/types-partial-atom-alias/tree/txt
1481−/* typ-436 %txt /tests/golden/types-partial-atom-alias/types/txt
1482−/* src-437 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1483−/* tok-437 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1484−/* tre-437 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1485−/* typ-437 %txt /tests/golden/types-partial-atom-constraint/types/txt
1486−/* src-438 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1487−/* tok-438 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1488−/* tre-438 %txt /tests/golden/types-partial-atom-widening/tree/txt
1489−/* typ-438 %txt /tests/golden/types-partial-atom-widening/types/txt
1490−/* src-439 %jibb /tests/golden/types-partial-aura/source/jibb
1491−/* tok-439 %txt /tests/golden/types-partial-aura/tokens/txt
1492−/* tre-439 %txt /tests/golden/types-partial-aura/tree/txt
1493−/* typ-439 %txt /tests/golden/types-partial-aura/types/txt
1494−/* src-440 %jibb /tests/golden/types-partial-aura-family/source/jibb
1495−/* tok-440 %txt /tests/golden/types-partial-aura-family/tokens/txt
1496−/* tre-440 %txt /tests/golden/types-partial-aura-family/tree/txt
1497−/* typ-440 %txt /tests/golden/types-partial-aura-family/types/txt
1498−/* src-441 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1499−/* tok-441 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1500−/* tre-441 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1501−/* typ-441 %txt /tests/golden/types-partial-aura-generalization/types/txt
1502−/* src-442 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1503−/* tok-442 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1504−/* tre-442 %txt /tests/golden/types-partial-bare-atom/tree/txt
1505−/* typ-442 %txt /tests/golden/types-partial-bare-atom/types/txt
1506−/* src-443 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1507−/* tok-443 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1508−/* tre-443 %txt /tests/golden/types-partial-branch-widening/tree/txt
1509−/* typ-443 %txt /tests/golden/types-partial-branch-widening/types/txt
1510−/* src-444 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1511−/* tok-444 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1512−/* tre-444 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1513−/* typ-444 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1514−/* src-445 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1515−/* tok-445 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1516−/* tre-445 %txt /tests/golden/types-partial-decimal-default/tree/txt
1517−/* typ-445 %txt /tests/golden/types-partial-decimal-default/types/txt
1518−/* src-446 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1519−/* tok-446 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1520−/* tre-446 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1521−/* typ-446 %txt /tests/golden/types-partial-dependency-chain/types/txt
1522−/* src-447 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1523−/* tok-447 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1524−/* tre-447 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1525−/* typ-447 %txt /tests/golden/types-partial-explicit-capital/types/txt
1526−/* src-448 %jibb /tests/golden/types-partial-forward/source/jibb
1527−/* tok-448 %txt /tests/golden/types-partial-forward/tokens/txt
1528−/* tre-448 %txt /tests/golden/types-partial-forward/tree/txt
1529−/* typ-448 %txt /tests/golden/types-partial-forward/types/txt
1530−/* src-449 %jibb /tests/golden/types-partial-generalization/source/jibb
1531−/* tok-449 %txt /tests/golden/types-partial-generalization/tokens/txt
1532−/* tre-449 %txt /tests/golden/types-partial-generalization/tree/txt
1533−/* typ-449 %txt /tests/golden/types-partial-generalization/types/txt
1534−/* src-450 %jibb /tests/golden/types-partial-identity/source/jibb
1535−/* tok-450 %txt /tests/golden/types-partial-identity/tokens/txt
1536−/* tre-450 %txt /tests/golden/types-partial-identity/tree/txt
1537−/* typ-450 %txt /tests/golden/types-partial-identity/types/txt
1538−/* src-451 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1539−/* tok-451 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1540−/* tre-451 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1541−/* typ-451 %txt /tests/golden/types-partial-independent-atoms/types/txt
1542−/* src-452 %jibb /tests/golden/types-partial-local-molds/source/jibb
1543−/* tok-452 %txt /tests/golden/types-partial-local-molds/tokens/txt
1544−/* tre-452 %txt /tests/golden/types-partial-local-molds/tree/txt
1545−/* typ-452 %txt /tests/golden/types-partial-local-molds/types/txt
1546−/* src-453 %jibb /tests/golden/types-partial-locals/source/jibb
1547−/* tok-453 %txt /tests/golden/types-partial-locals/tokens/txt
1548−/* tre-453 %txt /tests/golden/types-partial-locals/tree/txt
1549−/* typ-453 %txt /tests/golden/types-partial-locals/types/txt
1550−/* src-454 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1551−/* tok-454 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1552−/* tre-454 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1553−/* typ-454 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1554−/* src-455 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1555−/* tok-455 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1556−/* tre-455 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1557−/* typ-455 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1558−/* src-456 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1559−/* tok-456 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1560−/* tre-456 %txt /tests/golden/types-partial-mold-composite/tree/txt
1561−/* typ-456 %txt /tests/golden/types-partial-mold-composite/types/txt
1562−/* src-457 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1563−/* tok-457 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1564−/* tre-457 %txt /tests/golden/types-partial-mold-forward/tree/txt
1565−/* typ-457 %txt /tests/golden/types-partial-mold-forward/types/txt
1566−/* src-458 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1567−/* tok-458 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1568−/* tre-458 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1569−/* typ-458 %txt /tests/golden/types-partial-mold-recursive/types/txt
1570−/* src-459 %jibb /tests/golden/types-partial-occurs/source/jibb
1571−/* tok-459 %txt /tests/golden/types-partial-occurs/tokens/txt
1572−/* tre-459 %txt /tests/golden/types-partial-occurs/tree/txt
1573−/* typ-459 %txt /tests/golden/types-partial-occurs/types/txt
1574−/* src-460 %jibb /tests/golden/types-partial-projection/source/jibb
1575−/* tok-460 %txt /tests/golden/types-partial-projection/tokens/txt
1576−/* tre-460 %txt /tests/golden/types-partial-projection/tree/txt
1577−/* typ-460 %txt /tests/golden/types-partial-projection/types/txt
1578−/* src-461 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1579−/* tok-461 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1580−/* tre-461 %txt /tests/golden/types-partial-shadow-global/tree/txt
1581−/* typ-461 %txt /tests/golden/types-partial-shadow-global/types/txt
1582−/* src-462 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1583−/* tok-462 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1584−/* tre-462 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1585−/* typ-462 %txt /tests/golden/types-partial-shared-tvar/types/txt
1586−/* src-463 %jibb /tests/golden/types-partial-union-cases/source/jibb
1587−/* tok-463 %txt /tests/golden/types-partial-union-cases/tokens/txt
1588−/* tre-463 %txt /tests/golden/types-partial-union-cases/tree/txt
1589−/* typ-463 %txt /tests/golden/types-partial-union-cases/types/txt
1590−/* src-464 %jibb /tests/golden/types-partial-union-edges/source/jibb
1591−/* tok-464 %txt /tests/golden/types-partial-union-edges/tokens/txt
1592−/* tre-464 %txt /tests/golden/types-partial-union-edges/tree/txt
1593−/* typ-464 %txt /tests/golden/types-partial-union-edges/types/txt
1594−/* src-465 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1595−/* tok-465 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1596−/* tre-465 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1597−/* typ-465 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1598−/* src-466 %jibb /tests/golden/types-prelude-direct/source/jibb
1599−/* tok-466 %txt /tests/golden/types-prelude-direct/tokens/txt
1600−/* tre-466 %txt /tests/golden/types-prelude-direct/tree/txt
1601−/* typ-466 %txt /tests/golden/types-prelude-direct/types/txt
1602−/* src-467 %jibb /tests/golden/types-prelude-interface/source/jibb
1603−/* tok-467 %txt /tests/golden/types-prelude-interface/tokens/txt
1604−/* tre-467 %txt /tests/golden/types-prelude-interface/tree/txt
1605−/* mod-467-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1606−/* mod-467-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1607−/* typ-467 %txt /tests/golden/types-prelude-interface/types/txt
1608−/* mtre-467 %txt /tests/golden/types-prelude-interface/module-trees/txt
1609−/* src-468 %jibb /tests/golden/types-record-bound-variable/source/jibb
1610−/* tok-468 %txt /tests/golden/types-record-bound-variable/tokens/txt
1611−/* tre-468 %txt /tests/golden/types-record-bound-variable/tree/txt
1612−/* typ-468 %txt /tests/golden/types-record-bound-variable/types/txt
1613−/* src-469 %jibb /tests/golden/types-record-faces/source/jibb
1614−/* tok-469 %txt /tests/golden/types-record-faces/tokens/txt
1615−/* tre-469 %txt /tests/golden/types-record-faces/tree/txt
1616−/* typ-469 %txt /tests/golden/types-record-faces/types/txt
1617−/* src-470 %jibb /tests/golden/types-record-import/source/jibb
1618−/* tok-470 %txt /tests/golden/types-record-import/tokens/txt
1619−/* tre-470 %txt /tests/golden/types-record-import/tree/txt
1620−/* mod-470-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1621−/* typ-470 %txt /tests/golden/types-record-import/types/txt
1622−/* mtre-470 %txt /tests/golden/types-record-import/module-trees/txt
1623−/* src-471 %jibb /tests/golden/types-record-local-scheme/source/jibb
1624−/* tok-471 %txt /tests/golden/types-record-local-scheme/tokens/txt
1625−/* tre-471 %txt /tests/golden/types-record-local-scheme/tree/txt
1626−/* typ-471 %txt /tests/golden/types-record-local-scheme/types/txt
1627−/* src-472 %jibb /tests/golden/types-record-nested/source/jibb
1628−/* tok-472 %txt /tests/golden/types-record-nested/tokens/txt
1629−/* tre-472 %txt /tests/golden/types-record-nested/tree/txt
1630−/* typ-472 %txt /tests/golden/types-record-nested/types/txt
1631−/* src-473 %jibb /tests/golden/types-record-to-tuple/source/jibb
1632−/* tok-473 %txt /tests/golden/types-record-to-tuple/tokens/txt
1633−/* tre-473 %txt /tests/golden/types-record-to-tuple/tree/txt
1634−/* typ-473 %txt /tests/golden/types-record-to-tuple/types/txt
1635−/* src-474 %jibb /tests/golden/types-union-alias/source/jibb
1636−/* tok-474 %txt /tests/golden/types-union-alias/tokens/txt
1637−/* tre-474 %txt /tests/golden/types-union-alias/tree/txt
1638−/* typ-474 %txt /tests/golden/types-union-alias/types/txt
1639−/* src-475 %jibb /tests/golden/types-union-branch-context/source/jibb
1640−/* tok-475 %txt /tests/golden/types-union-branch-context/tokens/txt
1641−/* tre-475 %txt /tests/golden/types-union-branch-context/tree/txt
1642−/* typ-475 %txt /tests/golden/types-union-branch-context/types/txt
1643−/* src-476 %jibb /tests/golden/types-union-branch-pending/source/jibb
1644−/* tok-476 %txt /tests/golden/types-union-branch-pending/tokens/txt
1645−/* tre-476 %txt /tests/golden/types-union-branch-pending/tree/txt
1646−/* typ-476 %txt /tests/golden/types-union-branch-pending/types/txt
1647−/* src-477 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1648−/* tok-477 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1649−/* tre-477 %txt /tests/golden/types-union-constructor-shape/tree/txt
1650−/* typ-477 %txt /tests/golden/types-union-constructor-shape/types/txt
1651−/* src-478 %jibb /tests/golden/types-union-context-flow/source/jibb
1652−/* tok-478 %txt /tests/golden/types-union-context-flow/tokens/txt
1653−/* tre-478 %txt /tests/golden/types-union-context-flow/tree/txt
1654−/* typ-478 %txt /tests/golden/types-union-context-flow/types/txt
1655−/* src-479 %jibb /tests/golden/types-union-import/source/jibb
1656−/* tok-479 %txt /tests/golden/types-union-import/tokens/txt
1657−/* tre-479 %txt /tests/golden/types-union-import/tree/txt
1658−/* mod-479-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1659−/* typ-479 %txt /tests/golden/types-union-import/types/txt
1660−/* mtre-479 %txt /tests/golden/types-union-import/module-trees/txt
1661−/* src-480 %jibb /tests/golden/types-union-local-pending/source/jibb
1662−/* tok-480 %txt /tests/golden/types-union-local-pending/tokens/txt
1663−/* tre-480 %txt /tests/golden/types-union-local-pending/tree/txt
1664−/* typ-480 %txt /tests/golden/types-union-local-pending/types/txt
1665−/* src-481 %jibb /tests/golden/types-union-overlap/source/jibb
1666−/* tok-481 %txt /tests/golden/types-union-overlap/tokens/txt
1667−/* tre-481 %txt /tests/golden/types-union-overlap/tree/txt
1668−/* typ-481 %txt /tests/golden/types-union-overlap/types/txt
1669−/* src-482 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1670−/* tok-482 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1671−/* tre-482 %txt /tests/golden/types-union-overlap-nested/tree/txt
1672−/* typ-482 %txt /tests/golden/types-union-overlap-nested/types/txt
1673−/* src-483 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1674−/* tok-483 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1675−/* tre-483 %txt /tests/golden/types-union-phantom-generic/tree/txt
1676−/* typ-483 %txt /tests/golden/types-union-phantom-generic/types/txt
1677−/* src-484 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1678−/* tok-484 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1679−/* tre-484 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1680−/* mod-484-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1681−/* typ-484 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1682−/* mtre-484 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1683−/* src-485 %jibb /tests/golden/types-union-print-distinct/source/jibb
1684−/* tok-485 %txt /tests/golden/types-union-print-distinct/tokens/txt
1685−/* tre-485 %txt /tests/golden/types-union-print-distinct/tree/txt
1686−/* mod-485-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1687−/* mod-485-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1688−/* mod-485-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1689−/* typ-485 %txt /tests/golden/types-union-print-distinct/types/txt
1690−/* mtre-485 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1691−/* src-486 %jibb /tests/golden/types-union-print-escape/source/jibb
1692−/* tok-486 %txt /tests/golden/types-union-print-escape/tokens/txt
1693−/* tre-486 %txt /tests/golden/types-union-print-escape/tree/txt
1694−/* typ-486 %txt /tests/golden/types-union-print-escape/types/txt
1695−/* src-487 %jibb /tests/golden/types-union-print-local/source/jibb
1696−/* tok-487 %txt /tests/golden/types-union-print-local/tokens/txt
1697−/* tre-487 %txt /tests/golden/types-union-print-local/tree/txt
1698−/* typ-487 %txt /tests/golden/types-union-print-local/types/txt
1699−/* src-488 %jibb /tests/golden/types-union-print-nested/source/jibb
1700−/* tok-488 %txt /tests/golden/types-union-print-nested/tokens/txt
1701−/* tre-488 %txt /tests/golden/types-union-print-nested/tree/txt
1702−/* typ-488 %txt /tests/golden/types-union-print-nested/types/txt
1703−/* src-489 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1704−/* tok-489 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1705−/* tre-489 %txt /tests/golden/types-union-print-same-origin/tree/txt
1706−/* mod-489-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1707−/* typ-489 %txt /tests/golden/types-union-print-same-origin/types/txt
1708−/* mtre-489 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1709−/* src-490 %jibb /tests/golden/types-union-print-transitive/source/jibb
1710−/* tok-490 %txt /tests/golden/types-union-print-transitive/tokens/txt
1711−/* tre-490 %txt /tests/golden/types-union-print-transitive/tree/txt
1712−/* mod-490-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1713−/* mod-490-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1714−/* typ-490 %txt /tests/golden/types-union-print-transitive/types/txt
1715−/* mtre-490 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1716−/* src-491 %jibb /tests/golden/types-union-singleton/source/jibb
1717−/* tok-491 %txt /tests/golden/types-union-singleton/tokens/txt
1718−/* tre-491 %txt /tests/golden/types-union-singleton/tree/txt
1719−/* typ-491 %txt /tests/golden/types-union-singleton/types/txt
1720−/* src-492 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1721−/* tok-492 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1722−/* tre-492 %txt /tests/golden/types-union-tag-atoms/tree/txt
1723−/* typ-492 %txt /tests/golden/types-union-tag-atoms/types/txt
1724−/* src-493 %jibb /tests/golden/types-union-tags/source/jibb
1725−/* tok-493 %txt /tests/golden/types-union-tags/tokens/txt
1726−/* tre-493 %txt /tests/golden/types-union-tags/tree/txt
1727−/* typ-493 %txt /tests/golden/types-union-tags/types/txt
1728−/* src-494 %jibb /tests/golden/types-union-unresolved/source/jibb
1729−/* tok-494 %txt /tests/golden/types-union-unresolved/tokens/txt
1730−/* tre-494 %txt /tests/golden/types-union-unresolved/tree/txt
1731−/* typ-494 %txt /tests/golden/types-union-unresolved/types/txt
1732−/* src-495 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1733−/* tok-495 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1734−/* tre-495 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1735−/* typ-495 %txt /tests/golden/types-union-unresolved-flow/types/txt
1736−/* src-496 %jibb /tests/golden/types-unit-context/source/jibb
1737−/* tok-496 %txt /tests/golden/types-unit-context/tokens/txt
1738−/* tre-496 %txt /tests/golden/types-unit-context/tree/txt
1739−/* typ-496 %txt /tests/golden/types-unit-context/types/txt
1740−/* src-497 %jibb /tests/golden/types-unit-patterns/source/jibb
1741−/* tok-497 %txt /tests/golden/types-unit-patterns/tokens/txt
1742−/* tre-497 %txt /tests/golden/types-unit-patterns/tree/txt
1743−/* typ-497 %txt /tests/golden/types-unit-patterns/types/txt
1447+/* src-430 %jibb /tests/golden/types-list-context/source/jibb
1448+/* tok-430 %txt /tests/golden/types-list-context/tokens/txt
1449+/* tre-430 %txt /tests/golden/types-list-context/tree/txt
1450+/* typ-430 %txt /tests/golden/types-list-context/types/txt
1451+/* src-431 %jibb /tests/golden/types-list-imported/source/jibb
1452+/* tok-431 %txt /tests/golden/types-list-imported/tokens/txt
1453+/* tre-431 %txt /tests/golden/types-list-imported/tree/txt
1454+/* typ-431 %txt /tests/golden/types-list-imported/types/txt
1455+/* imp-431-1 %txt /tests/golden/types-list-imported/sur/fixture/txt
1456+/* imp-431-2 %txt /tests/golden/types-list-imported/sur/fixture/txt
1457+/* src-432 %jibb /tests/golden/types-module-fixtures/source/jibb
1458+/* tok-432 %txt /tests/golden/types-module-fixtures/tokens/txt
1459+/* tre-432 %txt /tests/golden/types-module-fixtures/tree/txt
1460+/* mod-432-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1461+/* mod-432-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1462+/* typ-432 %txt /tests/golden/types-module-fixtures/types/txt
1463+/* mtre-432 %txt /tests/golden/types-module-fixtures/module-trees/txt
1464+/* src-433 %jibb /tests/golden/types-module-mixed/source/jibb
1465+/* tok-433 %txt /tests/golden/types-module-mixed/tokens/txt
1466+/* tre-433 %txt /tests/golden/types-module-mixed/tree/txt
1467+/* mod-433-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1468+/* typ-433 %txt /tests/golden/types-module-mixed/types/txt
1469+/* imp-433-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1470+/* mark-433-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1471+/* mtre-433 %txt /tests/golden/types-module-mixed/module-trees/txt
1472+/* src-434 %jibb /tests/golden/types-null-context/source/jibb
1473+/* tok-434 %txt /tests/golden/types-null-context/tokens/txt
1474+/* tre-434 %txt /tests/golden/types-null-context/tree/txt
1475+/* typ-434 %txt /tests/golden/types-null-context/types/txt
1476+/* src-435 %jibb /tests/golden/types-null-overlap/source/jibb
1477+/* tok-435 %txt /tests/golden/types-null-overlap/tokens/txt
1478+/* tre-435 %txt /tests/golden/types-null-overlap/tree/txt
1479+/* typ-435 %txt /tests/golden/types-null-overlap/types/txt
1480+/* src-436 %jibb /tests/golden/types-null-unresolved/source/jibb
1481+/* tok-436 %txt /tests/golden/types-null-unresolved/tokens/txt
1482+/* tre-436 %txt /tests/golden/types-null-unresolved/tree/txt
1483+/* typ-436 %txt /tests/golden/types-null-unresolved/types/txt
1484+/* src-437 %jibb /tests/golden/types-partial-apply/source/jibb
1485+/* tok-437 %txt /tests/golden/types-partial-apply/tokens/txt
1486+/* tre-437 %txt /tests/golden/types-partial-apply/tree/txt
1487+/* typ-437 %txt /tests/golden/types-partial-apply/types/txt
1488+/* src-438 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1489+/* tok-438 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1490+/* tre-438 %txt /tests/golden/types-partial-atom-alias/tree/txt
1491+/* typ-438 %txt /tests/golden/types-partial-atom-alias/types/txt
1492+/* src-439 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1493+/* tok-439 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1494+/* tre-439 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1495+/* typ-439 %txt /tests/golden/types-partial-atom-constraint/types/txt
1496+/* src-440 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1497+/* tok-440 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1498+/* tre-440 %txt /tests/golden/types-partial-atom-widening/tree/txt
1499+/* typ-440 %txt /tests/golden/types-partial-atom-widening/types/txt
1500+/* src-441 %jibb /tests/golden/types-partial-aura/source/jibb
1501+/* tok-441 %txt /tests/golden/types-partial-aura/tokens/txt
1502+/* tre-441 %txt /tests/golden/types-partial-aura/tree/txt
1503+/* typ-441 %txt /tests/golden/types-partial-aura/types/txt
1504+/* src-442 %jibb /tests/golden/types-partial-aura-family/source/jibb
1505+/* tok-442 %txt /tests/golden/types-partial-aura-family/tokens/txt
1506+/* tre-442 %txt /tests/golden/types-partial-aura-family/tree/txt
1507+/* typ-442 %txt /tests/golden/types-partial-aura-family/types/txt
1508+/* src-443 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1509+/* tok-443 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1510+/* tre-443 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1511+/* typ-443 %txt /tests/golden/types-partial-aura-generalization/types/txt
1512+/* src-444 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1513+/* tok-444 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1514+/* tre-444 %txt /tests/golden/types-partial-bare-atom/tree/txt
1515+/* typ-444 %txt /tests/golden/types-partial-bare-atom/types/txt
1516+/* src-445 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1517+/* tok-445 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1518+/* tre-445 %txt /tests/golden/types-partial-branch-widening/tree/txt
1519+/* typ-445 %txt /tests/golden/types-partial-branch-widening/types/txt
1520+/* src-446 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1521+/* tok-446 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1522+/* tre-446 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1523+/* typ-446 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1524+/* src-447 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1525+/* tok-447 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1526+/* tre-447 %txt /tests/golden/types-partial-decimal-default/tree/txt
1527+/* typ-447 %txt /tests/golden/types-partial-decimal-default/types/txt
1528+/* src-448 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1529+/* tok-448 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1530+/* tre-448 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1531+/* typ-448 %txt /tests/golden/types-partial-dependency-chain/types/txt
1532+/* src-449 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1533+/* tok-449 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1534+/* tre-449 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1535+/* typ-449 %txt /tests/golden/types-partial-explicit-capital/types/txt
1536+/* src-450 %jibb /tests/golden/types-partial-forward/source/jibb
1537+/* tok-450 %txt /tests/golden/types-partial-forward/tokens/txt
1538+/* tre-450 %txt /tests/golden/types-partial-forward/tree/txt
1539+/* typ-450 %txt /tests/golden/types-partial-forward/types/txt
1540+/* src-451 %jibb /tests/golden/types-partial-generalization/source/jibb
1541+/* tok-451 %txt /tests/golden/types-partial-generalization/tokens/txt
1542+/* tre-451 %txt /tests/golden/types-partial-generalization/tree/txt
1543+/* typ-451 %txt /tests/golden/types-partial-generalization/types/txt
1544+/* src-452 %jibb /tests/golden/types-partial-identity/source/jibb
1545+/* tok-452 %txt /tests/golden/types-partial-identity/tokens/txt
1546+/* tre-452 %txt /tests/golden/types-partial-identity/tree/txt
1547+/* typ-452 %txt /tests/golden/types-partial-identity/types/txt
1548+/* src-453 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1549+/* tok-453 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1550+/* tre-453 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1551+/* typ-453 %txt /tests/golden/types-partial-independent-atoms/types/txt
1552+/* src-454 %jibb /tests/golden/types-partial-local-molds/source/jibb
1553+/* tok-454 %txt /tests/golden/types-partial-local-molds/tokens/txt
1554+/* tre-454 %txt /tests/golden/types-partial-local-molds/tree/txt
1555+/* typ-454 %txt /tests/golden/types-partial-local-molds/types/txt
1556+/* src-455 %jibb /tests/golden/types-partial-locals/source/jibb
1557+/* tok-455 %txt /tests/golden/types-partial-locals/tokens/txt
1558+/* tre-455 %txt /tests/golden/types-partial-locals/tree/txt
1559+/* typ-455 %txt /tests/golden/types-partial-locals/types/txt
1560+/* src-456 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1561+/* tok-456 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1562+/* tre-456 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1563+/* typ-456 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1564+/* src-457 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1565+/* tok-457 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1566+/* tre-457 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1567+/* typ-457 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1568+/* src-458 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1569+/* tok-458 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1570+/* tre-458 %txt /tests/golden/types-partial-mold-composite/tree/txt
1571+/* typ-458 %txt /tests/golden/types-partial-mold-composite/types/txt
1572+/* src-459 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1573+/* tok-459 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1574+/* tre-459 %txt /tests/golden/types-partial-mold-forward/tree/txt
1575+/* typ-459 %txt /tests/golden/types-partial-mold-forward/types/txt
1576+/* src-460 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1577+/* tok-460 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1578+/* tre-460 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1579+/* typ-460 %txt /tests/golden/types-partial-mold-recursive/types/txt
1580+/* src-461 %jibb /tests/golden/types-partial-occurs/source/jibb
1581+/* tok-461 %txt /tests/golden/types-partial-occurs/tokens/txt
1582+/* tre-461 %txt /tests/golden/types-partial-occurs/tree/txt
1583+/* typ-461 %txt /tests/golden/types-partial-occurs/types/txt
1584+/* src-462 %jibb /tests/golden/types-partial-projection/source/jibb
1585+/* tok-462 %txt /tests/golden/types-partial-projection/tokens/txt
1586+/* tre-462 %txt /tests/golden/types-partial-projection/tree/txt
1587+/* typ-462 %txt /tests/golden/types-partial-projection/types/txt
1588+/* src-463 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1589+/* tok-463 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1590+/* tre-463 %txt /tests/golden/types-partial-shadow-global/tree/txt
1591+/* typ-463 %txt /tests/golden/types-partial-shadow-global/types/txt
1592+/* src-464 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1593+/* tok-464 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1594+/* tre-464 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1595+/* typ-464 %txt /tests/golden/types-partial-shared-tvar/types/txt
1596+/* src-465 %jibb /tests/golden/types-partial-union-cases/source/jibb
1597+/* tok-465 %txt /tests/golden/types-partial-union-cases/tokens/txt
1598+/* tre-465 %txt /tests/golden/types-partial-union-cases/tree/txt
1599+/* typ-465 %txt /tests/golden/types-partial-union-cases/types/txt
1600+/* src-466 %jibb /tests/golden/types-partial-union-edges/source/jibb
1601+/* tok-466 %txt /tests/golden/types-partial-union-edges/tokens/txt
1602+/* tre-466 %txt /tests/golden/types-partial-union-edges/tree/txt
1603+/* typ-466 %txt /tests/golden/types-partial-union-edges/types/txt
1604+/* src-467 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1605+/* tok-467 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1606+/* tre-467 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1607+/* typ-467 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1608+/* src-468 %jibb /tests/golden/types-prelude-direct/source/jibb
1609+/* tok-468 %txt /tests/golden/types-prelude-direct/tokens/txt
1610+/* tre-468 %txt /tests/golden/types-prelude-direct/tree/txt
1611+/* typ-468 %txt /tests/golden/types-prelude-direct/types/txt
1612+/* src-469 %jibb /tests/golden/types-prelude-interface/source/jibb
1613+/* tok-469 %txt /tests/golden/types-prelude-interface/tokens/txt
1614+/* tre-469 %txt /tests/golden/types-prelude-interface/tree/txt
1615+/* mod-469-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1616+/* mod-469-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1617+/* typ-469 %txt /tests/golden/types-prelude-interface/types/txt
1618+/* mtre-469 %txt /tests/golden/types-prelude-interface/module-trees/txt
1619+/* src-470 %jibb /tests/golden/types-record-bound-variable/source/jibb
1620+/* tok-470 %txt /tests/golden/types-record-bound-variable/tokens/txt
1621+/* tre-470 %txt /tests/golden/types-record-bound-variable/tree/txt
1622+/* typ-470 %txt /tests/golden/types-record-bound-variable/types/txt
1623+/* src-471 %jibb /tests/golden/types-record-faces/source/jibb
1624+/* tok-471 %txt /tests/golden/types-record-faces/tokens/txt
1625+/* tre-471 %txt /tests/golden/types-record-faces/tree/txt
1626+/* typ-471 %txt /tests/golden/types-record-faces/types/txt
1627+/* src-472 %jibb /tests/golden/types-record-import/source/jibb
1628+/* tok-472 %txt /tests/golden/types-record-import/tokens/txt
1629+/* tre-472 %txt /tests/golden/types-record-import/tree/txt
1630+/* mod-472-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1631+/* typ-472 %txt /tests/golden/types-record-import/types/txt
1632+/* mtre-472 %txt /tests/golden/types-record-import/module-trees/txt
1633+/* src-473 %jibb /tests/golden/types-record-local-scheme/source/jibb
1634+/* tok-473 %txt /tests/golden/types-record-local-scheme/tokens/txt
1635+/* tre-473 %txt /tests/golden/types-record-local-scheme/tree/txt
1636+/* typ-473 %txt /tests/golden/types-record-local-scheme/types/txt
1637+/* src-474 %jibb /tests/golden/types-record-nested/source/jibb
1638+/* tok-474 %txt /tests/golden/types-record-nested/tokens/txt
1639+/* tre-474 %txt /tests/golden/types-record-nested/tree/txt
1640+/* typ-474 %txt /tests/golden/types-record-nested/types/txt
1641+/* src-475 %jibb /tests/golden/types-record-to-tuple/source/jibb
1642+/* tok-475 %txt /tests/golden/types-record-to-tuple/tokens/txt
1643+/* tre-475 %txt /tests/golden/types-record-to-tuple/tree/txt
1644+/* typ-475 %txt /tests/golden/types-record-to-tuple/types/txt
1645+/* src-476 %jibb /tests/golden/types-union-alias/source/jibb
1646+/* tok-476 %txt /tests/golden/types-union-alias/tokens/txt
1647+/* tre-476 %txt /tests/golden/types-union-alias/tree/txt
1648+/* typ-476 %txt /tests/golden/types-union-alias/types/txt
1649+/* src-477 %jibb /tests/golden/types-union-branch-context/source/jibb
1650+/* tok-477 %txt /tests/golden/types-union-branch-context/tokens/txt
1651+/* tre-477 %txt /tests/golden/types-union-branch-context/tree/txt
1652+/* typ-477 %txt /tests/golden/types-union-branch-context/types/txt
1653+/* src-478 %jibb /tests/golden/types-union-branch-pending/source/jibb
1654+/* tok-478 %txt /tests/golden/types-union-branch-pending/tokens/txt
1655+/* tre-478 %txt /tests/golden/types-union-branch-pending/tree/txt
1656+/* typ-478 %txt /tests/golden/types-union-branch-pending/types/txt
1657+/* src-479 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1658+/* tok-479 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1659+/* tre-479 %txt /tests/golden/types-union-constructor-shape/tree/txt
1660+/* typ-479 %txt /tests/golden/types-union-constructor-shape/types/txt
1661+/* src-480 %jibb /tests/golden/types-union-context-flow/source/jibb
1662+/* tok-480 %txt /tests/golden/types-union-context-flow/tokens/txt
1663+/* tre-480 %txt /tests/golden/types-union-context-flow/tree/txt
1664+/* typ-480 %txt /tests/golden/types-union-context-flow/types/txt
1665+/* src-481 %jibb /tests/golden/types-union-import/source/jibb
1666+/* tok-481 %txt /tests/golden/types-union-import/tokens/txt
1667+/* tre-481 %txt /tests/golden/types-union-import/tree/txt
1668+/* mod-481-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1669+/* typ-481 %txt /tests/golden/types-union-import/types/txt
1670+/* mtre-481 %txt /tests/golden/types-union-import/module-trees/txt
1671+/* src-482 %jibb /tests/golden/types-union-local-pending/source/jibb
1672+/* tok-482 %txt /tests/golden/types-union-local-pending/tokens/txt
1673+/* tre-482 %txt /tests/golden/types-union-local-pending/tree/txt
1674+/* typ-482 %txt /tests/golden/types-union-local-pending/types/txt
1675+/* src-483 %jibb /tests/golden/types-union-overlap/source/jibb
1676+/* tok-483 %txt /tests/golden/types-union-overlap/tokens/txt
1677+/* tre-483 %txt /tests/golden/types-union-overlap/tree/txt
1678+/* typ-483 %txt /tests/golden/types-union-overlap/types/txt
1679+/* src-484 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1680+/* tok-484 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1681+/* tre-484 %txt /tests/golden/types-union-overlap-nested/tree/txt
1682+/* typ-484 %txt /tests/golden/types-union-overlap-nested/types/txt
1683+/* src-485 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1684+/* tok-485 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1685+/* tre-485 %txt /tests/golden/types-union-phantom-generic/tree/txt
1686+/* typ-485 %txt /tests/golden/types-union-phantom-generic/types/txt
1687+/* src-486 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1688+/* tok-486 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1689+/* tre-486 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1690+/* mod-486-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1691+/* typ-486 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1692+/* mtre-486 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1693+/* src-487 %jibb /tests/golden/types-union-print-distinct/source/jibb
1694+/* tok-487 %txt /tests/golden/types-union-print-distinct/tokens/txt
1695+/* tre-487 %txt /tests/golden/types-union-print-distinct/tree/txt
1696+/* mod-487-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1697+/* mod-487-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1698+/* mod-487-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1699+/* typ-487 %txt /tests/golden/types-union-print-distinct/types/txt
1700+/* mtre-487 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1701+/* src-488 %jibb /tests/golden/types-union-print-escape/source/jibb
1702+/* tok-488 %txt /tests/golden/types-union-print-escape/tokens/txt
1703+/* tre-488 %txt /tests/golden/types-union-print-escape/tree/txt
1704+/* typ-488 %txt /tests/golden/types-union-print-escape/types/txt
1705+/* src-489 %jibb /tests/golden/types-union-print-local/source/jibb
1706+/* tok-489 %txt /tests/golden/types-union-print-local/tokens/txt
1707+/* tre-489 %txt /tests/golden/types-union-print-local/tree/txt
1708+/* typ-489 %txt /tests/golden/types-union-print-local/types/txt
1709+/* src-490 %jibb /tests/golden/types-union-print-nested/source/jibb
1710+/* tok-490 %txt /tests/golden/types-union-print-nested/tokens/txt
1711+/* tre-490 %txt /tests/golden/types-union-print-nested/tree/txt
1712+/* typ-490 %txt /tests/golden/types-union-print-nested/types/txt
1713+/* src-491 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1714+/* tok-491 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1715+/* tre-491 %txt /tests/golden/types-union-print-same-origin/tree/txt
1716+/* mod-491-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1717+/* typ-491 %txt /tests/golden/types-union-print-same-origin/types/txt
1718+/* mtre-491 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1719+/* src-492 %jibb /tests/golden/types-union-print-transitive/source/jibb
1720+/* tok-492 %txt /tests/golden/types-union-print-transitive/tokens/txt
1721+/* tre-492 %txt /tests/golden/types-union-print-transitive/tree/txt
1722+/* mod-492-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1723+/* mod-492-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1724+/* typ-492 %txt /tests/golden/types-union-print-transitive/types/txt
1725+/* mtre-492 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1726+/* src-493 %jibb /tests/golden/types-union-singleton/source/jibb
1727+/* tok-493 %txt /tests/golden/types-union-singleton/tokens/txt
1728+/* tre-493 %txt /tests/golden/types-union-singleton/tree/txt
1729+/* typ-493 %txt /tests/golden/types-union-singleton/types/txt
1730+/* src-494 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1731+/* tok-494 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1732+/* tre-494 %txt /tests/golden/types-union-tag-atoms/tree/txt
1733+/* typ-494 %txt /tests/golden/types-union-tag-atoms/types/txt
1734+/* src-495 %jibb /tests/golden/types-union-tags/source/jibb
1735+/* tok-495 %txt /tests/golden/types-union-tags/tokens/txt
1736+/* tre-495 %txt /tests/golden/types-union-tags/tree/txt
1737+/* typ-495 %txt /tests/golden/types-union-tags/types/txt
1738+/* src-496 %jibb /tests/golden/types-union-unresolved/source/jibb
1739+/* tok-496 %txt /tests/golden/types-union-unresolved/tokens/txt
1740+/* tre-496 %txt /tests/golden/types-union-unresolved/tree/txt
1741+/* typ-496 %txt /tests/golden/types-union-unresolved/types/txt
1742+/* src-497 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1743+/* tok-497 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1744+/* tre-497 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1745+/* typ-497 %txt /tests/golden/types-union-unresolved-flow/types/txt
1746+/* src-498 %jibb /tests/golden/types-unit-context/source/jibb
1747+/* tok-498 %txt /tests/golden/types-unit-context/tokens/txt
1748+/* tre-498 %txt /tests/golden/types-unit-context/tree/txt
1749+/* typ-498 %txt /tests/golden/types-unit-context/types/txt
1750+/* src-499 %jibb /tests/golden/types-unit-patterns/source/jibb
1751+/* tok-499 %txt /tests/golden/types-unit-patterns/tokens/txt
1752+/* tre-499 %txt /tests/golden/types-unit-patterns/tree/txt
1753+/* typ-499 %txt /tests/golden/types-unit-patterns/types/txt
17441754=/ prepared-prelude (prepare-prelude:jibb prelude-source)
17451755|%
17461756:: one arm per case
@@ -2603,142 +2613,146 @@
26032613 (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]]))
26042614++ test-types-import-sur-record-graph
26052615 (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]]))
2616+++ test-types-list-context
2617+ (weld (check ~.types-list-context src-430 `tok-430 `tre-430) (check-module-types ~.types-list-context ~[%tests %golden ~.types-list-context %source %jibb] src-430 `typ-430 ~ ~ ~))
2618+++ test-types-list-imported
2619+ (weld (check ~.types-list-imported src-431 `tok-431 `tre-431) (check-module-types ~.types-list-imported ~[%tests %golden ~.types-list-imported %source %jibb] src-431 `typ-431 ~[[%fixture %texts imp-431-1] [%fixture %ships imp-431-2]] ~ ~))
26062620++ test-types-module-fixtures
2607− (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-430 `tok-430 `tre-430) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-430 `typ-430 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-430-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-430-2]])) (check-module-trees ~.types-module-fixtures `mtre-430 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-430-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-430-2]]))
2621+ (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-432 `tok-432 `tre-432) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-432 `typ-432 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-432-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-432-2]])) (check-module-trees ~.types-module-fixtures `mtre-432 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-432-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-432-2]]))
26082622++ test-types-module-mixed
2609− (weld (weld (check ~.types-module-mixed src-431 `tok-431 `tre-431) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-431 `typ-431 ~[[%fixture %title imp-431-1]] ~[[%label mark-431-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-431-1]])) (check-module-trees ~.types-module-mixed `mtre-431 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-431-1]]))
2623+ (weld (weld (check ~.types-module-mixed src-433 `tok-433 `tre-433) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-433 `typ-433 ~[[%fixture %title imp-433-1]] ~[[%label mark-433-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-433-1]])) (check-module-trees ~.types-module-mixed `mtre-433 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-433-1]]))
26102624++ test-types-null-context
2611− (weld (check ~.types-null-context src-432 `tok-432 `tre-432) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-432 `typ-432))
2625+ (weld (check ~.types-null-context src-434 `tok-434 `tre-434) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-434 `typ-434))
26122626++ test-types-null-overlap
2613− (weld (check ~.types-null-overlap src-433 `tok-433 `tre-433) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-433 `typ-433))
2627+ (weld (check ~.types-null-overlap src-435 `tok-435 `tre-435) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-435 `typ-435))
26142628++ test-types-null-unresolved
2615− (weld (check ~.types-null-unresolved src-434 `tok-434 `tre-434) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-434 `typ-434))
2629+ (weld (check ~.types-null-unresolved src-436 `tok-436 `tre-436) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-436 `typ-436))
26162630++ test-types-partial-apply
2617− (weld (check ~.types-partial-apply src-435 `tok-435 `tre-435) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-435 `typ-435))
2631+ (weld (check ~.types-partial-apply src-437 `tok-437 `tre-437) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-437 `typ-437))
26182632++ test-types-partial-atom-alias
2619− (weld (check ~.types-partial-atom-alias src-436 `tok-436 `tre-436) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-436 `typ-436))
2633+ (weld (check ~.types-partial-atom-alias src-438 `tok-438 `tre-438) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-438 `typ-438))
26202634++ test-types-partial-atom-constraint
2621− (weld (check ~.types-partial-atom-constraint src-437 `tok-437 `tre-437) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-437 `typ-437))
2635+ (weld (check ~.types-partial-atom-constraint src-439 `tok-439 `tre-439) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-439 `typ-439))
26222636++ test-types-partial-atom-widening
2623− (weld (check ~.types-partial-atom-widening src-438 `tok-438 `tre-438) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-438 `typ-438))
2637+ (weld (check ~.types-partial-atom-widening src-440 `tok-440 `tre-440) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-440 `typ-440))
26242638++ test-types-partial-aura
2625− (weld (check ~.types-partial-aura src-439 `tok-439 `tre-439) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-439 `typ-439))
2639+ (weld (check ~.types-partial-aura src-441 `tok-441 `tre-441) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-441 `typ-441))
26262640++ test-types-partial-aura-family
2627− (weld (check ~.types-partial-aura-family src-440 `tok-440 `tre-440) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-440 `typ-440))
2641+ (weld (check ~.types-partial-aura-family src-442 `tok-442 `tre-442) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-442 `typ-442))
26282642++ test-types-partial-aura-generalization
2629− (weld (check ~.types-partial-aura-generalization src-441 `tok-441 `tre-441) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-441 `typ-441))
2643+ (weld (check ~.types-partial-aura-generalization src-443 `tok-443 `tre-443) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-443 `typ-443))
26302644++ test-types-partial-bare-atom
2631− (weld (check ~.types-partial-bare-atom src-442 `tok-442 `tre-442) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-442 `typ-442))
2645+ (weld (check ~.types-partial-bare-atom src-444 `tok-444 `tre-444) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-444 `typ-444))
26322646++ test-types-partial-branch-widening
2633− (weld (check ~.types-partial-branch-widening src-443 `tok-443 `tre-443) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-443 `typ-443))
2647+ (weld (check ~.types-partial-branch-widening src-445 `tok-445 `tre-445) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-445 `typ-445))
26342648++ test-types-partial-conflicting-sites
2635− (weld (check ~.types-partial-conflicting-sites src-444 `tok-444 `tre-444) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-444 `typ-444))
2649+ (weld (check ~.types-partial-conflicting-sites src-446 `tok-446 `tre-446) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-446 `typ-446))
26362650++ test-types-partial-decimal-default
2637− (weld (check ~.types-partial-decimal-default src-445 `tok-445 `tre-445) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-445 `typ-445))
2651+ (weld (check ~.types-partial-decimal-default src-447 `tok-447 `tre-447) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-447 `typ-447))
26382652++ test-types-partial-dependency-chain
2639− (weld (check ~.types-partial-dependency-chain src-446 `tok-446 `tre-446) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-446 `typ-446))
2653+ (weld (check ~.types-partial-dependency-chain src-448 `tok-448 `tre-448) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-448 `typ-448))
26402654++ test-types-partial-explicit-capital
2641− (weld (check ~.types-partial-explicit-capital src-447 `tok-447 `tre-447) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-447 `typ-447))
2655+ (weld (check ~.types-partial-explicit-capital src-449 `tok-449 `tre-449) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-449 `typ-449))
26422656++ test-types-partial-forward
2643− (weld (check ~.types-partial-forward src-448 `tok-448 `tre-448) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-448 `typ-448))
2657+ (weld (check ~.types-partial-forward src-450 `tok-450 `tre-450) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-450 `typ-450))
26442658++ test-types-partial-generalization
2645− (weld (check ~.types-partial-generalization src-449 `tok-449 `tre-449) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-449 `typ-449))
2659+ (weld (check ~.types-partial-generalization src-451 `tok-451 `tre-451) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-451 `typ-451))
26462660++ test-types-partial-identity
2647− (weld (check ~.types-partial-identity src-450 `tok-450 `tre-450) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-450 `typ-450))
2661+ (weld (check ~.types-partial-identity src-452 `tok-452 `tre-452) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-452 `typ-452))
26482662++ test-types-partial-independent-atoms
2649− (weld (check ~.types-partial-independent-atoms src-451 `tok-451 `tre-451) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-451 `typ-451))
2663+ (weld (check ~.types-partial-independent-atoms src-453 `tok-453 `tre-453) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-453 `typ-453))
26502664++ test-types-partial-local-molds
2651− (weld (check ~.types-partial-local-molds src-452 `tok-452 `tre-452) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-452 `typ-452))
2665+ (weld (check ~.types-partial-local-molds src-454 `tok-454 `tre-454) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-454 `typ-454))
26522666++ test-types-partial-locals
2653− (weld (check ~.types-partial-locals src-453 `tok-453 `tre-453) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-453 `typ-453))
2667+ (weld (check ~.types-partial-locals src-455 `tok-455 `tre-455) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-455 `typ-455))
26542668++ test-types-partial-many-atom-constraints
2655− (weld (check ~.types-partial-many-atom-constraints src-454 `tok-454 `tre-454) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-454 `typ-454))
2669+ (weld (check ~.types-partial-many-atom-constraints src-456 `tok-456 `tre-456) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-456 `typ-456))
26562670++ test-types-partial-mold-bare-aura
2657− (weld (check ~.types-partial-mold-bare-aura src-455 `tok-455 `tre-455) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-455 `typ-455))
2671+ (weld (check ~.types-partial-mold-bare-aura src-457 `tok-457 `tre-457) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-457 `typ-457))
26582672++ test-types-partial-mold-composite
2659− (weld (check ~.types-partial-mold-composite src-456 `tok-456 `tre-456) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-456 `typ-456))
2673+ (weld (check ~.types-partial-mold-composite src-458 `tok-458 `tre-458) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-458 `typ-458))
26602674++ test-types-partial-mold-forward
2661− (weld (check ~.types-partial-mold-forward src-457 `tok-457 `tre-457) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-457 `typ-457))
2675+ (weld (check ~.types-partial-mold-forward src-459 `tok-459 `tre-459) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-459 `typ-459))
26622676++ test-types-partial-mold-recursive
2663− (weld (check ~.types-partial-mold-recursive src-458 `tok-458 `tre-458) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-458 `typ-458))
2677+ (weld (check ~.types-partial-mold-recursive src-460 `tok-460 `tre-460) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-460 `typ-460))
26642678++ test-types-partial-occurs
2665− (weld (check ~.types-partial-occurs src-459 `tok-459 `tre-459) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-459 `typ-459))
2679+ (weld (check ~.types-partial-occurs src-461 `tok-461 `tre-461) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-461 `typ-461))
26662680++ test-types-partial-projection
2667− (weld (check ~.types-partial-projection src-460 `tok-460 `tre-460) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-460 `typ-460))
2681+ (weld (check ~.types-partial-projection src-462 `tok-462 `tre-462) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-462 `typ-462))
26682682++ test-types-partial-shadow-global
2669− (weld (check ~.types-partial-shadow-global src-461 `tok-461 `tre-461) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-461 `typ-461))
2683+ (weld (check ~.types-partial-shadow-global src-463 `tok-463 `tre-463) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-463 `typ-463))
26702684++ test-types-partial-shared-tvar
2671− (weld (check ~.types-partial-shared-tvar src-462 `tok-462 `tre-462) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-462 `typ-462))
2685+ (weld (check ~.types-partial-shared-tvar src-464 `tok-464 `tre-464) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-464 `typ-464))
26722686++ test-types-partial-union-cases
2673− (weld (check ~.types-partial-union-cases src-463 `tok-463 `tre-463) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-463 `typ-463))
2687+ (weld (check ~.types-partial-union-cases src-465 `tok-465 `tre-465) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-465 `typ-465))
26742688++ test-types-partial-union-edges
2675− (weld (check ~.types-partial-union-edges src-464 `tok-464 `tre-464) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-464 `typ-464))
2689+ (weld (check ~.types-partial-union-edges src-466 `tok-466 `tre-466) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-466 `typ-466))
26762690++ test-types-partial-unresolved-tag
2677− (weld (check ~.types-partial-unresolved-tag src-465 `tok-465 `tre-465) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-465 `typ-465))
2691+ (weld (check ~.types-partial-unresolved-tag src-467 `tok-467 `tre-467) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-467 `typ-467))
26782692++ test-types-prelude-direct
2679− (weld (check ~.types-prelude-direct src-466 `tok-466 `tre-466) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-466 `typ-466 ~ ~ ~))
2693+ (weld (check ~.types-prelude-direct src-468 `tok-468 `tre-468) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-468 `typ-468 ~ ~ ~))
26802694++ test-types-prelude-interface
2681− (weld (weld (check ~.types-prelude-interface src-467 `tok-467 `tre-467) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-467 `typ-467 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-467-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-467-2]])) (check-module-trees ~.types-prelude-interface `mtre-467 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-467-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-467-2]]))
2695+ (weld (weld (check ~.types-prelude-interface src-469 `tok-469 `tre-469) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-469 `typ-469 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-469-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-469-2]])) (check-module-trees ~.types-prelude-interface `mtre-469 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-469-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-469-2]]))
26822696++ test-types-record-bound-variable
2683− (weld (check ~.types-record-bound-variable src-468 `tok-468 `tre-468) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-468 `typ-468))
2697+ (weld (check ~.types-record-bound-variable src-470 `tok-470 `tre-470) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-470 `typ-470))
26842698++ test-types-record-faces
2685− (weld (check ~.types-record-faces src-469 `tok-469 `tre-469) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-469 `typ-469))
2699+ (weld (check ~.types-record-faces src-471 `tok-471 `tre-471) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-471 `typ-471))
26862700++ test-types-record-import
2687− (weld (weld (check ~.types-record-import src-470 `tok-470 `tre-470) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-470 `typ-470 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-470-1]])) (check-module-trees ~.types-record-import `mtre-470 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-470-1]]))
2701+ (weld (weld (check ~.types-record-import src-472 `tok-472 `tre-472) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-472 `typ-472 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-472-1]])) (check-module-trees ~.types-record-import `mtre-472 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-472-1]]))
26882702++ test-types-record-local-scheme
2689− (weld (check ~.types-record-local-scheme src-471 `tok-471 `tre-471) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-471 `typ-471))
2703+ (weld (check ~.types-record-local-scheme src-473 `tok-473 `tre-473) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-473 `typ-473))
26902704++ test-types-record-nested
2691− (weld (check ~.types-record-nested src-472 `tok-472 `tre-472) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-472 `typ-472))
2705+ (weld (check ~.types-record-nested src-474 `tok-474 `tre-474) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-474 `typ-474))
26922706++ test-types-record-to-tuple
2693− (weld (check ~.types-record-to-tuple src-473 `tok-473 `tre-473) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-473 `typ-473))
2707+ (weld (check ~.types-record-to-tuple src-475 `tok-475 `tre-475) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-475 `typ-475))
26942708++ test-types-union-alias
2695− (weld (check ~.types-union-alias src-474 `tok-474 `tre-474) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-474 `typ-474))
2709+ (weld (check ~.types-union-alias src-476 `tok-476 `tre-476) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-476 `typ-476))
26962710++ test-types-union-branch-context
2697− (weld (check ~.types-union-branch-context src-475 `tok-475 `tre-475) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-475 `typ-475))
2711+ (weld (check ~.types-union-branch-context src-477 `tok-477 `tre-477) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-477 `typ-477))
26982712++ test-types-union-branch-pending
2699− (weld (check ~.types-union-branch-pending src-476 `tok-476 `tre-476) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-476 `typ-476))
2713+ (weld (check ~.types-union-branch-pending src-478 `tok-478 `tre-478) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-478 `typ-478))
27002714++ test-types-union-constructor-shape
2701− (weld (check ~.types-union-constructor-shape src-477 `tok-477 `tre-477) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-477 `typ-477))
2715+ (weld (check ~.types-union-constructor-shape src-479 `tok-479 `tre-479) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-479 `typ-479))
27022716++ test-types-union-context-flow
2703− (weld (check ~.types-union-context-flow src-478 `tok-478 `tre-478) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-478 `typ-478))
2717+ (weld (check ~.types-union-context-flow src-480 `tok-480 `tre-480) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-480 `typ-480))
27042718++ test-types-union-import
2705− (weld (weld (check ~.types-union-import src-479 `tok-479 `tre-479) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-479 `typ-479 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]])) (check-module-trees ~.types-union-import `mtre-479 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]]))
2719+ (weld (weld (check ~.types-union-import src-481 `tok-481 `tre-481) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-481 `typ-481 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]])) (check-module-trees ~.types-union-import `mtre-481 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]]))
27062720++ test-types-union-local-pending
2707− (weld (check ~.types-union-local-pending src-480 `tok-480 `tre-480) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-480 `typ-480))
2721+ (weld (check ~.types-union-local-pending src-482 `tok-482 `tre-482) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-482 `typ-482))
27082722++ test-types-union-overlap
2709− (weld (check ~.types-union-overlap src-481 `tok-481 `tre-481) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-481 `typ-481))
2723+ (weld (check ~.types-union-overlap src-483 `tok-483 `tre-483) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-483 `typ-483))
27102724++ test-types-union-overlap-nested
2711− (weld (check ~.types-union-overlap-nested src-482 `tok-482 `tre-482) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-482 `typ-482))
2725+ (weld (check ~.types-union-overlap-nested src-484 `tok-484 `tre-484) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-484 `typ-484))
27122726++ test-types-union-phantom-generic
2713− (weld (check ~.types-union-phantom-generic src-483 `tok-483 `tre-483) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-483 `typ-483))
2727+ (weld (check ~.types-union-phantom-generic src-485 `tok-485 `tre-485) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-485 `typ-485))
27142728++ test-types-union-print-cross-namespace
2715− (weld (weld (check ~.types-union-print-cross-namespace src-484 `tok-484 `tre-484) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-484 `typ-484 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-484-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-484 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-484-1]]))
2729+ (weld (weld (check ~.types-union-print-cross-namespace src-486 `tok-486 `tre-486) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-486 `typ-486 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-486-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-486 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-486-1]]))
27162730++ test-types-union-print-distinct
2717− (weld (weld (check ~.types-union-print-distinct src-485 `tok-485 `tre-485) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-485 `typ-485 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-485-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-485-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-485-3]])) (check-module-trees ~.types-union-print-distinct `mtre-485 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-485-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-485-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-485-3]]))
2731+ (weld (weld (check ~.types-union-print-distinct src-487 `tok-487 `tre-487) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-487 `typ-487 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-487-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-487-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-487-3]])) (check-module-trees ~.types-union-print-distinct `mtre-487 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-487-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-487-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-487-3]]))
27182732++ test-types-union-print-escape
2719− (weld (check ~.types-union-print-escape src-486 `tok-486 `tre-486) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-486 `typ-486))
2733+ (weld (check ~.types-union-print-escape src-488 `tok-488 `tre-488) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-488 `typ-488))
27202734++ test-types-union-print-local
2721− (weld (check ~.types-union-print-local src-487 `tok-487 `tre-487) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-487 `typ-487))
2735+ (weld (check ~.types-union-print-local src-489 `tok-489 `tre-489) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-489 `typ-489))
27222736++ test-types-union-print-nested
2723− (weld (check ~.types-union-print-nested src-488 `tok-488 `tre-488) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-488 `typ-488))
2737+ (weld (check ~.types-union-print-nested src-490 `tok-490 `tre-490) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-490 `typ-490))
27242738++ test-types-union-print-same-origin
2725− (weld (weld (check ~.types-union-print-same-origin src-489 `tok-489 `tre-489) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-489 `typ-489 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-489-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-489 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-489-1]]))
2739+ (weld (weld (check ~.types-union-print-same-origin src-491 `tok-491 `tre-491) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-491 `typ-491 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-491-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-491 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-491-1]]))
27262740++ test-types-union-print-transitive
2727− (weld (weld (check ~.types-union-print-transitive src-490 `tok-490 `tre-490) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-490 `typ-490 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-490-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-490-2]])) (check-module-trees ~.types-union-print-transitive `mtre-490 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-490-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-490-2]]))
2741+ (weld (weld (check ~.types-union-print-transitive src-492 `tok-492 `tre-492) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-492 `typ-492 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-492-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-492-2]])) (check-module-trees ~.types-union-print-transitive `mtre-492 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-492-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-492-2]]))
27282742++ test-types-union-singleton
2729− (weld (check ~.types-union-singleton src-491 `tok-491 `tre-491) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-491 `typ-491))
2743+ (weld (check ~.types-union-singleton src-493 `tok-493 `tre-493) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-493 `typ-493))
27302744++ test-types-union-tag-atoms
2731− (weld (check ~.types-union-tag-atoms src-492 `tok-492 `tre-492) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-492 `typ-492))
2745+ (weld (check ~.types-union-tag-atoms src-494 `tok-494 `tre-494) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-494 `typ-494))
27322746++ test-types-union-tags
2733− (weld (check ~.types-union-tags src-493 `tok-493 `tre-493) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-493 `typ-493))
2747+ (weld (check ~.types-union-tags src-495 `tok-495 `tre-495) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-495 `typ-495))
27342748++ test-types-union-unresolved
2735− (weld (check ~.types-union-unresolved src-494 `tok-494 `tre-494) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-494 `typ-494))
2749+ (weld (check ~.types-union-unresolved src-496 `tok-496 `tre-496) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-496 `typ-496))
27362750++ test-types-union-unresolved-flow
2737− (weld (check ~.types-union-unresolved-flow src-495 `tok-495 `tre-495) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-495 `typ-495))
2751+ (weld (check ~.types-union-unresolved-flow src-497 `tok-497 `tre-497) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-497 `typ-497))
27382752++ test-types-unit-context
2739− (weld (check ~.types-unit-context src-496 `tok-496 `tre-496) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-496 `typ-496))
2753+ (weld (check ~.types-unit-context src-498 `tok-498 `tre-498) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-498 `typ-498))
27402754++ test-types-unit-patterns
2741− (weld (check ~.types-unit-patterns src-497 `tok-497 `tre-497) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-497 `typ-497))
2755+ (weld (check ~.types-unit-patterns src-499 `tok-499 `tre-499) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-499 `typ-499))
27422756::
27432757:: +check: run golden:jibb on a case and compare both outputs
27442758::
tests/type-module-scope/about.txt+5
@@ -6,3 +6,8 @@ imported value. Empty and malformed prelude sources fail closed.
66Duplicate prelude values and duplicate prelude molds each fail closed.
77Duplicate module sources are rejected both directly and after a distinct
88sibling module has been cached; they cannot produce an interface.
9+The real vendored prelude and the existing two-module prelude golden check
10+that source-wrapper and prepared-interface outputs agree with each other and
11+with the golden report under eval and on the ship.
12+An imported list stays representable with an omitted or altered prelude
13+list, but its list literals fail closed; a malformed prelude is rejected.
tests/type-module-scope/expected.txt+13
@@ -15,3 +15,16 @@ partial inference; module not checked
1515duplicate module sources: /ui/dup/jibb
1616partial inference; module not checked
1717duplicate module sources: /ui/dup/jibb
18+real prelude prepared/wrapper and golden match
19+partial inference; module not checked
20+++ imported: $-((list @t) (list @t))
21+++ imported-literal: list literal needs the standard prelude in partial inference
22+++ literal: cast mold is not supported by partial inference
23+++ bridge: cast mold is not supported by partial inference
24+partial inference; module not checked
25+++ imported: $-((list @t) (list @t))
26+++ imported-literal: list literal needs the standard prelude in partial inference
27+++ literal: cast mold is not supported by partial inference
28+++ bridge: cast mold is not supported by partial inference
29+partial inference; module not checked
30+prelude source does not parse; module import inference unsupported
tools/type-module-scope-test+9−1
@@ -12,12 +12,20 @@ fixture = root / 'tests/type-module-scope/expected.txt'
1212tests = (root / 'tests/lib/jibb-module-scope.hoon').read_text()
1313tests = tests[tests.index('\n|%\n') + 1:]
1414expression = ('=/ jibb .\n=/ expected=wain (to-wain:format expected-text)\n'
15+ '=/ real-prelude=@t prelude-text\n=/ real-source=@t source-text\n'
16+ '=/ real-left=@t left-text\n=/ real-right=@t right-text\n'
17+ '=/ real-expected=wain (to-wain:format types-text)\n'
1518 '=/ suite\n' + tests + '\nscope-output:suite\n')
1619with tempfile.TemporaryDirectory(prefix='jibb-module-scope-') as tmp:
1720 program = Path(tmp) / 'scope.hoon'
1821 program.write_text(expression)
1922 result = subprocess.run([str(root / 'tools/hoon'), '--raw', '-f', str(program),
20− '--cord', 'expected-text=' + str(fixture)],
23+ '--cord', 'expected-text=' + str(fixture),
24+ '--cord', 'prelude-text=' + str(root / 'jibb-dev/lib/jibb/prelude.jibb'),
25+ '--cord', 'source-text=' + str(root / 'tests/golden/types-prelude-interface/source.jibb'),
26+ '--cord', 'left-text=' + str(root / 'tests/golden/types-prelude-interface/modules/ui/left.jibb'),
27+ '--cord', 'right-text=' + str(root / 'tests/golden/types-prelude-interface/modules/ui/right.jibb'),
28+ '--cord', 'types-text=' + str(root / 'tests/golden/types-prelude-interface/types.txt')],
2129 stdout=subprocess.PIPE)
2230if result.returncode:
2331 sys.exit(result.returncode)