From 06bf167924d04aaefe80d6e4ead40989a447ea34 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Fri, 17 May 2024 16:38:44 +0800 Subject: fix more cases in try-catch syntax. --- spec/inputs/try_catch.yue | 7 +++ spec/inputs/upvalue_func.yue | 2 + spec/outputs/5.1/attrib.lua | 4 +- spec/outputs/5.1/try_catch.lua | 47 ++++++++++++++------ spec/outputs/codes_from_doc.lua | 56 ++++++++++++++++-------- spec/outputs/codes_from_doc_zh.lua | 56 ++++++++++++++++-------- spec/outputs/try_catch.lua | 89 ++++++++++++++++++++++++++------------ spec/outputs/unicode/try_catch.lua | 58 +++++++++++++++++-------- spec/outputs/upvalue_func.lua | 48 ++++++++++---------- 9 files changed, 246 insertions(+), 121 deletions(-) (limited to 'spec') diff --git a/spec/inputs/try_catch.yue b/spec/inputs/try_catch.yue index 419eef4..4e05bc6 100644 --- a/spec/inputs/try_catch.yue +++ b/spec/inputs/try_catch.yue @@ -20,6 +20,8 @@ f = -> success, result = try func 1, 2, 3 + tb = {} + try tb.func try tb.func! try tb.func() @@ -57,4 +59,9 @@ f = -> try func 1, 2, 3 + do + <- x + local tb, a, b, c + f = -> try tb.f a, b, c + nil diff --git a/spec/inputs/upvalue_func.yue b/spec/inputs/upvalue_func.yue index 159be76..d4b3273 100644 --- a/spec/inputs/upvalue_func.yue +++ b/spec/inputs/upvalue_func.yue @@ -210,6 +210,8 @@ do buff_strength = (char, item) -> item.buffer.strength? char.stats.strength?::ref() + local debug_env_before, debug_env_after + exe_func = (func, env) -> ok, ... = try debug_env_before(env) diff --git a/spec/outputs/5.1/attrib.lua b/spec/outputs/5.1/attrib.lua index 9cacd97..8361b24 100644 --- a/spec/outputs/5.1/attrib.lua +++ b/spec/outputs/5.1/attrib.lua @@ -199,7 +199,9 @@ do end }) local _close_2 = assert(getmetatable(_).__close) - return _anon_func_9(_, _close_2, error, pcall(print, "third")) + return _anon_func_9(_, _close_2, error, pcall(function() + return print("third") + end)) end)) end)) end diff --git a/spec/outputs/5.1/try_catch.lua b/spec/outputs/5.1/try_catch.lua index f63cd91..d4c80c1 100644 --- a/spec/outputs/5.1/try_catch.lua +++ b/spec/outputs/5.1/try_catch.lua @@ -1,9 +1,8 @@ -local _anon_func_0 = function(func, print) - print("trying") - return func(1, 2, 3) +local _anon_func_0 = function(tb) + return tb.func end local _anon_func_1 = function(tb) - return tb.func + return tb.func() end local _anon_func_2 = function(tb) return tb.func() @@ -12,16 +11,16 @@ local _anon_func_3 = function(tb) return tb.func() end local _anon_func_4 = function(tb) - return tb.func() + return tb:func(1, 2, 3) end local _anon_func_5 = function(tb) - return tb:func(1, 2, 3) + return tb.func(1) end local _anon_func_6 = function(tb) return tb.func(1) end -local _anon_func_7 = function(tb) - return tb.func(1) +local _anon_func_7 = function(a, b, c, tb) + return tb.f(a, b, c) end local f f = function() @@ -35,22 +34,28 @@ f = function() end, function(err) return print(err) end) - pcall(_anon_func_0, func, print) + pcall(function() + print("trying") + return func(1, 2, 3) + end) do local success, result = xpcall(function() return func(1, 2, 3) end, function(err) return print(err) end) - success, result = pcall(func, 1, 2, 3) + success, result = pcall(function() + return func(1, 2, 3) + end) end + local tb = { } + pcall(_anon_func_0, tb) pcall(_anon_func_1, tb) pcall(_anon_func_2, tb) pcall(_anon_func_3, tb) pcall(_anon_func_4, tb) pcall(_anon_func_5, tb) pcall(_anon_func_6, tb) - pcall(_anon_func_7, tb) if (xpcall(function() return func(1) end, function(err) @@ -67,7 +72,9 @@ f = function() end do do - local success, result = pcall(func, "abc", 123) + local success, result = pcall(function() + return func("abc", 123) + end) if success then print(result) end @@ -87,8 +94,20 @@ f = function() end end do - pcall(func, 1, 2, 3) - pcall(func, 1, 2, 3) + pcall(function() + return func(1, 2, 3) + end) + pcall(function() + return func(1, 2, 3) + end) + end + do + x(function() + local tb, a, b, c + f = function() + return pcall(_anon_func_7, a, b, c, tb) + end + end) end return nil end diff --git a/spec/outputs/codes_from_doc.lua b/spec/outputs/codes_from_doc.lua index b2ba836..6f61569 100644 --- a/spec/outputs/codes_from_doc.lua +++ b/spec/outputs/codes_from_doc.lua @@ -608,23 +608,33 @@ end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) end):subscribe(print) local str = strA .. strB .. strC func(3000, "192.168.1.1") -xpcall(func, function(err) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -local success, result = xpcall(func, function(err) +end) +local success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return yue.traceback(err) -end, 1, 2, 3) -xpcall(func, function(err) +end) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -success, result = pcall(func, 1, 2, 3) +end) +success, result = pcall(function() + return func(1, 2, 3) +end) pcall(function() print("trying") return func(1, 2, 3) end) -success, result = xpcall(func, function(err) +success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) +end) if success then print(result) end @@ -2595,23 +2605,33 @@ end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) end):subscribe(print) local str = strA .. strB .. strC func(3000, "192.168.1.1") -xpcall(func, function(err) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -local success, result = xpcall(func, function(err) +end) +local success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return yue.traceback(err) -end, 1, 2, 3) -xpcall(func, function(err) +end) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -success, result = pcall(func, 1, 2, 3) +end) +success, result = pcall(function() + return func(1, 2, 3) +end) pcall(function() print("trying") return func(1, 2, 3) end) -success, result = xpcall(func, function(err) +success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) +end) if success then print(result) end diff --git a/spec/outputs/codes_from_doc_zh.lua b/spec/outputs/codes_from_doc_zh.lua index 3f9615f..aa53926 100644 --- a/spec/outputs/codes_from_doc_zh.lua +++ b/spec/outputs/codes_from_doc_zh.lua @@ -608,23 +608,33 @@ end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) end):subscribe(print) local str = strA .. strB .. strC func(3000, "192.168.1.1") -xpcall(func, function(err) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -local success, result = xpcall(func, function(err) +end) +local success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return yue.traceback(err) -end, 1, 2, 3) -xpcall(func, function(err) +end) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -success, result = pcall(func, 1, 2, 3) +end) +success, result = pcall(function() + return func(1, 2, 3) +end) pcall(function() print("尝试中") return func(1, 2, 3) end) -success, result = xpcall(func, function(err) +success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) +end) if success then print(result) end @@ -2589,23 +2599,33 @@ end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) end):subscribe(print) local str = strA .. strB .. strC func(3000, "192.168.1.1") -xpcall(func, function(err) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -local success, result = xpcall(func, function(err) +end) +local success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return yue.traceback(err) -end, 1, 2, 3) -xpcall(func, function(err) +end) +xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) -success, result = pcall(func, 1, 2, 3) +end) +success, result = pcall(function() + return func(1, 2, 3) +end) pcall(function() print("尝试中") return func(1, 2, 3) end) -success, result = xpcall(func, function(err) +success, result = xpcall(function() + return func(1, 2, 3) +end, function(err) return print(yue.traceback(err)) -end, 1, 2, 3) +end) if success then print(result) end diff --git a/spec/outputs/try_catch.lua b/spec/outputs/try_catch.lua index 3c3dd3c..d4c80c1 100644 --- a/spec/outputs/try_catch.lua +++ b/spec/outputs/try_catch.lua @@ -1,9 +1,8 @@ -local _anon_func_0 = function(func, print) - print("trying") - return func(1, 2, 3) +local _anon_func_0 = function(tb) + return tb.func end local _anon_func_1 = function(tb) - return tb.func + return tb.func() end local _anon_func_2 = function(tb) return tb.func() @@ -12,69 +11,103 @@ local _anon_func_3 = function(tb) return tb.func() end local _anon_func_4 = function(tb) - return tb.func() + return tb:func(1, 2, 3) end local _anon_func_5 = function(tb) - return tb:func(1, 2, 3) + return tb.func(1) end local _anon_func_6 = function(tb) return tb.func(1) end -local _anon_func_7 = function(tb) - return tb.func(1) +local _anon_func_7 = function(a, b, c, tb) + return tb.f(a, b, c) end local f f = function() - xpcall(func, function(err) + xpcall(function() + return func(1, 2, 3) + end, function(err) return print(err) - end, 1, 2, 3) - xpcall(func, function(err) + end) + xpcall(function() + return func(1, 2, 3) + end, function(err) return print(err) - end, 1, 2, 3) - pcall(_anon_func_0, func, print) + end) + pcall(function() + print("trying") + return func(1, 2, 3) + end) do - local success, result = xpcall(func, function(err) + local success, result = xpcall(function() + return func(1, 2, 3) + end, function(err) return print(err) - end, 1, 2, 3) - success, result = pcall(func, 1, 2, 3) + end) + success, result = pcall(function() + return func(1, 2, 3) + end) end + local tb = { } + pcall(_anon_func_0, tb) pcall(_anon_func_1, tb) pcall(_anon_func_2, tb) pcall(_anon_func_3, tb) pcall(_anon_func_4, tb) pcall(_anon_func_5, tb) pcall(_anon_func_6, tb) - pcall(_anon_func_7, tb) - if (xpcall(func, function(err) + if (xpcall(function() + return func(1) + end, function(err) return print(err) - end, 1)) then + end)) then print("OK") end - if xpcall((func), function(err) + if xpcall(function() + return func(1) + end, function(err) return print(err) - end, 1) then + end) then print("OK") end do do - local success, result = pcall(func, "abc", 123) + local success, result = pcall(function() + return func("abc", 123) + end) if success then print(result) end end - local success, result = xpcall(func, function(err) + local success, result = xpcall(function() + return func("abc", 123) + end, function(err) return print(err) - end, "abc", 123) - success, result = xpcall(func, function(err) + end) + success, result = xpcall(function() + return func("abc", 123) + end, function(err) return print(err) - end, "abc", 123) + end) if success then print(result) end end do - pcall(func, 1, 2, 3) - pcall(func, 1, 2, 3) + pcall(function() + return func(1, 2, 3) + end) + pcall(function() + return func(1, 2, 3) + end) + end + do + x(function() + local tb, a, b, c + f = function() + return pcall(_anon_func_7, a, b, c, tb) + end + end) end return nil end diff --git a/spec/outputs/unicode/try_catch.lua b/spec/outputs/unicode/try_catch.lua index 7d95f9b..22f29f9 100644 --- a/spec/outputs/unicode/try_catch.lua +++ b/spec/outputs/unicode/try_catch.lua @@ -1,18 +1,26 @@ -xpcall(_u51fd_u6570, function(_u9519_u8bef) +xpcall(function() + return _u51fd_u6570(1, 2, 3) +end, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) -end, 1, 2, 3) -xpcall(_u51fd_u6570, function(_u9519_u8bef) +end) +xpcall(function() + return _u51fd_u6570(1, 2, 3) +end, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) -end, 1, 2, 3) +end) pcall(function() _u6253_u5370("正在try") return _u51fd_u6570(1, 2, 3) end) do - local _u6210_u529f, _u7ed3_u679c = xpcall(_u51fd_u6570, function(_u9519_u8bef) + local _u6210_u529f, _u7ed3_u679c = xpcall(function() + return _u51fd_u6570(1, 2, 3) + end, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) - end, 1, 2, 3) - _u6210_u529f, _u7ed3_u679c = pcall(_u51fd_u6570, 1, 2, 3) + end) + _u6210_u529f, _u7ed3_u679c = pcall(function() + return _u51fd_u6570(1, 2, 3) + end) end pcall(function() return _u8868["函数"] @@ -36,35 +44,49 @@ end) pcall(function() return _u8868["函数"](1) end) -if (xpcall(_u51fd_u6570, function(_u9519_u8bef) +if (xpcall(function() + return _u51fd_u6570(1) +end, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) -end, 1)) then +end)) then _u6253_u5370("好的") end -if xpcall((_u51fd_u6570), function(_u9519_u8bef) +if xpcall(function() + return _u51fd_u6570(1) +end, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) -end, 1) then +end) then _u6253_u5370("好的") end do do - local _u6210_u529f, _u7ed3_u679c = pcall(_u51fd_u6570, "abc", 123) + local _u6210_u529f, _u7ed3_u679c = pcall(function() + return _u51fd_u6570("abc", 123) + end) if _u6210_u529f then _u6253_u5370(_u7ed3_u679c) end end - local _u6210_u529f, _u7ed3_u679c = xpcall(_u51fd_u6570, function(_u9519_u8bef) + local _u6210_u529f, _u7ed3_u679c = xpcall(function() + return _u51fd_u6570("abc", 123) + end, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) - end, "abc", 123) - _u6210_u529f, _u7ed3_u679c = xpcall(_u51fd_u6570, function(_u9519_u8bef) + end) + _u6210_u529f, _u7ed3_u679c = xpcall(function() + return _u51fd_u6570("abc", 123) + end, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) - end, "abc", 123) + end) if _u6210_u529f then _u6253_u5370(_u7ed3_u679c) end end do - pcall(_u51fd_u6570, 1, 2, 3) - pcall(_u51fd_u6570, 1, 2, 3) + pcall(function() + return _u51fd_u6570(1, 2, 3) + end) + pcall(function() + return _u51fd_u6570(1, 2, 3) + end) end return nil diff --git a/spec/outputs/upvalue_func.lua b/spec/outputs/upvalue_func.lua index 5113692..e66eefa 100644 --- a/spec/outputs/upvalue_func.lua +++ b/spec/outputs/upvalue_func.lua @@ -367,12 +367,7 @@ local _anon_func_18 = function(print, select, _arg_0, ...) end end end -local _anon_func_19 = function(print) - local a = 1 - print(a + nil) - return 1, 2, 3 -end -local _anon_func_20 = function(cond, i) +local _anon_func_19 = function(cond, i) local _accum_0 = { } local _len_0 = 1 while cond do @@ -382,7 +377,7 @@ local _anon_func_20 = function(cond, i) end return _accum_0 end -local _anon_func_21 = function(value) +local _anon_func_20 = function(value) if 1 == value then return 'a' elseif 2 == value then @@ -417,27 +412,31 @@ GameEngine:onUpdate(function(deltaTime) func(_anon_func_16(pairs, tb, tostring)) func(_anon_func_17(print)) do - _anon_func_18(print, select, pcall(_anon_func_19, print)) + _anon_func_18(print, select, pcall(function() + local a = 1 + print(a + nil) + return 1, 2, 3 + end)) end i = 1 - func(_anon_func_20(cond, i)) - return func(_anon_func_21(value)) + func(_anon_func_19(cond, i)) + return func(_anon_func_20(value)) end) -local _anon_func_22 = function(cond) +local _anon_func_21 = function(cond) if cond then return 998 else return "abc" end end -local _anon_func_23 = function(valueB) +local _anon_func_22 = function(valueB) if valueB ~= nil then return valueB else return 123 end end -local _anon_func_24 = function(tb) +local _anon_func_23 = function(tb) if tb ~= nil then local _obj_0 = tb.abc if _obj_0 ~= nil then @@ -451,7 +450,7 @@ local _anon_func_24 = function(tb) end return nil end -local _anon_func_26 = function(itemA, listA) +local _anon_func_25 = function(itemA, listA) for _index_0 = 1, #listA do if listA[_index_0] == itemA then return true @@ -459,17 +458,17 @@ local _anon_func_26 = function(itemA, listA) end return false end -local _anon_func_25 = function(itemA, listA, tb) +local _anon_func_24 = function(itemA, listA, tb) do local _call_0 = tb local _call_1 = _call_0["end"](_call_0) - return _call_1["🤣"](_call_1, 123 and (#listA > 0 and _anon_func_26(itemA, listA))) + return _call_1["🤣"](_call_1, 123 and (#listA > 0 and _anon_func_25(itemA, listA))) end end GameEngine:onEvent("SomeEvent", function() - return func(value + (_anon_func_22(cond)) + (_anon_func_23(valueB)) > _anon_func_24(tb) + _anon_func_25(itemA, listA, tb)) + return func(value + (_anon_func_21(cond)) + (_anon_func_22(valueB)) > _anon_func_23(tb) + _anon_func_24(itemA, listA, tb)) end) -local _anon_func_27 = function(UpdateScoreText, tostring, value) +local _anon_func_26 = function(UpdateScoreText, tostring, value) if value > 200 then UpdateScoreText("Win: " .. tostring(value)) return "done" @@ -480,7 +479,7 @@ local _anon_func_27 = function(UpdateScoreText, tostring, value) end GameEngine:schedule(function(deltaTime) local value = 123 - return func(_anon_func_27(UpdateScoreText, tostring, value)) + return func(_anon_func_26(UpdateScoreText, tostring, value)) end) GameEngine:schedule(function(deltaTime) local value = 123 @@ -496,14 +495,14 @@ GameEngine:schedule(function(deltaTime) end end)()) end) -local _anon_func_28 = function(char) +local _anon_func_27 = function(char) local _obj_0 = char.stats.strength if _obj_0 ~= nil then return _obj_0:ref() end return nil end -local _anon_func_29 = function(os, _arg_0, ...) +local _anon_func_28 = function(os, _arg_0, ...) do local ok = _arg_0 if ok then @@ -513,7 +512,7 @@ local _anon_func_29 = function(os, _arg_0, ...) end end end -local _anon_func_30 = function(debug_env_after, debug_env_before, env, func) +local _anon_func_29 = function(debug_env_after, debug_env_before, env, func) debug_env_before(env) func(env) return debug_env_after(env) @@ -523,13 +522,14 @@ do buff_strength = function(char, item) local _obj_0 = item.buffer.strength if _obj_0 ~= nil then - return _obj_0(_anon_func_28(char)) + return _obj_0(_anon_func_27(char)) end return nil end + local debug_env_before, debug_env_after local exe_func exe_func = function(func, env) - return _anon_func_29(os, xpcall(_anon_func_30, function(ex) + return _anon_func_28(os, xpcall(_anon_func_29, function(ex) error(ex) return ex end, debug_env_after, debug_env_before, env, func)) -- cgit v1.2.3-55-g6feb