From 00acd729f39c7e6b5db35c6c8a49ba5c55382e58 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Mon, 21 Feb 2022 17:08:58 +0800 Subject: add an extra idiom for Lua pcall / xpcall: print result if success, result = try func --- spec/inputs/try-catch.yue | 47 ++++++++++++++++++++++++++++++++++------------ spec/outputs/try-catch.lua | 41 ++++++++++++++++++++++++++++++++++------ 2 files changed, 70 insertions(+), 18 deletions(-) (limited to 'spec') diff --git a/spec/inputs/try-catch.yue b/spec/inputs/try-catch.yue index ad8b1f0..f5cb97e 100644 --- a/spec/inputs/try-catch.yue +++ b/spec/inputs/try-catch.yue @@ -1,22 +1,23 @@ try - func 1, 2, 3 + func 1, 2, 3 catch err - print err - -success, result = try - func 1, 2, 3 -catch err - print err + print err try func 1, 2, 3 catch err - print err - -success, result = try func 1, 2, 3 + print err try - print "trying" - func 1, 2, 3 + print "trying" + func 1, 2, 3 + +do + success, result = try + func 1, 2, 3 + catch err + print err + + success, result = try func 1, 2, 3 try tb.func try tb.func! @@ -26,5 +27,27 @@ try (tb.func!) try tb.func 1 try tb.func(1) +if (try func 1 +catch err + print err) + print "OK" + +if try func 1 +catch err + print err + print "OK" + +do + if success, result = try func "abc", 123 + print result + + success, result = try func "abc", 123 + catch err + print err + + print result if success, result = try func "abc", 123 + catch err + print err + nil diff --git a/spec/outputs/try-catch.lua b/spec/outputs/try-catch.lua index d4c02ac..692905e 100644 --- a/spec/outputs/try-catch.lua +++ b/spec/outputs/try-catch.lua @@ -3,23 +3,52 @@ xpcall(function() end, function(err) return print(err) end) -local success, result = xpcall(function() - return func(1, 2, 3) -end, function(err) - return print(err) -end) xpcall(func, function(err) return print(err) end, 1, 2, 3) -success, result = pcall(func, 1, 2, 3) 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) +end pcall(tb.func) pcall(tb.func) pcall(tb.func) pcall((tb.func())) 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) + 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 return nil -- cgit v1.2.3-55-g6feb