moonscript
                                
                                 moonscript copied to clipboard
                                
                                    moonscript copied to clipboard
                            
                            
                            
                        destructing assignment works wrong with for generator
Code like this
{a, b} = for i in *{2, 3} do i*i
print a, b
Compiles to
do
  local _accum_0 = { }
  local _len_0 = 1
  local _list_0 = {
    2,
    3
  }
  for _index_0 = 1, #_list_0 do
    local i = _list_0[_index_0]
    _accum_0[_len_0] = i * i
    _len_0 = _len_0 + 1
  end
  local a, b
  a, b = _accum_0[1], _accum_0[2]
end
return print(a, b)
There variables a and b are local, so execution result is nil nil instead of 4 9
This bug affects list comprehensions too:
f = ->
  {x} = [x for x in *{42}]
  print x
f!
which emits
local f
f = function()
  do
    local _accum_0 = { }
    local _len_0 = 1
    local _list_0 = {
      42
    }
    for _index_0 = 1, #_list_0 do
      local x = _list_0[_index_0]
      _accum_0[_len_0] = x
      _len_0 = _len_0 + 1
    end
    local x
    x = _accum_0[1]
  end
  return print(x)
end
return f()