31 lines
908 B
Factor
31 lines
908 B
Factor
! Copyright (C) 2004, 2008 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: kernel io effects namespaces sequences quotations vocabs
|
|
generic words stack-checker.backend stack-checker.state
|
|
stack-checker.known-words stack-checker.transforms
|
|
stack-checker.errors stack-checker.inlining
|
|
stack-checker.visitor.dummy ;
|
|
IN: stack-checker
|
|
|
|
GENERIC: infer ( quot -- effect )
|
|
|
|
M: callable infer ( quot -- effect )
|
|
[ infer-quot-here ] with-infer drop ;
|
|
|
|
: infer. ( quot -- )
|
|
#! Safe to call from inference transforms.
|
|
infer effect>string print ;
|
|
|
|
: forget-errors ( -- )
|
|
all-words [
|
|
dup subwords [ f "cannot-infer" set-word-prop ] each
|
|
f "cannot-infer" set-word-prop
|
|
] each ;
|
|
|
|
: forget-effects ( -- )
|
|
forget-errors
|
|
all-words [
|
|
dup subwords [ f "inferred-effect" set-word-prop ] each
|
|
f "inferred-effect" set-word-prop
|
|
] each ;
|