@@ -66,12 +66,16 @@ apply_to_last = function(stms, fn)
6666 local _accum_0 = { }
6767 local _len_0 = 1
6868 for i , stm in ipairs (stms ) do
69+ local _value_0
6970 if i == last_exp_id then
70- _accum_0 [ _len_0 ] = fn (stm )
71+ _value_0 = fn (stm )
7172 else
72- _accum_0 [_len_0 ] = stm
73+ _value_0 = stm
74+ end
75+ if _value_0 ~= nil then
76+ _accum_0 [_len_0 ] = _value_0
77+ _len_0 = _len_0 + 1
7378 end
74- _len_0 = _len_0 + 1
7579 end
7680 return _accum_0
7781 end )()
@@ -291,9 +295,25 @@ construct_comprehension = function(inner, clauses)
291295 local current_stms = inner
292296 for _ , clause in reversed (clauses ) do
293297 local t = clause [1 ]
294- if t == " for" then
298+ local _exp_0 = t
299+ if " for" == _exp_0 then
300+ local name , bounds
301+ do
302+ local _obj_0 = clause
303+ _ , name , bounds = _obj_0 [1 ], _obj_0 [2 ], _obj_0 [3 ]
304+ end
305+ current_stms = {
306+ " for" ,
307+ name ,
308+ bounds ,
309+ current_stms
310+ }
311+ elseif " foreach" == _exp_0 then
295312 local names , iter
296- _ , names , iter = unpack (clause )
313+ do
314+ local _obj_0 = clause
315+ _ , names , iter = _obj_0 [1 ], _obj_0 [2 ], _obj_0 [3 ]
316+ end
297317 current_stms = {
298318 " foreach" ,
299319 names ,
@@ -302,9 +322,12 @@ construct_comprehension = function(inner, clauses)
302322 },
303323 current_stms
304324 }
305- elseif t == " when " then
325+ elseif " when " == _exp_0 then
306326 local cond
307- _ , cond = unpack (clause )
327+ do
328+ local _obj_0 = clause
329+ _ , cond = _obj_0 [1 ], _obj_0 [2 ]
330+ end
308331 current_stms = {
309332 " if" ,
310333 cond ,
@@ -440,15 +463,19 @@ local Statement = Transformer({
440463 local _list_0 = names
441464 for _index_0 = 1 , # _list_0 do
442465 local name = _list_0 [_index_0 ]
466+ local _value_0
443467 if type (name ) == " table" then
444- _accum_0 [ _len_0 ] = name
468+ _value_0 = name
445469 else
446- _accum_0 [ _len_0 ] = {
470+ _value_0 = {
447471 " dot" ,
448472 name
449473 }
450474 end
451- _len_0 = _len_0 + 1
475+ if _value_0 ~= nil then
476+ _accum_0 [_len_0 ] = _value_0
477+ _len_0 = _len_0 + 1
478+ end
452479 end
453480 return _accum_0
454481 end )()
@@ -458,8 +485,11 @@ local Statement = Transformer({
458485 local _list_0 = names
459486 for _index_0 = 1 , # _list_0 do
460487 local name = _list_0 [_index_0 ]
461- _accum_0 [_len_0 ] = type (name ) == " table" and name [2 ] or name
462- _len_0 = _len_0 + 1
488+ local _value_0 = type (name ) == " table" and name [2 ] or name
489+ if _value_0 ~= nil then
490+ _accum_0 [_len_0 ] = _value_0
491+ _len_0 = _len_0 + 1
492+ end
463493 end
464494 return _accum_0
465495 end )()
@@ -681,17 +711,21 @@ local Statement = Transformer({
681711 local _accum_0 = { }
682712 local _len_0 = 1
683713 for i , name in ipairs (node .names ) do
714+ local _value_0
684715 if ntype (name ) == " table" then
685716 do
686717 local _with_0 = NameProxy (" des" )
687718 local proxy = _with_0
688719 insert (destructures , destructure .build_assign (name , proxy ))
689- _accum_0 [ _len_0 ] = _with_0
720+ _value_0 = _with_0
690721 end
691722 else
692- _accum_0 [_len_0 ] = name
723+ _value_0 = name
724+ end
725+ if _value_0 ~= nil then
726+ _accum_0 [_len_0 ] = _value_0
727+ _len_0 = _len_0 + 1
693728 end
694- _len_0 = _len_0 + 1
695729 end
696730 return _accum_0
697731 end )()
@@ -872,8 +906,10 @@ local Statement = Transformer({
872906 else
873907 _value_0 = tuple
874908 end
875- _accum_0 [_len_0 ] = _value_0
876- _len_0 = _len_0 + 1
909+ if _value_0 ~= nil then
910+ _accum_0 [_len_0 ] = _value_0
911+ _len_0 = _len_0 + 1
912+ end
877913 _continue_0 = true
878914 until true
879915 if not _continue_0 then
0 commit comments