]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.tree.recursive: add some more more loop detection tests
authorSlava Pestov <slava@shill.local>
Tue, 4 Aug 2009 21:23:14 +0000 (16:23 -0500)
committerSlava Pestov <slava@shill.local>
Tue, 4 Aug 2009 21:23:14 +0000 (16:23 -0500)
basis/compiler/tree/recursive/recursive-tests.factor

index 80edae076f75b5459cc091d21905e8f68561583d..7cdb98bc58eb21fb9b07095bad8dbfcd28cc6585 100644 (file)
@@ -67,13 +67,6 @@ compiler.tree.combinators ;
     \ loop-test-3 label-is-not-loop?
 ] unit-test
 
-: loop-test-4 ( a -- )
-    dup [
-        loop-test-4
-    ] [
-        drop
-    ] if ; inline recursive
-
 [ f ] [
     [ [ [ ] map ] map ] build-tree analyze-recursive
     [
@@ -145,17 +138,32 @@ DEFER: a'
 
 DEFER: a''
 
-: b'' ( -- )
+: b'' ( a -- b )
     a'' ; inline recursive
 
-: a'' ( -- )
-    b'' a'' ; inline recursive
+: a'' ( a -- b )
+    dup [ b'' a'' ] when ; inline recursive
 
 [ t ] [
     [ a'' ] build-tree analyze-recursive
     \ a'' label-is-not-loop?
 ] unit-test
 
+[ t ] [
+    [ a'' ] build-tree analyze-recursive
+    \ b'' label-is-loop?
+] unit-test
+
+[ t ] [
+    [ b'' ] build-tree analyze-recursive
+    \ a'' label-is-not-loop?
+] unit-test
+
+[ f ] [
+    [ b'' ] build-tree analyze-recursive
+    \ b'' label-is-not-loop?
+] unit-test
+
 : loop-in-non-loop ( x quot: ( i -- ) -- )
     over 0 > [
         [ [ 1 - ] dip loop-in-non-loop ] [ call ] 2bi
@@ -166,3 +174,16 @@ DEFER: a''
     build-tree analyze-recursive
     \ (each-integer) label-is-loop?
 ] unit-test
+
+DEFER: a'''
+
+: b''' ( -- )
+    blah [ b''' ] [ a''' b''' ] if ; inline recursive
+
+: a''' ( -- )
+    blah [ b''' ] [ a''' ] if ; inline recursive
+
+[ t ] [
+    [ b''' ] build-tree analyze-recursive
+    \ a''' label-is-loop?
+] unit-test
\ No newline at end of file