about summary refs log tree commit diff stats
path: root/mu.arc.t
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-10-07 13:26:01 -0700
committerKartik K. Agaram <vc@akkartik.com>2014-10-07 13:26:01 -0700
commitd43f0c54e22161687570ad34efa9df8e5a8a2f53 (patch)
treea261d8df9f407eafc5653c3c0536f3fc9b2b20f3 /mu.arc.t
parent9dca5395f6c70f310ac341751544ce5849fdb2b1 (diff)
downloadmu-d43f0c54e22161687570ad34efa9df8e5a8a2f53.tar.gz
119 - 'continue' was badly broken
Diffstat (limited to 'mu.arc.t')
-rw-r--r--mu.arc.t25
1 files changed, 25 insertions, 0 deletions
diff --git a/mu.arc.t b/mu.arc.t
index b5226f49..bc8e4073 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -720,6 +720,29 @@
 
 (reset)
 (new-trace "continue")
+;? (set dump-trace*)
+(add-fns `((main ,@(convert-braces '(((1 integer) <- copy (4 literal))
+                                     ((2 integer) <- copy (1 literal))
+                                     { begin
+                                     ((2 integer) <- add (2 integer) (2 integer))
+                                     ((3 boolean) <- neq (1 integer) (2 integer))
+                                     (continueif (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))
+  (prn "F - continue correctly loops"))
+
+; todo: fuzz-test invariant: convert-braces offsets should be robust to any
+; number of inner blocks inside but not around the continue block.
+
+(reset)
+(new-trace "continue-nested")
+;? (set dump-trace*)
 (add-fns `((main ,@(convert-braces '(((1 integer) <- copy (4 literal))
                                      ((2 integer) <- copy (1 literal))
                                      { begin
@@ -731,6 +754,8 @@
                                      ((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))