stack-checker.backend: no need to add extra dependencies on wrappers
This makes it so that if you declare a symbol it won't have an effect dependency on itself.char-rename
parent
8f28fb2587
commit
4d580d95bf
|
@ -1,5 +1,5 @@
|
||||||
USING: accessors assocs classes.tuple compiler.tree kernel namespaces
|
USING: accessors assocs classes.tuple compiler.tree kernel namespaces
|
||||||
sequences stack-checker.backend stack-checker.recursive-state
|
sequences stack-checker.backend stack-checker.dependencies
|
||||||
stack-checker.state stack-checker.values stack-checker.visitor
|
stack-checker.state stack-checker.values stack-checker.visitor
|
||||||
tools.test ;
|
tools.test ;
|
||||||
IN: stack-checker.backend.tests
|
IN: stack-checker.backend.tests
|
||||||
|
@ -51,6 +51,24 @@ IN: stack-checker.backend.tests
|
||||||
stack-visitor get first in-d>>
|
stack-visitor get first in-d>>
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
! apply-object
|
||||||
|
SYMBOL: sam-sum
|
||||||
|
|
||||||
|
{ H{ } } [
|
||||||
|
H{ } clone dependencies set
|
||||||
|
H{ } clone known-values set
|
||||||
|
init-inference
|
||||||
|
[ \ sam-sum ] first apply-object
|
||||||
|
dependencies get
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ V{ "abc" } } [
|
||||||
|
H{ } clone known-values set
|
||||||
|
init-inference
|
||||||
|
"abc" apply-object
|
||||||
|
literals get
|
||||||
|
] unit-test
|
||||||
|
|
||||||
! Because node is an identity-tuple
|
! Because node is an identity-tuple
|
||||||
: node-seqs-eq? ( seq1 seq2 -- ? )
|
: node-seqs-eq? ( seq1 seq2 -- ? )
|
||||||
[ [ tuple-slots ] map concat ] bi@ = ;
|
[ [ tuple-slots ] map concat ] bi@ = ;
|
||||||
|
|
|
@ -81,10 +81,7 @@ IN: stack-checker.backend
|
||||||
GENERIC: apply-object ( obj -- )
|
GENERIC: apply-object ( obj -- )
|
||||||
|
|
||||||
M: wrapper apply-object
|
M: wrapper apply-object
|
||||||
wrapped>>
|
wrapped>> push-literal ;
|
||||||
[ dup word? [ +effect+ depends-on ] [ drop ] if ]
|
|
||||||
[ push-literal ]
|
|
||||||
bi ;
|
|
||||||
|
|
||||||
M: object apply-object push-literal ;
|
M: object apply-object push-literal ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue