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
Björn Lindqvist 2016-12-31 11:41:29 +01:00
parent 8f28fb2587
commit 4d580d95bf
2 changed files with 20 additions and 5 deletions

View File

@ -1,5 +1,5 @@
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
tools.test ;
IN: stack-checker.backend.tests
@ -51,6 +51,24 @@ IN: stack-checker.backend.tests
stack-visitor get first in-d>>
] 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
: node-seqs-eq? ( seq1 seq2 -- ? )
[ [ tuple-slots ] map concat ] bi@ = ;

View File

@ -81,10 +81,7 @@ IN: stack-checker.backend
GENERIC: apply-object ( obj -- )
M: wrapper apply-object
wrapped>>
[ dup word? [ +effect+ depends-on ] [ drop ] if ]
[ push-literal ]
bi ;
wrapped>> push-literal ;
M: object apply-object push-literal ;