diff options
| author | Li Jin <dragon-fly@qq.com> | 2024-05-17 16:38:44 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2024-05-17 16:38:44 +0800 |
| commit | 06bf167924d04aaefe80d6e4ead40989a447ea34 (patch) | |
| tree | ccd2c3b62797d378ee7cc1872440483d328980ca /spec | |
| parent | fe317e2bdd9cb60b3c7cd347e21ce65cf90396e7 (diff) | |
| download | yuescript-06bf167924d04aaefe80d6e4ead40989a447ea34.tar.gz yuescript-06bf167924d04aaefe80d6e4ead40989a447ea34.tar.bz2 yuescript-06bf167924d04aaefe80d6e4ead40989a447ea34.zip | |
fix more cases in try-catch syntax.v0.23.6
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/inputs/try_catch.yue | 7 | ||||
| -rw-r--r-- | spec/inputs/upvalue_func.yue | 2 | ||||
| -rw-r--r-- | spec/outputs/5.1/attrib.lua | 4 | ||||
| -rw-r--r-- | spec/outputs/5.1/try_catch.lua | 47 | ||||
| -rw-r--r-- | spec/outputs/codes_from_doc.lua | 56 | ||||
| -rw-r--r-- | spec/outputs/codes_from_doc_zh.lua | 56 | ||||
| -rw-r--r-- | spec/outputs/try_catch.lua | 89 | ||||
| -rw-r--r-- | spec/outputs/unicode/try_catch.lua | 58 | ||||
| -rw-r--r-- | spec/outputs/upvalue_func.lua | 48 |
9 files changed, 246 insertions, 121 deletions
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 = -> | |||
| 20 | 20 | ||
| 21 | success, result = try func 1, 2, 3 | 21 | success, result = try func 1, 2, 3 |
| 22 | 22 | ||
| 23 | tb = {} | ||
| 24 | |||
| 23 | try tb.func | 25 | try tb.func |
| 24 | try tb.func! | 26 | try tb.func! |
| 25 | try tb.func() | 27 | try tb.func() |
| @@ -57,4 +59,9 @@ f = -> | |||
| 57 | 59 | ||
| 58 | try func 1, 2, 3 | 60 | try func 1, 2, 3 |
| 59 | 61 | ||
| 62 | do | ||
| 63 | <- x | ||
| 64 | local tb, a, b, c | ||
| 65 | f = -> try tb.f a, b, c | ||
| 66 | |||
| 60 | nil | 67 | 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 | |||
| 210 | buff_strength = (char, item) -> | 210 | buff_strength = (char, item) -> |
| 211 | item.buffer.strength? char.stats.strength?::ref() | 211 | item.buffer.strength? char.stats.strength?::ref() |
| 212 | 212 | ||
| 213 | local debug_env_before, debug_env_after | ||
| 214 | |||
| 213 | exe_func = (func, env) -> | 215 | exe_func = (func, env) -> |
| 214 | ok, ... = try | 216 | ok, ... = try |
| 215 | debug_env_before(env) | 217 | 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 | |||
| 199 | end | 199 | end |
| 200 | }) | 200 | }) |
| 201 | local _close_2 = assert(getmetatable(_).__close) | 201 | local _close_2 = assert(getmetatable(_).__close) |
| 202 | return _anon_func_9(_, _close_2, error, pcall(print, "third")) | 202 | return _anon_func_9(_, _close_2, error, pcall(function() |
| 203 | return print("third") | ||
| 204 | end)) | ||
| 203 | end)) | 205 | end)) |
| 204 | end)) | 206 | end)) |
| 205 | end | 207 | 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 @@ | |||
| 1 | local _anon_func_0 = function(func, print) | 1 | local _anon_func_0 = function(tb) |
| 2 | print("trying") | 2 | return tb.func |
| 3 | return func(1, 2, 3) | ||
| 4 | end | 3 | end |
| 5 | local _anon_func_1 = function(tb) | 4 | local _anon_func_1 = function(tb) |
| 6 | return tb.func | 5 | return tb.func() |
| 7 | end | 6 | end |
| 8 | local _anon_func_2 = function(tb) | 7 | local _anon_func_2 = function(tb) |
| 9 | return tb.func() | 8 | return tb.func() |
| @@ -12,16 +11,16 @@ local _anon_func_3 = function(tb) | |||
| 12 | return tb.func() | 11 | return tb.func() |
| 13 | end | 12 | end |
| 14 | local _anon_func_4 = function(tb) | 13 | local _anon_func_4 = function(tb) |
| 15 | return tb.func() | 14 | return tb:func(1, 2, 3) |
| 16 | end | 15 | end |
| 17 | local _anon_func_5 = function(tb) | 16 | local _anon_func_5 = function(tb) |
| 18 | return tb:func(1, 2, 3) | 17 | return tb.func(1) |
| 19 | end | 18 | end |
| 20 | local _anon_func_6 = function(tb) | 19 | local _anon_func_6 = function(tb) |
| 21 | return tb.func(1) | 20 | return tb.func(1) |
| 22 | end | 21 | end |
| 23 | local _anon_func_7 = function(tb) | 22 | local _anon_func_7 = function(a, b, c, tb) |
| 24 | return tb.func(1) | 23 | return tb.f(a, b, c) |
| 25 | end | 24 | end |
| 26 | local f | 25 | local f |
| 27 | f = function() | 26 | f = function() |
| @@ -35,22 +34,28 @@ f = function() | |||
| 35 | end, function(err) | 34 | end, function(err) |
| 36 | return print(err) | 35 | return print(err) |
| 37 | end) | 36 | end) |
| 38 | pcall(_anon_func_0, func, print) | 37 | pcall(function() |
| 38 | print("trying") | ||
| 39 | return func(1, 2, 3) | ||
| 40 | end) | ||
| 39 | do | 41 | do |
| 40 | local success, result = xpcall(function() | 42 | local success, result = xpcall(function() |
| 41 | return func(1, 2, 3) | 43 | return func(1, 2, 3) |
| 42 | end, function(err) | 44 | end, function(err) |
| 43 | return print(err) | 45 | return print(err) |
| 44 | end) | 46 | end) |
| 45 | success, result = pcall(func, 1, 2, 3) | 47 | success, result = pcall(function() |
| 48 | return func(1, 2, 3) | ||
| 49 | end) | ||
| 46 | end | 50 | end |
| 51 | local tb = { } | ||
| 52 | pcall(_anon_func_0, tb) | ||
| 47 | pcall(_anon_func_1, tb) | 53 | pcall(_anon_func_1, tb) |
| 48 | pcall(_anon_func_2, tb) | 54 | pcall(_anon_func_2, tb) |
| 49 | pcall(_anon_func_3, tb) | 55 | pcall(_anon_func_3, tb) |
| 50 | pcall(_anon_func_4, tb) | 56 | pcall(_anon_func_4, tb) |
| 51 | pcall(_anon_func_5, tb) | 57 | pcall(_anon_func_5, tb) |
| 52 | pcall(_anon_func_6, tb) | 58 | pcall(_anon_func_6, tb) |
| 53 | pcall(_anon_func_7, tb) | ||
| 54 | if (xpcall(function() | 59 | if (xpcall(function() |
| 55 | return func(1) | 60 | return func(1) |
| 56 | end, function(err) | 61 | end, function(err) |
| @@ -67,7 +72,9 @@ f = function() | |||
| 67 | end | 72 | end |
| 68 | do | 73 | do |
| 69 | do | 74 | do |
| 70 | local success, result = pcall(func, "abc", 123) | 75 | local success, result = pcall(function() |
| 76 | return func("abc", 123) | ||
| 77 | end) | ||
| 71 | if success then | 78 | if success then |
| 72 | print(result) | 79 | print(result) |
| 73 | end | 80 | end |
| @@ -87,8 +94,20 @@ f = function() | |||
| 87 | end | 94 | end |
| 88 | end | 95 | end |
| 89 | do | 96 | do |
| 90 | pcall(func, 1, 2, 3) | 97 | pcall(function() |
| 91 | pcall(func, 1, 2, 3) | 98 | return func(1, 2, 3) |
| 99 | end) | ||
| 100 | pcall(function() | ||
| 101 | return func(1, 2, 3) | ||
| 102 | end) | ||
| 103 | end | ||
| 104 | do | ||
| 105 | x(function() | ||
| 106 | local tb, a, b, c | ||
| 107 | f = function() | ||
| 108 | return pcall(_anon_func_7, a, b, c, tb) | ||
| 109 | end | ||
| 110 | end) | ||
| 92 | end | 111 | end |
| 93 | return nil | 112 | return nil |
| 94 | end | 113 | 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) | |||
| 608 | end):subscribe(print) | 608 | end):subscribe(print) |
| 609 | local str = strA .. strB .. strC | 609 | local str = strA .. strB .. strC |
| 610 | func(3000, "192.168.1.1") | 610 | func(3000, "192.168.1.1") |
| 611 | xpcall(func, function(err) | 611 | xpcall(function() |
| 612 | return func(1, 2, 3) | ||
| 613 | end, function(err) | ||
| 612 | return print(yue.traceback(err)) | 614 | return print(yue.traceback(err)) |
| 613 | end, 1, 2, 3) | 615 | end) |
| 614 | local success, result = xpcall(func, function(err) | 616 | local success, result = xpcall(function() |
| 617 | return func(1, 2, 3) | ||
| 618 | end, function(err) | ||
| 615 | return yue.traceback(err) | 619 | return yue.traceback(err) |
| 616 | end, 1, 2, 3) | 620 | end) |
| 617 | xpcall(func, function(err) | 621 | xpcall(function() |
| 622 | return func(1, 2, 3) | ||
| 623 | end, function(err) | ||
| 618 | return print(yue.traceback(err)) | 624 | return print(yue.traceback(err)) |
| 619 | end, 1, 2, 3) | 625 | end) |
| 620 | success, result = pcall(func, 1, 2, 3) | 626 | success, result = pcall(function() |
| 627 | return func(1, 2, 3) | ||
| 628 | end) | ||
| 621 | pcall(function() | 629 | pcall(function() |
| 622 | print("trying") | 630 | print("trying") |
| 623 | return func(1, 2, 3) | 631 | return func(1, 2, 3) |
| 624 | end) | 632 | end) |
| 625 | success, result = xpcall(func, function(err) | 633 | success, result = xpcall(function() |
| 634 | return func(1, 2, 3) | ||
| 635 | end, function(err) | ||
| 626 | return print(yue.traceback(err)) | 636 | return print(yue.traceback(err)) |
| 627 | end, 1, 2, 3) | 637 | end) |
| 628 | if success then | 638 | if success then |
| 629 | print(result) | 639 | print(result) |
| 630 | end | 640 | end |
| @@ -2595,23 +2605,33 @@ end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) | |||
| 2595 | end):subscribe(print) | 2605 | end):subscribe(print) |
| 2596 | local str = strA .. strB .. strC | 2606 | local str = strA .. strB .. strC |
| 2597 | func(3000, "192.168.1.1") | 2607 | func(3000, "192.168.1.1") |
| 2598 | xpcall(func, function(err) | 2608 | xpcall(function() |
| 2609 | return func(1, 2, 3) | ||
| 2610 | end, function(err) | ||
| 2599 | return print(yue.traceback(err)) | 2611 | return print(yue.traceback(err)) |
| 2600 | end, 1, 2, 3) | 2612 | end) |
| 2601 | local success, result = xpcall(func, function(err) | 2613 | local success, result = xpcall(function() |
| 2614 | return func(1, 2, 3) | ||
| 2615 | end, function(err) | ||
| 2602 | return yue.traceback(err) | 2616 | return yue.traceback(err) |
| 2603 | end, 1, 2, 3) | 2617 | end) |
| 2604 | xpcall(func, function(err) | 2618 | xpcall(function() |
| 2619 | return func(1, 2, 3) | ||
| 2620 | end, function(err) | ||
| 2605 | return print(yue.traceback(err)) | 2621 | return print(yue.traceback(err)) |
| 2606 | end, 1, 2, 3) | 2622 | end) |
| 2607 | success, result = pcall(func, 1, 2, 3) | 2623 | success, result = pcall(function() |
| 2624 | return func(1, 2, 3) | ||
| 2625 | end) | ||
| 2608 | pcall(function() | 2626 | pcall(function() |
| 2609 | print("trying") | 2627 | print("trying") |
| 2610 | return func(1, 2, 3) | 2628 | return func(1, 2, 3) |
| 2611 | end) | 2629 | end) |
| 2612 | success, result = xpcall(func, function(err) | 2630 | success, result = xpcall(function() |
| 2631 | return func(1, 2, 3) | ||
| 2632 | end, function(err) | ||
| 2613 | return print(yue.traceback(err)) | 2633 | return print(yue.traceback(err)) |
| 2614 | end, 1, 2, 3) | 2634 | end) |
| 2615 | if success then | 2635 | if success then |
| 2616 | print(result) | 2636 | print(result) |
| 2617 | end | 2637 | 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) | |||
| 608 | end):subscribe(print) | 608 | end):subscribe(print) |
| 609 | local str = strA .. strB .. strC | 609 | local str = strA .. strB .. strC |
| 610 | func(3000, "192.168.1.1") | 610 | func(3000, "192.168.1.1") |
| 611 | xpcall(func, function(err) | 611 | xpcall(function() |
| 612 | return func(1, 2, 3) | ||
| 613 | end, function(err) | ||
| 612 | return print(yue.traceback(err)) | 614 | return print(yue.traceback(err)) |
| 613 | end, 1, 2, 3) | 615 | end) |
| 614 | local success, result = xpcall(func, function(err) | 616 | local success, result = xpcall(function() |
| 617 | return func(1, 2, 3) | ||
| 618 | end, function(err) | ||
| 615 | return yue.traceback(err) | 619 | return yue.traceback(err) |
| 616 | end, 1, 2, 3) | 620 | end) |
| 617 | xpcall(func, function(err) | 621 | xpcall(function() |
| 622 | return func(1, 2, 3) | ||
| 623 | end, function(err) | ||
| 618 | return print(yue.traceback(err)) | 624 | return print(yue.traceback(err)) |
| 619 | end, 1, 2, 3) | 625 | end) |
| 620 | success, result = pcall(func, 1, 2, 3) | 626 | success, result = pcall(function() |
| 627 | return func(1, 2, 3) | ||
| 628 | end) | ||
| 621 | pcall(function() | 629 | pcall(function() |
| 622 | print("尝试中") | 630 | print("尝试中") |
| 623 | return func(1, 2, 3) | 631 | return func(1, 2, 3) |
| 624 | end) | 632 | end) |
| 625 | success, result = xpcall(func, function(err) | 633 | success, result = xpcall(function() |
| 634 | return func(1, 2, 3) | ||
| 635 | end, function(err) | ||
| 626 | return print(yue.traceback(err)) | 636 | return print(yue.traceback(err)) |
| 627 | end, 1, 2, 3) | 637 | end) |
| 628 | if success then | 638 | if success then |
| 629 | print(result) | 639 | print(result) |
| 630 | end | 640 | end |
| @@ -2589,23 +2599,33 @@ end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) | |||
| 2589 | end):subscribe(print) | 2599 | end):subscribe(print) |
| 2590 | local str = strA .. strB .. strC | 2600 | local str = strA .. strB .. strC |
| 2591 | func(3000, "192.168.1.1") | 2601 | func(3000, "192.168.1.1") |
| 2592 | xpcall(func, function(err) | 2602 | xpcall(function() |
| 2603 | return func(1, 2, 3) | ||
| 2604 | end, function(err) | ||
| 2593 | return print(yue.traceback(err)) | 2605 | return print(yue.traceback(err)) |
| 2594 | end, 1, 2, 3) | 2606 | end) |
| 2595 | local success, result = xpcall(func, function(err) | 2607 | local success, result = xpcall(function() |
| 2608 | return func(1, 2, 3) | ||
| 2609 | end, function(err) | ||
| 2596 | return yue.traceback(err) | 2610 | return yue.traceback(err) |
| 2597 | end, 1, 2, 3) | 2611 | end) |
| 2598 | xpcall(func, function(err) | 2612 | xpcall(function() |
| 2613 | return func(1, 2, 3) | ||
| 2614 | end, function(err) | ||
| 2599 | return print(yue.traceback(err)) | 2615 | return print(yue.traceback(err)) |
| 2600 | end, 1, 2, 3) | 2616 | end) |
| 2601 | success, result = pcall(func, 1, 2, 3) | 2617 | success, result = pcall(function() |
| 2618 | return func(1, 2, 3) | ||
| 2619 | end) | ||
| 2602 | pcall(function() | 2620 | pcall(function() |
| 2603 | print("尝试中") | 2621 | print("尝试中") |
| 2604 | return func(1, 2, 3) | 2622 | return func(1, 2, 3) |
| 2605 | end) | 2623 | end) |
| 2606 | success, result = xpcall(func, function(err) | 2624 | success, result = xpcall(function() |
| 2625 | return func(1, 2, 3) | ||
| 2626 | end, function(err) | ||
| 2607 | return print(yue.traceback(err)) | 2627 | return print(yue.traceback(err)) |
| 2608 | end, 1, 2, 3) | 2628 | end) |
| 2609 | if success then | 2629 | if success then |
| 2610 | print(result) | 2630 | print(result) |
| 2611 | end | 2631 | 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 @@ | |||
| 1 | local _anon_func_0 = function(func, print) | 1 | local _anon_func_0 = function(tb) |
| 2 | print("trying") | 2 | return tb.func |
| 3 | return func(1, 2, 3) | ||
| 4 | end | 3 | end |
| 5 | local _anon_func_1 = function(tb) | 4 | local _anon_func_1 = function(tb) |
| 6 | return tb.func | 5 | return tb.func() |
| 7 | end | 6 | end |
| 8 | local _anon_func_2 = function(tb) | 7 | local _anon_func_2 = function(tb) |
| 9 | return tb.func() | 8 | return tb.func() |
| @@ -12,69 +11,103 @@ local _anon_func_3 = function(tb) | |||
| 12 | return tb.func() | 11 | return tb.func() |
| 13 | end | 12 | end |
| 14 | local _anon_func_4 = function(tb) | 13 | local _anon_func_4 = function(tb) |
| 15 | return tb.func() | 14 | return tb:func(1, 2, 3) |
| 16 | end | 15 | end |
| 17 | local _anon_func_5 = function(tb) | 16 | local _anon_func_5 = function(tb) |
| 18 | return tb:func(1, 2, 3) | 17 | return tb.func(1) |
| 19 | end | 18 | end |
| 20 | local _anon_func_6 = function(tb) | 19 | local _anon_func_6 = function(tb) |
| 21 | return tb.func(1) | 20 | return tb.func(1) |
| 22 | end | 21 | end |
| 23 | local _anon_func_7 = function(tb) | 22 | local _anon_func_7 = function(a, b, c, tb) |
| 24 | return tb.func(1) | 23 | return tb.f(a, b, c) |
| 25 | end | 24 | end |
| 26 | local f | 25 | local f |
| 27 | f = function() | 26 | f = function() |
| 28 | xpcall(func, function(err) | 27 | xpcall(function() |
| 28 | return func(1, 2, 3) | ||
| 29 | end, function(err) | ||
| 29 | return print(err) | 30 | return print(err) |
| 30 | end, 1, 2, 3) | 31 | end) |
| 31 | xpcall(func, function(err) | 32 | xpcall(function() |
| 33 | return func(1, 2, 3) | ||
| 34 | end, function(err) | ||
| 32 | return print(err) | 35 | return print(err) |
| 33 | end, 1, 2, 3) | 36 | end) |
| 34 | pcall(_anon_func_0, func, print) | 37 | pcall(function() |
| 38 | print("trying") | ||
| 39 | return func(1, 2, 3) | ||
| 40 | end) | ||
| 35 | do | 41 | do |
| 36 | local success, result = xpcall(func, function(err) | 42 | local success, result = xpcall(function() |
| 43 | return func(1, 2, 3) | ||
| 44 | end, function(err) | ||
| 37 | return print(err) | 45 | return print(err) |
| 38 | end, 1, 2, 3) | 46 | end) |
| 39 | success, result = pcall(func, 1, 2, 3) | 47 | success, result = pcall(function() |
| 48 | return func(1, 2, 3) | ||
| 49 | end) | ||
| 40 | end | 50 | end |
| 51 | local tb = { } | ||
| 52 | pcall(_anon_func_0, tb) | ||
| 41 | pcall(_anon_func_1, tb) | 53 | pcall(_anon_func_1, tb) |
| 42 | pcall(_anon_func_2, tb) | 54 | pcall(_anon_func_2, tb) |
| 43 | pcall(_anon_func_3, tb) | 55 | pcall(_anon_func_3, tb) |
| 44 | pcall(_anon_func_4, tb) | 56 | pcall(_anon_func_4, tb) |
| 45 | pcall(_anon_func_5, tb) | 57 | pcall(_anon_func_5, tb) |
| 46 | pcall(_anon_func_6, tb) | 58 | pcall(_anon_func_6, tb) |
| 47 | pcall(_anon_func_7, tb) | 59 | if (xpcall(function() |
| 48 | if (xpcall(func, function(err) | 60 | return func(1) |
| 61 | end, function(err) | ||
| 49 | return print(err) | 62 | return print(err) |
| 50 | end, 1)) then | 63 | end)) then |
| 51 | print("OK") | 64 | print("OK") |
| 52 | end | 65 | end |
| 53 | if xpcall((func), function(err) | 66 | if xpcall(function() |
| 67 | return func(1) | ||
| 68 | end, function(err) | ||
| 54 | return print(err) | 69 | return print(err) |
| 55 | end, 1) then | 70 | end) then |
| 56 | print("OK") | 71 | print("OK") |
| 57 | end | 72 | end |
| 58 | do | 73 | do |
| 59 | do | 74 | do |
| 60 | local success, result = pcall(func, "abc", 123) | 75 | local success, result = pcall(function() |
| 76 | return func("abc", 123) | ||
| 77 | end) | ||
| 61 | if success then | 78 | if success then |
| 62 | print(result) | 79 | print(result) |
| 63 | end | 80 | end |
| 64 | end | 81 | end |
| 65 | local success, result = xpcall(func, function(err) | 82 | local success, result = xpcall(function() |
| 83 | return func("abc", 123) | ||
| 84 | end, function(err) | ||
| 66 | return print(err) | 85 | return print(err) |
| 67 | end, "abc", 123) | 86 | end) |
| 68 | success, result = xpcall(func, function(err) | 87 | success, result = xpcall(function() |
| 88 | return func("abc", 123) | ||
| 89 | end, function(err) | ||
| 69 | return print(err) | 90 | return print(err) |
| 70 | end, "abc", 123) | 91 | end) |
| 71 | if success then | 92 | if success then |
| 72 | print(result) | 93 | print(result) |
| 73 | end | 94 | end |
| 74 | end | 95 | end |
| 75 | do | 96 | do |
| 76 | pcall(func, 1, 2, 3) | 97 | pcall(function() |
| 77 | pcall(func, 1, 2, 3) | 98 | return func(1, 2, 3) |
| 99 | end) | ||
| 100 | pcall(function() | ||
| 101 | return func(1, 2, 3) | ||
| 102 | end) | ||
| 103 | end | ||
| 104 | do | ||
| 105 | x(function() | ||
| 106 | local tb, a, b, c | ||
| 107 | f = function() | ||
| 108 | return pcall(_anon_func_7, a, b, c, tb) | ||
| 109 | end | ||
| 110 | end) | ||
| 78 | end | 111 | end |
| 79 | return nil | 112 | return nil |
| 80 | end | 113 | 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 @@ | |||
| 1 | xpcall(_u51fd_u6570, function(_u9519_u8bef) | 1 | xpcall(function() |
| 2 | return _u51fd_u6570(1, 2, 3) | ||
| 3 | end, function(_u9519_u8bef) | ||
| 2 | return _u6253_u5370(_u9519_u8bef) | 4 | return _u6253_u5370(_u9519_u8bef) |
| 3 | end, 1, 2, 3) | 5 | end) |
| 4 | xpcall(_u51fd_u6570, function(_u9519_u8bef) | 6 | xpcall(function() |
| 7 | return _u51fd_u6570(1, 2, 3) | ||
| 8 | end, function(_u9519_u8bef) | ||
| 5 | return _u6253_u5370(_u9519_u8bef) | 9 | return _u6253_u5370(_u9519_u8bef) |
| 6 | end, 1, 2, 3) | 10 | end) |
| 7 | pcall(function() | 11 | pcall(function() |
| 8 | _u6253_u5370("正在try") | 12 | _u6253_u5370("正在try") |
| 9 | return _u51fd_u6570(1, 2, 3) | 13 | return _u51fd_u6570(1, 2, 3) |
| 10 | end) | 14 | end) |
| 11 | do | 15 | do |
| 12 | local _u6210_u529f, _u7ed3_u679c = xpcall(_u51fd_u6570, function(_u9519_u8bef) | 16 | local _u6210_u529f, _u7ed3_u679c = xpcall(function() |
| 17 | return _u51fd_u6570(1, 2, 3) | ||
| 18 | end, function(_u9519_u8bef) | ||
| 13 | return _u6253_u5370(_u9519_u8bef) | 19 | return _u6253_u5370(_u9519_u8bef) |
| 14 | end, 1, 2, 3) | 20 | end) |
| 15 | _u6210_u529f, _u7ed3_u679c = pcall(_u51fd_u6570, 1, 2, 3) | 21 | _u6210_u529f, _u7ed3_u679c = pcall(function() |
| 22 | return _u51fd_u6570(1, 2, 3) | ||
| 23 | end) | ||
| 16 | end | 24 | end |
| 17 | pcall(function() | 25 | pcall(function() |
| 18 | return _u8868["函数"] | 26 | return _u8868["函数"] |
| @@ -36,35 +44,49 @@ end) | |||
| 36 | pcall(function() | 44 | pcall(function() |
| 37 | return _u8868["函数"](1) | 45 | return _u8868["函数"](1) |
| 38 | end) | 46 | end) |
| 39 | if (xpcall(_u51fd_u6570, function(_u9519_u8bef) | 47 | if (xpcall(function() |
| 48 | return _u51fd_u6570(1) | ||
| 49 | end, function(_u9519_u8bef) | ||
| 40 | return _u6253_u5370(_u9519_u8bef) | 50 | return _u6253_u5370(_u9519_u8bef) |
| 41 | end, 1)) then | 51 | end)) then |
| 42 | _u6253_u5370("好的") | 52 | _u6253_u5370("好的") |
| 43 | end | 53 | end |
| 44 | if xpcall((_u51fd_u6570), function(_u9519_u8bef) | 54 | if xpcall(function() |
| 55 | return _u51fd_u6570(1) | ||
| 56 | end, function(_u9519_u8bef) | ||
| 45 | return _u6253_u5370(_u9519_u8bef) | 57 | return _u6253_u5370(_u9519_u8bef) |
| 46 | end, 1) then | 58 | end) then |
| 47 | _u6253_u5370("好的") | 59 | _u6253_u5370("好的") |
| 48 | end | 60 | end |
| 49 | do | 61 | do |
| 50 | do | 62 | do |
| 51 | local _u6210_u529f, _u7ed3_u679c = pcall(_u51fd_u6570, "abc", 123) | 63 | local _u6210_u529f, _u7ed3_u679c = pcall(function() |
| 64 | return _u51fd_u6570("abc", 123) | ||
| 65 | end) | ||
| 52 | if _u6210_u529f then | 66 | if _u6210_u529f then |
| 53 | _u6253_u5370(_u7ed3_u679c) | 67 | _u6253_u5370(_u7ed3_u679c) |
| 54 | end | 68 | end |
| 55 | end | 69 | end |
| 56 | local _u6210_u529f, _u7ed3_u679c = xpcall(_u51fd_u6570, function(_u9519_u8bef) | 70 | local _u6210_u529f, _u7ed3_u679c = xpcall(function() |
| 71 | return _u51fd_u6570("abc", 123) | ||
| 72 | end, function(_u9519_u8bef) | ||
| 57 | return _u6253_u5370(_u9519_u8bef) | 73 | return _u6253_u5370(_u9519_u8bef) |
| 58 | end, "abc", 123) | 74 | end) |
| 59 | _u6210_u529f, _u7ed3_u679c = xpcall(_u51fd_u6570, function(_u9519_u8bef) | 75 | _u6210_u529f, _u7ed3_u679c = xpcall(function() |
| 76 | return _u51fd_u6570("abc", 123) | ||
| 77 | end, function(_u9519_u8bef) | ||
| 60 | return _u6253_u5370(_u9519_u8bef) | 78 | return _u6253_u5370(_u9519_u8bef) |
| 61 | end, "abc", 123) | 79 | end) |
| 62 | if _u6210_u529f then | 80 | if _u6210_u529f then |
| 63 | _u6253_u5370(_u7ed3_u679c) | 81 | _u6253_u5370(_u7ed3_u679c) |
| 64 | end | 82 | end |
| 65 | end | 83 | end |
| 66 | do | 84 | do |
| 67 | pcall(_u51fd_u6570, 1, 2, 3) | 85 | pcall(function() |
| 68 | pcall(_u51fd_u6570, 1, 2, 3) | 86 | return _u51fd_u6570(1, 2, 3) |
| 87 | end) | ||
| 88 | pcall(function() | ||
| 89 | return _u51fd_u6570(1, 2, 3) | ||
| 90 | end) | ||
| 69 | end | 91 | end |
| 70 | return nil | 92 | 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, ...) | |||
| 367 | end | 367 | end |
| 368 | end | 368 | end |
| 369 | end | 369 | end |
| 370 | local _anon_func_19 = function(print) | 370 | local _anon_func_19 = function(cond, i) |
| 371 | local a = 1 | ||
| 372 | print(a + nil) | ||
| 373 | return 1, 2, 3 | ||
| 374 | end | ||
| 375 | local _anon_func_20 = function(cond, i) | ||
| 376 | local _accum_0 = { } | 371 | local _accum_0 = { } |
| 377 | local _len_0 = 1 | 372 | local _len_0 = 1 |
| 378 | while cond do | 373 | while cond do |
| @@ -382,7 +377,7 @@ local _anon_func_20 = function(cond, i) | |||
| 382 | end | 377 | end |
| 383 | return _accum_0 | 378 | return _accum_0 |
| 384 | end | 379 | end |
| 385 | local _anon_func_21 = function(value) | 380 | local _anon_func_20 = function(value) |
| 386 | if 1 == value then | 381 | if 1 == value then |
| 387 | return 'a' | 382 | return 'a' |
| 388 | elseif 2 == value then | 383 | elseif 2 == value then |
| @@ -417,27 +412,31 @@ GameEngine:onUpdate(function(deltaTime) | |||
| 417 | func(_anon_func_16(pairs, tb, tostring)) | 412 | func(_anon_func_16(pairs, tb, tostring)) |
| 418 | func(_anon_func_17(print)) | 413 | func(_anon_func_17(print)) |
| 419 | do | 414 | do |
| 420 | _anon_func_18(print, select, pcall(_anon_func_19, print)) | 415 | _anon_func_18(print, select, pcall(function() |
| 416 | local a = 1 | ||
| 417 | print(a + nil) | ||
| 418 | return 1, 2, 3 | ||
| 419 | end)) | ||
| 421 | end | 420 | end |
| 422 | i = 1 | 421 | i = 1 |
| 423 | func(_anon_func_20(cond, i)) | 422 | func(_anon_func_19(cond, i)) |
| 424 | return func(_anon_func_21(value)) | 423 | return func(_anon_func_20(value)) |
| 425 | end) | 424 | end) |
| 426 | local _anon_func_22 = function(cond) | 425 | local _anon_func_21 = function(cond) |
| 427 | if cond then | 426 | if cond then |
| 428 | return 998 | 427 | return 998 |
| 429 | else | 428 | else |
| 430 | return "abc" | 429 | return "abc" |
| 431 | end | 430 | end |
| 432 | end | 431 | end |
| 433 | local _anon_func_23 = function(valueB) | 432 | local _anon_func_22 = function(valueB) |
| 434 | if valueB ~= nil then | 433 | if valueB ~= nil then |
| 435 | return valueB | 434 | return valueB |
| 436 | else | 435 | else |
| 437 | return 123 | 436 | return 123 |
| 438 | end | 437 | end |
| 439 | end | 438 | end |
| 440 | local _anon_func_24 = function(tb) | 439 | local _anon_func_23 = function(tb) |
| 441 | if tb ~= nil then | 440 | if tb ~= nil then |
| 442 | local _obj_0 = tb.abc | 441 | local _obj_0 = tb.abc |
| 443 | if _obj_0 ~= nil then | 442 | if _obj_0 ~= nil then |
| @@ -451,7 +450,7 @@ local _anon_func_24 = function(tb) | |||
| 451 | end | 450 | end |
| 452 | return nil | 451 | return nil |
| 453 | end | 452 | end |
| 454 | local _anon_func_26 = function(itemA, listA) | 453 | local _anon_func_25 = function(itemA, listA) |
| 455 | for _index_0 = 1, #listA do | 454 | for _index_0 = 1, #listA do |
| 456 | if listA[_index_0] == itemA then | 455 | if listA[_index_0] == itemA then |
| 457 | return true | 456 | return true |
| @@ -459,17 +458,17 @@ local _anon_func_26 = function(itemA, listA) | |||
| 459 | end | 458 | end |
| 460 | return false | 459 | return false |
| 461 | end | 460 | end |
| 462 | local _anon_func_25 = function(itemA, listA, tb) | 461 | local _anon_func_24 = function(itemA, listA, tb) |
| 463 | do | 462 | do |
| 464 | local _call_0 = tb | 463 | local _call_0 = tb |
| 465 | local _call_1 = _call_0["end"](_call_0) | 464 | local _call_1 = _call_0["end"](_call_0) |
| 466 | return _call_1["🤣"](_call_1, 123 and (#listA > 0 and _anon_func_26(itemA, listA))) | 465 | return _call_1["🤣"](_call_1, 123 and (#listA > 0 and _anon_func_25(itemA, listA))) |
| 467 | end | 466 | end |
| 468 | end | 467 | end |
| 469 | GameEngine:onEvent("SomeEvent", function() | 468 | GameEngine:onEvent("SomeEvent", function() |
| 470 | return func(value + (_anon_func_22(cond)) + (_anon_func_23(valueB)) > _anon_func_24(tb) + _anon_func_25(itemA, listA, tb)) | 469 | return func(value + (_anon_func_21(cond)) + (_anon_func_22(valueB)) > _anon_func_23(tb) + _anon_func_24(itemA, listA, tb)) |
| 471 | end) | 470 | end) |
| 472 | local _anon_func_27 = function(UpdateScoreText, tostring, value) | 471 | local _anon_func_26 = function(UpdateScoreText, tostring, value) |
| 473 | if value > 200 then | 472 | if value > 200 then |
| 474 | UpdateScoreText("Win: " .. tostring(value)) | 473 | UpdateScoreText("Win: " .. tostring(value)) |
| 475 | return "done" | 474 | return "done" |
| @@ -480,7 +479,7 @@ local _anon_func_27 = function(UpdateScoreText, tostring, value) | |||
| 480 | end | 479 | end |
| 481 | GameEngine:schedule(function(deltaTime) | 480 | GameEngine:schedule(function(deltaTime) |
| 482 | local value = 123 | 481 | local value = 123 |
| 483 | return func(_anon_func_27(UpdateScoreText, tostring, value)) | 482 | return func(_anon_func_26(UpdateScoreText, tostring, value)) |
| 484 | end) | 483 | end) |
| 485 | GameEngine:schedule(function(deltaTime) | 484 | GameEngine:schedule(function(deltaTime) |
| 486 | local value = 123 | 485 | local value = 123 |
| @@ -496,14 +495,14 @@ GameEngine:schedule(function(deltaTime) | |||
| 496 | end | 495 | end |
| 497 | end)()) | 496 | end)()) |
| 498 | end) | 497 | end) |
| 499 | local _anon_func_28 = function(char) | 498 | local _anon_func_27 = function(char) |
| 500 | local _obj_0 = char.stats.strength | 499 | local _obj_0 = char.stats.strength |
| 501 | if _obj_0 ~= nil then | 500 | if _obj_0 ~= nil then |
| 502 | return _obj_0:ref() | 501 | return _obj_0:ref() |
| 503 | end | 502 | end |
| 504 | return nil | 503 | return nil |
| 505 | end | 504 | end |
| 506 | local _anon_func_29 = function(os, _arg_0, ...) | 505 | local _anon_func_28 = function(os, _arg_0, ...) |
| 507 | do | 506 | do |
| 508 | local ok = _arg_0 | 507 | local ok = _arg_0 |
| 509 | if ok then | 508 | if ok then |
| @@ -513,7 +512,7 @@ local _anon_func_29 = function(os, _arg_0, ...) | |||
| 513 | end | 512 | end |
| 514 | end | 513 | end |
| 515 | end | 514 | end |
| 516 | local _anon_func_30 = function(debug_env_after, debug_env_before, env, func) | 515 | local _anon_func_29 = function(debug_env_after, debug_env_before, env, func) |
| 517 | debug_env_before(env) | 516 | debug_env_before(env) |
| 518 | func(env) | 517 | func(env) |
| 519 | return debug_env_after(env) | 518 | return debug_env_after(env) |
| @@ -523,13 +522,14 @@ do | |||
| 523 | buff_strength = function(char, item) | 522 | buff_strength = function(char, item) |
| 524 | local _obj_0 = item.buffer.strength | 523 | local _obj_0 = item.buffer.strength |
| 525 | if _obj_0 ~= nil then | 524 | if _obj_0 ~= nil then |
| 526 | return _obj_0(_anon_func_28(char)) | 525 | return _obj_0(_anon_func_27(char)) |
| 527 | end | 526 | end |
| 528 | return nil | 527 | return nil |
| 529 | end | 528 | end |
| 529 | local debug_env_before, debug_env_after | ||
| 530 | local exe_func | 530 | local exe_func |
| 531 | exe_func = function(func, env) | 531 | exe_func = function(func, env) |
| 532 | return _anon_func_29(os, xpcall(_anon_func_30, function(ex) | 532 | return _anon_func_28(os, xpcall(_anon_func_29, function(ex) |
| 533 | error(ex) | 533 | error(ex) |
| 534 | return ex | 534 | return ex |
| 535 | end, debug_env_after, debug_env_before, env, func)) | 535 | end, debug_env_after, debug_env_before, env, func)) |
