@@ -4595,8 +4595,9 @@
4595:: their defaulting and inferred generalization are implemented.
4595:: their defaulting and inferred generalization are implemented.
4596:: Bare @ is a separate unrestricted atom type. A directional fit check
4596:: Bare @ is a separate unrestricted atom type. A directional fit check
4597:: permits concrete atoms to widen to it, never the reverse. A fit that
4597:: permits concrete atoms to widen to it, never the reverse. A fit that
4598−:: needs a not-yet-implemented constraint remains unsupported. Only
4598+:: needs a not-yet-implemented constraint remains unsupported. Named closed
4599−:: unfaced cells are represented here.
4599+:: unions retain their module of origin separately from their
4600+:: displayed name. Union printing is informational; it is not Jibb syntax.
4602 $~ [%var 0]
4603 $~ [%var 0]
@@ -4608,7 +4609,7 @@
4608 [%flag ~]
4609 [%flag ~]
4609 [%tag id=@ud literal=lit constructor=?]
4610 [%tag id=@ud literal=lit constructor=?]
4610 [%const literal=lit]
4611 [%const literal=lit]
4611− [%union cases=(list itype)]
4612+ [%union cases=(list itype) origin=(unit [at=path name=term]) label=(unit @t)]
4612 [%face name=term body=itype]
4613 [%face name=term body=itype]
4613 [%fn sample=itype product=itype]
4614 [%fn sample=itype product=itype]
4614 [%cell hed=itype tal=itype]
4615 [%cell hed=itype tal=itype]
@@ -4676,6 +4677,9 @@
4676 =. a (itype-walk a sub)
4677 =. a (itype-walk a sub)
4677 =. b (itype-walk b sub)
4678 =. b (itype-walk b sub)
4678 ?: =(a b) `sub
4679 ?: =(a b) `sub
4680+ ?: &(?=(%union -.a) ?=(%union -.b))
4681+ ?: &(=(origin.a origin.b) =(cases.a cases.b)) `sub
4679 ?: ?=(%var -.a)
4683 ?: ?=(%var -.a)
4680 ?: (itype-occurs id.a b sub) ~
4684 ?: (itype-occurs id.a b sub) ~
4681 `[[id.a b] sub]
4685 `[[id.a b] sub]
@@ -4946,7 +4950,9 @@
4946 =. actual (itype-walk actual sub)
4950 =. actual (itype-walk actual sub)
4947 =. expected (itype-walk expected sub)
4951 =. expected (itype-walk expected sub)
4948 ?: =(actual expected) [%ok sub next]
4952 ?: =(actual expected) [%ok sub next]
4949− ?: &(?=(%union -.actual) ?=(%union -.expected)) [%unknown ~]
4953+ ?: &(?=(%union -.actual) ?=(%union -.expected))
4954+ ?: &(=(origin.actual origin.expected) =(cases.actual cases.expected)) [%ok sub next]
4950 ?: ?=(%union -.actual) [%unknown ~]
4956 ?: ?=(%union -.actual) [%unknown ~]
4951 ?: &(?=(%union -.expected) |(?=(%avar -.actual) ?=(%nvar -.actual))) [%unknown ~]
4957 ?: &(?=(%union -.expected) |(?=(%avar -.actual) ?=(%nvar -.actual))) [%unknown ~]
4952 ?: &(?=(%union -.expected) !?=(%var -.actual))
4958 ?: &(?=(%union -.expected) !?=(%var -.actual))
@@ -5032,6 +5038,7 @@
5032 [%unknown ~]
5038 [%unknown ~]
5033 =/ unified=(unit isub) (itype-unify actual expected sub)
5039 =/ unified=(unit isub) (itype-unify actual expected sub)
5034 ?~ unified
5040 ?~ unified
5041+ ?: |((itype-has-union (itype-normalize actual sub)) (itype-has-union (itype-normalize expected sub))) [%unknown ~]
5035 ?: (itype-family-related actual expected sub) [%unknown ~]
5042 ?: (itype-family-related actual expected sub) [%unknown ~]
5036 [%bad ~]
5043 [%bad ~]
5037 [%ok u.unified next]
5044 [%ok u.unified next]
@@ -5069,7 +5076,7 @@
5069+$ ischeme [typ=itype vars=(list @ud)]
5076+$ ischeme [typ=itype vars=(list @ud)]
5070+$ ienv (list [name=term scheme=ischeme])
5077+$ ienv (list [name=term scheme=ischeme])
5071+$ imold-types (list [name=term template=ischeme])
5078+$ imold-types (list [name=term template=ischeme])
5072−+$ ifile [values=ienv molds=imold-types]
5079++$ ifile [values=ienv molds=imold-types at=path]
5073+$ ijimports (list [face=term interface=ifile])
5080+$ ijimports (list [face=term interface=ifile])
5074+$ icaps (list [name=@t id=@ud])
5081+$ icaps (list [name=@t id=@ud])
5075+$ iparams (list [name=@t typ=itype])
5082+$ iparams (list [name=@t typ=itype])
@@ -5078,7 +5085,7 @@
5078:: This core has no Ford dependencies; unrecognized payloads fail closed.
5085:: This core has no Ford dependencies; unrecognized payloads fail closed.
5079+$ iexternals (list [module=term name=term result=*])
5086+$ iexternals (list [module=term name=term result=*])
5080+$ imark-externals (list [mark=term result=*])
5087+$ imark-externals (list [mark=term result=*])
5081−+$ istate [next=@ud sub=isub caps=icaps binders=(list @ud) molds=imolds globals=(list term) externals=iexternals surs=(list term) mark-externals=imark-externals marks=(list term) jimports=ijimports reserved-molds=(list term) params=iparams active=(list term) tags=(list @ud) in-mold=?]
5088++$ istate [next=@ud sub=isub caps=icaps binders=(list @ud) molds=imolds globals=(list term) externals=iexternals surs=(list term) mark-externals=imark-externals marks=(list term) jimports=ijimports reserved-molds=(list term) params=iparams active=(list term) tags=(list @ud) in-mold=? at=path top-molds=(list term)]
5082+$ idiag [msg=tape sites=(list [at=span note=tape])]
5089+$ idiag [msg=tape sites=(list [at=span note=tape])]
5083+$ iresult (each [typ=itype state=istate] idiag)
5090+$ iresult (each [typ=itype state=istate] idiag)
5084+$ isample-result (each [typ=itype env=ienv state=istate] tape)
5091+$ isample-result (each [typ=itype env=ienv state=istate] tape)
@@ -5099,7 +5106,7 @@
5099 ^- itype
5106 ^- itype
5100 =. t (itype-walk t sub)
5107 =. t (itype-walk t sub)
5101 ?: ?=(%union -.t)
5108 ?: ?=(%union -.t)
5102− [%union (turn cases.t |=(c=itype (itype-normalize c sub)))]
5109+ [%union (turn cases.t |=(c=itype (itype-normalize c sub))) origin.t label.t]
5103 ?: ?=(%face -.t)
5110 ?: ?=(%face -.t)
5104 [%face name.t $(t body.t)]
5111 [%face name.t $(t body.t)]
5105 ?: ?=(%fn -.t)
5112 ?: ?=(%fn -.t)
@@ -5190,7 +5197,7 @@
5192 %const t
5199 %const t
5193− %union [%union (turn cases.t |=(c=itype (itype-rename c ren)))]
5200+ %union [%union (turn cases.t |=(c=itype (itype-rename c ren))) origin.t label.t]
5194 %face [%face name.t $(t body.t)]
5201 %face [%face name.t $(t body.t)]
5195 %fn [%fn $(t sample.t) $(t product.t)]
5202 %fn [%fn $(t sample.t) $(t product.t)]
5196 %cell [%cell $(t hed.t) $(t tal.t)]
5203 %cell [%cell $(t hed.t) $(t tal.t)]
@@ -5369,6 +5376,47 @@
5369 ?: =(name name.i.ms) `template.i.ms
5376 ?: =(name name.i.ms) `template.i.ms
5370 $(ms t.ms)
5377 $(ms t.ms)
5379+:: An exported alias may name a union from another module. Only a
5380+:: nongeneric alias of the same origin is usable through this import face.
5382+++ imported-union-alias
5383+ |= [origin=[at=path name=term] molds=imold-types]
5386+ =/ template=ischeme template.i.molds
5387+ ?: &(?=(~ vars.template) ?=(%union -.typ.template))
5388+ ?:(=(`origin origin.typ.template) `name.i.molds $(molds t.molds))
5391+:: Only names exported by this directly imported module are visible through
5392+:: its face. Other origins retain identity but print as unnamed unions.
5395+ |= [t=itype iface=ifile face=term]
5401+ =/ alias=(unit term) ~
5402+ =? alias &(=(at.u.origin.t at.iface) ?=(^ (find-jibb-mold name.u.origin.t iface))) `name.u.origin.t
5403+ =? alias ?=(~ alias) (imported-union-alias u.origin.t molds.iface)
5405+ `(crip "{(trip u.alias)}.{(trip face)}")
5406+ [%union (turn cases.t |=(c=itype (itype-in-import c iface face))) origin.t label]
5407+ %face [%face name.t $(t body.t)]
5408+ %fn [%fn $(t sample.t) $(t product.t)]
5409+ %cell [%cell $(t hed.t) $(t tal.t)]
5413+++ label-direct-union
5414+ |= [typ=itype body=shape name=term state=istate]
5416+ ?. &(?=(%union -.body) ?=(%union -.typ)) typ
5417+ ?. (lien top-molds.state |=(n=term =(n name))) typ
5418+ [%union cases.typ `[at.state name] `name]
5372:: Generic mold parameters are lexical and distinct from the enclosing
5420:: Generic mold parameters are lexical and distinct from the enclosing
5373:: value's capital variables. Arguments are substituted only once, so
5421:: value's capital variables. Arguments are substituted only once, so
5374:: an argument's variable ID cannot be captured by a template ID.
5422:: an argument's variable ID cannot be captured by a template ID.
@@ -5433,6 +5481,8 @@
5433 =/ out=(unit [typ=itype state=istate])
5481 =/ out=(unit [typ=itype state=istate])
5434 (infer-simple-shape body.sh state(next next.fresh, params params.fresh, in-mold &))
5482 (infer-simple-shape body.sh state(next next.fresh, params params.fresh, in-mold &))
5435 ?~ out ~
5483 ?~ out ~
5484+ :: Generic union identity must include its arguments; defer that case.
5485+ ?: ?=(%union -.typ.u.out) ~
5436 =/ used=(list @ud) (itype-vars typ.u.out)
5486 =/ used=(list @ud) (itype-vars typ.u.out)
5437 ?. (levy used |=(n=@ud (lien vars.fresh |=(p=@ud =(p n))))) ~
5487 ?. (levy used |=(n=@ud (lien vars.fresh |=(p=@ud =(p n))))) ~
5438 `[[typ.u.out vars.fresh] state.u.out(params params.state, in-mold in-mold.state)]
5488 `[[typ.u.out vars.fresh] state.u.out(params params.state, in-mold in-mold.state)]
@@ -5459,7 +5509,7 @@
5459 =/ cs=(unit [types=(list itype) state=istate]) (infer-shape-args cases.sh state)
5509 =/ cs=(unit [types=(list itype) state=istate]) (infer-shape-args cases.sh state)
5461 ?: (lien types.u.cs |=(t=itype ?=(^ (itype-vars t)))) ~
5511 ?: (lien types.u.cs |=(t=itype ?=(^ (itype-vars t)))) ~
5462− `[[%union types.u.cs] state.u.cs]
5512+ `[[%union types.u.cs ~ ~] state.u.cs]
5463 %cell (infer-simple-fields fields.sh state)
5513 %cell (infer-simple-fields fields.sh state)
5465 =/ arg=(unit [typ=itype state=istate]) $(sh sample.sh)
5515 =/ arg=(unit [typ=itype state=istate]) $(sh sample.sh)
@@ -5477,7 +5527,7 @@
5477 =/ found=(unit ischeme) (find-jibb-mold n u.iface)
5527 =/ found=(unit ischeme) (find-jibb-mold n u.iface)
5478 ?~ found ~
5528 ?~ found ~
5479 ?^ vars.u.found ~
5529 ?^ vars.u.found ~
5480− `[typ.u.found state]
5530+ `[(itype-in-import typ.u.found u.iface i.t.names.sh) state]
5481 =/ found=(unit itype)
5531 =/ found=(unit itype)
5482 (find-imported-mold i.t.names.sh n externals.state surs.state)
5532 (find-imported-mold i.t.names.sh n externals.state surs.state)
5483 ?~ found ~
5533 ?~ found ~
@@ -5493,7 +5543,7 @@
5493 =/ out=(unit [typ=itype state=istate])
5543 =/ out=(unit [typ=itype state=istate])
5494 $(sh u.found, state state(active [n active.state], in-mold &, params ~))
5544 $(sh u.found, state state(active [n active.state], in-mold &, params ~))
5495 ?~ out ~
5545 ?~ out ~
5496− `[typ.u.out state.u.out(active active.state, in-mold in-mold.state, params params.state)]
5546+ `[(label-direct-union typ.u.out u.found n state) state.u.out(active active.state, in-mold in-mold.state, params params.state)]
5498 ?~ ref.sh ~
5548 ?~ ref.sh ~
5499 =/ args=(unit [types=(list itype) state=istate]) (infer-shape-args args.sh state)
5549 =/ args=(unit [types=(list itype) state=istate]) (infer-shape-args args.sh state)
@@ -5508,7 +5558,7 @@
5508 ?~ vars.u.template ~
5558 ?~ vars.u.template ~
5509 =/ applied=(unit itype) (template-apply u.template types.u.args)
5559 =/ applied=(unit itype) (template-apply u.template types.u.args)
5510 ?~ applied ~
5560 ?~ applied ~
5511− `[u.applied state.u.args]
5561+ `[(itype-in-import u.applied u.iface i.t.ref.sh) state.u.args]
5512 ?: (lien active.state.u.args |=(x=term =(x n))) ~
5562 ?: (lien active.state.u.args |=(x=term =(x n))) ~
5513 =/ found=(unit shape) (find-simple-mold n molds.state.u.args)
5563 =/ found=(unit shape) (find-simple-mold n molds.state.u.args)
5514 ?~ found ~
5564 ?~ found ~
@@ -5519,6 +5569,7 @@
5519 =/ out=(unit [typ=itype state=istate])
5569 =/ out=(unit [typ=itype state=istate])
5520 $(sh body.u.found, state state.u.args(active [n active.state.u.args], in-mold &, params u.params))
5570 $(sh body.u.found, state state.u.args(active [n active.state.u.args], in-mold &, params u.params))
5521 ?~ out ~
5571 ?~ out ~
5572+ ?: ?=(%union -.typ.u.out) ~
5522 `[typ.u.out state.u.out(active active.state.u.args, in-mold in-mold.state.u.args, params params.state.u.args)]
5573 `[typ.u.out state.u.out(active active.state.u.args, in-mold in-mold.state.u.args, params params.state.u.args)]
5524 =/ param=(unit itype) (iparam-lookup name.sh params.state)
5575 =/ param=(unit itype) (iparam-lookup name.sh params.state)
@@ -5759,6 +5810,7 @@
5759 ?~ iface (infer-field-wing names.e env state)
5810 ?~ iface (infer-field-wing names.e env state)
5760 =/ member=(unit ischeme) (ienv-lookup i.names.e values.u.iface)
5811 =/ member=(unit ischeme) (ienv-lookup i.names.e values.u.iface)
5761 ?~ member [%| ["module member is not available to partial inference" ~]]
5812 ?~ member [%| ["module member is not available to partial inference" ~]]
5813+ =. typ.u.member (itype-in-import typ.u.member u.iface i.t.names.e)
5762 =/ instance=[typ=itype state=istate] (instantiate-scheme u.member state)
5814 =/ instance=[typ=itype state=istate] (instantiate-scheme u.member state)
5763 [%& typ.instance state.instance]
5815 [%& typ.instance state.instance]
5764 =/ scheme=(unit ischeme) (ienv-lookup i.names.e env)
5816 =/ scheme=(unit ischeme) (ienv-lookup i.names.e env)
@@ -5940,9 +5992,9 @@
5940 %flag "?"
5992 %flag "?"
5941 %tag (trip txt.literal.t)
5993 %tag (trip txt.literal.t)
5942 %const (trip txt.literal.t)
5994 %const (trip txt.literal.t)
5943− %union "<union>"
5995+ %union ?~(label.t (show-itype-cases cases.t sub) (trip u.label.t))
5944− %face "[{(trip name.t)}={$(t body.t)}]"
5996+ %face "[{(trip name.t)}={(show-itype-context body.t sub)}]"
5945− %fn "$-({$(t sample.t)} {$(t product.t)})"
5997+ %fn "$-({(show-itype-context sample.t sub)} {(show-itype-context product.t sub)})"
5946 %cell "[{(show-itype-item hed.t sub)} {(show-itype-item tal.t sub)}]"
5998 %cell "[{(show-itype-item hed.t sub)} {(show-itype-item tal.t sub)}]"
@@ -5950,9 +6002,23 @@
5950 |= [t=itype sub=isub]
6002 |= [t=itype sub=isub]
5952 =. t (itype-walk t sub)
6004 =. t (itype-walk t sub)
5953− ?: ?=(%face -.t) "{(trip name.t)}={(show-itype body.t sub)}"
6005+ ?: ?=(%face -.t) "{(trip name.t)}={(show-itype-context body.t sub)}"
6006+ (show-itype-context t sub)
6008+++ show-itype-context
6009+ |= [t=itype sub=isub]
6011+ =. t (itype-walk t sub)
6012+ ?: &(?=(%union -.t) ?=(~ label.t)) "({(show-itype t sub)})"
5954 (show-itype t sub)
6013 (show-itype t sub)
6016+ |= [cases=(list itype) sub=isub]
6019+ ?~ t.cases (show-itype-context i.cases sub)
6020+ "{(show-itype-context i.cases sub)} {$(cases t.cases)}"
5956:: Include the type at a conflicting site where it can be printed.
6022:: Include the type at a conflicting site where it can be printed.
5957:: A lone unresolved variable or decimal variable keeps the neutral label.
6023:: A lone unresolved variable or decimal variable keeps the neutral label.
@@ -6090,14 +6156,15 @@
6092++ add-supported-defs
6158++ add-supported-defs
6093− |= [ds=(list def) env=ienv molds=imolds globals=(list term) externals=iexternals surs=(list term) mark-externals=imark-externals marks=(list term) jimports=ijimports reserved-molds=(list term)]
6159+ |= [ds=(list def) env=ienv molds=imolds globals=(list term) externals=iexternals surs=(list term) mark-externals=imark-externals marks=(list term) jimports=ijimports reserved-molds=(list term) at=path]
6095 ?~ ds env
6161 ?~ ds env
6096 =/ d=def i.ds
6162 =/ d=def i.ds
6097 ?: ?=(%mold -.d) $(ds t.ds)
6163 ?: ?=(%mold -.d) $(ds t.ds)
6098 ?. (unique-value-name name.d globals) $(ds t.ds)
6164 ?. (unique-value-name name.d globals) $(ds t.ds)
6099 ?^ (ienv-lookup name.d env) $(ds t.ds)
6165 ?^ (ienv-lookup name.d env) $(ds t.ds)
6166+ =/ top=(list term) (turn molds |=(m=[name=term body=shape] name.m))
6100− =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ ~ |])
6167+ =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ ~ | at top])
6101 ?: ?=(%| -.result) $(ds t.ds)
6168 ?: ?=(%| -.result) $(ds t.ds)
6102 ?: (constrained-capitals caps.state.p.result sub.state.p.result) $(ds t.ds)
6169 ?: (constrained-capitals caps.state.p.result sub.state.p.result) $(ds t.ds)
6103 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
6170 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
@@ -6108,11 +6175,11 @@
6108 $(ds t.ds, env [[name.d [typ vars]] env])
6175 $(ds t.ds, env [[name.d [typ vars]] env])
6110++ resolve-supported-defs
6177++ resolve-supported-defs
6111− |= [ds=(list def) molds=imolds globals=(list term) externals=iexternals surs=(list term) mark-externals=imark-externals marks=(list term) jimports=ijimports reserved-molds=(list term)]
6178+ |= [ds=(list def) molds=imolds globals=(list term) externals=iexternals surs=(list term) mark-externals=imark-externals marks=(list term) jimports=ijimports reserved-molds=(list term) at=path]
6113 =/ env=ienv ~
6180 =/ env=ienv ~
6115− =/ next=ienv (add-supported-defs ds env molds globals externals surs mark-externals marks jimports reserved-molds)
6182+ =/ next=ienv (add-supported-defs ds env molds globals externals surs mark-externals marks jimports reserved-molds at)
6116 ?: =(next env) env
6183 ?: =(next env) env
6117 $(env next)
6184 $(env next)
@@ -6345,6 +6412,7 @@
6345 =/ t=(unit [template=ischeme state=istate])
6412 =/ t=(unit [template=ischeme state=istate])
6346 (infer-mold-template body.m state(active [name.m active.state], in-mold &))
6413 (infer-mold-template body.m state(active [name.m active.state], in-mold &))
6347 ?~ t [%| 'module mold needs unsupported inference']
6414 ?~ t [%| 'module mold needs unsupported inference']
6415+ =. typ.template.u.t (label-direct-union typ.template.u.t body.m name.m state)
6348 =/ rest=(each imold-types @t) $(molds t.molds)
6416 =/ rest=(each imold-types @t) $(molds t.molds)
6349 ?: ?=(%| -.rest) rest
6417 ?: ?=(%| -.rest) rest
6350 [%& [[name.m template.u.t] p.rest]]
6418 [%& [[name.m template.u.t] p.rest]]
@@ -6407,13 +6475,14 @@
6407 =/ surs=(list term) (collect-sur-imports imports.mod)
6475 =/ surs=(list term) (collect-sur-imports imports.mod)
6408 =/ marks=(list term) (collect-mark-imports imports.mod)
6476 =/ marks=(list term) (collect-mark-imports imports.mod)
6409 =/ reserved=(list term) (weld prelude-molds (turn resolved.p.js |=(j=[face=term interface=ifile] face.j)))
6477 =/ reserved=(list term) (weld prelude-molds (turn resolved.p.js |=(j=[face=term interface=ifile] face.j)))
6478+ =/ top=(list term) (turn molds |=(m=[name=term body=shape] name.m))
6410− =/ state=istate [0 ~ ~ ~ molds globals externals surs mark-externals marks resolved.p.js reserved ~ ~ ~ |]
6479+ =/ state=istate [0 ~ ~ ~ molds globals externals surs mark-externals marks resolved.p.js reserved ~ ~ ~ | at top]
6411 =/ mts=(each imold-types @t) (module-mold-types molds state)
6480 =/ mts=(each imold-types @t) (module-mold-types molds state)
6412 ?: ?=(%| -.mts) [%| (crip "{(trip p.mts)}: {(spud at)}")]
6481 ?: ?=(%| -.mts) [%| (crip "{(trip p.mts)}: {(spud at)}")]
6413− =/ env=ienv (resolve-supported-defs defs.mod molds globals externals surs mark-externals marks resolved.p.js reserved)
6482+ =/ env=ienv (resolve-supported-defs defs.mod molds globals externals surs mark-externals marks resolved.p.js reserved at)
6414 ?. (module-values-complete defs.mod env)
6483 ?. (module-values-complete defs.mod env)
6415 [%| (crip "module definitions need unsupported inference: {(spud at)}")]
6484 [%| (crip "module definitions need unsupported inference: {(spud at)}")]
6416− [%& [[env p.mts] [[at [env p.mts]] cache.p.js]]]
6485+ [%& [[env p.mts at] [[at [env p.mts at]] cache.p.js]]]
6418:: +golden-types-with-modules fails closed for imports without prelude
6487:: +golden-types-with-modules fails closed for imports without prelude
6419:: scope. +golden-types-with-prelude resolves supported library graphs;
6488:: scope. +golden-types-with-prelude resolves supported library graphs;
@@ -6471,7 +6540,7 @@
6471 =/ globals=(list term) (weld prelude-values (weld (turn jimports |=(j=[face=term interface=ifile] face.j)) (global-value-names ds)))
6540 =/ globals=(list term) (weld prelude-values (weld (turn jimports |=(j=[face=term interface=ifile] face.j)) (global-value-names ds)))
6472 =/ surs=(list term) (collect-sur-imports imports.p.parsed)
6541 =/ surs=(list term) (collect-sur-imports imports.p.parsed)
6473 =/ marks=(list term) (collect-mark-imports imports.p.parsed)
6542 =/ marks=(list term) (collect-mark-imports imports.p.parsed)
6474− =/ env=ienv (resolve-supported-defs ds molds globals externals surs mark-externals marks jimports reserved-molds)
6543+ =/ env=ienv (resolve-supported-defs ds molds globals externals surs mark-externals marks jimports reserved-molds file)
6475 =/ lines=(list @t) ~
6544 =/ lines=(list @t) ~
6477 ?~ ds (of-wain:format ['partial inference; module not checked' (flop lines)])
6546 ?~ ds (of-wain:format ['partial inference; module not checked' (flop lines)])
@@ -6480,7 +6549,8 @@
6480 $(ds t.ds, lines [(show-partial-mold file src d molds) lines])
6549 $(ds t.ds, lines [(show-partial-mold file src d molds) lines])
6481 ?. (unique-value-name name.d globals)
6550 ?. (unique-value-name name.d globals)
6482 $(ds t.ds, lines [(crip "++ {(trip name.d)}: name already in scope") lines])
6551 $(ds t.ds, lines [(crip "++ {(trip name.d)}: name already in scope") lines])
6552+ =/ top=(list term) (turn molds |=(m=[name=term body=shape] name.m))
6483− =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ ~ |])
6553+ =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ ~ | file top])
6484 ?: ?=(%| -.result)
6554 ?: ?=(%| -.result)
6485 $(ds t.ds, lines [(show-inference-diagnostic file src name.d p.result) lines])
6555 $(ds t.ds, lines [(show-inference-diagnostic file src name.d p.result) lines])
6486 ?: (constrained-capitals caps.state.p.result sub.state.p.result)
6556 ?: (constrained-capitals caps.state.p.result sub.state.p.result)
@@ -6488,8 +6558,6 @@
6488 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
6558 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
6489 ?: |((pending-tags tags.state.p.result sub.state.p.result) (itype-has-tag typ))
6559 ?: |((pending-tags tags.state.p.result sub.state.p.result) (itype-has-tag typ))
6490 $(ds t.ds, lines [(crip "++ {(trip name.d)}: tag needs context in partial inference") lines])
6560 $(ds t.ds, lines [(crip "++ {(trip name.d)}: tag needs context in partial inference") lines])
6491− ?: (itype-has-union typ)
6492− $(ds t.ds, lines [(crip "++ {(trip name.d)}: union type printing is not supported by partial inference") lines])
6493 ?: (unsupported-atom-vars typ caps.state.p.result binders.state.p.result sub.state.p.result)
6561 ?: (unsupported-atom-vars typ caps.state.p.result binders.state.p.result sub.state.p.result)
6494 $(ds t.ds, lines [(crip "++ {(trip name.d)}: unresolved aura-variable inference") lines])
6562 $(ds t.ds, lines [(crip "++ {(trip name.d)}: unresolved aura-variable inference") lines])
6495 =/ vars=(list @ud) (unique-type-vars (itype-vars typ))
6563 =/ vars=(list @ud) (unique-type-vars (itype-vars typ))