@@ -774,39 +774,38 @@
774:: (face 2:11 items
774:: (face 2:11 items
775:: (apply 2:17 list (aura 2:23 @t)))
775:: (apply 2:17 list (aura 2:23 @t)))
776:: (face 2:27 open (flag 2:32))))
776:: (face 2:27 open (flag 2:32))))
777−:: (mold 3:1 cart-action
777+:: (mold 3:1 poke
778:: (union 4:3
778:: (union 4:3
779:: (cell 4:3
779:: (cell 4:3
780:: (const 4:4 %add)
780:: (const 4:4 %add)
781:: (face 4:9 item (aura 4:14 @t)))
781:: (face 4:9 item (aura 4:14 @t)))
782:: (const 5:3 %toggle)))
782:: (const 5:3 %toggle)))
783−:: (mold 6:1 poke (ref 6:9 cart-action))
784−:: (value 8:1 main
783+:: (value 7:1 main
785−:: (group 8:9
784+:: (group 7:9
786−:: (call 8:10 (wing 8:10 store) (wing 8:16 init) (wing 8:21 update))))
785+:: (call 7:10 (wing 7:10 store) (wing 7:16 init) (wing 7:21 update))))
787−:: (value 9:1 init
786+:: (value 8:1 init
788−:: (cast 9:9
787+:: (cast 8:9
789−:: (ref 9:12 state)
788+:: (ref 8:12 state)
790−:: (tuple 9:18 (lit 9:19 ~) (lit 9:21 %.n))))
789+:: (tuple 8:18 (lit 8:19 ~) (lit 8:21 %.n))))
791−:: (value 10:1 update
790+:: (value 9:1 update
792−:: (gate 10:11
791+:: (gate 9:11
793−:: (cell 10:14
792+:: (cell 9:14
794−:: (face 10:15 a (ref 10:17 cart-action))
793+:: (face 9:15 a (ref 9:17 poke))
795−:: (face 10:29 s (ref 10:31 state)))
794+:: (face 9:22 s (ref 9:24 state)))
796−:: (body 11:3
795+:: (body 10:3
797−:: (branch 11:3
796+:: (branch 10:3
798−:: (wing 11:6 a)
797+:: (wing 10:6 a)
799+:: (cell 11:5 (lit 11:6 %add) (bind 11:11 item))
802+:: (tuple 11:26 (wing 11:27 item) (wing 11:32 items.s)))))
799:: (arm 12:5
803:: (arm 12:5
800−:: (cell 12:5 (lit 12:6 %add) (bind 12:11 item))
804+:: (lit 12:5 %toggle)
801:: (change 12:18 s
805:: (change 12:18 s
802−:: (edit 12:20 items
806+:: (edit 12:20 open
803−:: (tuple 12:26 (wing 12:27 item) (wing 12:32 items.s)))))
805−:: (lit 13:5 %toggle)
808−:: (group 13:25
807+:: (group 12:25
809−:: (call 13:26 (wing 13:26 not) (wing 13:30 open.s)))))))))))
808+:: (call 12:26 (wing 12:26 not) (wing 12:30 open.s)))))))))))
811:: 4.3 Errors (+show-error): "<file>:<line>:<col>: <message>", then the
810:: 4.3 Errors (+show-error): "<file>:<line>:<col>: <message>", then the
812:: source line, then a caret under the column (col - 1 spaces, then ^).
811:: source line, then a caret under the column (col - 1 spaces, then ^).
@@ -11341,22 +11340,6 @@
11341 ?. (levy vals |=(n=term &((unique-value-name n vals) !(lien prelude-values |=(v=term =(n v)))))) |
11340 ?. (levy vals |=(n=term &((unique-value-name n vals) !(lien prelude-values |=(v=term =(n v)))))) |
11342 (levy mold-names |=(n=term &((unique-value-name n mold-names) !(lien prelude-molds |=(m=term =(n m))))))
11341 (levy mold-names |=(n=term &((unique-value-name n mold-names) !(lien prelude-molds |=(m=term =(n m))))))
11344−:: In an API file or before main's kind is known, a lone `+$ poke`
11345−:: may be a declaration rather than a mold that shadows the prelude. Do not call
11346−:: that one collision definite, and do not hide unrelated scope errors.
11347−++ pending-declared-poke
11348− |= [at=path mod=module prelude-values=(list term) prelude-molds=(list term)]
11350− ?. (lien prelude-molds |=(n=term =(%poke n))) |
11351− ?. |(?=([%ui %api @ %jibb ~] at) (lien defs.mod |=(d=def &(?=(%value -.d) =(%main name.d))))) |
11352− =/ pokes=(list def)
11353− (skim defs.mod |=(d=def &(?=(%mold -.d) =(%poke name.d))))
11356− =/ remaining=(list def)
11357− (skim defs.mod |=(d=def !&(?=(%mold -.d) =(%poke name.d))))
11358− (module-scope-valid mod(defs remaining) prelude-values prelude-molds)
11360:: A detailed failure is attached only to the first mold that actually
11343:: A detailed failure is attached only to the first mold that actually
11361:: failed in this check, using that module's checked source mold table.
11344:: failed in this check, using that module's checked source mold table.
11362+$ imold-failure [message=@t overlap=(unit [name=term cases=upair])]
11345+$ imold-failure [message=@t overlap=(unit [name=term cases=upair])]
@@ -12003,7 +11986,8 @@
12003 ?> ?=(%mold -.decl)
11986 ?> ?=(%mold -.decl)
12004 =/ paths=(unit (list iapi-path)) (api-path-declaration shape.decl declared)
11987 =/ paths=(unit (list iapi-path)) (api-path-declaration shape.decl declared)
12005 ?~ paths ~
11988 ?~ paths ~
11989+ =/ derived-pokes=(list term) ?~(pokes ~ ~[%poke])
12006− ?. (api-derived-names-valid u.paths u.poke-names mod prelude-values) ~
11990+ ?. (api-derived-names-valid u.paths derived-pokes mod prelude-values) ~
12007 (api-path-types u.paths externals declared)
11991 (api-path-types u.paths externals declared)
12009:: Source/graph entry for path analysis only. The returned paths retain
11993:: Source/graph entry for path analysis only. The returned paths retain
@@ -12214,16 +12198,17 @@
12214:: Value watchability remains unproved even for a watchable declaration.
12198:: Value watchability remains unproved even for a watchable declaration.
12215+$ ione-request-interface
12199+$ ione-request-interface
12216 [support=iapi-support-evidence parts=iapi-request-parts iface=ifile]
12200 [support=iapi-support-evidence parts=iapi-request-parts iface=ifile]
12217−++ store-compatible-poke
12201+++ compatible-raw-poke
12218 |= prelude=iprelude
12202 |= prelude=iprelude
12219 ^- (unit ischeme)
12203 ^- (unit ischeme)
12220 =/ public=ifile iface.prelude
12204 =/ public=ifile iface.prelude
12221 ?. =(at.public /lib/jibb/prelude/jibb) ~
12205 ?. =(at.public /lib/jibb/prelude/jibb) ~
12222− =/ poke=(unit ischeme) (find-jibb-mold %poke public)
12206+ =/ poke=(unit ischeme) (find-jibb-mold %raw-poke public)
12223 ?~ poke ~
12207 ?~ poke ~
12224− ?. ?=(%union -.typ.u.poke) ~
12225 ?^ vars.u.poke ~
12208 ?^ vars.u.poke ~
12209+ ?. ?=(%union -.typ.u.poke) ~
12210+ ?^ args.typ.u.poke ~
12226− ?. =(origin.typ.u.poke `[/lib/jibb/internal/jibb %poke]) ~
12211+ ?. =(origin.typ.u.poke `[/lib/jibb/internal/jibb %raw-poke]) ~
12227 ?: (itype-has-tag typ.u.poke) ~
12212 ?: (itype-has-tag typ.u.poke) ~
12228 =/ private=(list iwidth-dependency)
12213 =/ private=(list iwidth-dependency)
12229 (skim dependencies.public |=(d=iwidth-dependency =(at.d /lib/jibb/internal/jibb)))
12214 (skim dependencies.public |=(d=iwidth-dependency =(at.d /lib/jibb/internal/jibb)))
@@ -12407,7 +12392,7 @@
12407 ?^ (duplicate-defs defs.mod) ~
12392 ?^ (duplicate-defs defs.mod) ~
12408 ?~ prelude ~
12393 ?~ prelude ~
12409 ?. =(at.u.prelude /lib/jibb/prelude/jibb) ~
12394 ?. =(at.u.prelude /lib/jibb/prelude/jibb) ~
12410− =/ poke=(unit ischeme) (find-jibb-mold %poke u.prelude)
12395+ =/ poke=(unit ischeme) (find-jibb-mold %raw-poke u.prelude)
12411 ?~ poke ~
12396 ?~ poke ~
12412 ?. ?=(%union -.typ.u.poke) ~
12397 ?. ?=(%union -.typ.u.poke) ~
12413 ?^ vars.u.poke ~
12398 ?^ vars.u.poke ~
@@ -12431,8 +12416,9 @@
12431 ?: |((lien prelude-values |=(x=term =(n x))) (lien prelude-molds |=(x=term =(n x)))) ~
12416 ?: |((lien prelude-values |=(x=term =(n x))) (lien prelude-molds |=(x=term =(n x)))) ~
12432 =/ mark=(unit itype) (find-imported-mark n mark-externals marks)
12417 =/ mark=(unit itype) (find-imported-mark n mark-externals marks)
12433 ?~ mark ~
12418 ?~ mark ~
12434− =/ sc=ischeme [[%fn u.mark typ.u.poke] ~]
12419+ =/ sc=(unit ischeme) (derived-poke-command-scheme u.prelude u.mark)
12435− `[~[[n sc]] (api-mark-exports marks marks mark-externals) at ~[[n i.t.t.at n]] ~ ~ ~ ~]
12421+ `[~[[%poke u.sc]] (api-mark-exports marks marks mark-externals) at ~[[n i.t.t.at n]] ~ ~ ~ ~]
12437:: Source-proven ordinary helpers validate each selected /sur dependency.
12423:: Source-proven ordinary helpers validate each selected /sur dependency.
12438:: Unused or less direct cores remain unsupported by this first interface.
12424:: Unused or less direct cores remain unsupported by this first interface.
@@ -12635,8 +12621,8 @@
12635 ?~ view ~
12621 ?~ view ~
12636 `[u.load u.view]
12622 `[u.load u.view]
12638−:: A store main is only the direct two-wing source call. The poke declaration
12624+:: A store main is only the direct two-wing source call. Its local poke mold
12639−:: is checked here, then removed before every ordinary mold/value inference pass.
12625+:: is checked here and remains in ordinary mold/value inference.
12640++ store-main-parts
12626++ store-main-parts
12641 |= d=def
12627 |= d=def
12642 ^- (unit [init=term update=term])
12628 ^- (unit [init=term update=term])
@@ -12671,18 +12657,10 @@
12671 =/ state=def i.states
12657 =/ state=def i.states
12672 ?> &(?=(%mold -.poke) ?=(%mold -.state))
12658 ?> &(?=(%mold -.poke) ?=(%mold -.state))
12673 ?: ?=(%generic -.shape.state) ~
12659 ?: ?=(%generic -.shape.state) ~
12674− ?. ?=(%ref -.shape.poke) ~
12675− ?. ?=([@ ~] names.shape.poke) ~
12676− =/ action=term i.names.shape.poke
12677− =/ actions=(list def)
12678− (skim ds |=(d=def &(?=(%mold -.d) =(action name.d))))
12679− ?. ?=([* ~] actions) ~
12680− =/ action-def=def i.actions
12681− ?> ?=(%mold -.action-def)
12682− ?: ?=(%generic -.shape.action-def) ~
12660+ ?: ?=(%generic -.shape.poke) ~
12661+ =/ action=term %poke
12683− =/ ordinary=(list def)
12662+ =/ ordinary=(list def) ds
12684− (skim ds |=(d=def !&(?=(%mold -.d) =(%poke name.d))))
12685− ?. (module-scope-valid mod(defs ordinary) prelude-values prelude-molds) ~
12663+ ?. (module-scope-valid mod prelude-values prelude-molds) ~
12686 =/ derived=(list term) ~[%state action]
12664 =/ derived=(list term) ~[%state action]
12687 ?: (lien derived |=(n=term =(n %proj))) ~
12665 ?: (lien derived |=(n=term =(n %proj))) ~
12688 =/ outer=(list term)
12666 =/ outer=(list term)
@@ -13753,6 +13731,7 @@
13753 =? inferred ?=(%| -.inferred) (infer-recursive-gate init-def env init-state)
13731 =? inferred ?=(%| -.inferred) (infer-recursive-gate init-def env init-state)
13754 ?: ?=(%| -.inferred) ~
13732 ?: ?=(%| -.inferred) ~
13755 ?. ?=(%fn -.typ.p.inferred) ~
13733 ?. ?=(%fn -.typ.p.inferred) ~
13734+ ?^ (itype-vars sample.typ.p.inferred) ~
13756 =/ data-fit=ifit
13735 =/ data-fit=ifit
13757 (itype-fit sample.typ.p.inferred sample.expected sub.state.p.inferred next.state.p.inferred)
13736 (itype-fit sample.typ.p.inferred sample.expected sub.state.p.inferred next.state.p.inferred)
13758 ?. ?=(%ok -.data-fit) ~
13737 ?. ?=(%ok -.data-fit) ~
@@ -13782,22 +13761,58 @@
13782 ?. ?=(~ (itype-vars typ.u.recovered)) ~
13761 ?. ?=(~ (itype-vars typ.u.recovered)) ~
13783 `[env.u.added grouped.resolution artifacts.u.added]
13762 `[env.u.added grouped.resolution artifacts.u.added]
13764+++ derived-poke-command-scheme
13765+ |= [prelude=ifile action=itype]
13767+ =/ prep=iprelude [prelude ~ ~]
13768+ =/ raw=(unit ischeme) (compatible-raw-poke prep)
13770+ =/ command=(unit ischeme) (find-jibb-mold %cmd prelude)
13771+ =/ unit-template=(unit ischeme) (find-jibb-mold %unit prelude)
13773+ ?~ unit-template ~
13774+ ?. (standard-unit-template u.unit-template /lib/jibb/prelude/jibb) ~
13775+ ?. ?=([@ ~] vars.u.command) ~
13776+ ?. ?=(%union -.typ.u.command) ~
13777+ ?. =(origin.typ.u.command `[/lib/jibb/prelude/jibb %cmd]) ~
13778+ ?. (identity-union-parameters vars.u.command args.typ.u.command) ~
13779+ =/ m=@ud i.vars.u.command
13780+ ?: (itype-var-is-atom m typ.u.command) ~
13781+ ?. (levy (itype-vars typ.u.command) |=(n=@ud =(n m))) ~
13782+ ?: (itype-has-tag typ.u.command) ~
13783+ =/ error=(unit itype) (template-apply u.unit-template ~[[%atom %t]])
13785+ ?. ?=(%union -.typ.u.raw) ~
13786+ =/ poke-case=itype
13787+ [%cell [%const [%term %tas %poke '%poke']] [%cell [%face %p typ.u.raw(label `'raw-poke.internal')] [%face %reply [%fn u.error [%var m]]]]]
13789+ [%cell [%const [%term %tas %go '%go']] [%face %url [%atom %t]]]
13790+ =/ wait-case=itype
13791+ [%cell [%const [%term %tas %wait '%wait']] [%cell [%face %gap [%atom %dr]] [%face %msg [%var m]]]]
13793+ [%cell [%const [%term %tas %now '%now']] [%face %reply [%fn [%atom %da] [%var m]]]]
13795+ [%cell [%const [%term %tas %who '%who']] [%face %reply [%fn [%atom %p] [%var m]]]]
13796+ ?. =(cases.typ.u.command ~[poke-case go-case wait-case now-case who-case]) ~
13797+ =/ command-result=(unit itype) (template-apply u.command ~[[%var 0]])
13798+ ?~ command-result ~
13799+ `[[%fn [%cell action [%fn u.error [%var 0]]] u.command-result] ~[0]]
13785++ store-derived-schemes
13801++ store-derived-schemes
13786 |= [prelude=ifile values=(list term) molds=(list term) state=itype action=itype]
13802 |= [prelude=ifile values=(list term) molds=(list term) state=itype action=itype]
13787 ^- (unit [state=ischeme action=ischeme])
13803 ^- (unit [state=ischeme action=ischeme])
13788 =/ prep=iprelude [prelude values molds]
13804 =/ prep=iprelude [prelude values molds]
13789 =/ ask=(unit ischeme) (request-compatible-ask prep)
13805 =/ ask=(unit ischeme) (request-compatible-ask prep)
13790 ?~ ask ~
13806 ?~ ask ~
13791− =/ poke=(unit ischeme) (store-compatible-poke prep)
13793 ?^ (itype-vars state) ~
13807 ?^ (itype-vars state) ~
13794 ?^ (itype-vars action) ~
13808 ?^ (itype-vars action) ~
13795 ?: |((itype-has-tag state) (itype-has-tag action)) ~
13809 ?: |((itype-has-tag state) (itype-has-tag action)) ~
13796 =/ result=(unit itype) (template-apply u.ask ~[[%var 0]])
13810 =/ result=(unit itype) (template-apply u.ask ~[[%var 0]])
13797 ?~ result ~
13811 ?~ result ~
13798 =/ request=ischeme [[%fn [%fn state [%var 0]] u.result] ~[0]]
13812 =/ request=ischeme [[%fn [%fn state [%var 0]] u.result] ~[0]]
13799− =/ constructor=ischeme [[%fn action typ.u.poke] ~]
13813+ =/ constructor=(unit ischeme) (derived-poke-command-scheme prelude action)
13800− `[request constructor]
13815+ `[request u.constructor]
13802++ program-subs-watch
13817++ program-subs-watch
13803 |= [d=def imports=ijimports graph=irequest-graph prelude=ifile]
13818 |= [d=def imports=ijimports graph=irequest-graph prelude=ifile]
@@ -14029,8 +14044,8 @@
14029 =? tail ?=(%face -.tail) body.tail
14044 =? tail ?=(%face -.tail) body.tail
14030 typ(sample [%cell head tail])
14045 typ(sample [%cell head tail])
14032−:: The builder erases the action from main. Recover it only from the direct
14047+:: The builder erases the action from main. Recover it only from the local
14033−:: local poke declaration and check both ordinary components invariantly.
14048+:: poke mold and check both ordinary components invariantly.
14034++ store-main-closed
14049++ store-main-closed
14035 |= [parts=[init=term update=term] action=term env=ienv molds=imold-types prelude=(unit ifile)]
14050 |= [parts=[init=term update=term] action=term env=ienv molds=imold-types prelude=(unit ifile)]
14036 ^- (unit ischeme)
14051 ^- (unit ischeme)
@@ -14138,8 +14153,6 @@
14138 =/ ds=(list def) ?~(declared defs.mod defs.u.declared)
14153 =/ ds=(list def) ?~(declared defs.mod defs.u.declared)
14139 =/ checking=module mod(defs ds)
14154 =/ checking=module mod(defs ds)
14140 ?. (module-scope-valid checking prelude-values prelude-molds)
14155 ?. (module-scope-valid checking prelude-values prelude-molds)
14141− ?: (pending-declared-poke at mod prelude-values prelude-molds)
14142− [%| [(crip "module kind or scope needs unsupported inference: {(spud at)}") ~]]
14143 [%| [(crip "module has conflicting names: {(spud at)}") ~]]
14156 [%| [(crip "module has conflicting names: {(spud at)}") ~]]
14144 =/ vals=(list term) (global-value-names ds)
14157 =/ vals=(list term) (global-value-names ds)
14145 =/ js=jimports-detailed-result (resolve-jibb-imports-detailed imports.mod externals mark-externals modules active prelude-values prelude-molds cache prelude)
14158 =/ js=jimports-detailed-result (resolve-jibb-imports-detailed imports.mod externals mark-externals modules active prelude-values prelude-molds cache prelude)
@@ -14376,8 +14389,6 @@
14376 =/ prelude-molds=(list term) molds.u.prepared
14389 =/ prelude-molds=(list term) molds.u.prepared
14377 =/ iface=(unit ifile) `iface.u.prepared
14390 =/ iface=(unit ifile) `iface.u.prepared
14378 ?. (module-scope-valid p.parsed prelude-values prelude-molds)
14391 ?. (module-scope-valid p.parsed prelude-values prelude-molds)
14379− ?: (pending-declared-poke file p.parsed prelude-values prelude-molds)
14380− 'partial inference; module not checked\0amodule kind or scope needs unsupported inference'
14381 'partial inference; module not checked\0amodule has conflicting names'
14392 'partial inference; module not checked\0amodule has conflicting names'
14382 =/ js=jimports-result
14393 =/ js=jimports-result
14383 (resolve-jibb-imports imports.p.parsed externals mark-externals modules ~[file] prelude-values prelude-molds ~ iface)
14394 (resolve-jibb-imports imports.p.parsed externals mark-externals modules ~[file] prelude-values prelude-molds ~ iface)