Type inference for clone and (clone)
parent
adca3c8464
commit
5d7d205081
|
@ -107,23 +107,26 @@ M: node child-ties ( node -- seq )
|
|||
] if ;
|
||||
|
||||
\ make-tuple [
|
||||
dup node-in-d first value-literal 1array
|
||||
node-in-d first value-literal 1array
|
||||
] "output-classes" set-word-prop
|
||||
|
||||
{ clone (clone) } [
|
||||
[
|
||||
node-in-d [ value-class* ] map
|
||||
] "output-classes" set-word-prop
|
||||
] each
|
||||
|
||||
: output-classes ( node -- seq )
|
||||
dup node-param "output-classes" word-prop [
|
||||
call
|
||||
] [
|
||||
node-param "infer-effect" word-prop second
|
||||
dup integer? [ drop f ] when
|
||||
] ?if ;
|
||||
] if* ;
|
||||
|
||||
M: #call infer-classes* ( node -- )
|
||||
dup node-param [
|
||||
dup create-ties
|
||||
dup output-classes
|
||||
[ over node-out-d intersect-classes ] when*
|
||||
] when drop ;
|
||||
dup create-ties dup output-classes
|
||||
[ swap node-out-d intersect-classes ] [ drop ] if* ;
|
||||
|
||||
M: #push infer-classes* ( node -- )
|
||||
node-out-d
|
||||
|
|
Loading…
Reference in New Issue