From b1e55d3f4e7613d585a3bfbef8b5782fa3fefc69 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Mon, 23 Nov 2020 12:29:33 -0500 Subject: [PATCH] todo --- go/cases-to-do.txt | 128 ++++++---- go/reg-test/cases/case-c-dsl-for-map-depth.sh | 4 - .../expected/case-c-dsl-for-map-depth.sh.out | 229 ++++++------------ go/src/miller/dsl/cst/for.go | 6 +- 4 files changed, 167 insertions(+), 200 deletions(-) diff --git a/go/cases-to-do.txt b/go/cases-to-do.txt index f62b6d8df..d3432d6c2 100644 --- a/go/cases-to-do.txt +++ b/go/cases-to-do.txt @@ -1,28 +1,89 @@ ================================================================ -MULTI: +NEED MORE LOOKING: + +rrv -C5 ./reg-test/cases/case-c-dsl-asserting.sh +rrv ./reg-test/cases/case-c-dsl-context-specific-validation.sh +rrv ./reg-test/cases/case-c-dsl-empty-statements.sh +rrv ./reg-test/cases/case-c-dsl-filter-pattern-action.sh +rrv ./reg-test/cases/case-c-dsl-for-bind-loops-for-valgrind.sh +rrv ./reg-test/cases/case-c-dsl-for-oosvar-loops.sh +rrv ./reg-test/cases/case-c-dsl-for-srec-loops.sh +rrv ./reg-test/cases/case-c-dsl-forbind-typedecl.sh +rrv ./reg-test/cases/case-c-dsl-from-file.sh +rrv ./reg-test/cases/case-c-dsl-length-depth-leafcount.sh +rrv ./reg-test/cases/case-c-dsl-local-map-variable-typedecl.sh +rrv ./reg-test/cases/case-c-dsl-local-map-variable-write-read.sh +rrv ./reg-test/cases/case-c-dsl-localvar-scope-and-extent.sh + +rrv ./reg-test/cases/case-c-dsl-mapvar-assignments.sh +rrv ./reg-test/cases/case-c-dsl-mapvar-emit.sh +rrv ./reg-test/cases/case-c-dsl-mapvar-for-loops.sh +rrv ./reg-test/cases/case-c-dsl-mapvars-in-scalar-function-call-contexts.sh +rrv ./reg-test/cases/case-c-dsl-oosvar-assignments.sh +rrv ./reg-test/cases/case-c-dsl-oosvars.sh +rrv ./reg-test/cases/case-c-dsl-split-join.sh +rrv ./reg-test/cases/case-c-dsl-type-inference.sh +rrv ./reg-test/cases/case-c-dsl-type-predicates.sh +rrv ./reg-test/cases/case-c-dsl-typed-overlay.sh +rrv ./reg-test/cases/case-c-dsl-user-defined-functions-and-subroutines.sh +rrv ./reg-test/cases/case-c-dsl-user-defined-functions.sh +rrv ./reg-test/cases/case-c-dsl-user-defined-subroutines.sh +rrv ./reg-test/cases/case-c-format-conversion-keystroke-savers.sh +rrv ./reg-test/cases/case-c-implicit-header-csv-input.sh +rrv ./reg-test/cases/case-c-multi-character-ixs.sh + +================================================================ +MULTIPLE ISSUES: rrv ./reg-test/cases/case-c-dsl-functional-tests.sh * bug mlr filter $nosuchfield>.3 ./reg-test/input/abixy * ofmt * env +-> split up this big case-file * typeof prints different things -- regularize ... * 'x=' -> MT_EMPTY vs MT_STRING +================================================================ +LF/CRLF ETC. + +rrv ./reg-test/cases/case-c-missing-final-lf.sh + ================================================================ BUG: -rrv ./reg-test/cases/case-c-dsl-multipart-scripts.sh +rrv ./reg-test/cases/case-c-dsl-localvar-typedecl.sh +* str s = "a"; s = 3 doesn't trigger -- needs gate-retention ... + +rrv ./reg-test/cases/case-c-dsl-for-map-depth.sh +* Miller: looped-over item is not a map or array. + Needs to treat absent as zero-pass case + +rrv ./reg-test/cases/case-c-dsl-map-variant-dumps.sh +* run_mlr --from $indir/abixy-het put -q 'dump {"a"."b":$a.$b}' + Miller: couldn't assign variable var a from value absent (absent) + rrv ./reg-test/cases/case-c-dsl-null-empty-handling.sh +* "conditional expression did not evaluate to boolean" -- versus @nonesuch {} P/A in C ... + rrv ./reg-test/cases/case-c-dsl-triple-for-loops.sh +* Needs to do this: + "Continuation statements are split into the final boolean, and the statements before (if any)." + rrv ./reg-test/cases/case-c-label.sh +* needs uniqueness-checker ================================================================ ENV rrv ./reg-test/cases/case-c-dsl-functional-tests.sh +================================================================ +PUT -S / -F + +rrv ./reg-test/cases/case-c-dsl-pythonic-division.sh + ================================================================ ARRAY/MAP @@ -31,10 +92,29 @@ rrv ./reg-test/cases/case-c-dsl-haskey.sh rrv ./reg-test/cases/case-c-dsl-extended-typeof.sh +rrv ./reg-test/cases/case-c-dsl-is-predicates.sh +* {1:2} is empty-map in Go; should step up (populate) or step down (error) + + func (this *Mlrval) MapPut(key *Mlrval, value *Mlrval) { + if this.mvtype != MT_MAP { + // TODO: need to be careful about semantics here. + // Silent no-ops are not good UX ... + return + } + if key.mvtype != MT_STRING { + // TODO: need to be careful about semantics here. + // Silent no-ops are not good UX ... + return + } + this.mapval.PutCopy(&key.printrep, value) + } + ================================================================ SUBR +rrv ./reg-test/cases/case-c-dsl-trailing-commas.sh rrv ./reg-test/cases/case-c-dsl-argpass-typedecl.sh +rrv ./reg-test/cases/case-c-dsl-multipart-scripts.sh ================================================================ FORMATTING? @@ -80,6 +160,9 @@ rrv ./reg-test/cases/case-c-dsl-lashed-emitp-singles.sh ================================================================ NOT IMPLEMENTED YET: +rrv ./reg-test/cases/case-c-het-pprint-input.sh +* new pprint reader not done yet + rrv ./reg-test/cases/case-c-auxents.sh rrv ./reg-test/cases/case-c-bar.sh rrv ./reg-test/cases/case-c-compressed-input.sh @@ -126,44 +209,3 @@ rrv ./reg-test/cases/case-c-step.sh rrv ./reg-test/cases/case-c-top.sh rrv ./reg-test/cases/case-c-uniq.sh rrv ./reg-test/cases/case-c-utf8-bom.sh - -================================================================ -NEED MORE LOOKING: - -rrv ./reg-test/cases/case-c-dsl-asserting.sh -rrv ./reg-test/cases/case-c-dsl-context-specific-validation.sh -rrv ./reg-test/cases/case-c-dsl-empty-statements.sh -rrv ./reg-test/cases/case-c-dsl-filter-pattern-action.sh -rrv ./reg-test/cases/case-c-dsl-for-bind-loops-for-valgrind.sh -rrv ./reg-test/cases/case-c-dsl-for-map-depth.sh -rrv ./reg-test/cases/case-c-dsl-for-oosvar-loops.sh -rrv ./reg-test/cases/case-c-dsl-for-srec-loops.sh -rrv ./reg-test/cases/case-c-dsl-forbind-typedecl.sh -rrv ./reg-test/cases/case-c-dsl-from-file.sh -rrv ./reg-test/cases/case-c-dsl-is-predicates.sh -rrv ./reg-test/cases/case-c-dsl-length-depth-leafcount.sh -rrv ./reg-test/cases/case-c-dsl-local-map-variable-typedecl.sh -rrv ./reg-test/cases/case-c-dsl-local-map-variable-write-read.sh -rrv ./reg-test/cases/case-c-dsl-localvar-scope-and-extent.sh -rrv ./reg-test/cases/case-c-dsl-localvar-typedecl.sh -rrv ./reg-test/cases/case-c-dsl-map-variant-dumps.sh -rrv ./reg-test/cases/case-c-dsl-mapvar-assignments.sh -rrv ./reg-test/cases/case-c-dsl-mapvar-emit.sh -rrv ./reg-test/cases/case-c-dsl-mapvar-for-loops.sh -rrv ./reg-test/cases/case-c-dsl-mapvars-in-scalar-function-call-contexts.sh -rrv ./reg-test/cases/case-c-dsl-oosvar-assignments.sh -rrv ./reg-test/cases/case-c-dsl-oosvars.sh -rrv ./reg-test/cases/case-c-dsl-pythonic-division.sh -rrv ./reg-test/cases/case-c-dsl-split-join.sh -rrv ./reg-test/cases/case-c-dsl-trailing-commas.sh -rrv ./reg-test/cases/case-c-dsl-type-inference.sh -rrv ./reg-test/cases/case-c-dsl-type-predicates.sh -rrv ./reg-test/cases/case-c-dsl-typed-overlay.sh -rrv ./reg-test/cases/case-c-dsl-user-defined-functions-and-subroutines.sh -rrv ./reg-test/cases/case-c-dsl-user-defined-functions.sh -rrv ./reg-test/cases/case-c-dsl-user-defined-subroutines.sh -rrv ./reg-test/cases/case-c-format-conversion-keystroke-savers.sh -rrv ./reg-test/cases/case-c-het-pprint-input.sh -rrv ./reg-test/cases/case-c-implicit-header-csv-input.sh -rrv ./reg-test/cases/case-c-missing-final-lf.sh -rrv ./reg-test/cases/case-c-multi-character-ixs.sh diff --git a/go/reg-test/cases/case-c-dsl-for-map-depth.sh b/go/reg-test/cases/case-c-dsl-for-map-depth.sh index f1d746760..14d2ed43a 100644 --- a/go/reg-test/cases/case-c-dsl-for-map-depth.sh +++ b/go/reg-test/cases/case-c-dsl-for-map-depth.sh @@ -1,23 +1,19 @@ mention 'for full oosvar' run_mlr --from $indir/abixy put '@o[1][2] = 7; for(k1,v in @*) {$x+=10;$y+=100}' -run_mlr --from $indir/abixy put '@o[1][2] = 7; for((k1),v in @*) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put '@o[1][2] = 7; for((k1,k2),v in @*) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put '@o[1][2] = 7; for((k1,k2,k3),v in @*) {$x+=10;$y+=100}' mention 'for oosvar submap' run_mlr --from $indir/abixy put '@o[1][2][3] = 7; for(k1,v in @o[1][2]) {$x+=10;$y+=100}' -run_mlr --from $indir/abixy put '@o[1][2][3] = 7; for((k1),v in @o[1][2]) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put '@o[1][2][3] = 7; for((k1,k2),v in @o[1][2]) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put '@o[1][2][3] = 7; for((k1,k2,k3),v in @o[1][2]) {$x+=10;$y+=100}' mention 'for local' run_mlr --from $indir/abixy put 'o[1][2] = 7; for(k1,v in o) {$x+=10;$y+=100}' -run_mlr --from $indir/abixy put 'o[1][2] = 7; for((k1),v in o) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put 'o[1][2] = 7; for((k1,k2),v in o) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put 'o[1][2] = 7; for((k1,k2,k3),v in o) {$x+=10;$y+=100}' mention 'for map-literal' run_mlr --from $indir/abixy put 'for(k1,v in {1:{2:7}}) {$x+=10;$y+=100}' -run_mlr --from $indir/abixy put 'for((k1),v in {1:{2:7}}) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put 'for((k1,k2),v in {1:{2:7}}) {$x+=10;$y+=100}' run_mlr --from $indir/abixy put 'for((k1,k2,k3),v in {1:{2:7}}) {$x+=10;$y+=100}' diff --git a/go/reg-test/expected/case-c-dsl-for-map-depth.sh.out b/go/reg-test/expected/case-c-dsl-for-map-depth.sh.out index 2a1072a31..c20f6a5b1 100644 --- a/go/reg-test/expected/case-c-dsl-for-map-depth.sh.out +++ b/go/reg-test/expected/case-c-dsl-for-map-depth.sh.out @@ -2,142 +2,93 @@ ---------------------------------------------------------------- for full oosvar mlr --from ./reg-test/input/abixy put @o[1][2] = 7; for(k1,v in @*) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 - -mlr --from ./reg-test/input/abixy put @o[1][2] = 7; for((k1),v in @*) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put @o[1][2] = 7; for((k1,k2),v in @*) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put @o[1][2] = 7; for((k1,k2,k3),v in @*) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 +a=pan,b=pan,i=1,x=20.346790144338083,y=200.72680286274345 +a=eks,b=pan,i=2,x=20.758679964789962,y=200.52215110833347 +a=wye,b=wye,i=3,x=20.204603305766305,y=200.33831852551663 +a=eks,b=wye,i=4,x=20.381399393871142,y=200.1341887432843 +a=wye,b=pan,i=5,x=20.573288919802,y=200.86362446990327 +a=zee,b=pan,i=6,x=20.527126160091854,y=200.49322128674834 +a=eks,b=zee,i=7,x=20.611784060567846,y=200.18788491911818 +a=zee,b=wye,i=8,x=20.598554009106422,y=200.97618138569902 +a=hat,b=wye,i=9,x=20.031441876460935,y=200.7495507603507 +a=pan,b=wye,i=10,x=20.502626005541213,y=200.95261836029698 ---------------------------------------------------------------- for oosvar submap mlr --from ./reg-test/input/abixy put @o[1][2][3] = 7; for(k1,v in @o[1][2]) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 - -mlr --from ./reg-test/input/abixy put @o[1][2][3] = 7; for((k1),v in @o[1][2]) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 +a=pan,b=pan,i=1,x=30.346790144338083,y=300.72680286274345 +a=eks,b=pan,i=2,x=30.758679964789962,y=300.52215110833345 +a=wye,b=wye,i=3,x=30.204603305766305,y=300.3383185255166 +a=eks,b=wye,i=4,x=30.381399393871142,y=300.1341887432843 +a=wye,b=pan,i=5,x=30.573288919802,y=300.86362446990324 +a=zee,b=pan,i=6,x=30.527126160091854,y=300.49322128674834 +a=eks,b=zee,i=7,x=30.611784060567846,y=300.1878849191182 +a=zee,b=wye,i=8,x=30.598554009106422,y=300.976181385699 +a=hat,b=wye,i=9,x=30.031441876460935,y=300.7495507603507 +a=pan,b=wye,i=10,x=30.502626005541213,y=300.952618360297 mlr --from ./reg-test/input/abixy put @o[1][2][3] = 7; for((k1,k2),v in @o[1][2]) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 -a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 -a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 -a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 -a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 -a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 -a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 -a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 -a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 -a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 +Exit status was 1; expected 0. mlr --from ./reg-test/input/abixy put @o[1][2][3] = 7; for((k1,k2,k3),v in @o[1][2]) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 -a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 -a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 -a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 -a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 -a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 -a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 -a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 -a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 -a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 +Exit status was 1; expected 0. ---------------------------------------------------------------- for local mlr --from ./reg-test/input/abixy put o[1][2] = 7; for(k1,v in o) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 - -mlr --from ./reg-test/input/abixy put o[1][2] = 7; for((k1),v in o) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put o[1][2] = 7; for((k1,k2),v in o) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 +a=pan,b=pan,i=1,x=20.346790144338083,y=200.72680286274345 +a=eks,b=pan,i=2,x=20.758679964789962,y=200.52215110833347 +a=wye,b=wye,i=3,x=20.204603305766305,y=200.33831852551663 +a=eks,b=wye,i=4,x=20.381399393871142,y=200.1341887432843 +a=wye,b=pan,i=5,x=20.573288919802,y=200.86362446990327 +a=zee,b=pan,i=6,x=20.527126160091854,y=200.49322128674834 +a=eks,b=zee,i=7,x=20.611784060567846,y=200.18788491911818 +a=zee,b=wye,i=8,x=20.598554009106422,y=200.97618138569902 +a=hat,b=wye,i=9,x=20.031441876460935,y=200.7495507603507 +a=pan,b=wye,i=10,x=20.502626005541213,y=200.95261836029698 mlr --from ./reg-test/input/abixy put o[1][2] = 7; for((k1,k2,k3),v in o) {$x+=10;$y+=100} +Exit status was 1; expected 0. + + +---------------------------------------------------------------- for map-literal +mlr --from ./reg-test/input/abixy put for(k1,v in {1:{2:7}}) {$x+=10;$y+=100} a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 @@ -149,43 +100,17 @@ a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 - ----------------------------------------------------------------- for map-literal -mlr --from ./reg-test/input/abixy put for(k1,v in {1:{2:7}}) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 - -mlr --from ./reg-test/input/abixy put for((k1),v in {1:{2:7}}) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 - mlr --from ./reg-test/input/abixy put for((k1,k2),v in {1:{2:7}}) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=10.346790,y=100.726803 -a=eks,b=pan,i=2,x=10.758680,y=100.522151 -a=wye,b=wye,i=3,x=10.204603,y=100.338319 -a=eks,b=wye,i=4,x=10.381399,y=100.134189 -a=wye,b=pan,i=5,x=10.573289,y=100.863624 -a=zee,b=pan,i=6,x=10.527126,y=100.493221 -a=eks,b=zee,i=7,x=10.611784,y=100.187885 -a=zee,b=wye,i=8,x=10.598554,y=100.976181 -a=hat,b=wye,i=9,x=10.031442,y=100.749551 -a=pan,b=wye,i=10,x=10.502626,y=100.952618 +a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 +a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 +a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 +a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 +a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 +a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 +a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 +a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 +a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 +a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 mlr --from ./reg-test/input/abixy put for((k1,k2,k3),v in {1:{2:7}}) {$x+=10;$y+=100} a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 diff --git a/go/src/miller/dsl/cst/for.go b/go/src/miller/dsl/cst/for.go index 37d798162..ee1a992de 100644 --- a/go/src/miller/dsl/cst/for.go +++ b/go/src/miller/dsl/cst/for.go @@ -703,7 +703,11 @@ func (this *RootNode) BuildTripleForLoopNode(astNode *dsl.ASTNode) (*TripleForLo // empty is true if len(continuationExpressionASTNode.Children) == 1 { bareBooleanASTNode := continuationExpressionASTNode.Children[0] - lib.InternalCodingErrorIf(bareBooleanASTNode.Type != dsl.NodeTypeBareBoolean) + if bareBooleanASTNode.Type != dsl.NodeTypeBareBoolean { + return nil, errors.New( + "Miller: the triple-for continutation statement must be a bare boolean.", + ) + } lib.InternalCodingErrorIf(len(bareBooleanASTNode.Children) != 1) continuationExpressionNode, err = this.BuildEvaluableNode(bareBooleanASTNode.Children[0])