]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/stack-checker/stack-checker.factor
Infer non-callables as though they're self-evaluating
[factor.git] / basis / stack-checker / stack-checker.factor
index 759988a61f0ee6a30a2bfefae1a2fcd207e8baf9..09cdc08b256b8ada7355705a70226a3f83b9dca8 100644 (file)
@@ -1,19 +1,20 @@
-! Copyright (C) 2004, 2009 Slava Pestov.
+! Copyright (C) 2004, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel io effects namespaces sequences quotations vocabs
-vocabs.loader generic words stack-checker.backend stack-checker.state
+USING: accessors kernel io effects namespaces sequences
+quotations vocabs vocabs.loader 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 -- effect )
+    dup callable?
+    [ [ infer-quot-here ] with-infer drop ]
+    [ drop ( -- x ) ] if ;
 
 : infer. ( quot -- )
-    #! Safe to call from inference transforms.
+    ! Safe to call from inference transforms.
     infer effect>string print ;
 
-"stack-checker.call-effect" require
\ No newline at end of file
+M: callable stack-effect infer ;