don't create unecessary function with tblcomp and assign single

This commit is contained in:
leaf corcoran 2013-06-30 21:06:31 -07:00
parent 7735804508
commit 82f73842d8
3 changed files with 29 additions and 36 deletions

View File

@ -369,16 +369,8 @@ Statement = Transformer({
block_body block_body
} }
}) })
elseif "comprehension" == _exp_0 then elseif "comprehension" == _exp_0 or "tblcomprehension" == _exp_0 then
local a = Accumulator() return build.assign_one(first_name, Value.transformers[first_value[1]](self, first_value))
local action
action = function(exp)
return a:mutate_body({
exp
})
end
node = self.transform.statement(first_value, action, node)
return build.assign_one(first_name, a:wrap(node))
end end
end end
local transformed local transformed

View File

@ -190,11 +190,9 @@ Statement = Transformer {
{"do", block_body} {"do", block_body}
} }
when "comprehension" when "comprehension", "tblcomprehension"
a = Accumulator! return build.assign_one first_name,
action = (exp) -> a\mutate_body { exp } Value.transformers[first_value[1]] @, first_value
node = @transform.statement first_value, action, node
return build.assign_one first_name, a\wrap node
-- bubble cascading assigns -- bubble cascading assigns
transformed = if num_values == 1 transformed = if num_values == 1

View File

@ -6,35 +6,38 @@ local items = {
5, 5,
6 6
} }
local out = (function() local out
do
local _tbl_0 = { } local _tbl_0 = { }
for k in items do for k in items do
_tbl_0[k] = k * 2 _tbl_0[k] = k * 2
end end
return _tbl_0 out = _tbl_0
end)() end
local x = { local x = {
hello = "world", hello = "world",
okay = 2323 okay = 2323
} }
local copy = (function() local copy
do
local _tbl_0 = { } local _tbl_0 = { }
for k, v in pairs(x) do for k, v in pairs(x) do
if k ~= "okay" then if k ~= "okay" then
_tbl_0[k] = v _tbl_0[k] = v
end end
end end
return _tbl_0 copy = _tbl_0
end)() end
local _ = (function() local _
do
local _tbl_0 = { } local _tbl_0 = { }
for x in yes do for x in yes do
local _key_0, _val_0 = unpack(x) local _key_0, _val_0 = unpack(x)
_tbl_0[_key_0] = _val_0 _tbl_0[_key_0] = _val_0
end end
return _tbl_0 _ = _tbl_0
end)() end
_ = (function() do
local _tbl_0 = { } local _tbl_0 = { }
local _list_0 = yes local _list_0 = yes
for _index_0 = 1, #_list_0 do for _index_0 = 1, #_list_0 do
@ -42,17 +45,17 @@ _ = (function()
local _key_0, _val_0 = unpack(x) local _key_0, _val_0 = unpack(x)
_tbl_0[_key_0] = _val_0 _tbl_0[_key_0] = _val_0
end end
return _tbl_0 _ = _tbl_0
end)() end
_ = (function() do
local _tbl_0 = { } local _tbl_0 = { }
for x in yes do for x in yes do
local _key_0, _val_0 = xxxx local _key_0, _val_0 = xxxx
_tbl_0[_key_0] = _val_0 _tbl_0[_key_0] = _val_0
end end
return _tbl_0 _ = _tbl_0
end)() end
_ = (function() do
local _tbl_0 = { } local _tbl_0 = { }
local _list_0 = { local _list_0 = {
{ {
@ -77,8 +80,8 @@ _ = (function()
end)()) end)())
_tbl_0[_key_0] = _val_0 _tbl_0[_key_0] = _val_0
end end
return _tbl_0 _ = _tbl_0
end)() end
local n1 local n1
do do
local _accum_0 = { } local _accum_0 = { }
@ -158,11 +161,11 @@ do
end end
dd = _accum_0 dd = _accum_0
end end
_ = (function() do
local _tbl_0 = { } local _tbl_0 = { }
for i = 1, 10 do for i = 1, 10 do
_tbl_0["hello"] = "world" _tbl_0["hello"] = "world"
end end
return _tbl_0 _ = _tbl_0
end)() end
return nil return nil