diff --git a/c/containers/mlhmmv.c b/c/containers/mlhmmv.c index d75af3772..f7b7c4737 100644 --- a/c/containers/mlhmmv.c +++ b/c/containers/mlhmmv.c @@ -631,14 +631,22 @@ static mlhmmv_value_t mlhmmv_copy_aux(mlhmmv_value_t* pvalue) { // ---------------------------------------------------------------- mlhmmv_value_t mlhmmv_copy_submap(mlhmmv_t* pmap, sllmv_t* pmvkeys) { int error; - mlhmmv_level_entry_t* pfromentry = mlhmmv_get_entry_at_level(pmap->proot_level, pmvkeys->phead, &error); - if (pfromentry != NULL) { - return mlhmmv_copy_aux(&pfromentry->level_value); - } else { - return (mlhmmv_value_t) { + if (pmvkeys->length == 0) { + mlhmmv_value_t root_value = (mlhmmv_value_t) { .is_terminal = FALSE, - .u.pnext_level = NULL, + .u.pnext_level = pmap->proot_level, }; + return mlhmmv_copy_aux(&root_value); + } else { + mlhmmv_level_entry_t* pfromentry = mlhmmv_get_entry_at_level(pmap->proot_level, pmvkeys->phead, &error); + if (pfromentry != NULL) { + return mlhmmv_copy_aux(&pfromentry->level_value); + } else { + return (mlhmmv_value_t) { + .is_terminal = FALSE, + .u.pnext_level = NULL, + }; + } } } diff --git a/c/output/out-dev b/c/output/out-dev index 082f36bb4..d97b7edc3 100644 --- a/c/output/out-dev +++ b/c/output/out-dev @@ -72,7 +72,7 @@ list (statement_list): z (field_name). 4 (strnum_literal). -mlr --from ./reg_test/input/abixy put -q -v @a=2; @b["y"]=3; @c["y"][$a]=4; emitp all +mlr --from reg_test/input/abixy put -q -v @a=2; @b["y"]=3; @c["y"][$a]=4; emitp all AST ROOT: list (statement_list): = (oosvar_assignment): @@ -123,7 +123,7 @@ a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 -mlr --from ./reg_test/input/abixy put -q -v @a=2; @b["y"]=3; @c["y"][$a]=4; emitp all +mlr --from reg_test/input/abixy put -q -v @a=2; @b["y"]=3; @c["y"][$a]=4; emitp all AST ROOT: list (statement_list): = (oosvar_assignment): @@ -174,7 +174,7 @@ a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 -mlr --from ./reg_test/input/abixy put -q -v @["a"]=2; @["b"]["y"]=3; @["c"]["y"][$a]=4; emitp all +mlr --from reg_test/input/abixy put -q -v @["a"]=2; @["b"]["y"]=3; @["c"]["y"][$a]=4; emitp all AST ROOT: list (statement_list): = (oosvar_assignment): @@ -225,7 +225,7 @@ a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 -mlr put -v @s = NR; $t = typeof(@s); $u= typeof(@["s"]); emitp all ./reg_test/input/abixy +mlr put -v @s = NR; $t = typeof(@s); $u= typeof(@["s"]); emitp all reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): @@ -265,7 +265,7 @@ a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,t=MT_INT,u=MT_INT s=10 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,t=MT_INT,u=MT_INT -mlr --opprint put -v @s = NR; $t = @s; $u=@["s"] ./reg_test/input/abixy +mlr --opprint put -v @s = NR; $t = @s; $u=@["s"] reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): @@ -292,7 +292,7 @@ zee wye 8 0.5985540091064224 0.976181385699006 8 8 hat wye 9 0.03144187646093577 0.7495507603507059 9 9 pan wye 10 0.5026260055412137 0.9526183602969864 10 10 -mlr put -v @t["u"] = NR; $tu = @["t"]["u"]; emitp all ./reg_test/input/abixy +mlr put -v @t["u"] = NR; $tu = @["t"]["u"]; emitp all reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): @@ -328,7 +328,7 @@ a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,tu=9 t:u=10 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,tu=10 -mlr put -v @["t"]["u"] = $y; emitp all ./reg_test/input/abixy +mlr put -v @["t"]["u"] = $y; emitp all reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): @@ -359,7 +359,7 @@ a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 t:u=0.952618 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 -mlr --from ./reg_test/input/abixy put -v $sum = 0; for(k,v in $*) {if (k =~ "^[xy]$") {$sum += $[k]} } +mlr --from reg_test/input/abixy put -v $sum = 0; for(k,v in $*) {if (k =~ "^[xy]$") {$sum += $[k]} } AST ROOT: list (statement_list): = (srec_assignment): @@ -393,7 +393,7 @@ a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,sum=1.574735 a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,sum=0.780993 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,sum=1.455244 -mlr --from ./reg_test/input/abixy -n put -v +mlr --from reg_test/input/abixy -n put -v $a = @s; $b = @t[1]; $c = @u[1][2]; @@ -468,59 +468,103 @@ list (statement_list): unset (unset): @* (full_oosvar). -mlr -n put -v for(k,v in $*) {} -AST ROOT: -list (statement_list): - for (for_srec): - variables (for_variables): - k (non_sigil_name). - v (non_sigil_name). - list (statement_list): -mlr -n put -v for(k1,v in @*) {} -AST ROOT: -list (statement_list): - for (for_oosvar): - key_and_value_variables (for_variables): - key_variables (for_variables): - k1 (non_sigil_name). - v (non_sigil_name). - empty_keylist (oosvar_keylist): - list (statement_list): +================================================================ +FOR-OOSVAR DEPTH TESTS -mlr -n put -v for((k1),v in @*) {} -AST ROOT: -list (statement_list): - for (for_oosvar): - key_and_value_variables (for_variables): - key_variables (for_variables): - k1 (non_sigil_name). - v (non_sigil_name). - empty_keylist (oosvar_keylist): - list (statement_list): +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=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 -n put -v for((k1,k2),v in @*) {} -AST ROOT: -list (statement_list): - for (for_oosvar): - key_and_value_variables (for_variables): - key_variables (for_variables): - k1 (non_sigil_name). - k2 (non_sigil_name). - v (non_sigil_name). - empty_keylist (oosvar_keylist): - list (statement_list): +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=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 -n put -v for((k1,k2,k3),v in @*) {} -AST ROOT: -list (statement_list): - for (for_oosvar): - key_and_value_variables (for_variables): - key_variables (for_variables): - k1 (non_sigil_name). - k2 (non_sigil_name). - k3 (non_sigil_name). - v (non_sigil_name). - empty_keylist (oosvar_keylist): - list (statement_list): +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=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 @o[1][2] = 7; for((k1,k2,k3),v in @*) {$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 + +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 + +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 + +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 diff --git a/c/reg_test/dev b/c/reg_test/dev index db9750570..cc843f2f5 100755 --- a/c/reg_test/dev +++ b/c/reg_test/dev @@ -118,48 +118,6 @@ run_mlr -n put -v 'emit @*' run_mlr -n put -v 'emitp @*' run_mlr -n put -v 'unset @*' -# ---------------------------------------------------------------- -run_mlr -n put -v 'for(k,v in $*) {}' - -# AST ROOT: -# list (statement_list): -# for (for_srec): -# variables (for_variables): -# k (non_sigil_name). -# v (non_sigil_name). -# list (statement_list): - -run_mlr -n put -v 'for(k1,v in @*) {}' -run_mlr -n put -v 'for((k1),v in @*) {}' -run_mlr -n put -v 'for((k1,k2),v in @*) {}' -run_mlr -n put -v 'for((k1,k2,k3),v in @*) {}' - -# list (statement_list): -# for (for_oosvar): -# variables (for_variables): -# k1 (non_sigil_name). -# v (non_sigil_name). -# list (statement_list): - -# list (statement_list): -# for (for_oosvar): -# variables (for_variables): -# variables (for_variables): -# k1 (non_sigil_name). -# k2 (non_sigil_name). -# v (non_sigil_name). -# list (statement_list): - -# list (statement_list): -# for (for_oosvar): -# variables (for_variables): -# variables (for_variables): -# k1 (non_sigil_name). -# k2 (non_sigil_name). -# k3 (non_sigil_name). -# v (non_sigil_name). -# list (statement_list): - # ================================================================ cat $outfile diff --git a/c/reg_test/expected/out b/c/reg_test/expected/out index 2e7cf9841..ccdbcf3cb 100644 --- a/c/reg_test/expected/out +++ b/c/reg_test/expected/out @@ -15743,6 +15743,110 @@ zee wye 0.598554 hat wye 0.031442 +================================================================ +FOR-OOSVAR DEPTH TESTS + + +---------------------------------------------------------------- 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=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 @o[1][2] = 7; for((k1),v in @*) {$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 + +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=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 @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 + + +---------------------------------------------------------------- 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 + +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 + +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 + + ================================================================ ABSENT/EMPTY diff --git a/c/reg_test/run b/c/reg_test/run index dbf162f70..e35e31bf9 100755 --- a/c/reg_test/run +++ b/c/reg_test/run @@ -1666,6 +1666,21 @@ run_mlr --opprint --from $indir/abixy put -q ' } ' +# ---------------------------------------------------------------- +announce FOR-OOSVAR DEPTH TESTS + +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}' + # ---------------------------------------------------------------- # xxx test nested control structures: double-for; if-inside-while; etc. diff --git a/c/todo.txt b/c/todo.txt index 31b2c9158..933b03735 100644 --- a/c/todo.txt +++ b/c/todo.txt @@ -6,8 +6,7 @@ BUGFIXES ================================================================ TOP-OF-LIST SUMMARY -! for-oosrec -- @* in what contexts? not as LHS of assignment. emit @* same as emit all; only in for-$* ? +! for @* semantics ! eliminate the need for semicolon after curly brace. for now, highlighted faqent. * chk UT x all * move/filter all reg_test/dev -> reg_test/run @@ -67,6 +66,7 @@ HYGIENE: * fully recursive; recursivity of existing conds * pound-to-EOL commenting for filter & put ! don't release 4.1 w/o implicit semicolon after closing curly brace +* emit/unset @* same as emit/unset all * bugfix: ~/pub_http_internet/miller-releases/miller-4.0.0/c/mlr put -v '@a[1][2]=$b;$new=@a[1][2]' ../data/small