diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-12-14 07:42:31 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-12-14 07:42:40 -0800 |
commit | 67737e857e9b2b68b85785734eef9c5043e9bc4d (patch) | |
tree | 25e509d9bdfa807f0ca4db629b6a7c43e13a6d04 | |
parent | 04c7870e593646adc37a9521fd6a62be7a7a54a1 (diff) | |
download | mu-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.t | 92 |
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 ; |