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 |