From fe317e2bdd9cb60b3c7cd347e21ce65cf90396e7 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Thu, 16 May 2024 17:25:37 +0800 Subject: fix ambiguous issue in try-catch syntax. --- spec/inputs/try_catch.yue | 86 +++++++++++----------- spec/outputs/5.1/try_catch.lua | 141 +++++++++++++++++++++---------------- spec/outputs/try_catch.lua | 117 +++++++++++++++++------------- spec/outputs/unicode/try_catch.lua | 39 ++++++---- 4 files changed, 215 insertions(+), 168 deletions(-) (limited to 'spec') diff --git a/spec/inputs/try_catch.yue b/spec/inputs/try_catch.yue index ccb3f52..419eef4 100644 --- a/spec/inputs/try_catch.yue +++ b/spec/inputs/try_catch.yue @@ -1,60 +1,60 @@ -try - func 1, 2, 3 -catch err - print err - -try func 1, 2, 3 -catch err - print err - -try - print "trying" - func 1, 2, 3 - -do - success, result = try +f = -> + try func 1, 2, 3 catch err print err - success, result = try func 1, 2, 3 + try func 1, 2, 3 + catch err + print err -try tb.func -try tb.func! -try tb.func() -try (tb.func!) -try (tb\func(1, 2, 3)) + try + print "trying" + func 1, 2, 3 -try tb.func 1 -try tb.func(1) + do + success, result = try + func 1, 2, 3 + catch err + print err -if (try func 1 -catch err - print err) - print "OK" + success, result = try func 1, 2, 3 -if try (func 1) -catch err - print err - print "OK" + try tb.func + try tb.func! + try tb.func() + try (tb.func!) + try (tb\func(1, 2, 3)) -do - if success, result := try func "abc", 123 - print result + try tb.func 1 + try tb.func(1) - success, result = try func "abc", 123 + if (try func 1 catch err - print err + print err) + print "OK" - print result if success, result := try func "abc", 123 + if try (func 1) catch err - print err + print err + print "OK" -do - try - func 1, 2, 3 + do + if success, result := try func "abc", 123 + print result - try func 1, 2, 3 + success, result = try func "abc", 123 + catch err + print err + + print result if success, result := try func "abc", 123 + catch err + print err + + do + try + func 1, 2, 3 -nil + try func 1, 2, 3 + nil diff --git a/spec/outputs/5.1/try_catch.lua b/spec/outputs/5.1/try_catch.lua index 9972dca..f63cd91 100644 --- a/spec/outputs/5.1/try_catch.lua +++ b/spec/outputs/5.1/try_catch.lua @@ -1,75 +1,94 @@ -xpcall(function() - return func(1, 2, 3) -end, function(err) - return print(err) -end) -xpcall(function() - return func(1, 2, 3) -end, function(err) - return print(err) -end) -pcall(function() +local _anon_func_0 = function(func, print) print("trying") return func(1, 2, 3) -end) -do - local success, result = xpcall(function() +end +local _anon_func_1 = function(tb) + return tb.func +end +local _anon_func_2 = function(tb) + return tb.func() +end +local _anon_func_3 = function(tb) + return tb.func() +end +local _anon_func_4 = function(tb) + return tb.func() +end +local _anon_func_5 = function(tb) + return tb:func(1, 2, 3) +end +local _anon_func_6 = function(tb) + return tb.func(1) +end +local _anon_func_7 = function(tb) + return tb.func(1) +end +local f +f = function() + xpcall(function() return func(1, 2, 3) end, function(err) return print(err) end) - success, result = pcall(func, 1, 2, 3) -end -pcall(tb.func) -pcall(tb.func) -pcall(tb.func) -pcall((tb.func)) -pcall(((function() - local _base_0 = tb - local _fn_0 = _base_0.func - return _fn_0 and function(...) - return _fn_0(_base_0, ...) - end -end)()), 1, 2, 3) -pcall(tb.func, 1) -pcall(tb.func, 1) -if (xpcall(function() - return func(1) -end, function(err) - return print(err) -end)) then - print("OK") -end -if xpcall(function() - return func(1) -end, function(err) - return print(err) -end) then - print("OK") -end -do + xpcall(function() + return func(1, 2, 3) + end, function(err) + return print(err) + end) + pcall(_anon_func_0, func, print) do - local success, result = pcall(func, "abc", 123) - if success then - print(result) - end + local success, result = xpcall(function() + return func(1, 2, 3) + end, function(err) + return print(err) + end) + success, result = pcall(func, 1, 2, 3) end - local success, result = xpcall(function() - return func("abc", 123) + 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) return print(err) - end) - success, result = xpcall(function() - return func("abc", 123) + end)) then + print("OK") + end + if xpcall(function() + return func(1) end, function(err) return print(err) - end) - if success then - print(result) + end) then + print("OK") end + do + do + local success, result = pcall(func, "abc", 123) + if success then + print(result) + end + end + local success, result = xpcall(function() + return func("abc", 123) + end, function(err) + return print(err) + end) + success, result = xpcall(function() + return func("abc", 123) + end, function(err) + return print(err) + end) + if success then + print(result) + end + end + do + pcall(func, 1, 2, 3) + pcall(func, 1, 2, 3) + end + return nil end -do -pcall(func, 1, 2, 3) -pcall(func, 1, 2, 3) -end -return nil diff --git a/spec/outputs/try_catch.lua b/spec/outputs/try_catch.lua index de52c6c..3c3dd3c 100644 --- a/spec/outputs/try_catch.lua +++ b/spec/outputs/try_catch.lua @@ -1,61 +1,80 @@ -xpcall(func, function(err) - return print(err) -end, 1, 2, 3) -xpcall(func, function(err) - return print(err) -end, 1, 2, 3) -pcall(function() +local _anon_func_0 = function(func, print) print("trying") return func(1, 2, 3) -end) -do - local success, result = xpcall(func, function(err) +end +local _anon_func_1 = function(tb) + return tb.func +end +local _anon_func_2 = function(tb) + return tb.func() +end +local _anon_func_3 = function(tb) + return tb.func() +end +local _anon_func_4 = function(tb) + return tb.func() +end +local _anon_func_5 = function(tb) + return tb:func(1, 2, 3) +end +local _anon_func_6 = function(tb) + return tb.func(1) +end +local _anon_func_7 = function(tb) + return tb.func(1) +end +local f +f = function() + xpcall(func, function(err) + return print(err) + end, 1, 2, 3) + xpcall(func, function(err) return print(err) end, 1, 2, 3) - success, result = pcall(func, 1, 2, 3) -end -pcall(tb.func) -pcall(tb.func) -pcall(tb.func) -pcall((tb.func)) -pcall(((function() - local _base_0 = tb - local _fn_0 = _base_0.func - return _fn_0 and function(...) - return _fn_0(_base_0, ...) + pcall(_anon_func_0, func, print) + do + local success, result = xpcall(func, function(err) + return print(err) + end, 1, 2, 3) + success, result = pcall(func, 1, 2, 3) + end + 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) + return print(err) + end, 1)) then + print("OK") + end + if xpcall((func), function(err) + return print(err) + end, 1) then + print("OK") end -end)()), 1, 2, 3) -pcall(tb.func, 1) -pcall(tb.func, 1) -if (xpcall(func, function(err) - return print(err) -end, 1)) then - print("OK") -end -if xpcall((func), function(err) - return print(err) -end, 1) then - print("OK") -end -do do - local success, result = pcall(func, "abc", 123) + do + local success, result = pcall(func, "abc", 123) + if success then + print(result) + end + end + local success, result = xpcall(func, function(err) + return print(err) + end, "abc", 123) + success, result = xpcall(func, function(err) + return print(err) + end, "abc", 123) if success then print(result) end end - local success, result = xpcall(func, function(err) - return print(err) - end, "abc", 123) - success, result = xpcall(func, function(err) - return print(err) - end, "abc", 123) - if success then - print(result) + do + pcall(func, 1, 2, 3) + pcall(func, 1, 2, 3) end + return nil end -do -pcall(func, 1, 2, 3) -pcall(func, 1, 2, 3) -end -return nil diff --git a/spec/outputs/unicode/try_catch.lua b/spec/outputs/unicode/try_catch.lua index fde63d6..7d95f9b 100644 --- a/spec/outputs/unicode/try_catch.lua +++ b/spec/outputs/unicode/try_catch.lua @@ -14,19 +14,28 @@ do end, 1, 2, 3) _u6210_u529f, _u7ed3_u679c = pcall(_u51fd_u6570, 1, 2, 3) end -pcall(_u8868["函数"]) -pcall(_u8868["函数"]) -pcall(_u8868["函数"]) -pcall((_u8868["函数"])) -pcall(((function() - local _base_0 = _u8868 - local _fn_0 = _base_0["函数"] - return _fn_0 and function(...) - return _fn_0(_base_0, ...) - end -end)()), 1, 2, 3) -pcall(_u8868["函数"], 1) -pcall(_u8868["函数"], 1) +pcall(function() + return _u8868["函数"] +end) +pcall(function() + return _u8868["函数"]() +end) +pcall(function() + return _u8868["函数"]() +end) +pcall(function() + return _u8868["函数"]() +end) +pcall(function() + local _call_0 = _u8868 + return _call_0["函数"](_call_0, 1, 2, 3) +end) +pcall(function() + return _u8868["函数"](1) +end) +pcall(function() + return _u8868["函数"](1) +end) if (xpcall(_u51fd_u6570, function(_u9519_u8bef) return _u6253_u5370(_u9519_u8bef) end, 1)) then @@ -55,7 +64,7 @@ do end end do -pcall(_u51fd_u6570, 1, 2, 3) -pcall(_u51fd_u6570, 1, 2, 3) + pcall(_u51fd_u6570, 1, 2, 3) + pcall(_u51fd_u6570, 1, 2, 3) end return nil -- cgit v1.2.3-55-g6feb