diff options
| author | Li Jin <dragon-fly@qq.com> | 2024-09-04 12:16:10 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2024-09-04 12:16:25 +0800 |
| commit | 461bf7c32408553125d71b23e04e21fed690c4f5 (patch) | |
| tree | 4442efd0fc2524e82be63e12e3e046a0532b26dd /spec | |
| parent | 2f8215df7288e0aac690c8e8b1ff79865f114302 (diff) | |
| download | yuescript-0.25.1.tar.gz yuescript-0.25.1.tar.bz2 yuescript-0.25.1.zip | |
fix more cases for evaluation order of multi-value assignments.v0.25.1
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/inputs/assign.yue | 20 | ||||
| -rw-r--r-- | spec/outputs/assign.lua | 97 | ||||
| -rw-r--r-- | spec/outputs/destructure.lua | 5 | ||||
| -rw-r--r-- | spec/outputs/metatable.lua | 5 | ||||
| -rw-r--r-- | spec/outputs/unicode/assign.lua | 37 | ||||
| -rw-r--r-- | spec/outputs/unicode/destructure.lua | 5 | ||||
| -rw-r--r-- | spec/outputs/unicode/metatable.lua | 5 |
7 files changed, 120 insertions, 54 deletions
diff --git a/spec/inputs/assign.yue b/spec/inputs/assign.yue index 2c89a99..514aeed 100644 --- a/spec/inputs/assign.yue +++ b/spec/inputs/assign.yue | |||
| @@ -63,6 +63,20 @@ do | |||
| 63 | 123, tb | 63 | 123, tb |
| 64 | 64 | ||
| 65 | do | 65 | do |
| 66 | a, b[] = if x | ||
| 67 | switch y | ||
| 68 | when 1 | ||
| 69 | f! | ||
| 70 | print a, b | ||
| 71 | |||
| 72 | do | ||
| 73 | a, {b} = if x | ||
| 74 | f! | ||
| 75 | else | ||
| 76 | 123, tb | ||
| 77 | print a, b | ||
| 78 | |||
| 79 | do | ||
| 66 | a, b[], c, d.<add> = if x | 80 | a, b[], c, d.<add> = if x |
| 67 | switch y | 81 | switch y |
| 68 | when 1 | 82 | when 1 |
| @@ -75,6 +89,12 @@ do | |||
| 75 | do | 89 | do |
| 76 | print 123 | 90 | print 123 |
| 77 | 1, f2! | 91 | 1, f2! |
| 92 | print a, b, c, d | ||
| 93 | |||
| 94 | do | ||
| 95 | x, [a, b], tb.<>, c[] = 1, if cond | ||
| 96 | f! | ||
| 97 | print x, a, b | ||
| 78 | 98 | ||
| 79 | do | 99 | do |
| 80 | a = b = c = d = 0 | 100 | a = b = c = d = 0 |
diff --git a/spec/outputs/assign.lua b/spec/outputs/assign.lua index 1978df1..162a563 100644 --- a/spec/outputs/assign.lua +++ b/spec/outputs/assign.lua | |||
| @@ -67,50 +67,95 @@ return _(function() | |||
| 67 | end | 67 | end |
| 68 | do | 68 | do |
| 69 | local a | 69 | local a |
| 70 | local _obj_0, _obj_1 | ||
| 70 | if x then | 71 | if x then |
| 71 | local _exp_0 = y | 72 | local _exp_0 = y |
| 72 | if 1 == _exp_0 then | 73 | if 1 == _exp_0 then |
| 73 | local _obj_0, _obj_1 = f() | 74 | _obj_0, _obj_1 = f() |
| 74 | b[#b + 1] = _obj_1 | ||
| 75 | a = _obj_0 | ||
| 76 | end | 75 | end |
| 77 | end | 76 | end |
| 77 | a = _obj_0 | ||
| 78 | b[#b + 1] = _obj_1 | ||
| 78 | end | 79 | end |
| 79 | do | 80 | do |
| 80 | local a, b | 81 | local a, b |
| 82 | local _obj_0, _obj_1 | ||
| 81 | if x then | 83 | if x then |
| 82 | local _obj_0, _obj_1 = f() | 84 | _obj_0, _obj_1 = f() |
| 85 | else | ||
| 86 | _obj_0, _obj_1 = 123, tb | ||
| 87 | end | ||
| 88 | a = _obj_0 | ||
| 89 | b = _obj_1[1] | ||
| 90 | end | ||
| 91 | do | ||
| 92 | local a | ||
| 93 | do | ||
| 94 | local _obj_0, _obj_1 | ||
| 95 | if x then | ||
| 96 | local _exp_0 = y | ||
| 97 | if 1 == _exp_0 then | ||
| 98 | _obj_0, _obj_1 = f() | ||
| 99 | end | ||
| 100 | end | ||
| 101 | a = _obj_0 | ||
| 102 | b[#b + 1] = _obj_1 | ||
| 103 | end | ||
| 104 | print(a, b) | ||
| 105 | end | ||
| 106 | do | ||
| 107 | local a, b | ||
| 108 | do | ||
| 109 | local _obj_0, _obj_1 | ||
| 110 | if x then | ||
| 111 | _obj_0, _obj_1 = f() | ||
| 112 | else | ||
| 113 | _obj_0, _obj_1 = 123, tb | ||
| 114 | end | ||
| 83 | a = _obj_0 | 115 | a = _obj_0 |
| 84 | b = _obj_1[1] | 116 | b = _obj_1[1] |
| 85 | else | ||
| 86 | a = 123 | ||
| 87 | b = tb[1] | ||
| 88 | end | 117 | end |
| 118 | print(a, b) | ||
| 89 | end | 119 | end |
| 90 | do | 120 | do |
| 91 | local a, c | 121 | local a, c |
| 92 | if x then | 122 | do |
| 93 | local _exp_0 = y | 123 | local _obj_0, _obj_1, _obj_2, _obj_3 |
| 94 | if 1 == _exp_0 then | 124 | if x then |
| 95 | local _obj_0, _obj_1, _obj_2, _obj_3 = f() | 125 | local _exp_0 = y |
| 96 | b[#b + 1] = _obj_1 | 126 | if 1 == _exp_0 then |
| 97 | a, c, getmetatable(d).__add = _obj_0, _obj_2, _obj_3 | 127 | _obj_0, _obj_1, _obj_2, _obj_3 = f() |
| 98 | end | 128 | end |
| 99 | elseif x2 then | 129 | elseif x2 then |
| 100 | if y2 then | 130 | if y2 then |
| 101 | local _obj_0, _obj_1, _obj_2, _obj_3 = f1() | 131 | _obj_0, _obj_1, _obj_2, _obj_3 = f1() |
| 102 | b[#b + 1] = _obj_1 | 132 | end |
| 103 | a, c, getmetatable(d).__add = _obj_0, _obj_2, _obj_3 | 133 | else |
| 134 | print("hello") | ||
| 135 | do | ||
| 136 | print(123) | ||
| 137 | _obj_0, _obj_1, _obj_2, _obj_3 = 1, f2() | ||
| 138 | end | ||
| 104 | end | 139 | end |
| 105 | else | 140 | a = _obj_0 |
| 106 | print("hello") | 141 | b[#b + 1] = _obj_1 |
| 107 | do | 142 | c, getmetatable(d).__add = _obj_2, _obj_3 |
| 108 | print(123) | 143 | end |
| 109 | local _obj_0, _obj_1, _obj_2 = f2() | 144 | print(a, b, c, d) |
| 110 | b[#b + 1] = _obj_0 | 145 | end |
| 111 | a, c, getmetatable(d).__add = 1, _obj_1, _obj_2 | 146 | do |
| 147 | local x, a, b | ||
| 148 | do | ||
| 149 | local _obj_0, _obj_1, _obj_2 | ||
| 150 | if cond then | ||
| 151 | _obj_0, _obj_1, _obj_2 = f() | ||
| 112 | end | 152 | end |
| 153 | x = 1 | ||
| 154 | a, b = _obj_0[1], _obj_0[2] | ||
| 155 | setmetatable(tb, _obj_1) | ||
| 156 | c[#c + 1] = _obj_2 | ||
| 113 | end | 157 | end |
| 158 | print(x, a, b) | ||
| 114 | end | 159 | end |
| 115 | do | 160 | do |
| 116 | local a = 0 | 161 | local a = 0 |
diff --git a/spec/outputs/destructure.lua b/spec/outputs/destructure.lua index d8517a0..44da58b 100644 --- a/spec/outputs/destructure.lua +++ b/spec/outputs/destructure.lua | |||
| @@ -427,14 +427,15 @@ do | |||
| 427 | local x1, x2, x3, d, b, e | 427 | local x1, x2, x3, d, b, e |
| 428 | do | 428 | do |
| 429 | local _obj_0, _obj_1, _obj_2, _obj_3, _obj_4 = f() | 429 | local _obj_0, _obj_1, _obj_2, _obj_3, _obj_4 = f() |
| 430 | x1, x2, x3 = 1, 2, 3 | ||
| 430 | do | 431 | do |
| 431 | local _obj_5 = a | 432 | local _obj_5 = a |
| 432 | _obj_5[#_obj_5 + 1] = _obj_0 | 433 | _obj_5[#_obj_5 + 1] = _obj_0 |
| 433 | end | 434 | end |
| 434 | setmetatable(c, _obj_4) | 435 | d = _obj_1 |
| 435 | x1, x2, x3, d = 1, 2, 3, _obj_1 | ||
| 436 | b = _obj_2[1] | 436 | b = _obj_2[1] |
| 437 | e = _obj_3 | 437 | e = _obj_3 |
| 438 | setmetatable(c, _obj_4) | ||
| 438 | end | 439 | end |
| 439 | local y1, y2, y3, y4 | 440 | local y1, y2, y3, y4 |
| 440 | local _obj_0, _obj_1 = f2() | 441 | local _obj_0, _obj_1 = f2() |
diff --git a/spec/outputs/metatable.lua b/spec/outputs/metatable.lua index 0715b58..974a6e4 100644 --- a/spec/outputs/metatable.lua +++ b/spec/outputs/metatable.lua | |||
| @@ -58,11 +58,12 @@ do | |||
| 58 | local _obj_2 = getmetatable(_obj_1) | 58 | local _obj_2 = getmetatable(_obj_1) |
| 59 | add, sub = _obj_2.__add, _obj_2.__sub | 59 | add, sub = _obj_2.__add, _obj_2.__sub |
| 60 | end | 60 | end |
| 61 | setmetatable(a.b, { }) | ||
| 62 | x.abc = 123 | 61 | x.abc = 123 |
| 62 | setmetatable(a.b, { }) | ||
| 63 | setmetatable(func(), mt) | 63 | setmetatable(func(), mt) |
| 64 | a = 1 | ||
| 64 | setmetatable(b.c, mt) | 65 | setmetatable(b.c, mt) |
| 65 | a, d, e = 1, "abc", nil | 66 | d, e = "abc", nil |
| 66 | local is_same = getmetatable(a).__index == getmetatable(a).__index | 67 | local is_same = getmetatable(a).__index == getmetatable(a).__index |
| 67 | setmetatable(a, { | 68 | setmetatable(a, { |
| 68 | __index = tb | 69 | __index = tb |
diff --git a/spec/outputs/unicode/assign.lua b/spec/outputs/unicode/assign.lua index e883d68..bf43953 100644 --- a/spec/outputs/unicode/assign.lua +++ b/spec/outputs/unicode/assign.lua | |||
| @@ -71,53 +71,50 @@ return __u65e0_u6548_u53d8_u91cf(function() | |||
| 71 | end | 71 | end |
| 72 | do | 72 | do |
| 73 | local _u53d8_u91cfa | 73 | local _u53d8_u91cfa |
| 74 | local _obj_0, _obj_1 | ||
| 74 | if x_u6761_u4ef6 then | 75 | if x_u6761_u4ef6 then |
| 75 | local _exp_0 = _u5bf9_u8c61y | 76 | local _exp_0 = _u5bf9_u8c61y |
| 76 | if 1 == _exp_0 then | 77 | if 1 == _exp_0 then |
| 77 | local _obj_0, _obj_1 = _u51fd_u6570() | 78 | _obj_0, _obj_1 = _u51fd_u6570() |
| 78 | _u53d8_u91cfb[#_u53d8_u91cfb + 1] = _obj_1 | ||
| 79 | _u53d8_u91cfa = _obj_0 | ||
| 80 | end | 79 | end |
| 81 | end | 80 | end |
| 81 | _u53d8_u91cfa = _obj_0 | ||
| 82 | _u53d8_u91cfb[#_u53d8_u91cfb + 1] = _obj_1 | ||
| 82 | end | 83 | end |
| 83 | do | 84 | do |
| 84 | local _u53d8_u91cfa, _u5143_u7d20b | 85 | local _u53d8_u91cfa, _u5143_u7d20b |
| 86 | local _obj_0, _obj_1 | ||
| 85 | if x_u6761_u4ef6 then | 87 | if x_u6761_u4ef6 then |
| 86 | local _obj_0, _obj_1 = _u51fd_u6570() | 88 | _obj_0, _obj_1 = _u51fd_u6570() |
| 87 | _u53d8_u91cfa = _obj_0 | ||
| 88 | _u5143_u7d20b = _obj_1[1] | ||
| 89 | else | 89 | else |
| 90 | _u53d8_u91cfa = 123 | 90 | _obj_0, _obj_1 = 123, _u8868 |
| 91 | _u5143_u7d20b = _u8868[1] | ||
| 92 | end | 91 | end |
| 92 | _u53d8_u91cfa = _obj_0 | ||
| 93 | _u5143_u7d20b = _obj_1[1] | ||
| 93 | end | 94 | end |
| 94 | do | 95 | do |
| 95 | local _u53d8_u91cfa, _u5bf9_u8c61c | 96 | local _u53d8_u91cfa, _u5bf9_u8c61c |
| 97 | local _obj_0, _obj_1, _obj_2, _obj_3 | ||
| 96 | if _u6761_u4ef6x then | 98 | if _u6761_u4ef6x then |
| 97 | local _exp_0 = _u5bf9_u8c61y | 99 | local _exp_0 = _u5bf9_u8c61y |
| 98 | if 1 == _exp_0 then | 100 | if 1 == _exp_0 then |
| 99 | local _obj_0, _obj_1, _obj_2, _obj_3 = _u51fd_u6570() | 101 | _obj_0, _obj_1, _obj_2, _obj_3 = _u51fd_u6570() |
| 100 | local _obj_4 = _u6570_u7ec4b | ||
| 101 | _obj_4[#_obj_4 + 1] = _obj_1 | ||
| 102 | _u53d8_u91cfa, _u5bf9_u8c61c, getmetatable(_u5bf9_u8c61d).__add = _obj_0, _obj_2, _obj_3 | ||
| 103 | end | 102 | end |
| 104 | elseif _u6761_u4ef6x2 then | 103 | elseif _u6761_u4ef6x2 then |
| 105 | if _u6761_u4ef6y2 then | 104 | if _u6761_u4ef6y2 then |
| 106 | local _obj_0, _obj_1, _obj_2, _obj_3 = _u51fd_u65701() | 105 | _obj_0, _obj_1, _obj_2, _obj_3 = _u51fd_u65701() |
| 107 | local _obj_4 = _u6570_u7ec4b | ||
| 108 | _obj_4[#_obj_4 + 1] = _obj_1 | ||
| 109 | _u53d8_u91cfa, _u5bf9_u8c61c, getmetatable(_u5bf9_u8c61d).__add = _obj_0, _obj_2, _obj_3 | ||
| 110 | end | 106 | end |
| 111 | else | 107 | else |
| 112 | _u6253_u5370("hello") | 108 | _u6253_u5370("hello") |
| 113 | do | 109 | do |
| 114 | _u6253_u5370(123) | 110 | _u6253_u5370(123) |
| 115 | local _obj_0, _obj_1, _obj_2 = _u51fd_u65702() | 111 | _obj_0, _obj_1, _obj_2, _obj_3 = 1, _u51fd_u65702() |
| 116 | local _obj_3 = _u6570_u7ec4b | ||
| 117 | _obj_3[#_obj_3 + 1] = _obj_0 | ||
| 118 | _u53d8_u91cfa, _u5bf9_u8c61c, getmetatable(_u5bf9_u8c61d).__add = 1, _obj_1, _obj_2 | ||
| 119 | end | 112 | end |
| 120 | end | 113 | end |
| 114 | _u53d8_u91cfa = _obj_0 | ||
| 115 | local _obj_4 = _u6570_u7ec4b | ||
| 116 | _obj_4[#_obj_4 + 1] = _obj_1 | ||
| 117 | _u5bf9_u8c61c, getmetatable(_u5bf9_u8c61d).__add = _obj_2, _obj_3 | ||
| 121 | end | 118 | end |
| 122 | do | 119 | do |
| 123 | local _u53d8_u91cfa = 0 | 120 | local _u53d8_u91cfa = 0 |
diff --git a/spec/outputs/unicode/destructure.lua b/spec/outputs/unicode/destructure.lua index 29697fa..27c4d47 100644 --- a/spec/outputs/unicode/destructure.lua +++ b/spec/outputs/unicode/destructure.lua | |||
| @@ -389,14 +389,15 @@ do | |||
| 389 | local _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3, _u53d8_u91cfd, _u5143_u7d20b, _u53d8_u91cfe | 389 | local _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3, _u53d8_u91cfd, _u5143_u7d20b, _u53d8_u91cfe |
| 390 | do | 390 | do |
| 391 | local _obj_0, _obj_1, _obj_2, _obj_3, _obj_4 = _u51fd_u6570() | 391 | local _obj_0, _obj_1, _obj_2, _obj_3, _obj_4 = _u51fd_u6570() |
| 392 | _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3 = 1, 2, 3 | ||
| 392 | do | 393 | do |
| 393 | local _obj_5 = _u6570_u7ec4a | 394 | local _obj_5 = _u6570_u7ec4a |
| 394 | _obj_5[#_obj_5 + 1] = _obj_0 | 395 | _obj_5[#_obj_5 + 1] = _obj_0 |
| 395 | end | 396 | end |
| 396 | setmetatable(_u5bf9_u8c61c, _obj_4) | 397 | _u53d8_u91cfd = _obj_1 |
| 397 | _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3, _u53d8_u91cfd = 1, 2, 3, _obj_1 | ||
| 398 | _u5143_u7d20b = _obj_2[1] | 398 | _u5143_u7d20b = _obj_2[1] |
| 399 | _u53d8_u91cfe = _obj_3 | 399 | _u53d8_u91cfe = _obj_3 |
| 400 | setmetatable(_u5bf9_u8c61c, _obj_4) | ||
| 400 | end | 401 | end |
| 401 | local _u53d8_u91cfy1, _u5b57_u6bb5y2, _u5b57_u6bb5y3, _u53d8_u91cfy4 | 402 | local _u53d8_u91cfy1, _u5b57_u6bb5y2, _u5b57_u6bb5y3, _u53d8_u91cfy4 |
| 402 | local _obj_0, _obj_1 = _u51fd_u65702() | 403 | local _obj_0, _obj_1 = _u51fd_u65702() |
diff --git a/spec/outputs/unicode/metatable.lua b/spec/outputs/unicode/metatable.lua index f948d21..970e52c 100644 --- a/spec/outputs/unicode/metatable.lua +++ b/spec/outputs/unicode/metatable.lua | |||
| @@ -58,11 +58,12 @@ do | |||
| 58 | local _obj_2 = getmetatable(_obj_1) | 58 | local _obj_2 = getmetatable(_obj_1) |
| 59 | add, sub = _obj_2.__add, _obj_2.__sub | 59 | add, sub = _obj_2.__add, _obj_2.__sub |
| 60 | end | 60 | end |
| 61 | setmetatable(_u53d8_u91cfa["变量b"], { }) | ||
| 62 | _u53d8_u91cfx.abc = 123 | 61 | _u53d8_u91cfx.abc = 123 |
| 62 | setmetatable(_u53d8_u91cfa["变量b"], { }) | ||
| 63 | setmetatable(_u51fd_u6570(), mt) | 63 | setmetatable(_u51fd_u6570(), mt) |
| 64 | _u53d8_u91cfa = 1 | ||
| 64 | setmetatable(_u53d8_u91cfb["变量c"], mt) | 65 | setmetatable(_u53d8_u91cfb["变量c"], mt) |
| 65 | _u53d8_u91cfa, _u53d8_u91cfd, _u53d8_u91cfe = 1, "abc", nil | 66 | _u53d8_u91cfd, _u53d8_u91cfe = "abc", nil |
| 66 | local _u76f8_u540c = getmetatable(_u53d8_u91cfa).__index == getmetatable(_u53d8_u91cfa).__index | 67 | local _u76f8_u540c = getmetatable(_u53d8_u91cfa).__index == getmetatable(_u53d8_u91cfa).__index |
| 67 | setmetatable(_u53d8_u91cfa, { | 68 | setmetatable(_u53d8_u91cfa, { |
| 68 | __index = _u8868 | 69 | __index = _u8868 |
