@@ -4606,6 +4606,9 @@
4606 [%atom aura=@ta]
4606 [%atom aura=@ta]
4607 [%any-atom ~]
4607 [%any-atom ~]
4608 [%flag ~]
4608 [%flag ~]
4609+ [%tag id=@ud literal=lit constructor=?]
4610+ [%const literal=lit]
4611+ [%union cases=(list itype)]
4609 [%face name=term body=itype]
4612 [%face name=term body=itype]
4610 [%fn sample=itype product=itype]
4613 [%fn sample=itype product=itype]
4611 [%cell hed=itype tal=itype]
4614 [%cell hed=itype tal=itype]
@@ -4636,6 +4639,10 @@
4636 =/ found=(unit itype) (itype-lookup id.t sub)
4639 =/ found=(unit itype) (itype-lookup id.t sub)
4637 ?~ found t
4640 ?~ found t
4638 $(t u.found)
4641 $(t u.found)
4643+ =/ found=(unit itype) (itype-lookup id.t sub)
4641++ itype-occurs
4648++ itype-occurs
@@ -4649,6 +4656,9 @@
4650 %any-atom |
4657 %any-atom |
4661+ %union (lien cases.t |=(c=itype (itype-occurs n c sub)))
4652 %face $(t body.t)
4662 %face $(t body.t)
4653 %fn |($(t sample.t) $(t product.t))
4663 %fn |($(t sample.t) $(t product.t))
4654 %cell |($(t hed.t) $(t tal.t))
4664 %cell |($(t hed.t) $(t tal.t))
@@ -4688,6 +4698,8 @@
4688 ?: ?=(%avar -.b)
4698 ?: ?=(%avar -.b)
4689 ?. |(?=(%atom -.a) ?=(%any-atom -.a) ?=(%flag -.a)) ~
4699 ?. |(?=(%atom -.a) ?=(%any-atom -.a) ?=(%flag -.a)) ~
4690 `[[id.b a] sub]
4700 `[[id.b a] sub]
4701+ ?: &(?=(%const -.a) ?=(%const -.b))
4702+ ?:(=(val.literal.a val.literal.b) `sub ~)
4691 ?: &(?=(%atom -.a) ?=(%atom -.b)) ~
4703 ?: &(?=(%atom -.a) ?=(%atom -.b)) ~
4692 ?: &(?=(%face -.a) ?=(%face -.b))
4704 ?: &(?=(%face -.a) ?=(%face -.b))
4693 ?. =(name.a name.b) ~
4705 ?. =(name.a name.b) ~
@@ -4719,6 +4731,9 @@
4720 %any-atom &
4732 %any-atom &
4736+ %union (lien cases.t |=(c=itype (itype-has-any-atom c sub)))
4722 %face $(t body.t)
4737 %face $(t body.t)
4723 %fn |($(t sample.t) $(t product.t))
4738 %fn |($(t sample.t) $(t product.t))
4724 %cell |($(t hed.t) $(t tal.t))
4739 %cell |($(t hed.t) $(t tal.t))
@@ -4773,6 +4788,9 @@
4774 %any-atom &
4789 %any-atom &
4793+ %union (lien cases.typ |=(c=itype (itype-has-fixed-atom c)))
4776 %face $(typ body.typ)
4794 %face $(typ body.typ)
4777 %fn |($(typ sample.typ) $(typ product.typ))
4795 %fn |($(typ sample.typ) $(typ product.typ))
4778 %cell |($(typ hed.typ) $(typ tal.typ))
4796 %cell |($(typ hed.typ) $(typ tal.typ))
@@ -4843,11 +4861,83 @@
4846 %face $(t body.t)
4865 %face $(t body.t)
4847 %fn |($(t sample.t) $(t product.t))
4866 %fn |($(t sample.t) $(t product.t))
4871+ |= [tags=(list @ud) sub=isub]
4874+ ?~ (itype-lookup i.tags sub) &
4877+:: Tags remain constrained until a mold selects a case or permitted atom
4878+:: type. Never generalize an unresolved tag through aliases or cells.
4886+ %fn |($(t sample.t) $(t product.t))
4887+ %cell |($(t hed.t) $(t tal.t))
4888+ %union (lien cases.t |=(c=itype (itype-has-tag c)))
4898+ %fn |($(t sample.t) $(t product.t))
4899+ %cell |($(t hed.t) $(t tal.t))
4904+ |= [actual=itype cases=(list itype) sub=isub next=@ud]
4906+ =/ good=(unit ifit) ~
4910+ ?: pending [%unknown ~]
4913+ =/ trial=ifit (itype-fit actual i.cases sub next)
4915+ %unknown $(cases t.cases, pending &)
4916+ %bad $(cases t.cases)
4918+ ?^ good [%unknown ~]
4919+ $(cases t.cases, good `trial)
4922+:: A constructor needs a case with its tag at the head and a payload
4923+:: compatible with the expected gate sample. Other case forms do not
4924+:: identify a constructor.
4926+++ itype-fit-ctor-cases
4927+ |= [tag=lit sample=itype cases=(list itype) sub=isub next=@ud]
4929+ =/ found=(unit ifit) ~
4931+ ?~ cases ?~(found [%bad ~] u.found)
4932+ =/ c=itype (itype-walk i.cases sub)
4933+ ?. ?=(%cell -.c) $(cases t.cases)
4934+ =/ head=itype (itype-walk hed.c sub)
4935+ ?. ?=(%const -.head) $(cases t.cases)
4936+ ?. =(val.literal.head val.tag) $(cases t.cases)
4937+ ?^ found [%unknown ~]
4938+ =/ trial=ifit (itype-fit sample tal.c sub next)
4939+ $(cases t.cases, found `trial)
4851++ itype-fit
4941++ itype-fit
4852 |= [actual=itype expected=itype sub=isub next=@ud]
4942 |= [actual=itype expected=itype sub=isub next=@ud]
@@ -4856,6 +4946,51 @@
4856 =. actual (itype-walk actual sub)
4946 =. actual (itype-walk actual sub)
4857 =. expected (itype-walk expected sub)
4947 =. expected (itype-walk expected sub)
4858 ?: =(actual expected) [%ok sub next]
4948 ?: =(actual expected) [%ok sub next]
4949+ ?: &(?=(%union -.actual) ?=(%union -.expected)) [%unknown ~]
4950+ ?: ?=(%union -.actual) [%unknown ~]
4951+ ?: &(?=(%union -.expected) |(?=(%avar -.actual) ?=(%nvar -.actual))) [%unknown ~]
4952+ ?: &(?=(%union -.expected) !?=(%var -.actual))
4953+ (itype-fit-cases actual cases.expected sub next)
4954+ ?: ?=(%tag -.actual)
4955+ ?: ?=(%var -.expected)
4956+ =/ u=(unit isub) (itype-unify actual expected sub)
4959+ ?: |(?=(%avar -.expected) ?=(%nvar -.expected)) [%unknown ~]
4960+ ?: ?=(%face -.expected) $(expected body.expected)
4961+ ?: constructor.actual
4962+ ?. ?=(%fn -.expected) [%bad ~]
4963+ =/ product=itype (itype-walk product.expected sub)
4964+ =/ cases=(list itype) ?:(?=(%union -.product) cases.product ~[product])
4965+ =/ trial=ifit (itype-fit-ctor-cases literal.actual sample.expected cases sub next)
4966+ ?. ?=(%ok -.trial) trial
4967+ [%ok [[id.actual expected] sub.trial] next.trial]
4968+ ?: ?=(%const -.expected)
4969+ ?:(=(val.literal.actual val.literal.expected) [%ok [[id.actual expected] sub] next] [%bad ~])
4970+ ?: ?=(%atom -.expected)
4971+ ?: |(=(%tas aura.expected) =(%ta aura.expected))
4972+ [%ok [[id.actual expected] sub] next]
4974+ ?: ?=(%flag -.expected)
4975+ ?:(|(=(0 val.literal.actual) =(1 val.literal.actual)) [%ok [[id.actual expected] sub] next] [%bad ~])
4976+ ?: ?=(%any-atom -.expected) [%ok [[id.actual expected] sub] next]
4978+ ?: ?=(%const -.actual)
4979+ ?: ?=(%var -.expected)
4980+ =/ u=(unit isub) (itype-unify actual expected sub)
4983+ ?: |(?=(%avar -.expected) ?=(%nvar -.expected)) [%unknown ~]
4984+ ?: ?=(%face -.expected) $(expected body.expected)
4985+ ?: ?=(%const -.expected)
4986+ ?:(=(val.literal.actual val.literal.expected) [%ok sub next] [%bad ~])
4987+ ?: ?=(%atom -.expected)
4988+ ?: |(=(%tas aura.expected) =(%ta aura.expected)) [%ok sub next]
4990+ ?: ?=(%flag -.expected)
4991+ ?:(|(=(0 val.literal.actual) =(1 val.literal.actual)) [%ok sub next] [%bad ~])
4992+ ?: ?=(%any-atom -.expected) [%ok sub next]
4859 ?: &(uncertain (itype-face-asym actual expected sub)) [%unknown ~]
4994 ?: &(uncertain (itype-face-asym actual expected sub)) [%unknown ~]
4860 ?: ?=(%any-atom -.expected)
4995 ?: ?=(%any-atom -.expected)
4861 ?: |(?=(%atom -.actual) ?=(%avar -.actual) ?=(%nvar -.actual) ?=(%flag -.actual)) [%ok sub next]
4996 ?: |(?=(%atom -.actual) ?=(%avar -.actual) ?=(%nvar -.actual) ?=(%flag -.actual)) [%ok sub next]
@@ -4943,7 +5078,7 @@
4943:: This core has no Ford dependencies; unrecognized payloads fail closed.
5078:: This core has no Ford dependencies; unrecognized payloads fail closed.
4944+$ iexternals (list [module=term name=term result=*])
5079+$ iexternals (list [module=term name=term result=*])
4945+$ imark-externals (list [mark=term result=*])
5080+$ imark-externals (list [mark=term result=*])
4946−+$ 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) in-mold=?]
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=?]
4947+$ idiag [msg=tape sites=(list [at=span note=tape])]
5082+$ idiag [msg=tape sites=(list [at=span note=tape])]
4948+$ iresult (each [typ=itype state=istate] idiag)
5083+$ iresult (each [typ=itype state=istate] idiag)
4949+$ isample-result (each [typ=itype env=ienv state=istate] tape)
5084+$ isample-result (each [typ=itype env=ienv state=istate] tape)
@@ -4963,6 +5098,8 @@
4963 |= [t=itype sub=isub]
5098 |= [t=itype sub=isub]
4964 ^- itype
5099 ^- itype
4965 =. t (itype-walk t sub)
5100 =. t (itype-walk t sub)
5102+ [%union (turn cases.t |=(c=itype (itype-normalize c sub)))]
4966 ?: ?=(%face -.t)
5103 ?: ?=(%face -.t)
4967 [%face name.t $(t body.t)]
5104 [%face name.t $(t body.t)]
4968 ?: ?=(%fn -.t)
5105 ?: ?=(%fn -.t)
@@ -4983,6 +5120,9 @@
4984 %cell |($(t hed.t) $(t tal.t))
5121 %cell |($(t hed.t) $(t tal.t))
4985 %face $(t body.t)
5122 %face $(t body.t)
5123+ %union (lien cases.t |=(c=itype (itype-has-gate c)))
@@ -5012,6 +5152,9 @@
5013 %any-atom ~
5153 %any-atom ~
5157+ %union (zing (turn cases.t |=(c=itype (itype-vars c))))
5015 %face $(t body.t)
5158 %face $(t body.t)
5016 %fn (weld $(t sample.t) $(t product.t))
5159 %fn (weld $(t sample.t) $(t product.t))
5017 %cell (weld $(t hed.t) $(t tal.t))
5160 %cell (weld $(t hed.t) $(t tal.t))
@@ -5045,6 +5188,9 @@
5046 %any-atom t
5189 %any-atom t
5193+ %union [%union (turn cases.t |=(c=itype (itype-rename c ren)))]
5048 %face [%face name.t $(t body.t)]
5194 %face [%face name.t $(t body.t)]
5049 %fn [%fn $(t sample.t) $(t product.t)]
5195 %fn [%fn $(t sample.t) $(t product.t)]
5050 %cell [%cell $(t hed.t) $(t tal.t)]
5196 %cell [%cell $(t hed.t) $(t tal.t)]
@@ -5063,6 +5209,9 @@
5064 %any-atom |
5210 %any-atom |
5214+ %union (lien cases.t |=(c=itype (itype-var-is-atom n c)))
5066 %face $(t body.t)
5215 %face $(t body.t)
5067 %fn |($(t sample.t) $(t product.t))
5216 %fn |($(t sample.t) $(t product.t))
5068 %cell |($(t hed.t) $(t tal.t))
5217 %cell |($(t hed.t) $(t tal.t))
@@ -5301,6 +5450,16 @@
5301 ?: =(0 aura.sh) `[[%any-atom ~] state]
5450 ?: =(0 aura.sh) `[[%any-atom ~] state]
5302 `[[%atom aura.sh] state]
5451 `[[%atom aura.sh] state]
5303 %flag `[[%flag ~] state]
5452 %flag `[[%flag ~] state]
5454+ ?. =(%term form.lit.sh) ~
5455+ `[[%const lit.sh] state]
5457+ =/ pairs=(list upair) (union-pairs cases.sh molds.state)
5458+ ?. (levy pairs |=(p=upair =(%disjoint relation.p))) ~
5459+ =/ cs=(unit [types=(list itype) state=istate]) (infer-shape-args cases.sh state)
5461+ ?: (lien types.u.cs |=(t=itype ?=(^ (itype-vars t)))) ~
5462+ `[[%union types.u.cs] state.u.cs]
5304 %cell (infer-simple-fields fields.sh state)
5463 %cell (infer-simple-fields fields.sh state)
5306 =/ arg=(unit [typ=itype state=istate]) $(sh sample.sh)
5465 =/ arg=(unit [typ=itype state=istate]) $(sh sample.sh)
@@ -5528,6 +5687,8 @@
5528 =/ inferred=iresult (infer-fragment val.d env state)
5687 =/ inferred=iresult (infer-fragment val.d env state)
5529 ?: ?=(%| -.inferred) $(ds t.ds, remaining [d remaining])
5688 ?: ?=(%| -.inferred) $(ds t.ds, remaining [d remaining])
5530 =/ typ=itype (itype-normalize typ.p.inferred sub.state.p.inferred)
5689 =/ typ=itype (itype-normalize typ.p.inferred sub.state.p.inferred)
5690+ ?: |((pending-tags tags.state.p.inferred sub.state.p.inferred) (itype-has-tag typ))
5691+ $(ds t.ds, remaining [d remaining])
5531 ?: (unsupported-atom-vars typ caps.state.p.inferred binders.state.p.inferred sub.state.p.inferred)
5692 ?: (unsupported-atom-vars typ caps.state.p.inferred binders.state.p.inferred sub.state.p.inferred)
5532 $(ds t.ds, remaining [d remaining])
5693 $(ds t.ds, remaining [d remaining])
5533 =/ free=(list @ud)
5694 =/ free=(list @ud)
@@ -5583,6 +5744,7 @@
5583 %duration [%& [%atom %dr] state]
5744 %duration [%& [%atom %dr] state]
5584 %knot [%& [%atom %ta] state]
5745 %knot [%& [%atom %ta] state]
5585 %loobean [%& [%flag ~] state]
5746 %loobean [%& [%flag ~] state]
5747+ %term [%& [%tag next.state lit.e |] state(next +(next.state), tags [next.state tags.state])]
5586 * [%| ["literal needs contextual inference" ~]]
5748 * [%| ["literal needs contextual inference" ~]]
@@ -5604,6 +5766,7 @@
5604 =/ instance=[typ=itype state=istate] (instantiate-scheme u.scheme state)
5766 =/ instance=[typ=itype state=istate] (instantiate-scheme u.scheme state)
5605 [%& typ.instance state.instance]
5767 [%& typ.instance state.instance]
5606 %group $(e inner.e)
5768 %group $(e inner.e)
5769+ %ctor [%& [%tag next.state tag.e &] state(next +(next.state), tags [next.state tags.state])]
5608 =/ traced=iresult $(e val.e)
5771 =/ traced=iresult $(e val.e)
5609 ?: ?=(%| -.traced) traced
5772 ?: ?=(%| -.traced) traced
@@ -5653,6 +5816,8 @@
5653 [%| ["branch widening is not supported by partial inference" ~]]
5816 [%| ["branch widening is not supported by partial inference" ~]]
5654 =/ joined=(unit isub) (itype-unify typ.p.left typ.p.right sub.state.p.right)
5817 =/ joined=(unit isub) (itype-unify typ.p.left typ.p.right sub.state.p.right)
5655 ?~ joined
5818 ?~ joined
5819+ ?: |((itype-has-tag ltype) (itype-has-tag rtype) (itype-has-union ltype) (itype-has-union rtype))
5820+ [%| ["branch tag or union context is not supported by partial inference" ~]]
5656 =/ common=(unit itype) (itype-concrete-join typ.p.left typ.p.right sub.state.p.right)
5821 =/ common=(unit itype) (itype-concrete-join typ.p.left typ.p.right sub.state.p.right)
5657 ?^ common [%& u.common state.p.right]
5822 ?^ common [%& u.common state.p.right]
5658 ?: |((itype-has-face typ.p.left sub.state.p.right) (itype-has-face typ.p.right sub.state.p.right))
5823 ?: |((itype-has-face typ.p.left sub.state.p.right) (itype-has-face typ.p.right sub.state.p.right))
@@ -5710,8 +5875,7 @@
5710 * [%| ["expression is not supported by partial inference" ~]]
5875 * [%| ["expression is not supported by partial inference" ~]]
5713−:: Unfaced tuple expressions are the one supported cell construction.
5878+:: Tuple and record expressions preserve their explicitly written faces.
5714−:: Faced cells wait for the representation to preserve record faces.
5716++ infer-simple-items
5880++ infer-simple-items
5717 |= [items=(list item) env=ienv state=istate]
5881 |= [items=(list item) env=ienv state=istate]
@@ -5774,6 +5938,9 @@
5774 %atom "@{(trip aura.t)}"
5938 %atom "@{(trip aura.t)}"
5775 %any-atom "@"
5939 %any-atom "@"
5776 %flag "?"
5940 %flag "?"
5941+ %tag (trip txt.literal.t)
5942+ %const (trip txt.literal.t)
5777 %face "[{(trip name.t)}={$(t body.t)}]"
5944 %face "[{(trip name.t)}={$(t body.t)}]"
5778 %fn "$-({$(t sample.t)} {$(t product.t)})"
5945 %fn "$-({$(t sample.t)} {$(t product.t)})"
5779 %cell "[{(show-itype-item hed.t sub)} {(show-itype-item tal.t sub)}]"
5946 %cell "[{(show-itype-item hed.t sub)} {(show-itype-item tal.t sub)}]"
@@ -5799,6 +5966,9 @@
5800 %any-atom |
5967 %any-atom |
5971+ %union (lien cases.typ |=(c=itype (itype-has-nvar c)))
5802 %face $(typ body.typ)
5972 %face $(typ body.typ)
5803 %fn |($(typ sample.typ) $(typ product.typ))
5973 %fn |($(typ sample.typ) $(typ product.typ))
5804 %cell |($(typ hed.typ) $(typ tal.typ))
5974 %cell |($(typ hed.typ) $(typ tal.typ))
@@ -5808,7 +5978,7 @@
5808 |= [label=tape typ=itype sub=isub]
5978 |= [label=tape typ=itype sub=isub]
5810 =/ normalized=itype (itype-normalize typ sub)
5980 =/ normalized=itype (itype-normalize typ sub)
5811− ?: |(?=(%var -.normalized) ?=(%avar -.normalized) (itype-has-nvar normalized)) label
5981+ ?: |(?=(%var -.normalized) ?=(%avar -.normalized) (itype-has-nvar normalized) (itype-has-tag normalized) (itype-has-union normalized)) label
5812 =/ vars=(list @ud) (unique-type-vars (itype-vars normalized))
5982 =/ vars=(list @ud) (unique-type-vars (itype-vars normalized))
5813 ?: (gth (lent vars) 26) label
5983 ?: (gth (lent vars) 26) label
5814 =/ printable=itype (canonical-itype normalized vars)
5984 =/ printable=itype (canonical-itype normalized vars)
@@ -5850,6 +6020,9 @@
5851 %any-atom |
6021 %any-atom |
6025+ %union (lien cases.t |=(c=itype (has-atom-var n c)))
5853 %face $(t body.t)
6026 %face $(t body.t)
5854 %fn |($(t sample.t) $(t product.t))
6027 %fn |($(t sample.t) $(t product.t))
5855 %cell |($(t hed.t) $(t tal.t))
6028 %cell |($(t hed.t) $(t tal.t))
@@ -5924,10 +6097,11 @@
5924 ?: ?=(%mold -.d) $(ds t.ds)
6097 ?: ?=(%mold -.d) $(ds t.ds)
5925 ?. (unique-value-name name.d globals) $(ds t.ds)
6098 ?. (unique-value-name name.d globals) $(ds t.ds)
5926 ?^ (ienv-lookup name.d env) $(ds t.ds)
6099 ?^ (ienv-lookup name.d env) $(ds t.ds)
5927− =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ |])
6100+ =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ ~ |])
5928 ?: ?=(%| -.result) $(ds t.ds)
6101 ?: ?=(%| -.result) $(ds t.ds)
5929 ?: (constrained-capitals caps.state.p.result sub.state.p.result) $(ds t.ds)
6102 ?: (constrained-capitals caps.state.p.result sub.state.p.result) $(ds t.ds)
5930 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
6103 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
6104+ ?: |((pending-tags tags.state.p.result sub.state.p.result) (itype-has-tag typ)) $(ds t.ds)
5931 ?: (unsupported-atom-vars typ caps.state.p.result binders.state.p.result sub.state.p.result) $(ds t.ds)
6105 ?: (unsupported-atom-vars typ caps.state.p.result binders.state.p.result sub.state.p.result) $(ds t.ds)
5932 =/ vars=(list @ud) (unique-type-vars (itype-vars typ))
6106 =/ vars=(list @ud) (unique-type-vars (itype-vars typ))
5933 ?: (gth (lent vars) 26) $(ds t.ds)
6107 ?: (gth (lent vars) 26) $(ds t.ds)
@@ -6233,7 +6407,7 @@
6233 =/ surs=(list term) (collect-sur-imports imports.mod)
6407 =/ surs=(list term) (collect-sur-imports imports.mod)
6234 =/ marks=(list term) (collect-mark-imports imports.mod)
6408 =/ marks=(list term) (collect-mark-imports imports.mod)
6235 =/ reserved=(list term) (weld prelude-molds (turn resolved.p.js |=(j=[face=term interface=ifile] face.j)))
6409 =/ reserved=(list term) (weld prelude-molds (turn resolved.p.js |=(j=[face=term interface=ifile] face.j)))
6236− =/ state=istate [0 ~ ~ ~ molds globals externals surs mark-externals marks resolved.p.js reserved ~ ~ |]
6410+ =/ state=istate [0 ~ ~ ~ molds globals externals surs mark-externals marks resolved.p.js reserved ~ ~ ~ |]
6237 =/ mts=(each imold-types @t) (module-mold-types molds state)
6411 =/ mts=(each imold-types @t) (module-mold-types molds state)
6238 ?: ?=(%| -.mts) [%| (crip "{(trip p.mts)}: {(spud at)}")]
6412 ?: ?=(%| -.mts) [%| (crip "{(trip p.mts)}: {(spud at)}")]
6239 =/ env=ienv (resolve-supported-defs defs.mod molds globals externals surs mark-externals marks resolved.p.js reserved)
6413 =/ env=ienv (resolve-supported-defs defs.mod molds globals externals surs mark-externals marks resolved.p.js reserved)
@@ -6306,12 +6480,16 @@
6306 $(ds t.ds, lines [(show-partial-mold file src d molds) lines])
6480 $(ds t.ds, lines [(show-partial-mold file src d molds) lines])
6307 ?. (unique-value-name name.d globals)
6481 ?. (unique-value-name name.d globals)
6308 $(ds t.ds, lines [(crip "++ {(trip name.d)}: name already in scope") lines])
6482 $(ds t.ds, lines [(crip "++ {(trip name.d)}: name already in scope") lines])
6309− =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ |])
6483+ =/ result=iresult (infer-fragment val.d env [0 ~ ~ ~ molds globals externals surs mark-externals marks jimports reserved-molds ~ ~ ~ |])
6310 ?: ?=(%| -.result)
6484 ?: ?=(%| -.result)
6311 $(ds t.ds, lines [(show-inference-diagnostic file src name.d p.result) lines])
6485 $(ds t.ds, lines [(show-inference-diagnostic file src name.d p.result) lines])
6312 ?: (constrained-capitals caps.state.p.result sub.state.p.result)
6486 ?: (constrained-capitals caps.state.p.result sub.state.p.result)
6313 $(ds t.ds, lines [(crip "++ {(trip name.d)}: explicit capital constraints are not supported by partial inference") lines])
6487 $(ds t.ds, lines [(crip "++ {(trip name.d)}: explicit capital constraints are not supported by partial inference") lines])
6314 =/ typ=itype (default-decimals (itype-normalize typ.p.result sub.state.p.result))
6488 =/ 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))
6490+ $(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])
6315 ?: (unsupported-atom-vars typ caps.state.p.result binders.state.p.result sub.state.p.result)
6493 ?: (unsupported-atom-vars typ caps.state.p.result binders.state.p.result sub.state.p.result)
6316 $(ds t.ds, lines [(crip "++ {(trip name.d)}: unresolved aura-variable inference") lines])
6494 $(ds t.ds, lines [(crip "++ {(trip name.d)}: unresolved aura-variable inference") lines])
6317 =/ vars=(list @ud) (unique-type-vars (itype-vars typ))
6495 =/ vars=(list @ud) (unique-type-vars (itype-vars typ))