diff options
| author | Li Jin <dragon-fly@qq.com> | 2024-09-03 23:23:25 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2024-09-03 23:23:25 +0800 |
| commit | 2f8215df7288e0aac690c8e8b1ff79865f114302 (patch) | |
| tree | 2fc316ec0d6ca82123dc1fbc2012d8eeb3bc8427 /spec | |
| parent | 880b7eb9a427b263091f6eef5197c0285c723fd7 (diff) | |
| download | yuescript-0.25.0.tar.gz yuescript-0.25.0.tar.bz2 yuescript-0.25.0.zip | |
fix correct evaluation order for multi-value assignments.v0.25.0
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/inputs/destructure.yue | 8 | ||||
| -rw-r--r-- | spec/outputs/assign.lua | 3 | ||||
| -rw-r--r-- | spec/outputs/destructure.lua | 49 | ||||
| -rw-r--r-- | spec/outputs/metatable.lua | 13 | ||||
| -rw-r--r-- | spec/outputs/unicode/assign.lua | 3 | ||||
| -rw-r--r-- | spec/outputs/unicode/destructure.lua | 24 | ||||
| -rw-r--r-- | spec/outputs/unicode/metatable.lua | 13 |
7 files changed, 73 insertions, 40 deletions
diff --git a/spec/inputs/destructure.yue b/spec/inputs/destructure.yue index 5017ee1..674dfe4 100644 --- a/spec/inputs/destructure.yue +++ b/spec/inputs/destructure.yue | |||
| @@ -7,6 +7,14 @@ do | |||
| 7 | { :hello, :world } = value | 7 | { :hello, :world } = value |
| 8 | 8 | ||
| 9 | do | 9 | do |
| 10 | x, [a, b] = f! | ||
| 11 | print x, a, b | ||
| 12 | |||
| 13 | do | ||
| 14 | list = [ [1, 2], [3, 4]] | ||
| 15 | {x, y}, list = lume.first(list), lume.slice list, 2 | ||
| 16 | |||
| 17 | do | ||
| 10 | { yes: no, thing } = world | 18 | { yes: no, thing } = world |
| 11 | 19 | ||
| 12 | {:a,:b,:c,:d} = yeah | 20 | {:a,:b,:c,:d} = yeah |
diff --git a/spec/outputs/assign.lua b/spec/outputs/assign.lua index 5552f73..1978df1 100644 --- a/spec/outputs/assign.lua +++ b/spec/outputs/assign.lua | |||
| @@ -77,8 +77,7 @@ return _(function() | |||
| 77 | end | 77 | end |
| 78 | end | 78 | end |
| 79 | do | 79 | do |
| 80 | local a | 80 | local a, b |
| 81 | local b | ||
| 82 | if x then | 81 | if x then |
| 83 | local _obj_0, _obj_1 = f() | 82 | local _obj_0, _obj_1 = f() |
| 84 | a = _obj_0 | 83 | a = _obj_0 |
diff --git a/spec/outputs/destructure.lua b/spec/outputs/destructure.lua index 2d0d46f..d8517a0 100644 --- a/spec/outputs/destructure.lua +++ b/spec/outputs/destructure.lua | |||
| @@ -14,6 +14,31 @@ do | |||
| 14 | hello, world = _obj_0.hello, _obj_0.world | 14 | hello, world = _obj_0.hello, _obj_0.world |
| 15 | end | 15 | end |
| 16 | do | 16 | do |
| 17 | local x, a, b | ||
| 18 | do | ||
| 19 | local _obj_0, _obj_1 = f() | ||
| 20 | x = _obj_0 | ||
| 21 | a, b = _obj_1[1], _obj_1[2] | ||
| 22 | end | ||
| 23 | print(x, a, b) | ||
| 24 | end | ||
| 25 | do | ||
| 26 | local list = { | ||
| 27 | { | ||
| 28 | 1, | ||
| 29 | 2 | ||
| 30 | }, | ||
| 31 | { | ||
| 32 | 3, | ||
| 33 | 4 | ||
| 34 | } | ||
| 35 | } | ||
| 36 | local x, y | ||
| 37 | local _obj_0 = lume.first(list) | ||
| 38 | x, y = _obj_0[1], _obj_0[2] | ||
| 39 | list = lume.slice(list, 2) | ||
| 40 | end | ||
| 41 | do | ||
| 17 | local no, thing | 42 | local no, thing |
| 18 | do | 43 | do |
| 19 | local _obj_0 = world | 44 | local _obj_0 = world |
| @@ -24,12 +49,12 @@ do | |||
| 24 | local _obj_0 = yeah | 49 | local _obj_0 = yeah |
| 25 | a, b, c, d = _obj_0.a, _obj_0.b, _obj_0.c, _obj_0.d | 50 | a, b, c, d = _obj_0.a, _obj_0.b, _obj_0.c, _obj_0.d |
| 26 | end | 51 | end |
| 27 | b = two | ||
| 28 | a = one[1] | 52 | a = one[1] |
| 29 | c = nil | 53 | b = two |
| 30 | b = one[1] | 54 | b = one[1] |
| 31 | local e = two | 55 | c = nil |
| 32 | d = one[1] | 56 | d = one[1] |
| 57 | local e = two | ||
| 33 | local x = one | 58 | local x = one |
| 34 | local y = two[1] | 59 | local y = two[1] |
| 35 | local xx, yy = 1, 2 | 60 | local xx, yy = 1, 2 |
| @@ -46,9 +71,9 @@ do | |||
| 46 | a, b, c, d, e, f, g = _obj_0[1], _obj_0.b, _obj_0[2], _obj_0.d, _obj_0[3], _obj_0.f, _obj_0[4] | 71 | a, b, c, d, e, f, g = _obj_0[1], _obj_0.b, _obj_0[2], _obj_0.d, _obj_0[3], _obj_0.f, _obj_0[4] |
| 47 | end | 72 | end |
| 48 | do | 73 | do |
| 49 | c = nil | ||
| 50 | local _obj_0 = tbl | 74 | local _obj_0 = tbl |
| 51 | a, b = _obj_0.a, _obj_0.b | 75 | a, b = _obj_0.a, _obj_0.b |
| 76 | c = nil | ||
| 52 | end | 77 | end |
| 53 | do | 78 | do |
| 54 | a = tbl | 79 | a = tbl |
| @@ -56,8 +81,8 @@ do | |||
| 56 | b, c = _obj_0.b, _obj_0.c | 81 | b, c = _obj_0.b, _obj_0.c |
| 57 | end | 82 | end |
| 58 | do | 83 | do |
| 59 | b = _ | ||
| 60 | a = tbl.a | 84 | a = tbl.a |
| 85 | b = _ | ||
| 61 | c = _.c | 86 | c = _.c |
| 62 | end | 87 | end |
| 63 | end | 88 | end |
| @@ -211,8 +236,8 @@ do | |||
| 211 | end | 236 | end |
| 212 | one, two, three = _tbl_0.one, _tbl_0.two, _tbl_0.three | 237 | one, two, three = _tbl_0.one, _tbl_0.two, _tbl_0.three |
| 213 | end | 238 | end |
| 214 | b = 123 | ||
| 215 | a = (a["if"](a, 123) + t).a | 239 | a = (a["if"](a, 123) + t).a |
| 240 | b = 123 | ||
| 216 | end | 241 | end |
| 217 | do | 242 | do |
| 218 | local name, job | 243 | local name, job |
| @@ -399,8 +424,7 @@ do | |||
| 399 | end | 424 | end |
| 400 | end | 425 | end |
| 401 | do | 426 | do |
| 402 | local x1, x2, x3, d, e | 427 | local x1, x2, x3, d, b, e |
| 403 | local b | ||
| 404 | do | 428 | do |
| 405 | 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() |
| 406 | do | 430 | do |
| @@ -408,14 +432,15 @@ do | |||
| 408 | _obj_5[#_obj_5 + 1] = _obj_0 | 432 | _obj_5[#_obj_5 + 1] = _obj_0 |
| 409 | end | 433 | end |
| 410 | setmetatable(c, _obj_4) | 434 | setmetatable(c, _obj_4) |
| 411 | x1, x2, x3, d, e = 1, 2, 3, _obj_1, _obj_3 | 435 | x1, x2, x3, d = 1, 2, 3, _obj_1 |
| 412 | b = _obj_2[1] | 436 | b = _obj_2[1] |
| 437 | e = _obj_3 | ||
| 413 | end | 438 | end |
| 414 | local y1, y4 | 439 | local y1, y2, y3, y4 |
| 415 | local y2, y3 | ||
| 416 | local _obj_0, _obj_1 = f2() | 440 | local _obj_0, _obj_1 = f2() |
| 417 | y1, y4 = f1(), _obj_1 | 441 | y1 = f1() |
| 418 | y2, y3 = _obj_0.y2, _obj_0.y3 | 442 | y2, y3 = _obj_0.y2, _obj_0.y3 |
| 443 | y4 = _obj_1 | ||
| 419 | end | 444 | end |
| 420 | do | 445 | do |
| 421 | local v1, v2, v3, v4 | 446 | local v1, v2, v3, v4 |
diff --git a/spec/outputs/metatable.lua b/spec/outputs/metatable.lua index 6af10e5..0715b58 100644 --- a/spec/outputs/metatable.lua +++ b/spec/outputs/metatable.lua | |||
| @@ -48,14 +48,15 @@ do | |||
| 48 | end | 48 | end |
| 49 | do | 49 | do |
| 50 | local x, new, var, close, closeA, num, add, sub | 50 | local x, new, var, close, closeA, num, add, sub |
| 51 | local _obj_0, _obj_1 | 51 | x = 123 |
| 52 | x, _obj_0, _obj_1 = 123, a.b.c, func() | 52 | local _obj_0 = a.b.c |
| 53 | new, var = _obj_0.new, _obj_0.var | 53 | new, var = _obj_0.new, _obj_0.var |
| 54 | local _obj_2 = getmetatable(_obj_0) | 54 | local _obj_1 = getmetatable(_obj_0) |
| 55 | close, closeA = _obj_2.__close, _obj_2.__close | 55 | close, closeA = _obj_1.__close, _obj_1.__close |
| 56 | _obj_1 = func() | ||
| 56 | num = _obj_1.num | 57 | num = _obj_1.num |
| 57 | local _obj_3 = getmetatable(_obj_1) | 58 | local _obj_2 = getmetatable(_obj_1) |
| 58 | add, sub = _obj_3.__add, _obj_3.__sub | 59 | add, sub = _obj_2.__add, _obj_2.__sub |
| 59 | end | 60 | end |
| 60 | setmetatable(a.b, { }) | 61 | setmetatable(a.b, { }) |
| 61 | x.abc = 123 | 62 | x.abc = 123 |
diff --git a/spec/outputs/unicode/assign.lua b/spec/outputs/unicode/assign.lua index cb53159..e883d68 100644 --- a/spec/outputs/unicode/assign.lua +++ b/spec/outputs/unicode/assign.lua | |||
| @@ -81,8 +81,7 @@ return __u65e0_u6548_u53d8_u91cf(function() | |||
| 81 | end | 81 | end |
| 82 | end | 82 | end |
| 83 | do | 83 | do |
| 84 | local _u53d8_u91cfa | 84 | local _u53d8_u91cfa, _u5143_u7d20b |
| 85 | local _u5143_u7d20b | ||
| 86 | if x_u6761_u4ef6 then | 85 | if x_u6761_u4ef6 then |
| 87 | local _obj_0, _obj_1 = _u51fd_u6570() | 86 | local _obj_0, _obj_1 = _u51fd_u6570() |
| 88 | _u53d8_u91cfa = _obj_0 | 87 | _u53d8_u91cfa = _obj_0 |
diff --git a/spec/outputs/unicode/destructure.lua b/spec/outputs/unicode/destructure.lua index e1cd6ae..29697fa 100644 --- a/spec/outputs/unicode/destructure.lua +++ b/spec/outputs/unicode/destructure.lua | |||
| @@ -24,12 +24,12 @@ do | |||
| 24 | local _obj_0 = _u597d | 24 | local _obj_0 = _u597d |
| 25 | _u5b57_u6bb5a, _u5b57_u6bb5b, _u5b57_u6bb5c, d_u5b57_u6bb5 = _obj_0["字段a"], _obj_0["字段b"], _obj_0["字段c"], _obj_0["d字段"] | 25 | _u5b57_u6bb5a, _u5b57_u6bb5b, _u5b57_u6bb5c, d_u5b57_u6bb5 = _obj_0["字段a"], _obj_0["字段b"], _obj_0["字段c"], _obj_0["d字段"] |
| 26 | end | 26 | end |
| 27 | local _u53d8_u91cfb = _u4e8c | ||
| 28 | local a_u5143_u7d20 = _u4e00[1] | 27 | local a_u5143_u7d20 = _u4e00[1] |
| 29 | local _u53d8_u91cfc = nil | 28 | local _u53d8_u91cfb = _u4e8c |
| 30 | local b_u5143_u7d20 = _u4e00[1] | 29 | local b_u5143_u7d20 = _u4e00[1] |
| 31 | local _u53d8_u91cfe = _u4e8c | 30 | local _u53d8_u91cfc = nil |
| 32 | local d_u5143_u7d20 = _u4e00[1] | 31 | local d_u5143_u7d20 = _u4e00[1] |
| 32 | local _u53d8_u91cfe = _u4e8c | ||
| 33 | local _u53d8_u91cfx = _u4e00 | 33 | local _u53d8_u91cfx = _u4e00 |
| 34 | local _u5143_u7d20y = _u4e8c[1] | 34 | local _u5143_u7d20y = _u4e8c[1] |
| 35 | local _u53d8_u91cfxx, _u53d8_u91cfyy = 1, 2 | 35 | local _u53d8_u91cfxx, _u53d8_u91cfyy = 1, 2 |
| @@ -47,9 +47,9 @@ do | |||
| 47 | _u5143_u7d20a, _u5b57_u6bb5b, _u5143_u7d20c, _u5b57_u6bb5d, _u5143_u7d20e, _u5b57_u6bb5f, _u5143_u7d20g = _obj_0[1], _obj_0["字段b"], _obj_0[2], _obj_0["字段d"], _obj_0[3], _obj_0["字段f"], _obj_0[4] | 47 | _u5143_u7d20a, _u5b57_u6bb5b, _u5143_u7d20c, _u5b57_u6bb5d, _u5143_u7d20e, _u5b57_u6bb5f, _u5143_u7d20g = _obj_0[1], _obj_0["字段b"], _obj_0[2], _obj_0["字段d"], _obj_0[3], _obj_0["字段f"], _obj_0[4] |
| 48 | end | 48 | end |
| 49 | do | 49 | do |
| 50 | _u53d8_u91cfc = nil | ||
| 51 | local _obj_0 = _u8868 | 50 | local _obj_0 = _u8868 |
| 52 | _u5b57_u6bb5a, _u5b57_u6bb5b = _obj_0["字段a"], _obj_0["字段b"] | 51 | _u5b57_u6bb5a, _u5b57_u6bb5b = _obj_0["字段a"], _obj_0["字段b"] |
| 52 | _u53d8_u91cfc = nil | ||
| 53 | end | 53 | end |
| 54 | do | 54 | do |
| 55 | local _u53d8_u91cfa = _u8868 | 55 | local _u53d8_u91cfa = _u8868 |
| @@ -57,8 +57,8 @@ do | |||
| 57 | _u5b57_u6bb5b, _u5b57_u6bb5c = _obj_0["字段b"], _obj_0["字段c"] | 57 | _u5b57_u6bb5b, _u5b57_u6bb5c = _obj_0["字段b"], _obj_0["字段c"] |
| 58 | end | 58 | end |
| 59 | do | 59 | do |
| 60 | _u53d8_u91cfb = __u65e0_u6548_u53d8_u91cf | ||
| 61 | _u5b57_u6bb5a = _u8868["字段a"] | 60 | _u5b57_u6bb5a = _u8868["字段a"] |
| 61 | _u53d8_u91cfb = __u65e0_u6548_u53d8_u91cf | ||
| 62 | _u5b57_u6bb5c = __u65e0_u6548_u53d8_u91cf["字段c"] | 62 | _u5b57_u6bb5c = __u65e0_u6548_u53d8_u91cf["字段c"] |
| 63 | end | 63 | end |
| 64 | end | 64 | end |
| @@ -212,11 +212,11 @@ do | |||
| 212 | end | 212 | end |
| 213 | _u4e00, _u4e8c, _u4e09 = _tbl_0["一"], _tbl_0["二"], _tbl_0["三"] | 213 | _u4e00, _u4e8c, _u4e09 = _tbl_0["一"], _tbl_0["二"], _tbl_0["三"] |
| 214 | end | 214 | end |
| 215 | local _u53d8_u91cfb = 123 | ||
| 216 | _u5b57_u6bb5a = ((function() | 215 | _u5b57_u6bb5a = ((function() |
| 217 | local _call_0 = _u5bf9_u8c61a | 216 | local _call_0 = _u5bf9_u8c61a |
| 218 | return _call_0["如果"](_call_0, 123) | 217 | return _call_0["如果"](_call_0, 123) |
| 219 | end)() + _u53d8_u91cft)["字段a"] | 218 | end)() + _u53d8_u91cft)["字段a"] |
| 219 | local _u53d8_u91cfb = 123 | ||
| 220 | end | 220 | end |
| 221 | do | 221 | do |
| 222 | local _u540d_u79f0, _u5de5_u4f5c | 222 | local _u540d_u79f0, _u5de5_u4f5c |
| @@ -386,8 +386,7 @@ do | |||
| 386 | end | 386 | end |
| 387 | end | 387 | end |
| 388 | do | 388 | do |
| 389 | local _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3, _u53d8_u91cfd, _u53d8_u91cfe | 389 | local _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3, _u53d8_u91cfd, _u5143_u7d20b, _u53d8_u91cfe |
| 390 | local _u5143_u7d20b | ||
| 391 | do | 390 | do |
| 392 | 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() |
| 393 | do | 392 | do |
| @@ -395,14 +394,15 @@ do | |||
| 395 | _obj_5[#_obj_5 + 1] = _obj_0 | 394 | _obj_5[#_obj_5 + 1] = _obj_0 |
| 396 | end | 395 | end |
| 397 | setmetatable(_u5bf9_u8c61c, _obj_4) | 396 | setmetatable(_u5bf9_u8c61c, _obj_4) |
| 398 | _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3, _u53d8_u91cfd, _u53d8_u91cfe = 1, 2, 3, _obj_1, _obj_3 | 397 | _u53d8_u91cf1, _u53d8_u91cf2, _u53d8_u91cf3, _u53d8_u91cfd = 1, 2, 3, _obj_1 |
| 399 | _u5143_u7d20b = _obj_2[1] | 398 | _u5143_u7d20b = _obj_2[1] |
| 399 | _u53d8_u91cfe = _obj_3 | ||
| 400 | end | 400 | end |
| 401 | local _u53d8_u91cfy1, _u53d8_u91cfy4 | 401 | local _u53d8_u91cfy1, _u5b57_u6bb5y2, _u5b57_u6bb5y3, _u53d8_u91cfy4 |
| 402 | local _u5b57_u6bb5y2, _u5b57_u6bb5y3 | ||
| 403 | local _obj_0, _obj_1 = _u51fd_u65702() | 402 | local _obj_0, _obj_1 = _u51fd_u65702() |
| 404 | _u53d8_u91cfy1, _u53d8_u91cfy4 = _u51fd_u65701(), _obj_1 | 403 | _u53d8_u91cfy1 = _u51fd_u65701() |
| 405 | _u5b57_u6bb5y2, _u5b57_u6bb5y3 = _obj_0["字段y2"], _obj_0["字段y3"] | 404 | _u5b57_u6bb5y2, _u5b57_u6bb5y3 = _obj_0["字段y2"], _obj_0["字段y3"] |
| 405 | _u53d8_u91cfy4 = _obj_1 | ||
| 406 | end | 406 | end |
| 407 | do | 407 | do |
| 408 | local _u53d8_u91cfv1, _u53d8_u91cfv2, _u53d8_u91cfv3, _u53d8_u91cfv4 | 408 | local _u53d8_u91cfv1, _u53d8_u91cfv2, _u53d8_u91cfv3, _u53d8_u91cfv4 |
diff --git a/spec/outputs/unicode/metatable.lua b/spec/outputs/unicode/metatable.lua index ca48d0d..f948d21 100644 --- a/spec/outputs/unicode/metatable.lua +++ b/spec/outputs/unicode/metatable.lua | |||
| @@ -48,14 +48,15 @@ do | |||
| 48 | end | 48 | end |
| 49 | do | 49 | do |
| 50 | local _u53d8_u91cfx, _u65b0, _u53d8_u91cf, close, _u5173_u95edA, num, add, sub | 50 | local _u53d8_u91cfx, _u65b0, _u53d8_u91cf, close, _u5173_u95edA, num, add, sub |
| 51 | local _obj_0, _obj_1 | 51 | _u53d8_u91cfx = 123 |
| 52 | _u53d8_u91cfx, _obj_0, _obj_1 = 123, _u53d8_u91cfa["变量b"]["变量c"], _u51fd_u6570() | 52 | local _obj_0 = _u53d8_u91cfa["变量b"]["变量c"] |
| 53 | _u65b0, _u53d8_u91cf = _obj_0["新"], _obj_0["变量"] | 53 | _u65b0, _u53d8_u91cf = _obj_0["新"], _obj_0["变量"] |
| 54 | local _obj_2 = getmetatable(_obj_0) | 54 | local _obj_1 = getmetatable(_obj_0) |
| 55 | close, _u5173_u95edA = _obj_2.__close, _obj_2.__close | 55 | close, _u5173_u95edA = _obj_1.__close, _obj_1.__close |
| 56 | _obj_1 = _u51fd_u6570() | ||
| 56 | num = _obj_1.num | 57 | num = _obj_1.num |
| 57 | local _obj_3 = getmetatable(_obj_1) | 58 | local _obj_2 = getmetatable(_obj_1) |
| 58 | add, sub = _obj_3.__add, _obj_3.__sub | 59 | add, sub = _obj_2.__add, _obj_2.__sub |
| 59 | end | 60 | end |
| 60 | setmetatable(_u53d8_u91cfa["变量b"], { }) | 61 | setmetatable(_u53d8_u91cfa["变量b"], { }) |
| 61 | _u53d8_u91cfx.abc = 123 | 62 | _u53d8_u91cfx.abc = 123 |
