aboutsummaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2022-02-21 17:08:58 +0800
committerLi Jin <dragon-fly@qq.com>2022-02-21 17:08:58 +0800
commit00acd729f39c7e6b5db35c6c8a49ba5c55382e58 (patch)
tree1338128b83f24646198def33b581979297044f63 /spec
parentb668018486572362b7cbba5257baa7a37ef8d01d (diff)
downloadyuescript-00acd729f39c7e6b5db35c6c8a49ba5c55382e58.tar.gz
yuescript-00acd729f39c7e6b5db35c6c8a49ba5c55382e58.tar.bz2
yuescript-00acd729f39c7e6b5db35c6c8a49ba5c55382e58.zip
add an extra idiom for Lua pcall / xpcall: print result if success, result = try func
Diffstat (limited to 'spec')
-rw-r--r--spec/inputs/try-catch.yue47
-rw-r--r--spec/outputs/try-catch.lua41
2 files changed, 70 insertions, 18 deletions
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 @@
1try 1try
2 func 1, 2, 3 2 func 1, 2, 3
3catch err 3catch err
4 print err 4 print err
5
6success, result = try
7 func 1, 2, 3
8catch err
9 print err
10 5
11try func 1, 2, 3 6try func 1, 2, 3
12catch err 7catch err
13 print err 8 print err
14
15success, result = try func 1, 2, 3
16 9
17try 10try
18 print "trying" 11 print "trying"
19 func 1, 2, 3 12 func 1, 2, 3
13
14do
15 success, result = try
16 func 1, 2, 3
17 catch err
18 print err
19
20 success, result = try func 1, 2, 3
20 21
21try tb.func 22try tb.func
22try tb.func! 23try tb.func!
@@ -26,5 +27,27 @@ try (tb.func!)
26try tb.func 1 27try tb.func 1
27try tb.func(1) 28try tb.func(1)
28 29
30if (try func 1
31catch err
32 print err)
33 print "OK"
34
35if try func 1
36catch err
37 print err
38 print "OK"
39
40do
41 if success, result = try func "abc", 123
42 print result
43
44 success, result = try func "abc", 123
45 catch err
46 print err
47
48 print result if success, result = try func "abc", 123
49 catch err
50 print err
51
29nil 52nil
30 53
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()
3end, function(err) 3end, function(err)
4 return print(err) 4 return print(err)
5end) 5end)
6local success, result = xpcall(function()
7 return func(1, 2, 3)
8end, function(err)
9 return print(err)
10end)
11xpcall(func, function(err) 6xpcall(func, function(err)
12 return print(err) 7 return print(err)
13end, 1, 2, 3) 8end, 1, 2, 3)
14success, result = pcall(func, 1, 2, 3)
15pcall(function() 9pcall(function()
16 print("trying") 10 print("trying")
17 return func(1, 2, 3) 11 return func(1, 2, 3)
18end) 12end)
13do
14 local success, result = xpcall(function()
15 return func(1, 2, 3)
16 end, function(err)
17 return print(err)
18 end)
19 success, result = pcall(func, 1, 2, 3)
20end
19pcall(tb.func) 21pcall(tb.func)
20pcall(tb.func) 22pcall(tb.func)
21pcall(tb.func) 23pcall(tb.func)
22pcall((tb.func())) 24pcall((tb.func()))
23pcall(tb.func, 1) 25pcall(tb.func, 1)
24pcall(tb.func, 1) 26pcall(tb.func, 1)
27if (xpcall(func, function(err)
28 return print(err)
29end, 1)) then
30 print("OK")
31end
32if xpcall(func, function(err)
33 return print(err)
34end, 1) then
35 print("OK")
36end
37do
38 do
39 local success, result = pcall(func, "abc", 123)
40 if success then
41 print(result)
42 end
43 end
44 local success, result = xpcall(func, function(err)
45 return print(err)
46 end, "abc", 123)
47 success, result = xpcall(func, function(err)
48 return print(err)
49 end, "abc", 123)
50 if success then
51 print(result)
52 end
53end
25return nil 54return nil