From afc86619d710a578dc3f2bfc2ee1d62913f9abe8 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Tue, 19 Mar 2024 02:22:56 +0800 Subject: try fixing issue #162. --- spec/inputs/attrib.yue | 2 + spec/inputs/unicode/multiline_chain.yue | 6 +- spec/outputs/5.1/attrib.lua | 183 +++++++----- spec/outputs/assign.lua | 9 +- spec/outputs/attrib.lua | 1 + spec/outputs/unicode/assign.lua | 9 +- spec/outputs/unicode/macro.lua | 26 +- spec/outputs/unicode/multiline_chain.lua | 35 ++- spec/outputs/unicode/syntax.lua | 13 +- spec/outputs/unicode/vararg.lua | 488 ++++++++++++++++--------------- spec/outputs/vararg.lua | 488 ++++++++++++++++--------------- 11 files changed, 682 insertions(+), 578 deletions(-) (limited to 'spec') diff --git a/spec/inputs/attrib.yue b/spec/inputs/attrib.yue index 36aca99..f66f0db 100644 --- a/spec/inputs/attrib.yue +++ b/spec/inputs/attrib.yue @@ -41,6 +41,8 @@ do close _ = : -> print "first" + print "third" + _defers = setmetatable {}, __close: => @[#@]! @[#@] = nil diff --git a/spec/inputs/unicode/multiline_chain.yue b/spec/inputs/unicode/multiline_chain.yue index 403f93b..6e8551c 100644 --- a/spec/inputs/unicode/multiline_chain.yue +++ b/spec/inputs/unicode/multiline_chain.yue @@ -21,8 +21,10 @@ 表bb = 键1: 变量a - \变量b 123 - .变量c! + \变量b 123, + :字段A + .变量c 1, 2, 3 + :字段B 键2: 键w1: 变量a! .变量b diff --git a/spec/outputs/5.1/attrib.lua b/spec/outputs/5.1/attrib.lua index 70e7e24..e28dca4 100644 --- a/spec/outputs/5.1/attrib.lua +++ b/spec/outputs/5.1/attrib.lua @@ -50,6 +50,22 @@ do a, b = _obj_0[1], _obj_0[2] end end +local _anon_func_0 = function(f, error, _close_1, _arg_0, ...) + do + local _ok_0 = _arg_0 + _close_1(f) + if _ok_0 then + return ... + else + return error(...) + end + end +end +local _anon_func_1 = function(io) + local _with_0 = io.open("file.txt") + _with_0:write("Hello") + return _with_0 +end do local v = (function() if flag then @@ -70,23 +86,43 @@ do return error(...) end end)(pcall(function(...) - local f = (function() - local _with_0 = io.open("file.txt") - _with_0:write("Hello") - return _with_0 - end)() + local f = _anon_func_1(io) local _close_1 = assert(getmetatable(f).__close) - return (function(_arg_0, ...) - local _ok_0 = _arg_0 - _close_1(f) - if _ok_0 then - return ... - else - return error(...) - end - end)(pcall(function(...) end, ...)) + return _anon_func_0(f, error, _close_1, pcall(function(...) end, ...)) end, ...)) end +local _anon_func_2 = function(d, error, _close_1, _arg_0, ...) + do + local _ok_0 = _arg_0 + _close_1(d) + if _ok_0 then + return ... + else + return error(...) + end + end +end +local _anon_func_3 = function(x) + if true then + if "abc" == x then + return 998 + end + end +end +local _anon_func_5 = function(a, b) + if a ~= nil then + return a + else + return b + end +end +local _anon_func_4 = function(a, b) + if _anon_func_5(a, b) then + return { + value = value + } + end +end do local a = (function() if true then @@ -110,39 +146,34 @@ do return error(...) end end)(pcall(function(...) - local c = (function() - if true then - local _exp_0 = x - if "abc" == _exp_0 then - return 998 - end - end - end)() - local d = (function() - if (function() - if a ~= nil then - return a - else - return b - end - end)() then - return { - value = value - } - end - end)() + local c = _anon_func_3(x) + local d = _anon_func_4(a, b) local _close_1 = assert(getmetatable(d).__close) - return (function(_arg_0, ...) - local _ok_0 = _arg_0 - _close_1(d) - if _ok_0 then - return ... - else - return error(...) - end - end)(pcall(function(...) end, ...)) + return _anon_func_2(d, error, _close_1, pcall(function(...) end, ...)) end, ...)) end +local _anon_func_6 = function(_, error, _close_1, _arg_0, ...) + do + local _ok_0 = _arg_0 + _close_1(_) + if _ok_0 then + return ... + else + return error(...) + end + end +end +local _anon_func_7 = function(_, _close_2, error, _arg_0, ...) + do + local _ok_0 = _arg_0 + _close_2(_) + if _ok_0 then + return ... + else + return error(...) + end + end +end do local _ = (function() local _with_0 = io.open("file.txt") @@ -165,30 +196,16 @@ do end }) local _close_1 = assert(getmetatable(_).__close) - return (function(_arg_0, ...) - local _ok_0 = _arg_0 - _close_1(_) - if _ok_0 then - return ... - else - return error(...) - end - end)(pcall(function(...) + return _anon_func_6(_, error, _close_1, pcall(function(...) local _ = setmetatable({ }, { __close = function() return print("first") end }) local _close_2 = assert(getmetatable(_).__close) - return (function(_arg_0, ...) - local _ok_0 = _arg_0 - _close_2(_) - if _ok_0 then - return ... - else - return error(...) - end - end)(pcall(function(...) end, ...)) + return _anon_func_7(_, _close_2, error, pcall(function(...) + return print("third") + end, ...)) end, ...)) end, ...)) end @@ -203,6 +220,28 @@ def = function(item) _defers[#_defers + 1] = item return _defers end +local _anon_func_8 = function(_, error, _close_1, _arg_0, ...) + do + local _ok_0 = _arg_0 + _close_1(_) + if _ok_0 then + return ... + else + return error(...) + end + end +end +local _anon_func_9 = function(_, _close_2, error, _arg_0, ...) + do + local _ok_0 = _arg_0 + _close_2(_) + if _ok_0 then + return ... + else + return error(...) + end + end +end do local _ = def(function() return print(3) @@ -221,28 +260,12 @@ do return print(2) end) local _close_1 = assert(getmetatable(_).__close) - return (function(_arg_0, ...) - local _ok_0 = _arg_0 - _close_1(_) - if _ok_0 then - return ... - else - return error(...) - end - end)(pcall(function(...) + return _anon_func_8(_, error, _close_1, pcall(function(...) local _ = def(function() return print(1) end) local _close_2 = assert(getmetatable(_).__close) - return (function(_arg_0, ...) - local _ok_0 = _arg_0 - _close_2(_) - if _ok_0 then - return ... - else - return error(...) - end - end)(pcall(function(...) end, ...)) + return _anon_func_9(_, _close_2, error, pcall(function(...) end, ...)) end, ...)) end, ...)) end diff --git a/spec/outputs/assign.lua b/spec/outputs/assign.lua index 228e859..8bf7b35 100644 --- a/spec/outputs/assign.lua +++ b/spec/outputs/assign.lua @@ -42,11 +42,14 @@ do end end end -return _(function() - setmetatable(a, (function() +local _anon_func_0 = function(print) + do print(123) return { } - end)()) + end +end +return _(function() + setmetatable(a, _anon_func_0(print)) do local a, b if "a" == c then diff --git a/spec/outputs/attrib.lua b/spec/outputs/attrib.lua index 181555f..07fc165 100644 --- a/spec/outputs/attrib.lua +++ b/spec/outputs/attrib.lua @@ -106,6 +106,7 @@ do return print("first") end }) + print("third") end local _defers = setmetatable({ }, { __close = function(self) diff --git a/spec/outputs/unicode/assign.lua b/spec/outputs/unicode/assign.lua index b530093..290b248 100644 --- a/spec/outputs/unicode/assign.lua +++ b/spec/outputs/unicode/assign.lua @@ -42,11 +42,14 @@ do end end end -return __u65e0_u6548_u53d8_u91cf(function() - setmetatable(a_u53d8_u91cf, (function() +local _anon_func_0 = function(_u6253_u5370) + do _u6253_u5370(123) return { } - end)()) + end +end +return __u65e0_u6548_u53d8_u91cf(function() + setmetatable(a_u53d8_u91cf, _anon_func_0(_u6253_u5370)) do local _u5143_u7d20a, _u5143_u7d20b do diff --git a/spec/outputs/unicode/macro.lua b/spec/outputs/unicode/macro.lua index 2ae5dce..88f6de7 100644 --- a/spec/outputs/unicode/macro.lua +++ b/spec/outputs/unicode/macro.lua @@ -211,11 +211,11 @@ local _call_1 = (_({ -2, 3 })) -_call_1 = _call_1["链"](_call_1, _call_1, _call_1, _call_1, _call_1, _call_1, _call_1, _call_1) -_call_1 = _call_1["映射"](_call_1, _call_1, _call_1, _call_1, function(self) +_call_1 = _call_1["链"](_call_1) +_call_1 = _call_1["映射"](_call_1, function(self) return self * 2 end) -_call_1 = _call_1["过滤"](_call_1, _call_1, function(self) +_call_1 = _call_1["过滤"](_call_1, function(self) return self > 3 end) local _u7ed3_u679ca = _call_1["取值"](_call_1) @@ -227,25 +227,25 @@ local _call_2 = (_({ -2, 3 })) -_call_2 = _call_2["链"](_call_2, _call_2, _call_2, _call_2, _call_2, _call_2, _call_2, _call_2) -_call_2 = _call_2["映射"](_call_2, _call_2, _call_2, _call_2, function(self) +_call_2 = _call_2["链"](_call_2) +_call_2 = _call_2["映射"](_call_2, function(self) return self * 2 end) -_call_2 = _call_2["过滤"](_call_2, _call_2, function(self) +_call_2 = _call_2["过滤"](_call_2, function(self) return self > 3 end) _call_2["每一个"](_call_2, function(self) return _u6253_u5370(self) end) local _call_3 = _u539f_u70b9["变换"]["根节点"]["游戏对象"] -_call_3 = _call_3["父节点"](_call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3) -_call_3 = _call_3["后代"](_call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3) -_call_3 = _call_3["选择启用"](_call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3) -_call_3 = _call_3["选择可见"](_call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3, _call_3) -_call_3 = _call_3["标签等于"](_call_3, _call_3, _call_3, _call_3, "fx") -_call_3 = _call_3["其中"](_call_3, _call_3, function(x) +_call_3 = _call_3["父节点"](_call_3) +_call_3 = _call_3["后代"](_call_3) +_call_3 = _call_3["选择启用"](_call_3) +_call_3 = _call_3["选择可见"](_call_3) +_call_3 = _call_3["标签等于"](_call_3, "fx") +_call_3 = _call_3["其中"](_call_3, function(x) local _call_4 = x["名称"] - return _call_4["结尾为"](_call_4, _call_4, "(克隆)") + return _call_4["结尾为"](_call_4, "(克隆)") end) _u7ed3_u679c = _call_3["摧毁"](_call_3) do diff --git a/spec/outputs/unicode/multiline_chain.lua b/spec/outputs/unicode/multiline_chain.lua index 90fdf0b..f45e71f 100644 --- a/spec/outputs/unicode/multiline_chain.lua +++ b/spec/outputs/unicode/multiline_chain.lua @@ -24,7 +24,11 @@ end)(), { local _u8868bb = { ["键1"] = (function() local _call_1 = _u53d8_u91cfa - return _call_1["变量b"](_call_1, 123)["变量c"]() + return (_call_1["变量b"](_call_1, 123, { + ["字段A"] = _u5b57_u6bb5A + }))["变量c"](1, 2, 3, { + ["字段B"] = _u5b57_u6bb5B + }) end)(), ["键2"] = { ["键w1"] = (function() @@ -54,37 +58,40 @@ _u51fd_u6570 = function() end return _accum_0 end +local _anon_func_0 = function(_u53d8_u91cfa) + do + local _call_1 = _u53d8_u91cfa + return (_call_1["变量b"](_call_1, 123))["变量c"]("abc") + end +end local _u51fd_u65701 _u51fd_u65701 = function() - return _u53d8_u91cfx, (function() - local _call_1 = _u53d8_u91cfa - return _call_1["变量b"](_call_1, 123)["变量c"]("abc") - end)() + return _u53d8_u91cfx, _anon_func_0(_u53d8_u91cfa) end local _call_1 = _u539f_u59cb["转换"].root.gameObject local _call_2 = _call_1["父节点"](_call_1) local _call_3 = _call_2["后代节点"](_call_2) local _call_4 = _call_3["选择启用"](_call_3) local _call_5 = _call_4["选择可见"](_call_4) -local _call_6 = _call_5["标签相等"](_call_5, "fx") -local _call_7 = _call_6["筛选"](_call_6, function(_u5143_u7d20) - if _u5143_u7d20["是否目标"](_u5143_u7d20, _u5143_u7d20) then +local _call_6 = (_call_5["标签相等"](_call_5, "fx")) +local _call_7 = (_call_6["筛选"](_call_6, function(_u5143_u7d20) + if _u5143_u7d20["是否目标"](_u5143_u7d20) then return false end local _call_7 = _u5143_u7d20["名称"] - return _call_7["结束于"](_call_7, _call_7, "(Clone)") -end) + return _call_7["结束于"](_call_7, "(Clone)") +end)) local _u7ed3_u679c = _call_7["销毁"](_call_7) local _call_8 = _u539f_u70b9["变换"]["根节点"]["游戏对象"] local _call_9 = _call_8["父节点"](_call_8) local _call_10 = _call_9["后代节点"](_call_9) local _call_11 = _call_10["选择启用"](_call_10) local _call_12 = _call_11["选择可见"](_call_11) -local _call_13 = _call_12["标签相等"](_call_12, "fx") -local _call_14 = _call_13["筛选"](_call_13, function(_u5143_u7d20) +local _call_13 = (_call_12["标签相等"](_call_12, "fx")) +local _call_14 = (_call_13["筛选"](_call_13, function(_u5143_u7d20) local _call_14 = _u5143_u7d20["名称"] - return _call_14["结束于"](_call_14, _call_14, "(Clone)") -end) + return _call_14["结束于"](_call_14, "(Clone)") +end)) _call_14["销毁"](_call_14) do local _with_0 = _u9879_u76ee diff --git a/spec/outputs/unicode/syntax.lua b/spec/outputs/unicode/syntax.lua index 664fa46..f086db6 100644 --- a/spec/outputs/unicode/syntax.lua +++ b/spec/outputs/unicode/syntax.lua @@ -282,13 +282,16 @@ _ = 5 + _u4ec0_u4e48(_u65e0_u804a) _u4ec0_u4e48(_u65e0_u804a + 5) _ = 5 - _u4ec0_u4e48(_u65e0_u804a) _u4ec0_u4e48(_u65e0_u804a - 5) -_u53d8_u91cfx = _u4f60_u597d - _u4e16_u754c - _u67d0_u7269; +_u53d8_u91cfx = _u4f60_u597d - _u4e16_u754c - _u67d0_u7269 +local _anon_func_0 = function(_u4ec0_u4e48) + do + local _call_8 = _u4ec0_u4e48 + return _call_8["酷"](_call_8, 100) + end +end (function(_u67d0_u7269) if _u67d0_u7269 == nil then - _u67d0_u7269 = _u4e0e((function() - local _call_8 = _u4ec0_u4e48 - return _call_8["酷"](_call_8, 100) - end)()) + _u67d0_u7269 = _u4e0e(_anon_func_0(_u4ec0_u4e48)) end return _u6253_u5370(_u67d0_u7269) end)() diff --git a/spec/outputs/unicode/vararg.lua b/spec/outputs/unicode/vararg.lua index 41d1bfd..39fbf0c 100644 --- a/spec/outputs/unicode/vararg.lua +++ b/spec/outputs/unicode/vararg.lua @@ -1,211 +1,264 @@ -local _u8fde_u63a5 -_u8fde_u63a5 = function(...) - _u5e26_u6709((function() - local _with_0 = _u53d8_u91cfa - _with_0["函数"](_with_0) - return _with_0 - end)()) - _u5e26_u6709((function(...) - local _with_0 = _u53d8_u91cfa - _with_0["函数"](_with_0, ...) - return _with_0 - end)(...)) - _u5217_u8868_u751f_u6210((function() - local _accum_0 = { } - local _len_0 = 1 - for i = 1, 10 do - _accum_0[_len_0] = _u9879_u76ee[i] - _len_0 = _len_0 + 1 - end - return _accum_0 - end)()) - _u5217_u8868_u751f_u6210((function(...) - local _accum_0 = { } - local _len_0 = 1 - for i = 1, 10 do - _accum_0[_len_0] = _u9879_u76ee[i](...) - _len_0 = _len_0 + 1 - end - return _accum_0 - end)(...)) - _u5217_u8868_u751f_u6210((function() - local _accum_0 = { } - local _len_0 = 1 - local _list_0 = _u9879_u76ee - for _index_0 = 1, #_list_0 do - local _u7269_u54c1 = _list_0[_index_0] - _accum_0[_len_0] = _u7269_u54c1 - _len_0 = _len_0 + 1 - end - return _accum_0 - end)()) - _u5217_u8868_u751f_u6210((function(...) - local _accum_0 = { } - local _len_0 = 1 - local _list_0 = _u9879_u76ee - for _index_0 = 1, #_list_0 do - local _u7269_u54c1 = _list_0[_index_0] - _accum_0[_len_0] = _u7269_u54c1(...) - _len_0 = _len_0 + 1 +local _anon_func_0 = function(_u53d8_u91cfa) + _u53d8_u91cfa["函数"](_u53d8_u91cfa) + return _u53d8_u91cfa +end +local _anon_func_1 = function(_u53d8_u91cfa, ...) + _u53d8_u91cfa["函数"](_u53d8_u91cfa, ...) + return _u53d8_u91cfa +end +local _anon_func_2 = function(_u9879_u76ee) + local _accum_0 = { } + local _len_0 = 1 + for i = 1, 10 do + _accum_0[_len_0] = _u9879_u76ee[i] + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_3 = function(_u9879_u76ee, ...) + local _accum_0 = { } + local _len_0 = 1 + for i = 1, 10 do + _accum_0[_len_0] = _u9879_u76ee[i](...) + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_4 = function(_u9879_u76ee) + local _accum_0 = { } + local _len_0 = 1 + for _index_0 = 1, #_u9879_u76ee do + local _u7269_u54c1 = _u9879_u76ee[_index_0] + _accum_0[_len_0] = _u7269_u54c1 + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_5 = function(_u9879_u76ee, ...) + local _accum_0 = { } + local _len_0 = 1 + for _index_0 = 1, #_u9879_u76ee do + local _u7269_u54c1 = _u9879_u76ee[_index_0] + _accum_0[_len_0] = _u7269_u54c1(...) + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_6 = function(setmetatable, _u51fd_u6570) + local _u53d8_u91cfA + do + local _class_0 + local _base_0 = { } + if _base_0.__index == nil then + _base_0.__index = _base_0 end - return _accum_0 - end)(...)) - _u7c7b_u751f_u6210((function() - local _u53d8_u91cfA - do - local _class_0 - local _base_0 = { } - if _base_0.__index == nil then - _base_0.__index = _base_0 + _class_0 = setmetatable({ + __init = function() end, + __base = _base_0, + __name = "变量A" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({ }, _base_0) + cls.__init(_self_0, ...) + return _self_0 end - _class_0 = setmetatable({ - __init = function() end, - __base = _base_0, - __name = "变量A" - }, { - __index = _base_0, - __call = function(cls, ...) - local _self_0 = setmetatable({ }, _base_0) - cls.__init(_self_0, ...) - return _self_0 - end - }) - _base_0.__class = _class_0 - local self = _class_0; - _u51fd_u6570() - _u53d8_u91cfA = _class_0 - return _class_0 + }) + _base_0.__class = _class_0 + local self = _class_0; + _u51fd_u6570() + _u53d8_u91cfA = _class_0 + return _class_0 + end +end +local _anon_func_7 = function(setmetatable, _u51fd_u6570, ...) + local _u53d8_u91cfA + do + local _class_0 + local _base_0 = { } + if _base_0.__index == nil then + _base_0.__index = _base_0 end - end)()) - _u7c7b_u751f_u6210((function(...) - local _u53d8_u91cfA - do - local _class_0 - local _base_0 = { } - if _base_0.__index == nil then - _base_0.__index = _base_0 + _class_0 = setmetatable({ + __init = function() end, + __base = _base_0, + __name = "变量A" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({ }, _base_0) + cls.__init(_self_0, ...) + return _self_0 end - _class_0 = setmetatable({ - __init = function() end, - __base = _base_0, - __name = "变量A" - }, { - __index = _base_0, - __call = function(cls, ...) - local _self_0 = setmetatable({ }, _base_0) - cls.__init(_self_0, ...) - return _self_0 - end - }) - _base_0.__class = _class_0 - local self = _class_0; - _u51fd_u6570(...) - _u53d8_u91cfA = _class_0 - return _class_0 - end - end)(...)) - _u8868_u751f_u6210((function() - local _tbl_0 = { } - for _u952e, _u503c in pairs(_u8868) do - _tbl_0[_u952e] = _u503c - end - return _tbl_0 - end)()) - _u8868_u751f_u6210((function(...) - local _tbl_0 = { } - for _u952e, _u503c in pairs(_u8868) do - _tbl_0[_u952e] = _u503c(...) - end - return _tbl_0 - end)(...)) - _u8868_u751f_u6210((function() - local _tbl_0 = { } - local _list_0 = _u9879_u76ee - for _index_0 = 1, #_list_0 do - local _u7269_u54c1 = _list_0[_index_0] - _tbl_0[_u7269_u54c1] = true - end - return _tbl_0 - end)()) - _u8868_u751f_u6210((function(...) - local _tbl_0 = { } - local _list_0 = _u9879_u76ee - for _index_0 = 1, #_list_0 do - local _u7269_u54c1 = _list_0[_index_0] - _tbl_0[_u7269_u54c1(...)] = true - end - return _tbl_0 - end)(...)) - _u505a_u64cd_u4f5c((function() + }) + _base_0.__class = _class_0 + local self = _class_0; + _u51fd_u6570(...) + _u53d8_u91cfA = _class_0 + return _class_0 + end +end +local _anon_func_8 = function(pairs, _u8868) + local _tbl_0 = { } + for _u952e, _u503c in pairs(_u8868) do + _tbl_0[_u952e] = _u503c + end + return _tbl_0 +end +local _anon_func_9 = function(pairs, _u8868, ...) + local _tbl_0 = { } + for _u952e, _u503c in pairs(_u8868) do + _tbl_0[_u952e] = _u503c(...) + end + return _tbl_0 +end +local _anon_func_10 = function(_u9879_u76ee) + local _tbl_0 = { } + for _index_0 = 1, #_u9879_u76ee do + local _u7269_u54c1 = _u9879_u76ee[_index_0] + _tbl_0[_u7269_u54c1] = true + end + return _tbl_0 +end +local _anon_func_11 = function(_u9879_u76ee, ...) + local _tbl_0 = { } + for _index_0 = 1, #_u9879_u76ee do + local _u7269_u54c1 = _u9879_u76ee[_index_0] + _tbl_0[_u7269_u54c1(...)] = true + end + return _tbl_0 +end +local _anon_func_12 = function(_u51fd_u6570) + do return _u51fd_u6570() - end)()) - _u505a_u64cd_u4f5c((function(...) + end +end +local _anon_func_13 = function(_u51fd_u6570, ...) + do return _u51fd_u6570(...) - end)(...)) - _u5f53_u64cd_u4f5c((function() - local _accum_0 = { } - local _len_0 = 1 - while false do - _accum_0[_len_0] = _u51fd_u6570() - _len_0 = _len_0 + 1 - end - return _accum_0 - end)()) - _u5f53_u64cd_u4f5c((function(...) - local _accum_0 = { } - local _len_0 = 1 - while false do - _accum_0[_len_0] = _u51fd_u6570(...) - _len_0 = _len_0 + 1 - end - return _accum_0 - end)(...)) - _u5982_u679c_u64cd_u4f5c((function() - if false then - return _u51fd_u6570() - end - end)()) - _u5982_u679c_u64cd_u4f5c((function(...) - if false then - return _u51fd_u6570(...) - end - end)(...)) - _u9664_u975e_u64cd_u4f5c((function() - if not true then - return _u51fd_u6570() - end - end)()) - _u9664_u975e_u64cd_u4f5c((function(...) - if not true then - return _u51fd_u6570(...) - end - end)(...)) - _u5207_u6362_u64cd_u4f5c((function() - local _exp_0 = _u53d8_u91cfx - if "abc" == _exp_0 then - return _u51fd_u6570() - end - end)()) - _u5207_u6362_u64cd_u4f5c((function(...) - local _exp_0 = _u53d8_u91cfx - if "abc" == _exp_0 then - return _u51fd_u6570(...) - end - end)(...)) - _u8868_u8fbe_u5f0f_u64cd_u4f5c((function() - local _obj_0 = _u51fd_u6570 - if _obj_0 ~= nil then - return _obj_0() - end - return nil - end)()) - _u8868_u8fbe_u5f0f_u64cd_u4f5c((function(...) - local _obj_0 = _u51fd_u6570 - if _obj_0 ~= nil then - return _obj_0(...) - end - return nil - end)(...)) + end +end +local _anon_func_14 = function(_u51fd_u6570) + local _accum_0 = { } + local _len_0 = 1 + while false do + _accum_0[_len_0] = _u51fd_u6570() + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_15 = function(_u51fd_u6570, ...) + local _accum_0 = { } + local _len_0 = 1 + while false do + _accum_0[_len_0] = _u51fd_u6570(...) + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_16 = function(_u51fd_u6570) + if false then + return _u51fd_u6570() + end +end +local _anon_func_17 = function(_u51fd_u6570, ...) + if false then + return _u51fd_u6570(...) + end +end +local _anon_func_18 = function(_u51fd_u6570) + if not true then + return _u51fd_u6570() + end +end +local _anon_func_19 = function(_u51fd_u6570, ...) + if not true then + return _u51fd_u6570(...) + end +end +local _anon_func_20 = function(_u53d8_u91cfx, _u51fd_u6570) + if "abc" == _u53d8_u91cfx then + return _u51fd_u6570() + end +end +local _anon_func_21 = function(_u53d8_u91cfx, _u51fd_u6570, ...) + if "abc" == _u53d8_u91cfx then + return _u51fd_u6570(...) + end +end +local _anon_func_22 = function(_u51fd_u6570) + if _u51fd_u6570 ~= nil then + return _u51fd_u6570() + end + return nil +end +local _anon_func_23 = function(_u51fd_u6570, ...) + if _u51fd_u6570 ~= nil then + return _u51fd_u6570(...) + end + return nil +end +local _anon_func_24 = function(select, _u6253_u5370, ...) + do + _u6253_u5370(select("#", ...)) + return _u6253_u5370(...) + end +end +local _anon_func_25 = function(_u6253_u5370, ...) + do + return _u6253_u5370(...) + end +end +local _anon_func_26 = function(_u53d8_u91cfx, _u8868, _u88682) + if 1 == _u53d8_u91cfx then + _u8868["变量x"] = 123 + return _u8868 + else + return _u88682 + end +end +local _anon_func_27 = function(_u6253_u5370, ...) + do + return _u6253_u5370(...) + end +end +local _anon_func_28 = function(_u6761_u4ef6) + if _u6761_u4ef6 then + return 3, 4, 5 + end +end +local _anon_func_29 = function(_u6253_u5370, _arg_0, ...) + do + local _u8868 = _arg_0 + return _u6253_u5370(...) + end +end +local _u8fde_u63a5 +_u8fde_u63a5 = function(...) + _u5e26_u6709(_anon_func_0(_u53d8_u91cfa)) + _u5e26_u6709(_anon_func_1(_u53d8_u91cfa, ...)) + _u5217_u8868_u751f_u6210(_anon_func_2(_u9879_u76ee)) + _u5217_u8868_u751f_u6210(_anon_func_3(_u9879_u76ee, ...)) + _u5217_u8868_u751f_u6210(_anon_func_4(_u9879_u76ee)) + _u5217_u8868_u751f_u6210(_anon_func_5(_u9879_u76ee, ...)) + _u7c7b_u751f_u6210(_anon_func_6(setmetatable, _u51fd_u6570)) + _u7c7b_u751f_u6210(_anon_func_7(setmetatable, _u51fd_u6570, ...)) + _u8868_u751f_u6210(_anon_func_8(pairs, _u8868)) + _u8868_u751f_u6210(_anon_func_9(pairs, _u8868, ...)) + _u8868_u751f_u6210(_anon_func_10(_u9879_u76ee)) + _u8868_u751f_u6210(_anon_func_11(_u9879_u76ee, ...)) + _u505a_u64cd_u4f5c(_anon_func_12(_u51fd_u6570)) + _u505a_u64cd_u4f5c(_anon_func_13(_u51fd_u6570, ...)) + _u5f53_u64cd_u4f5c(_anon_func_14(_u51fd_u6570)) + _u5f53_u64cd_u4f5c(_anon_func_15(_u51fd_u6570, ...)) + _u5982_u679c_u64cd_u4f5c(_anon_func_16(_u51fd_u6570)) + _u5982_u679c_u64cd_u4f5c(_anon_func_17(_u51fd_u6570, ...)) + _u9664_u975e_u64cd_u4f5c(_anon_func_18(_u51fd_u6570)) + _u9664_u975e_u64cd_u4f5c(_anon_func_19(_u51fd_u6570, ...)) + _u5207_u6362_u64cd_u4f5c(_anon_func_20(_u53d8_u91cfx, _u51fd_u6570)) + _u5207_u6362_u64cd_u4f5c(_anon_func_21(_u53d8_u91cfx, _u51fd_u6570, ...)) + _u8868_u8fbe_u5f0f_u64cd_u4f5c(_anon_func_22(_u51fd_u6570)) + _u8868_u8fbe_u5f0f_u64cd_u4f5c(_anon_func_23(_u51fd_u6570, ...)) _u5192_u53f7((function() local _base_0 = f() local _fn_0 = _base_0["函数"] @@ -240,40 +293,17 @@ _u8fde_u63a5 = function(...) _u591a_u53c2_u6570_u51fd_u6570 = function() return 10, nil, 20, nil, 30 end - return (function(...) - _u6253_u5370(select("#", ...)) - return _u6253_u5370(...) - end)(_u591a_u53c2_u6570_u51fd_u6570()) + return _anon_func_24(select, _u6253_u5370, _u591a_u53c2_u6570_u51fd_u6570()) end)(_u51fd_u6570_u540d(true)) end do - (function(...) - return _u6253_u5370(...) - end)((function() - local _exp_0 = _u53d8_u91cfx - if 1 == _exp_0 then - local _with_0 = _u8868 - _with_0["变量x"] = 123 - return _with_0 - else - return _u88682 - end - end)()) + _anon_func_25(_u6253_u5370, _anon_func_26(_u53d8_u91cfx, _u8868, _u88682)) end do - (function(...) - return _u6253_u5370(...) - end)(1, 2, (function() - if _u6761_u4ef6 then - return 3, 4, 5 - end - end)()) + _anon_func_27(_u6253_u5370, 1, 2, _anon_func_28(_u6761_u4ef6)) end do - (function(_arg_0, ...) - local _u8868 = _arg_0 - return _u6253_u5370(...) - end)({ + _anon_func_29(_u6253_u5370, { ["名字"] = "abc", ["值"] = 123 }) diff --git a/spec/outputs/vararg.lua b/spec/outputs/vararg.lua index ea40da1..39becd4 100644 --- a/spec/outputs/vararg.lua +++ b/spec/outputs/vararg.lua @@ -1,211 +1,264 @@ -local join -join = function(...) - f_with((function() - local _with_0 = a - _with_0:func() - return _with_0 - end)()) - f_with((function(...) - local _with_0 = a - _with_0:func(...) - return _with_0 - end)(...)) - f_listcomp((function() - local _accum_0 = { } - local _len_0 = 1 - for i = 1, 10 do - _accum_0[_len_0] = items[i] - _len_0 = _len_0 + 1 - end - return _accum_0 - end)()) - f_listcomp((function(...) - local _accum_0 = { } - local _len_0 = 1 - for i = 1, 10 do - _accum_0[_len_0] = items[i](...) - _len_0 = _len_0 + 1 - end - return _accum_0 - end)(...)) - f_listcomp((function() - local _accum_0 = { } - local _len_0 = 1 - local _list_0 = items - for _index_0 = 1, #_list_0 do - local item = _list_0[_index_0] - _accum_0[_len_0] = item - _len_0 = _len_0 + 1 - end - return _accum_0 - end)()) - f_listcomp((function(...) - local _accum_0 = { } - local _len_0 = 1 - local _list_0 = items - for _index_0 = 1, #_list_0 do - local item = _list_0[_index_0] - _accum_0[_len_0] = item(...) - _len_0 = _len_0 + 1 +local _anon_func_0 = function(a) + a:func() + return a +end +local _anon_func_1 = function(a, ...) + a:func(...) + return a +end +local _anon_func_2 = function(items) + local _accum_0 = { } + local _len_0 = 1 + for i = 1, 10 do + _accum_0[_len_0] = items[i] + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_3 = function(items, ...) + local _accum_0 = { } + local _len_0 = 1 + for i = 1, 10 do + _accum_0[_len_0] = items[i](...) + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_4 = function(items) + local _accum_0 = { } + local _len_0 = 1 + for _index_0 = 1, #items do + local item = items[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_5 = function(items, ...) + local _accum_0 = { } + local _len_0 = 1 + for _index_0 = 1, #items do + local item = items[_index_0] + _accum_0[_len_0] = item(...) + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_6 = function(setmetatable, func) + local A + do + local _class_0 + local _base_0 = { } + if _base_0.__index == nil then + _base_0.__index = _base_0 end - return _accum_0 - end)(...)) - f_class((function() - local A - do - local _class_0 - local _base_0 = { } - if _base_0.__index == nil then - _base_0.__index = _base_0 + _class_0 = setmetatable({ + __init = function() end, + __base = _base_0, + __name = "A" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({ }, _base_0) + cls.__init(_self_0, ...) + return _self_0 end - _class_0 = setmetatable({ - __init = function() end, - __base = _base_0, - __name = "A" - }, { - __index = _base_0, - __call = function(cls, ...) - local _self_0 = setmetatable({ }, _base_0) - cls.__init(_self_0, ...) - return _self_0 - end - }) - _base_0.__class = _class_0 - local self = _class_0; - func() - A = _class_0 - return _class_0 + }) + _base_0.__class = _class_0 + local self = _class_0; + func() + A = _class_0 + return _class_0 + end +end +local _anon_func_7 = function(setmetatable, func, ...) + local A + do + local _class_0 + local _base_0 = { } + if _base_0.__index == nil then + _base_0.__index = _base_0 end - end)()) - f_class((function(...) - local A - do - local _class_0 - local _base_0 = { } - if _base_0.__index == nil then - _base_0.__index = _base_0 + _class_0 = setmetatable({ + __init = function() end, + __base = _base_0, + __name = "A" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({ }, _base_0) + cls.__init(_self_0, ...) + return _self_0 end - _class_0 = setmetatable({ - __init = function() end, - __base = _base_0, - __name = "A" - }, { - __index = _base_0, - __call = function(cls, ...) - local _self_0 = setmetatable({ }, _base_0) - cls.__init(_self_0, ...) - return _self_0 - end - }) - _base_0.__class = _class_0 - local self = _class_0; - func(...) - A = _class_0 - return _class_0 - end - end)(...)) - f_tblcomp((function() - local _tbl_0 = { } - for k, v in pairs(tb) do - _tbl_0[k] = v - end - return _tbl_0 - end)()) - f_tblcomp((function(...) - local _tbl_0 = { } - for k, v in pairs(tb) do - _tbl_0[k] = v(...) - end - return _tbl_0 - end)(...)) - f_tblcomp((function() - local _tbl_0 = { } - local _list_0 = items - for _index_0 = 1, #_list_0 do - local item = _list_0[_index_0] - _tbl_0[item] = true - end - return _tbl_0 - end)()) - f_tblcomp((function(...) - local _tbl_0 = { } - local _list_0 = items - for _index_0 = 1, #_list_0 do - local item = _list_0[_index_0] - _tbl_0[item(...)] = true - end - return _tbl_0 - end)(...)) - f_do((function() + }) + _base_0.__class = _class_0 + local self = _class_0; + func(...) + A = _class_0 + return _class_0 + end +end +local _anon_func_8 = function(pairs, tb) + local _tbl_0 = { } + for k, v in pairs(tb) do + _tbl_0[k] = v + end + return _tbl_0 +end +local _anon_func_9 = function(pairs, tb, ...) + local _tbl_0 = { } + for k, v in pairs(tb) do + _tbl_0[k] = v(...) + end + return _tbl_0 +end +local _anon_func_10 = function(items) + local _tbl_0 = { } + for _index_0 = 1, #items do + local item = items[_index_0] + _tbl_0[item] = true + end + return _tbl_0 +end +local _anon_func_11 = function(items, ...) + local _tbl_0 = { } + for _index_0 = 1, #items do + local item = items[_index_0] + _tbl_0[item(...)] = true + end + return _tbl_0 +end +local _anon_func_12 = function(func) + do return func() - end)()) - f_do((function(...) + end +end +local _anon_func_13 = function(func, ...) + do return func(...) - end)(...)) - f_while((function() - local _accum_0 = { } - local _len_0 = 1 - while false do - _accum_0[_len_0] = func() - _len_0 = _len_0 + 1 - end - return _accum_0 - end)()) - f_while((function(...) - local _accum_0 = { } - local _len_0 = 1 - while false do - _accum_0[_len_0] = func(...) - _len_0 = _len_0 + 1 - end - return _accum_0 - end)(...)) - f_if((function() - if false then - return func() - end - end)()) - f_if((function(...) - if false then - return func(...) - end - end)(...)) - f_unless((function() - if not true then - return func() - end - end)()) - f_unless((function(...) - if not true then - return func(...) - end - end)(...)) - f_switch((function() - local _exp_0 = x - if "abc" == _exp_0 then - return func() - end - end)()) - f_switch((function(...) - local _exp_0 = x - if "abc" == _exp_0 then - return func(...) - end - end)(...)) - f_eop((function() - local _obj_0 = func - if _obj_0 ~= nil then - return _obj_0() - end - return nil - end)()) - f_eop((function(...) - local _obj_0 = func - if _obj_0 ~= nil then - return _obj_0(...) - end - return nil - end)(...)) + end +end +local _anon_func_14 = function(func) + local _accum_0 = { } + local _len_0 = 1 + while false do + _accum_0[_len_0] = func() + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_15 = function(func, ...) + local _accum_0 = { } + local _len_0 = 1 + while false do + _accum_0[_len_0] = func(...) + _len_0 = _len_0 + 1 + end + return _accum_0 +end +local _anon_func_16 = function(func) + if false then + return func() + end +end +local _anon_func_17 = function(func, ...) + if false then + return func(...) + end +end +local _anon_func_18 = function(func) + if not true then + return func() + end +end +local _anon_func_19 = function(func, ...) + if not true then + return func(...) + end +end +local _anon_func_20 = function(x, func) + if "abc" == x then + return func() + end +end +local _anon_func_21 = function(x, func, ...) + if "abc" == x then + return func(...) + end +end +local _anon_func_22 = function(func) + if func ~= nil then + return func() + end + return nil +end +local _anon_func_23 = function(func, ...) + if func ~= nil then + return func(...) + end + return nil +end +local _anon_func_24 = function(select, print, ...) + do + print(select("#", ...)) + return print(...) + end +end +local _anon_func_25 = function(print, ...) + do + return print(...) + end +end +local _anon_func_26 = function(x, tb, tb2) + if 1 == x then + tb.x = 123 + return tb + else + return tb2 + end +end +local _anon_func_27 = function(print, ...) + do + return print(...) + end +end +local _anon_func_28 = function(cond) + if cond then + return 3, 4, 5 + end +end +local _anon_func_29 = function(print, _arg_0, ...) + do + local tb = _arg_0 + return print(...) + end +end +local join +join = function(...) + f_with(_anon_func_0(a)) + f_with(_anon_func_1(a, ...)) + f_listcomp(_anon_func_2(items)) + f_listcomp(_anon_func_3(items, ...)) + f_listcomp(_anon_func_4(items)) + f_listcomp(_anon_func_5(items, ...)) + f_class(_anon_func_6(setmetatable, func)) + f_class(_anon_func_7(setmetatable, func, ...)) + f_tblcomp(_anon_func_8(pairs, tb)) + f_tblcomp(_anon_func_9(pairs, tb, ...)) + f_tblcomp(_anon_func_10(items)) + f_tblcomp(_anon_func_11(items, ...)) + f_do(_anon_func_12(func)) + f_do(_anon_func_13(func, ...)) + f_while(_anon_func_14(func)) + f_while(_anon_func_15(func, ...)) + f_if(_anon_func_16(func)) + f_if(_anon_func_17(func, ...)) + f_unless(_anon_func_18(func)) + f_unless(_anon_func_19(func, ...)) + f_switch(_anon_func_20(x, func)) + f_switch(_anon_func_21(x, func, ...)) + f_eop(_anon_func_22(func)) + f_eop(_anon_func_23(func, ...)) f_colon((function() local _base_0 = f() local _fn_0 = _base_0.func @@ -240,40 +293,17 @@ join = function(...) fn_many_args = function() return 10, nil, 20, nil, 30 end - return (function(...) - print(select("#", ...)) - return print(...) - end)(fn_many_args()) + return _anon_func_24(select, print, fn_many_args()) end)(fn(true)) end do - (function(...) - return print(...) - end)((function() - local _exp_0 = x - if 1 == _exp_0 then - local _with_0 = tb - _with_0.x = 123 - return _with_0 - else - return tb2 - end - end)()) + _anon_func_25(print, _anon_func_26(x, tb, tb2)) end do - (function(...) - return print(...) - end)(1, 2, (function() - if cond then - return 3, 4, 5 - end - end)()) + _anon_func_27(print, 1, 2, _anon_func_28(cond)) end do - (function(_arg_0, ...) - local tb = _arg_0 - return print(...) - end)({ + _anon_func_29(print, { name = "abc", value = 123 }) -- cgit v1.2.3-55-g6feb