about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-12-14 07:42:31 -0800
committerKartik K. Agaram <vc@akkartik.com>2014-12-14 07:42:40 -0800
commit67737e857e9b2b68b85785734eef9c5043e9bc4d (patch)
tree25e509d9bdfa807f0ca4db629b6a7c43e13a6d04
parent04c7870e593646adc37a9521fd6a62be7a7a54a1 (diff)
downloadmu-67737e857e9b2b68b85785734eef9c5043e9bc4d.tar.gz
418 - more progress in layer 11
With the notion of layers we add the constraint of only being able to
formulate loop tests without 'run' -- otherwise they'd have to leave
layer 11 because they have so many more dependencies.

Might bring back the run-based tests afresh later. Especially since
loop-fail test is now totally gone.
-rw-r--r--mu.arc.t92
1 files changed, 30 insertions, 62 deletions
diff --git a/mu.arc.t b/mu.arc.t
index 5efcb97c..c41125a5 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -1525,30 +1525,23 @@
             (((4 integer)) <- copy ((0 literal)))
             (((5 integer)) <- copy ((0 literal)))))
   (prn "F - 'break' can take an extra arg with number of nested blocks to exit"))
-(quit)
+;? (quit)
 
 (reset)
 (new-trace "loop")
 ;? (set dump-trace*)
-(add-code
-  '((function main [
-      (((1 integer)) <- copy ((4 literal)))
-      (((2 integer)) <- copy ((1 literal)))
-      { begin
-        (((2 integer)) <- add ((2 integer)) ((2 integer)))
-        (((3 boolean)) <- not-equal ((1 integer)) ((2 integer)))
-        (loop-if ((3 boolean)))
-        (((4 integer)) <- copy ((34 literal)))
-      }
-      (reply)
-     ])))
-;? (each stmt function*!main
-;?   (prn stmt))
-;? (set dump-trace*)
-(run 'main)
-;? (prn memory*)
-(if (~iso memory* (obj 1 4  2 4  3 nil  4 34))
-  (prn "F - 'loop' correctly loops"))
+(if (~iso (convert-braces
+            '((((1 integer)) <- copy ((0 literal)))
+              (((2 integer)) <- copy ((0 literal)))
+              { begin
+                (((3 integer)) <- copy ((0 literal)))
+                (loop)
+              }))
+          '((((1 integer)) <- copy ((0 literal)))
+            (((2 integer)) <- copy ((0 literal)))
+            (((3 integer)) <- copy ((0 literal)))
+            (jump ((-2 offset)))))
+  (prn "F - 'loop' jumps to start of containing block"))
 ;? (quit)
 
 ; todo: fuzz-test invariant: convert-braces offsets should be robust to any
@@ -1557,49 +1550,24 @@
 (reset)
 (new-trace "loop-nested")
 ;? (set dump-trace*)
-(add-code
-  '((function main [
-      (((1 integer)) <- copy ((4 literal)))
-      (((2 integer)) <- copy ((1 literal)))
-      { begin
-        (((2 integer)) <- add ((2 integer)) ((2 integer)))
-        { begin
-          (((3 boolean)) <- not-equal ((1 integer)) ((2 integer)))
-        }
-        (loop-if ((3 boolean)))
-        (((4 integer)) <- copy ((34 literal)))
-      }
-      (reply)
-     ])))
-;? (each stmt function*!main
-;?   (prn stmt))
-(run 'main)
-;? (prn memory*)
-(if (~iso memory* (obj 1 4  2 4  3 nil  4 34))
+(if (~iso (convert-braces
+            '((((1 integer)) <- copy ((0 literal)))
+              (((2 integer)) <- copy ((0 literal)))
+              { begin
+                (((3 integer)) <- copy ((0 literal)))
+                { begin
+                  (((4 integer)) <- copy ((0 literal)))
+                }
+                (loop)
+              }))
+          '((((1 integer)) <- copy ((0 literal)))
+            (((2 integer)) <- copy ((0 literal)))
+            (((3 integer)) <- copy ((0 literal)))
+            (((4 integer)) <- copy ((0 literal)))
+            (jump ((-3 offset)))))
   (prn "F - 'loop' correctly jumps back past nested braces"))
 
 (reset)
-(new-trace "loop-fail")
-(add-code
-  '((function main [
-      (((1 integer)) <- copy ((4 literal)))
-      (((2 integer)) <- copy ((2 literal)))
-      { begin
-        (((2 integer)) <- add ((2 integer)) ((2 integer)))
-        { begin
-          (((3 boolean)) <- not-equal ((1 integer)) ((2 integer)))
-        }
-        (loop-if ((3 boolean)))
-        (((4 integer)) <- copy ((34 literal)))
-      }
-      (reply)
-     ])))
-(run 'main)
-;? (prn memory*)
-(if (~iso memory* (obj 1 4  2 4  3 nil  4 34))
-  (prn "F - 'loop-if' might never trigger"))
-
-(reset)
 (new-trace "loop-multiple")
 (= traces* (queue))
 ;? (= dump-trace* (obj whitelist '("-")))
@@ -1615,9 +1583,9 @@
           '((((1 integer)) <- copy ((0 literal)))
             (((2 integer)) <- copy ((0 literal)))
             (((3 integer)) <- copy ((0 literal)))
-            (jump (-3 offset))))
+            (jump ((-3 offset)))))
   (prn "F - 'loop' can take an extra arg with number of nested blocks to exit"))
-;? (quit)
+(quit)
 
 ;; Variables
 ;