@@ -654,15 +654,27 @@ Value = Transformer {
654654 a\ wrap node
655655
656656 tblcomprehension : ( node) =>
657- _, key_exp, value_exp, clauses = unpack node
657+ _, explist, clauses = unpack node
658+ key_exp, value_exp = unpack explist
658659
659660 accum = NameProxy " tbl"
660- dest = build. chain { base : accum, { " index" , key_exp} }
661- inner = build. assign_one dest, value_exp
661+
662+ inner = if value_exp
663+ dest = build. chain { base : accum, { " index" , key_exp} }
664+ { build. assign_one dest, value_exp }
665+ else
666+ -- If we only have single expression then
667+ -- unpack the result into key and value
668+ key_name, val_name = NameProxy " key" , NameProxy " val"
669+ dest = build. chain { base : accum, { " index" , key_name} }
670+ {
671+ build. assign names : { key_name, val_name} , values : { key_exp}
672+ build. assign_one dest, val_name
673+ }
662674
663675 build. block_exp {
664676 build. assign_one accum, build. table!
665- construct_comprehension { inner} , clauses
677+ construct_comprehension inner, clauses
666678 accum
667679 }
668680
0 commit comments