diff options
| author | Li Jin <dragon-fly@qq.com> | 2023-10-22 00:55:02 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2023-10-22 00:55:02 +0800 |
| commit | 652a8839f885b73fff57942a9db8b26e9cb5233b (patch) | |
| tree | 0b24bb5610823a831ec0addbba37cb6200203b27 /spec/outputs | |
| parent | f61a4a1d9a1b979b8a0c2e8a9c194a284f42220f (diff) | |
| download | yuescript-652a8839f885b73fff57942a9db8b26e9cb5233b.tar.gz yuescript-652a8839f885b73fff57942a9db8b26e9cb5233b.tar.bz2 yuescript-652a8839f885b73fff57942a9db8b26e9cb5233b.zip | |
fixing issues from #152.
Diffstat (limited to 'spec/outputs')
| -rw-r--r-- | spec/outputs/cond.lua | 17 | ||||
| -rw-r--r-- | spec/outputs/in_expression.lua | 31 | ||||
| -rw-r--r-- | spec/outputs/lists.lua | 65 | ||||
| -rw-r--r-- | spec/outputs/tables.lua | 83 | ||||
| -rw-r--r-- | spec/outputs/unicode/cond.lua | 17 | ||||
| -rw-r--r-- | spec/outputs/unicode/in_expression.lua | 31 |
6 files changed, 187 insertions, 57 deletions
diff --git a/spec/outputs/cond.lua b/spec/outputs/cond.lua index 1f6aa63..651c14a 100644 --- a/spec/outputs/cond.lua +++ b/spec/outputs/cond.lua | |||
| @@ -345,4 +345,21 @@ do | |||
| 345 | v = 2 | 345 | v = 2 |
| 346 | end | 346 | end |
| 347 | end | 347 | end |
| 348 | do | ||
| 349 | local condChain = 1 < 2 and 2 <= 2 and 2 < 3 and 3 == 3 and 3 > 2 and 2 >= 1 and 1 == 1 and 1 < 3 and 3 ~= 5 | ||
| 350 | local v | ||
| 351 | v = function(x) | ||
| 352 | print(x) | ||
| 353 | return x | ||
| 354 | end | ||
| 355 | local evaluation | ||
| 356 | do | ||
| 357 | local _cond_0 = v(2) | ||
| 358 | evaluation = v(1) < _cond_0 and _cond_0 <= v(3) | ||
| 359 | end | ||
| 360 | do | ||
| 361 | local _cond_0 = v(2) | ||
| 362 | evaluation = v(1) > _cond_0 and _cond_0 <= v(3) | ||
| 363 | end | ||
| 364 | end | ||
| 348 | return nil | 365 | return nil |
diff --git a/spec/outputs/in_expression.lua b/spec/outputs/in_expression.lua index ddba69a..60802c9 100644 --- a/spec/outputs/in_expression.lua +++ b/spec/outputs/in_expression.lua | |||
| @@ -2,43 +2,18 @@ f((function() | |||
| 2 | local _val_0 = -a ^ 2 | 2 | local _val_0 = -a ^ 2 |
| 3 | return 1 == _val_0 or 2 == _val_0 or 3 == _val_0 | 3 | return 1 == _val_0 or 2 == _val_0 or 3 == _val_0 |
| 4 | end)()) | 4 | end)()) |
| 5 | local a, b = (function(...) | ||
| 6 | local _val_0 = x(...) | ||
| 7 | return not (1 <= _val_0 and _val_0 <= 3) | ||
| 8 | end)(...), 2 | ||
| 9 | local d | ||
| 10 | do | ||
| 11 | local _val_0 = (tb.x.y(...)) | ||
| 12 | d = not (1 <= _val_0 and _val_0 <= 3) | ||
| 13 | end | ||
| 14 | local has | 5 | local has |
| 15 | do | 6 | do |
| 16 | local _val_0 = "foo" | 7 | local _val_0 = "foo" |
| 17 | has = "bar" == _val_0 or "foo" == _val_0 | 8 | has = "bar" == _val_0 or "foo" == _val_0 |
| 18 | end | 9 | end |
| 19 | if (1 == a) and (2 == b or 3 == b or 4 == b) or (function() | 10 | if (1 == a) and (function() |
| 20 | local _val_0 = c | 11 | local _val_0 = b |
| 21 | return 1 <= _val_0 and _val_0 <= 10 | 12 | return 2 == _val_0 or 3 == _val_0 or 4 == _val_0 |
| 22 | end)() then | 13 | end)() then |
| 23 | print(a, b, c) | 14 | print(a, b, c) |
| 24 | end | 15 | end |
| 25 | do | 16 | do |
| 26 | local _exp_0 = val | ||
| 27 | if 1 == _exp_0 or 2 == _exp_0 or 3 == _exp_0 then | ||
| 28 | print("1, 2, 3") | ||
| 29 | elseif not (0 < _exp_0 and _exp_0 <= 100) then | ||
| 30 | print("not (0 < val <= 100)") | ||
| 31 | elseif (200 <= _exp_0 and _exp_0 < 300) then | ||
| 32 | print("200 <= val < 300)") | ||
| 33 | elseif not (333 == _exp_0 or 444 == _exp_0 or 555 == _exp_0) then | ||
| 34 | print("not 333, 444 or 555") | ||
| 35 | end | ||
| 36 | end | ||
| 37 | do | ||
| 38 | local _val_0 = y | ||
| 39 | return not (a < _val_0 and _val_0 < b) | ||
| 40 | end | ||
| 41 | do | ||
| 42 | local exist | 17 | local exist |
| 43 | do | 18 | do |
| 44 | local _check_0 = list | 19 | local _check_0 = list |
diff --git a/spec/outputs/lists.lua b/spec/outputs/lists.lua index 581cc23..e6f306d 100644 --- a/spec/outputs/lists.lua +++ b/spec/outputs/lists.lua | |||
| @@ -273,10 +273,73 @@ for _index_0 = 1, #test do | |||
| 273 | local thing = test[_index_0] | 273 | local thing = test[_index_0] |
| 274 | print(thing) | 274 | print(thing) |
| 275 | end | 275 | end |
| 276 | return function() | 276 | _ = function() |
| 277 | local _list_0 = rows | 277 | local _list_0 = rows |
| 278 | for _index_0 = 1, #_list_0 do | 278 | for _index_0 = 1, #_list_0 do |
| 279 | local row = _list_0[_index_0] | 279 | local row = _list_0[_index_0] |
| 280 | a = b | 280 | a = b |
| 281 | end | 281 | end |
| 282 | end | 282 | end |
| 283 | do | ||
| 284 | local _with_0 = tb | ||
| 285 | f(_with_0[a]) | ||
| 286 | f({ | ||
| 287 | a | ||
| 288 | }) | ||
| 289 | local _list_0 = f | ||
| 290 | for _index_0 = a, #_list_0 do | ||
| 291 | local v = _list_0[_index_0] | ||
| 292 | print(v) | ||
| 293 | end | ||
| 294 | f({ }) | ||
| 295 | do | ||
| 296 | local _obj_0 = f | ||
| 297 | _obj_0[#_obj_0 + 1] = x | ||
| 298 | end | ||
| 299 | _with_0[a] = x | ||
| 300 | a = x[1] | ||
| 301 | _with_0[#_with_0 + 1] = x | ||
| 302 | do | ||
| 303 | local _check_0 = _with_0[1] | ||
| 304 | local _find_0 = false | ||
| 305 | for _index_0 = 1, #_check_0 do | ||
| 306 | local _item_0 = _check_0[_index_0] | ||
| 307 | if _item_0 == a then | ||
| 308 | _find_0 = true | ||
| 309 | break | ||
| 310 | end | ||
| 311 | end | ||
| 312 | c = _find_0 | ||
| 313 | end | ||
| 314 | c = (1 == a) | ||
| 315 | c = (1 == a) | ||
| 316 | do | ||
| 317 | local _check_0 = { | ||
| 318 | 1 | ||
| 319 | } | ||
| 320 | local _find_0 = false | ||
| 321 | for _index_0 = 1, #_check_0 do | ||
| 322 | local _item_0 = _check_0[_index_0] | ||
| 323 | if _item_0 == a then | ||
| 324 | _find_0 = true | ||
| 325 | break | ||
| 326 | end | ||
| 327 | end | ||
| 328 | c = _find_0 | ||
| 329 | end | ||
| 330 | end | ||
| 331 | do | ||
| 332 | a, b = hello[1], hello[2] | ||
| 333 | local name, job | ||
| 334 | do | ||
| 335 | local _obj_0 = person | ||
| 336 | name, job = _obj_0[1], _obj_0[2] | ||
| 337 | if name == nil then | ||
| 338 | name = "nameless" | ||
| 339 | end | ||
| 340 | if job == nil then | ||
| 341 | job = "jobless" | ||
| 342 | end | ||
| 343 | end | ||
| 344 | end | ||
| 345 | return nil | ||
diff --git a/spec/outputs/tables.lua b/spec/outputs/tables.lua index e9df1c4..f836d58 100644 --- a/spec/outputs/tables.lua +++ b/spec/outputs/tables.lua | |||
| @@ -52,6 +52,13 @@ local x = { | |||
| 52 | 343, | 52 | 343, |
| 53 | 343 | 53 | 343 |
| 54 | } | 54 | } |
| 55 | x = { | ||
| 56 | 1, | ||
| 57 | 2, | ||
| 58 | 4343, | ||
| 59 | 343, | ||
| 60 | 343 | ||
| 61 | } | ||
| 55 | local g, p = { | 62 | local g, p = { |
| 56 | 1, | 63 | 1, |
| 57 | 2, | 64 | 2, |
| @@ -72,6 +79,17 @@ local annother = { | |||
| 72 | 7, | 79 | 7, |
| 73 | 8 | 80 | 8 |
| 74 | } | 81 | } |
| 82 | annother = { | ||
| 83 | 1, | ||
| 84 | 2, | ||
| 85 | 3, | ||
| 86 | 3, | ||
| 87 | 4, | ||
| 88 | 5, | ||
| 89 | 6, | ||
| 90 | 7, | ||
| 91 | 8 | ||
| 92 | } | ||
| 75 | local yeah = { | 93 | local yeah = { |
| 76 | [232] = 3434, | 94 | [232] = 3434, |
| 77 | "helo", | 95 | "helo", |
| @@ -435,6 +453,27 @@ do | |||
| 435 | _tab_0[#_tab_0 + 1] = 11 | 453 | _tab_0[#_tab_0 + 1] = 11 |
| 436 | tbMixA = _tab_0 | 454 | tbMixA = _tab_0 |
| 437 | end | 455 | end |
| 456 | do | ||
| 457 | local _tab_0 = { } | ||
| 458 | local _obj_0 | ||
| 459 | do | ||
| 460 | local _accum_0 = { } | ||
| 461 | local _len_0 = 1 | ||
| 462 | for i = 1, 10 do | ||
| 463 | _accum_0[_len_0] = i | ||
| 464 | _len_0 = _len_0 + 1 | ||
| 465 | end | ||
| 466 | _obj_0 = _accum_0 | ||
| 467 | end | ||
| 468 | local _idx_0 = #_tab_0 + 1 | ||
| 469 | for _index_0 = 1, #_obj_0 do | ||
| 470 | local _value_0 = _obj_0[_index_0] | ||
| 471 | _tab_0[_idx_0] = _value_0 | ||
| 472 | _idx_0 = _idx_0 + 1 | ||
| 473 | end | ||
| 474 | _tab_0[#_tab_0 + 1] = 11 | ||
| 475 | tbMixA = _tab_0 | ||
| 476 | end | ||
| 438 | local tbMixB | 477 | local tbMixB |
| 439 | do | 478 | do |
| 440 | local _tab_0 = { } | 479 | local _tab_0 = { } |
| @@ -489,6 +528,50 @@ do | |||
| 489 | _tab_0[#_tab_0 + 1] = 3 | 528 | _tab_0[#_tab_0 + 1] = 3 |
| 490 | tbMixB = _tab_0 | 529 | tbMixB = _tab_0 |
| 491 | end | 530 | end |
| 531 | do | ||
| 532 | local _tab_0 = { } | ||
| 533 | local _obj_0 = ... | ||
| 534 | local _idx_0 = #_tab_0 + 1 | ||
| 535 | for _index_0 = 1, #_obj_0 do | ||
| 536 | local _value_0 = _obj_0[_index_0] | ||
| 537 | _tab_0[_idx_0] = _value_0 | ||
| 538 | _idx_0 = _idx_0 + 1 | ||
| 539 | end | ||
| 540 | local _obj_1 = { | ||
| 541 | ... | ||
| 542 | } | ||
| 543 | local _idx_1 = #_tab_0 + 1 | ||
| 544 | for _index_0 = 1, #_obj_1 do | ||
| 545 | local _value_0 = _obj_1[_index_0] | ||
| 546 | _tab_0[_idx_1] = _value_0 | ||
| 547 | _idx_1 = _idx_1 + 1 | ||
| 548 | end | ||
| 549 | local _obj_2 | ||
| 550 | do | ||
| 551 | local _tab_1 = { } | ||
| 552 | local _obj_3 = ... | ||
| 553 | local _idx_2 = 1 | ||
| 554 | for _key_0, _value_0 in pairs(_obj_3) do | ||
| 555 | if _idx_2 == _key_0 then | ||
| 556 | _tab_1[#_tab_1 + 1] = _value_0 | ||
| 557 | _idx_2 = _idx_2 + 1 | ||
| 558 | else | ||
| 559 | _tab_1[_key_0] = _value_0 | ||
| 560 | end | ||
| 561 | end | ||
| 562 | _obj_2 = _tab_1 | ||
| 563 | end | ||
| 564 | local _idx_2 = #_tab_0 + 1 | ||
| 565 | for _index_0 = 1, #_obj_2 do | ||
| 566 | local _value_0 = _obj_2[_index_0] | ||
| 567 | _tab_0[_idx_2] = _value_0 | ||
| 568 | _idx_2 = _idx_2 + 1 | ||
| 569 | end | ||
| 570 | _tab_0[#_tab_0 + 1] = 1 | ||
| 571 | _tab_0[#_tab_0 + 1] = 2 | ||
| 572 | _tab_0[#_tab_0 + 1] = 3 | ||
| 573 | tbMixB = _tab_0 | ||
| 574 | end | ||
| 492 | local template <const> = { | 575 | local template <const> = { |
| 493 | foo = "Hello", | 576 | foo = "Hello", |
| 494 | bar = "World", | 577 | bar = "World", |
diff --git a/spec/outputs/unicode/cond.lua b/spec/outputs/unicode/cond.lua index f972dea..9a4ccb9 100644 --- a/spec/outputs/unicode/cond.lua +++ b/spec/outputs/unicode/cond.lua | |||
| @@ -351,4 +351,21 @@ do | |||
| 351 | _u53d8_u91cfv = 2 | 351 | _u53d8_u91cfv = 2 |
| 352 | end | 352 | end |
| 353 | end | 353 | end |
| 354 | do | ||
| 355 | local _u94fe_u5f0f_u6bd4_u8f83 = 1 < 2 and 2 <= 2 and 2 < 3 and 3 == 3 and 3 > 2 and 2 >= 1 and 1 == 1 and 1 < 3 and 3 ~= 5 | ||
| 356 | local _u503c | ||
| 357 | _u503c = function(_u8f93_u5165) | ||
| 358 | _u6253_u5370(_u8f93_u5165) | ||
| 359 | return _u8f93_u5165 | ||
| 360 | end | ||
| 361 | local _u6c42_u503c | ||
| 362 | do | ||
| 363 | local _cond_0 = _u503c(2) | ||
| 364 | _u6c42_u503c = _u503c(1) < _cond_0 and _cond_0 <= _u503c(3) | ||
| 365 | end | ||
| 366 | do | ||
| 367 | local _cond_0 = _u503c(2) | ||
| 368 | _u6c42_u503c = _u503c(1) > _cond_0 and _cond_0 <= _u503c(3) | ||
| 369 | end | ||
| 370 | end | ||
| 354 | return nil | 371 | return nil |
diff --git a/spec/outputs/unicode/in_expression.lua b/spec/outputs/unicode/in_expression.lua index 62aad05..7c584f3 100644 --- a/spec/outputs/unicode/in_expression.lua +++ b/spec/outputs/unicode/in_expression.lua | |||
| @@ -2,43 +2,18 @@ _u51fd_u6570((function() | |||
| 2 | local _val_0 = -_u53d8_u91cfa ^ 2 | 2 | local _val_0 = -_u53d8_u91cfa ^ 2 |
| 3 | return 1 == _val_0 or 2 == _val_0 or 3 == _val_0 | 3 | return 1 == _val_0 or 2 == _val_0 or 3 == _val_0 |
| 4 | end)()) | 4 | end)()) |
| 5 | local _u53d8_u91cfa, _u53d8_u91cfb = (function(...) | ||
| 6 | local _val_0 = _u51fd_u6570x(...) | ||
| 7 | return not (1 <= _val_0 and _val_0 <= 3) | ||
| 8 | end)(...), 2 | ||
| 9 | local _u53d8_u91cfd | ||
| 10 | do | ||
| 11 | local _val_0 = (_u5bf9_u8c61["字段x"]["字段y"](...)) | ||
| 12 | _u53d8_u91cfd = not (1 <= _val_0 and _val_0 <= 3) | ||
| 13 | end | ||
| 14 | local _u5728_u7684 | 5 | local _u5728_u7684 |
| 15 | do | 6 | do |
| 16 | local _val_0 = "东" | 7 | local _val_0 = "东" |
| 17 | _u5728_u7684 = "东" == _val_0 or "西" == _val_0 | 8 | _u5728_u7684 = "东" == _val_0 or "西" == _val_0 |
| 18 | end | 9 | end |
| 19 | if (1 == _u53d8_u91cfa) and (2 == _u53d8_u91cfb or 3 == _u53d8_u91cfb or 4 == _u53d8_u91cfb) or (function() | 10 | if (1 == _u53d8_u91cfa) and (function() |
| 20 | local _val_0 = _u53d8_u91cfc | 11 | local _val_0 = _u53d8_u91cfb |
| 21 | return 1 <= _val_0 and _val_0 <= 10 | 12 | return 2 == _val_0 or 3 == _val_0 or 4 == _val_0 |
| 22 | end)() then | 13 | end)() then |
| 23 | _u6253_u5370(_u53d8_u91cfa, _u53d8_u91cfb, _u53d8_u91cfc) | 14 | _u6253_u5370(_u53d8_u91cfa, _u53d8_u91cfb, _u53d8_u91cfc) |
| 24 | end | 15 | end |
| 25 | do | 16 | do |
| 26 | local _exp_0 = _u503c | ||
| 27 | if 1 == _exp_0 or 2 == _exp_0 or 3 == _exp_0 then | ||
| 28 | _u6253_u5370("1, 2, 3") | ||
| 29 | elseif not (0 < _exp_0 and _exp_0 <= 100) then | ||
| 30 | _u6253_u5370("非 (0 < 值 <= 100)") | ||
| 31 | elseif (200 <= _exp_0 and _exp_0 < 300) then | ||
| 32 | _u6253_u5370("200 <= 值 < 300)") | ||
| 33 | elseif not (333 == _exp_0 or 444 == _exp_0 or 555 == _exp_0) then | ||
| 34 | _u6253_u5370("非 333, 444 或 555") | ||
| 35 | end | ||
| 36 | end | ||
| 37 | do | ||
| 38 | local _val_0 = _u53d8_u91cfy | ||
| 39 | return not (_u5f00_u59cb < _val_0 and _val_0 < _u7ed3_u675f) | ||
| 40 | end | ||
| 41 | do | ||
| 42 | local _u5b58_u5728 | 17 | local _u5b58_u5728 |
| 43 | do | 18 | do |
| 44 | local _check_0 = _u8868 | 19 | local _check_0 = _u8868 |
