]> gitweb.factorcode.org Git - factor.git/blob - basis/stack-checker/stack-checker.factor
Merge branch 'master' of git://repo.or.cz/factor/jcg
[factor.git] / basis / stack-checker / stack-checker.factor
1 ! Copyright (C) 2004, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel io effects namespaces sequences quotations vocabs
4 generic words stack-checker.backend stack-checker.state
5 stack-checker.known-words stack-checker.transforms
6 stack-checker.errors stack-checker.inlining
7 stack-checker.visitor.dummy ;
8 IN: stack-checker
9
10 GENERIC: infer ( quot -- effect )
11
12 M: callable infer ( quot -- effect )
13     [ recursive-state get infer-quot ] with-infer drop ;
14
15 : infer. ( quot -- )
16     #! Safe to call from inference transforms.
17     infer effect>string print ;
18
19 : forget-errors ( -- )
20     all-words [
21         dup subwords [ f "cannot-infer" set-word-prop ] each
22         f "cannot-infer" set-word-prop
23     ] each ;
24
25 : forget-effects ( -- )
26     forget-errors
27     all-words [ f "inferred-effect" set-word-prop ] each ;