for-full-oosvar semantics

This commit is contained in:
John Kerl 2016-05-23 08:39:34 -04:00
parent 3c488a3cc4
commit 2abf90eca7
6 changed files with 239 additions and 110 deletions

View file

@ -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,
};
}
}
}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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