From c7b14dfbbc0afb2800df0a0a6d84c2bb70e4e5ea Mon Sep 17 00:00:00 2001 From: John Kerl Date: Thu, 26 May 2016 23:00:30 -0700 Subject: [PATCH] do-while break/continue UTs --- c/reg_test/expected/out | 196 ++++++++++++++++++++++++++++++++++++++++ c/reg_test/run | 121 +++++++++++++++++++++++-- c/todo.txt | 2 +- 3 files changed, 308 insertions(+), 11 deletions(-) diff --git a/c/reg_test/expected/out b/c/reg_test/expected/out index c8398d7c4..2e3b28121 100644 --- a/c/reg_test/expected/out +++ b/c/reg_test/expected/out @@ -16390,6 +16390,202 @@ zee wye 8 0.5985540091064224 0.976181385699006 8 hat wye 9 0.03144187646093577 0.7495507603507059 9 pan wye 10 0.5026260055412137 0.9526183602969864 10 +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + break; + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 2 1 +eks pan 2 0.7586799647899636 0.5221511083334797 3 2 +wye wye 3 0.20460330576630303 0.33831852551664776 4 3 +eks wye 4 0.38139939387114097 0.13418874328430463 5 4 +wye pan 5 0.5732889198020006 0.8636244699032729 6 5 +zee pan 6 0.5271261600918548 0.49322128674835697 7 6 +eks zee 7 0.6117840605678454 0.1878849191181694 8 7 +zee wye 8 0.5985540091064224 0.976181385699006 9 8 +hat wye 9 0.03144187646093577 0.7495507603507059 10 9 +pan wye 10 0.5026260055412137 0.9526183602969864 11 10 + +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + continue; + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 4 1 +eks pan 2 0.7586799647899636 0.5221511083334797 4 2 +wye wye 3 0.20460330576630303 0.33831852551664776 4 3 +eks wye 4 0.38139939387114097 0.13418874328430463 5 4 +wye pan 5 0.5732889198020006 0.8636244699032729 6 5 +zee pan 6 0.5271261600918548 0.49322128674835697 7 6 +eks zee 7 0.6117840605678454 0.1878849191181694 8 7 +zee wye 8 0.5985540091064224 0.976181385699006 9 8 +hat wye 9 0.03144187646093577 0.7495507603507059 10 9 +pan wye 10 0.5026260055412137 0.9526183602969864 11 10 + +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + break; + $k += 10000; + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 4 2 +eks pan 2 0.7586799647899636 0.5221511083334797 4 3 +wye wye 3 0.20460330576630303 0.33831852551664776 4 4 +eks wye 4 0.38139939387114097 0.13418874328430463 5 5 +wye pan 5 0.5732889198020006 0.8636244699032729 6 6 +zee pan 6 0.5271261600918548 0.49322128674835697 7 7 +eks zee 7 0.6117840605678454 0.1878849191181694 8 8 +zee wye 8 0.5985540091064224 0.976181385699006 9 9 +hat wye 9 0.03144187646093577 0.7495507603507059 10 10 +pan wye 10 0.5026260055412137 0.9526183602969864 11 11 + +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + continue; + $k += 10000; + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 4 7 +eks pan 2 0.7586799647899636 0.5221511083334797 4 7 +wye wye 3 0.20460330576630303 0.33831852551664776 4 7 +eks wye 4 0.38139939387114097 0.13418874328430463 5 7 +wye pan 5 0.5732889198020006 0.8636244699032729 6 7 +zee pan 6 0.5271261600918548 0.49322128674835697 7 7 +eks zee 7 0.6117840605678454 0.1878849191181694 8 8 +zee wye 8 0.5985540091064224 0.976181385699006 9 9 +hat wye 9 0.03144187646093577 0.7495507603507059 10 10 +pan wye 10 0.5026260055412137 0.9526183602969864 11 11 + +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + if (NR == 2 || NR == 8) { + break; + } + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 4 7 +eks pan 2 0.7586799647899636 0.5221511083334797 3 2 +wye wye 3 0.20460330576630303 0.33831852551664776 4 7 +eks wye 4 0.38139939387114097 0.13418874328430463 5 7 +wye pan 5 0.5732889198020006 0.8636244699032729 6 7 +zee pan 6 0.5271261600918548 0.49322128674835697 7 7 +eks zee 7 0.6117840605678454 0.1878849191181694 8 8 +zee wye 8 0.5985540091064224 0.976181385699006 9 8 +hat wye 9 0.03144187646093577 0.7495507603507059 10 10 +pan wye 10 0.5026260055412137 0.9526183602969864 11 11 + +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + if (NR == 2 || NR == 8) { + continue; + } + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 4 7 +eks pan 2 0.7586799647899636 0.5221511083334797 4 2 +wye wye 3 0.20460330576630303 0.33831852551664776 4 7 +eks wye 4 0.38139939387114097 0.13418874328430463 5 7 +wye pan 5 0.5732889198020006 0.8636244699032729 6 7 +zee pan 6 0.5271261600918548 0.49322128674835697 7 7 +eks zee 7 0.6117840605678454 0.1878849191181694 8 8 +zee wye 8 0.5985540091064224 0.976181385699006 9 8 +hat wye 9 0.03144187646093577 0.7495507603507059 10 10 +pan wye 10 0.5026260055412137 0.9526183602969864 11 11 + +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + if (NR == 2 || NR == 8) { + break; + } + $k += 10000; + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 4 10002 +eks pan 2 0.7586799647899636 0.5221511083334797 4 3 +wye wye 3 0.20460330576630303 0.33831852551664776 4 10004 +eks wye 4 0.38139939387114097 0.13418874328430463 5 10005 +wye pan 5 0.5732889198020006 0.8636244699032729 6 10006 +zee pan 6 0.5271261600918548 0.49322128674835697 7 10007 +eks zee 7 0.6117840605678454 0.1878849191181694 8 10008 +zee wye 8 0.5985540091064224 0.976181385699006 9 9 +hat wye 9 0.03144187646093577 0.7495507603507059 10 10010 +pan wye 10 0.5026260055412137 0.9526183602969864 11 10011 + +mlr --opprint --from ./reg_test/input/abixy put + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + if (NR == 2 || NR == 8) { + continue; + } + $k += 10000; + } while ($k < 7); + } while ($j < 4); + +a b i x y j k +pan pan 1 0.3467901443380824 0.7268028627434533 4 10002 +eks pan 2 0.7586799647899636 0.5221511083334797 4 7 +wye wye 3 0.20460330576630303 0.33831852551664776 4 10004 +eks wye 4 0.38139939387114097 0.13418874328430463 5 10005 +wye pan 5 0.5732889198020006 0.8636244699032729 6 10006 +zee pan 6 0.5271261600918548 0.49322128674835697 7 10007 +eks zee 7 0.6117840605678454 0.1878849191181694 8 10008 +zee wye 8 0.5985540091064224 0.976181385699006 9 9 +hat wye 9 0.03144187646093577 0.7495507603507059 10 10010 +pan wye 10 0.5026260055412137 0.9526183602969864 11 10011 + ================================================================ DSL BREAK/CONTINUE IN SINGLE FOR-SREC diff --git a/c/reg_test/run b/c/reg_test/run index af3efe4cc..fc3a85d82 100755 --- a/c/reg_test/run +++ b/c/reg_test/run @@ -1641,8 +1641,6 @@ announce DSL WHILE/DO-WHILE LOOPS run_mlr put -v 'while($i < 5) { $i += 1}' $indir/abixy run_mlr put -v 'do {$i += 1} while($i < 5)' $indir/abixy -# xxx test break & continue when they are operable - # ---------------------------------------------------------------- announce DSL FOR-SREC LOOPS @@ -1674,8 +1672,6 @@ run_mlr --from $indir/abixy put -S -v ' } }' -# xxx test break & continue when they are operable - # ---------------------------------------------------------------- announce DSL FOR-OOSVAR LOOPS @@ -1918,6 +1914,117 @@ run_mlr --opprint --from $indir/abixy put ' } ' + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + break; + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); +' + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + continue; + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); +' + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + break; + $k += 10000; + } while ($k < 7); + } while ($j < 4); +' + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + continue; + $k += 10000; + } while ($k < 7); + } while ($j < 4); +' + + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + if (NR == 2 || NR == 8) { + break; + } + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); +' + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + if (NR == 2 || NR == 8) { + continue; + } + do { + $k += 1 + } while ($k < 7); + } while ($j < 4); +' + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + if (NR == 2 || NR == 8) { + break; + } + $k += 10000; + } while ($k < 7); + } while ($j < 4); +' + +run_mlr --opprint --from $indir/abixy put ' + $j = NR; + do { + $k = NR; + $j += 1; + do { + $k += 1; + if (NR == 2 || NR == 8) { + continue; + } + $k += 10000; + } while ($k < 7); + } while ($j < 4); +' + + # ---------------------------------------------------------------- announce DSL BREAK/CONTINUE IN SINGLE FOR-SREC @@ -2073,8 +2180,6 @@ run_mlr --opprint --from $indir/abixy put -q ' } ' -# ---------------------------------------------------------------- - run_mlr --opprint --from $indir/abixy put -q ' for (k1, v1 in $*) { @output1[NR][k1] = "before"; @@ -2145,8 +2250,6 @@ run_mlr --opprint --from $indir/abixy put -q ' ' -# ---------------------------------------------------------------- - run_mlr --opprint --from $indir/abixy put -q ' for (k1, v1 in $*) { @output1[NR][k1] = "before"; @@ -2219,7 +2322,6 @@ run_mlr --opprint --from $indir/abixy put -q ' } ' -# ---------------------------------------------------------------- run_mlr --opprint --from $indir/abixy put -q ' for (k1, v1 in $*) { @@ -2581,7 +2683,6 @@ run_mlr --opprint --from $indir/abixy put -q ' ' - # ---------------------------------------------------------------- announce DSL BREAK/CONTINUE IN NESTED FOR-OOSVAR diff --git a/c/todo.txt b/c/todo.txt index fb91d544e..c59e8341f 100644 --- a/c/todo.txt +++ b/c/todo.txt @@ -16,7 +16,7 @@ TOP-OF-LIST SUMMARY * eliminate the need for semicolon after curly brace. for now, highlighted faqent. * CST-build-time invalidations: - ! propagate-back to caller + ! propagate back to caller ! filter is oosless - $stuff inside begin/end - break/continue outside for/while/do-while