diff options
| author | Li Jin <dragon-fly@qq.com> | 2026-02-11 16:58:21 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2026-02-11 16:58:21 +0800 |
| commit | 663a8c622db13b3a9dad962071ff6f3cfb482de3 (patch) | |
| tree | bafb5d2bc4a62cf2fa5be6a1a6bb21b0160d1c29 /spec/outputs | |
| parent | f85c61c5ff06c43d74ccf3233f56c6e5dc576319 (diff) | |
| download | yuescript-663a8c622db13b3a9dad962071ff6f3cfb482de3.tar.gz yuescript-663a8c622db13b3a9dad962071ff6f3cfb482de3.tar.bz2 yuescript-663a8c622db13b3a9dad962071ff6f3cfb482de3.zip | |
Supported multiple break values. Simplified some generated codes.
Diffstat (limited to 'spec/outputs')
| -rw-r--r-- | spec/outputs/5.1/loops.lua | 36 | ||||
| -rw-r--r-- | spec/outputs/codes_from_doc_de.lua | 8 | ||||
| -rw-r--r-- | spec/outputs/codes_from_doc_en.lua | 8 | ||||
| -rw-r--r-- | spec/outputs/codes_from_doc_id-id.lua | 8 | ||||
| -rw-r--r-- | spec/outputs/codes_from_doc_pt-br.lua | 8 | ||||
| -rw-r--r-- | spec/outputs/codes_from_doc_zh.lua | 8 | ||||
| -rw-r--r-- | spec/outputs/loops.lua | 36 | ||||
| -rw-r--r-- | spec/outputs/test/config_spec.lua | 12 | ||||
| -rw-r--r-- | spec/outputs/test/do_statement_spec.lua | 4 | ||||
| -rw-r--r-- | spec/outputs/test/with_statement_spec.lua | 98 | ||||
| -rw-r--r-- | spec/outputs/with.lua | 50 |
11 files changed, 101 insertions, 175 deletions
diff --git a/spec/outputs/5.1/loops.lua b/spec/outputs/5.1/loops.lua index e4f2871..019cd60 100644 --- a/spec/outputs/5.1/loops.lua +++ b/spec/outputs/5.1/loops.lua | |||
| @@ -499,25 +499,21 @@ local _anon_func_0 = function(i, tb) | |||
| 499 | end | 499 | end |
| 500 | do | 500 | do |
| 501 | local index | 501 | local index |
| 502 | do | 502 | for i = 1, #tb do |
| 503 | local _accum_0 | 503 | if tb[i] then |
| 504 | for i = 1, #tb do | 504 | index = i |
| 505 | if tb[i] then | 505 | break |
| 506 | _accum_0 = i | ||
| 507 | break | ||
| 508 | end | ||
| 509 | end | 506 | end |
| 510 | index = _accum_0 | ||
| 511 | end | 507 | end |
| 512 | f((function() | 508 | f((function() |
| 513 | local _accum_0 | 509 | local _val_0 |
| 514 | for i = 1, #tb do | 510 | for i = 1, #tb do |
| 515 | if tb[i] then | 511 | if tb[i] then |
| 516 | _accum_0 = i | 512 | _val_0 = i |
| 517 | break | 513 | break |
| 518 | end | 514 | end |
| 519 | end | 515 | end |
| 520 | return _accum_0 | 516 | return _val_0 |
| 521 | end)()) | 517 | end)()) |
| 522 | f((function() | 518 | f((function() |
| 523 | local _accum_0 = { } | 519 | local _accum_0 = { } |
| @@ -545,13 +541,13 @@ do | |||
| 545 | i = 1 | 541 | i = 1 |
| 546 | local idx | 542 | local idx |
| 547 | do | 543 | do |
| 548 | local _accum_0 | 544 | local _val_0 |
| 549 | while tb[i] do | 545 | while tb[i] do |
| 550 | i = i + 1 | 546 | i = i + 1 |
| 551 | _accum_0 = i - 1 | 547 | _val_0 = i - 1 |
| 552 | break | 548 | break |
| 553 | end | 549 | end |
| 554 | idx = _accum_0 | 550 | idx = _val_0 |
| 555 | end | 551 | end |
| 556 | local f1 | 552 | local f1 |
| 557 | f1 = function() | 553 | f1 = function() |
| @@ -560,13 +556,13 @@ do | |||
| 560 | end | 556 | end |
| 561 | i = 1 | 557 | i = 1 |
| 562 | f((function() | 558 | f((function() |
| 563 | local _accum_0 | 559 | local _val_0 |
| 564 | while tb[i] do | 560 | while tb[i] do |
| 565 | i = i + 1 | 561 | i = i + 1 |
| 566 | _accum_0 = i - 1 | 562 | _val_0 = i - 1 |
| 567 | break | 563 | break |
| 568 | end | 564 | end |
| 569 | return _accum_0 | 565 | return _val_0 |
| 570 | end)()) | 566 | end)()) |
| 571 | local _accum_0 = { } | 567 | local _accum_0 = { } |
| 572 | local _len_0 = 1 | 568 | local _len_0 = 1 |
| @@ -592,13 +588,13 @@ do | |||
| 592 | print(1) | 588 | print(1) |
| 593 | until true | 589 | until true |
| 594 | do | 590 | do |
| 595 | local _accum_0 | 591 | local _val_0 |
| 596 | repeat | 592 | repeat |
| 597 | a = func() | 593 | a = func() |
| 598 | _accum_0 = a.x | 594 | _val_0 = a.x |
| 599 | break | 595 | break |
| 600 | until a.v | 596 | until a.v |
| 601 | x = _accum_0 | 597 | x = _val_0 |
| 602 | end | 598 | end |
| 603 | local items | 599 | local items |
| 604 | local _accum_0 = { } | 600 | local _accum_0 = { } |
diff --git a/spec/outputs/codes_from_doc_de.lua b/spec/outputs/codes_from_doc_de.lua index 44fc28a..7de1a35 100644 --- a/spec/outputs/codes_from_doc_de.lua +++ b/spec/outputs/codes_from_doc_de.lua | |||
| @@ -3260,16 +3260,14 @@ for i = 1, 20 do | |||
| 3260 | end | 3260 | end |
| 3261 | doubled_evens = _accum_0 | 3261 | doubled_evens = _accum_0 |
| 3262 | local first_large | 3262 | local first_large |
| 3263 | local _accum_0 | ||
| 3264 | local _list_0 = numbers | 3263 | local _list_0 = numbers |
| 3265 | for _index_0 = 1, #_list_0 do | 3264 | for _index_0 = 1, #_list_0 do |
| 3266 | local n = _list_0[_index_0] | 3265 | local n = _list_0[_index_0] |
| 3267 | if n > 10 then | 3266 | if n > 10 then |
| 3268 | _accum_0 = n | 3267 | first_large = n |
| 3269 | break | 3268 | break |
| 3270 | end | 3269 | end |
| 3271 | end | 3270 | end |
| 3272 | first_large = _accum_0 | ||
| 3273 | local func_a | 3271 | local func_a |
| 3274 | func_a = function() | 3272 | func_a = function() |
| 3275 | for i = 1, 10 do | 3273 | for i = 1, 10 do |
| @@ -3324,16 +3322,14 @@ for i = 1, 20 do | |||
| 3324 | end | 3322 | end |
| 3325 | doubled_evens = _accum_0 | 3323 | doubled_evens = _accum_0 |
| 3326 | local first_large | 3324 | local first_large |
| 3327 | local _accum_0 | ||
| 3328 | local _list_0 = numbers | 3325 | local _list_0 = numbers |
| 3329 | for _index_0 = 1, #_list_0 do | 3326 | for _index_0 = 1, #_list_0 do |
| 3330 | local n = _list_0[_index_0] | 3327 | local n = _list_0[_index_0] |
| 3331 | if n > 10 then | 3328 | if n > 10 then |
| 3332 | _accum_0 = n | 3329 | first_large = n |
| 3333 | break | 3330 | break |
| 3334 | end | 3331 | end |
| 3335 | end | 3332 | end |
| 3336 | first_large = _accum_0 | ||
| 3337 | local func_a | 3333 | local func_a |
| 3338 | func_a = function() | 3334 | func_a = function() |
| 3339 | for i = 1, 10 do | 3335 | for i = 1, 10 do |
diff --git a/spec/outputs/codes_from_doc_en.lua b/spec/outputs/codes_from_doc_en.lua index 5320961..cd83bbf 100644 --- a/spec/outputs/codes_from_doc_en.lua +++ b/spec/outputs/codes_from_doc_en.lua | |||
| @@ -3260,16 +3260,14 @@ for i = 1, 20 do | |||
| 3260 | end | 3260 | end |
| 3261 | doubled_evens = _accum_0 | 3261 | doubled_evens = _accum_0 |
| 3262 | local first_large | 3262 | local first_large |
| 3263 | local _accum_0 | ||
| 3264 | local _list_0 = numbers | 3263 | local _list_0 = numbers |
| 3265 | for _index_0 = 1, #_list_0 do | 3264 | for _index_0 = 1, #_list_0 do |
| 3266 | local n = _list_0[_index_0] | 3265 | local n = _list_0[_index_0] |
| 3267 | if n > 10 then | 3266 | if n > 10 then |
| 3268 | _accum_0 = n | 3267 | first_large = n |
| 3269 | break | 3268 | break |
| 3270 | end | 3269 | end |
| 3271 | end | 3270 | end |
| 3272 | first_large = _accum_0 | ||
| 3273 | local func_a | 3271 | local func_a |
| 3274 | func_a = function() | 3272 | func_a = function() |
| 3275 | for i = 1, 10 do | 3273 | for i = 1, 10 do |
| @@ -3324,16 +3322,14 @@ for i = 1, 20 do | |||
| 3324 | end | 3322 | end |
| 3325 | doubled_evens = _accum_0 | 3323 | doubled_evens = _accum_0 |
| 3326 | local first_large | 3324 | local first_large |
| 3327 | local _accum_0 | ||
| 3328 | local _list_0 = numbers | 3325 | local _list_0 = numbers |
| 3329 | for _index_0 = 1, #_list_0 do | 3326 | for _index_0 = 1, #_list_0 do |
| 3330 | local n = _list_0[_index_0] | 3327 | local n = _list_0[_index_0] |
| 3331 | if n > 10 then | 3328 | if n > 10 then |
| 3332 | _accum_0 = n | 3329 | first_large = n |
| 3333 | break | 3330 | break |
| 3334 | end | 3331 | end |
| 3335 | end | 3332 | end |
| 3336 | first_large = _accum_0 | ||
| 3337 | local func_a | 3333 | local func_a |
| 3338 | func_a = function() | 3334 | func_a = function() |
| 3339 | for i = 1, 10 do | 3335 | for i = 1, 10 do |
diff --git a/spec/outputs/codes_from_doc_id-id.lua b/spec/outputs/codes_from_doc_id-id.lua index e952434..b024989 100644 --- a/spec/outputs/codes_from_doc_id-id.lua +++ b/spec/outputs/codes_from_doc_id-id.lua | |||
| @@ -3260,16 +3260,14 @@ for i = 1, 20 do | |||
| 3260 | end | 3260 | end |
| 3261 | doubled_evens = _accum_0 | 3261 | doubled_evens = _accum_0 |
| 3262 | local first_large | 3262 | local first_large |
| 3263 | local _accum_0 | ||
| 3264 | local _list_0 = numbers | 3263 | local _list_0 = numbers |
| 3265 | for _index_0 = 1, #_list_0 do | 3264 | for _index_0 = 1, #_list_0 do |
| 3266 | local n = _list_0[_index_0] | 3265 | local n = _list_0[_index_0] |
| 3267 | if n > 10 then | 3266 | if n > 10 then |
| 3268 | _accum_0 = n | 3267 | first_large = n |
| 3269 | break | 3268 | break |
| 3270 | end | 3269 | end |
| 3271 | end | 3270 | end |
| 3272 | first_large = _accum_0 | ||
| 3273 | local func_a | 3271 | local func_a |
| 3274 | func_a = function() | 3272 | func_a = function() |
| 3275 | for i = 1, 10 do | 3273 | for i = 1, 10 do |
| @@ -3324,16 +3322,14 @@ for i = 1, 20 do | |||
| 3324 | end | 3322 | end |
| 3325 | doubled_evens = _accum_0 | 3323 | doubled_evens = _accum_0 |
| 3326 | local first_large | 3324 | local first_large |
| 3327 | local _accum_0 | ||
| 3328 | local _list_0 = numbers | 3325 | local _list_0 = numbers |
| 3329 | for _index_0 = 1, #_list_0 do | 3326 | for _index_0 = 1, #_list_0 do |
| 3330 | local n = _list_0[_index_0] | 3327 | local n = _list_0[_index_0] |
| 3331 | if n > 10 then | 3328 | if n > 10 then |
| 3332 | _accum_0 = n | 3329 | first_large = n |
| 3333 | break | 3330 | break |
| 3334 | end | 3331 | end |
| 3335 | end | 3332 | end |
| 3336 | first_large = _accum_0 | ||
| 3337 | local func_a | 3333 | local func_a |
| 3338 | func_a = function() | 3334 | func_a = function() |
| 3339 | for i = 1, 10 do | 3335 | for i = 1, 10 do |
diff --git a/spec/outputs/codes_from_doc_pt-br.lua b/spec/outputs/codes_from_doc_pt-br.lua index 0c9affb..f5643c8 100644 --- a/spec/outputs/codes_from_doc_pt-br.lua +++ b/spec/outputs/codes_from_doc_pt-br.lua | |||
| @@ -3260,16 +3260,14 @@ for i = 1, 20 do | |||
| 3260 | end | 3260 | end |
| 3261 | doubled_evens = _accum_0 | 3261 | doubled_evens = _accum_0 |
| 3262 | local first_large | 3262 | local first_large |
| 3263 | local _accum_0 | ||
| 3264 | local _list_0 = numbers | 3263 | local _list_0 = numbers |
| 3265 | for _index_0 = 1, #_list_0 do | 3264 | for _index_0 = 1, #_list_0 do |
| 3266 | local n = _list_0[_index_0] | 3265 | local n = _list_0[_index_0] |
| 3267 | if n > 10 then | 3266 | if n > 10 then |
| 3268 | _accum_0 = n | 3267 | first_large = n |
| 3269 | break | 3268 | break |
| 3270 | end | 3269 | end |
| 3271 | end | 3270 | end |
| 3272 | first_large = _accum_0 | ||
| 3273 | local func_a | 3271 | local func_a |
| 3274 | func_a = function() | 3272 | func_a = function() |
| 3275 | for i = 1, 10 do | 3273 | for i = 1, 10 do |
| @@ -3324,16 +3322,14 @@ for i = 1, 20 do | |||
| 3324 | end | 3322 | end |
| 3325 | doubled_evens = _accum_0 | 3323 | doubled_evens = _accum_0 |
| 3326 | local first_large | 3324 | local first_large |
| 3327 | local _accum_0 | ||
| 3328 | local _list_0 = numbers | 3325 | local _list_0 = numbers |
| 3329 | for _index_0 = 1, #_list_0 do | 3326 | for _index_0 = 1, #_list_0 do |
| 3330 | local n = _list_0[_index_0] | 3327 | local n = _list_0[_index_0] |
| 3331 | if n > 10 then | 3328 | if n > 10 then |
| 3332 | _accum_0 = n | 3329 | first_large = n |
| 3333 | break | 3330 | break |
| 3334 | end | 3331 | end |
| 3335 | end | 3332 | end |
| 3336 | first_large = _accum_0 | ||
| 3337 | local func_a | 3333 | local func_a |
| 3338 | func_a = function() | 3334 | func_a = function() |
| 3339 | for i = 1, 10 do | 3335 | for i = 1, 10 do |
diff --git a/spec/outputs/codes_from_doc_zh.lua b/spec/outputs/codes_from_doc_zh.lua index fa985e2..087782e 100644 --- a/spec/outputs/codes_from_doc_zh.lua +++ b/spec/outputs/codes_from_doc_zh.lua | |||
| @@ -3260,16 +3260,14 @@ for i = 1, 20 do | |||
| 3260 | end | 3260 | end |
| 3261 | doubled_evens = _accum_0 | 3261 | doubled_evens = _accum_0 |
| 3262 | local first_large | 3262 | local first_large |
| 3263 | local _accum_0 | ||
| 3264 | local _list_0 = numbers | 3263 | local _list_0 = numbers |
| 3265 | for _index_0 = 1, #_list_0 do | 3264 | for _index_0 = 1, #_list_0 do |
| 3266 | local n = _list_0[_index_0] | 3265 | local n = _list_0[_index_0] |
| 3267 | if n > 10 then | 3266 | if n > 10 then |
| 3268 | _accum_0 = n | 3267 | first_large = n |
| 3269 | break | 3268 | break |
| 3270 | end | 3269 | end |
| 3271 | end | 3270 | end |
| 3272 | first_large = _accum_0 | ||
| 3273 | local func_a | 3271 | local func_a |
| 3274 | func_a = function() | 3272 | func_a = function() |
| 3275 | for i = 1, 10 do | 3273 | for i = 1, 10 do |
| @@ -3324,16 +3322,14 @@ for i = 1, 20 do | |||
| 3324 | end | 3322 | end |
| 3325 | doubled_evens = _accum_0 | 3323 | doubled_evens = _accum_0 |
| 3326 | local first_large | 3324 | local first_large |
| 3327 | local _accum_0 | ||
| 3328 | local _list_0 = numbers | 3325 | local _list_0 = numbers |
| 3329 | for _index_0 = 1, #_list_0 do | 3326 | for _index_0 = 1, #_list_0 do |
| 3330 | local n = _list_0[_index_0] | 3327 | local n = _list_0[_index_0] |
| 3331 | if n > 10 then | 3328 | if n > 10 then |
| 3332 | _accum_0 = n | 3329 | first_large = n |
| 3333 | break | 3330 | break |
| 3334 | end | 3331 | end |
| 3335 | end | 3332 | end |
| 3336 | first_large = _accum_0 | ||
| 3337 | local func_a | 3333 | local func_a |
| 3338 | func_a = function() | 3334 | func_a = function() |
| 3339 | for i = 1, 10 do | 3335 | for i = 1, 10 do |
diff --git a/spec/outputs/loops.lua b/spec/outputs/loops.lua index 6ab4bbb..4fb4187 100644 --- a/spec/outputs/loops.lua +++ b/spec/outputs/loops.lua | |||
| @@ -380,25 +380,21 @@ local _anon_func_0 = function(i, tb) | |||
| 380 | end | 380 | end |
| 381 | do | 381 | do |
| 382 | local index | 382 | local index |
| 383 | do | 383 | for i = 1, #tb do |
| 384 | local _accum_0 | 384 | if tb[i] then |
| 385 | for i = 1, #tb do | 385 | index = i |
| 386 | if tb[i] then | 386 | break |
| 387 | _accum_0 = i | ||
| 388 | break | ||
| 389 | end | ||
| 390 | end | 387 | end |
| 391 | index = _accum_0 | ||
| 392 | end | 388 | end |
| 393 | f((function() | 389 | f((function() |
| 394 | local _accum_0 | 390 | local _val_0 |
| 395 | for i = 1, #tb do | 391 | for i = 1, #tb do |
| 396 | if tb[i] then | 392 | if tb[i] then |
| 397 | _accum_0 = i | 393 | _val_0 = i |
| 398 | break | 394 | break |
| 399 | end | 395 | end |
| 400 | end | 396 | end |
| 401 | return _accum_0 | 397 | return _val_0 |
| 402 | end)()) | 398 | end)()) |
| 403 | f((function() | 399 | f((function() |
| 404 | local _accum_0 = { } | 400 | local _accum_0 = { } |
| @@ -426,13 +422,13 @@ do | |||
| 426 | i = 1 | 422 | i = 1 |
| 427 | local idx | 423 | local idx |
| 428 | do | 424 | do |
| 429 | local _accum_0 | 425 | local _val_0 |
| 430 | while tb[i] do | 426 | while tb[i] do |
| 431 | i = i + 1 | 427 | i = i + 1 |
| 432 | _accum_0 = i - 1 | 428 | _val_0 = i - 1 |
| 433 | break | 429 | break |
| 434 | end | 430 | end |
| 435 | idx = _accum_0 | 431 | idx = _val_0 |
| 436 | end | 432 | end |
| 437 | local f1 | 433 | local f1 |
| 438 | f1 = function() | 434 | f1 = function() |
| @@ -441,13 +437,13 @@ do | |||
| 441 | end | 437 | end |
| 442 | i = 1 | 438 | i = 1 |
| 443 | f((function() | 439 | f((function() |
| 444 | local _accum_0 | 440 | local _val_0 |
| 445 | while tb[i] do | 441 | while tb[i] do |
| 446 | i = i + 1 | 442 | i = i + 1 |
| 447 | _accum_0 = i - 1 | 443 | _val_0 = i - 1 |
| 448 | break | 444 | break |
| 449 | end | 445 | end |
| 450 | return _accum_0 | 446 | return _val_0 |
| 451 | end)()) | 447 | end)()) |
| 452 | local _accum_0 = { } | 448 | local _accum_0 = { } |
| 453 | local _len_0 = 1 | 449 | local _len_0 = 1 |
| @@ -473,13 +469,13 @@ do | |||
| 473 | print(1) | 469 | print(1) |
| 474 | until true | 470 | until true |
| 475 | do | 471 | do |
| 476 | local _accum_0 | 472 | local _val_0 |
| 477 | repeat | 473 | repeat |
| 478 | a = func() | 474 | a = func() |
| 479 | _accum_0 = a.x | 475 | _val_0 = a.x |
| 480 | break | 476 | break |
| 481 | until a.v | 477 | until a.v |
| 482 | x = _accum_0 | 478 | x = _val_0 |
| 483 | end | 479 | end |
| 484 | local items | 480 | local items |
| 485 | local _accum_0 = { } | 481 | local _accum_0 = { } |
diff --git a/spec/outputs/test/config_spec.lua b/spec/outputs/test/config_spec.lua index 410bacc..dc98760 100644 --- a/spec/outputs/test/config_spec.lua +++ b/spec/outputs/test/config_spec.lua | |||
| @@ -114,14 +114,10 @@ return describe("config", function() | |||
| 114 | y = 20 | 114 | y = 20 |
| 115 | } | 115 | } |
| 116 | local result | 116 | local result |
| 117 | do | 117 | repeat |
| 118 | local _accum_0 | 118 | result = obj.x + obj.y |
| 119 | repeat | 119 | break |
| 120 | _accum_0 = obj.x + obj.y | 120 | until true |
| 121 | break | ||
| 122 | until true | ||
| 123 | result = _accum_0 | ||
| 124 | end | ||
| 125 | return assert.same(result, 30) | 121 | return assert.same(result, 30) |
| 126 | end) | 122 | end) |
| 127 | it("should handle existential operators", function() | 123 | it("should handle existential operators", function() |
diff --git a/spec/outputs/test/do_statement_spec.lua b/spec/outputs/test/do_statement_spec.lua index fb93fa0..7c491a0 100644 --- a/spec/outputs/test/do_statement_spec.lua +++ b/spec/outputs/test/do_statement_spec.lua | |||
| @@ -104,12 +104,10 @@ return describe("do statement", function() | |||
| 104 | } | 104 | } |
| 105 | local result | 105 | local result |
| 106 | do | 106 | do |
| 107 | local _accum_0 | ||
| 108 | repeat | 107 | repeat |
| 109 | _accum_0 = obj:double() | 108 | result = obj:double() |
| 110 | break | 109 | break |
| 111 | until true | 110 | until true |
| 112 | result = _accum_0 | ||
| 113 | end | 111 | end |
| 114 | return assert.same(result, 20) | 112 | return assert.same(result, 20) |
| 115 | end) | 113 | end) |
diff --git a/spec/outputs/test/with_statement_spec.lua b/spec/outputs/test/with_statement_spec.lua index dcd2aa1..e6f64e8 100644 --- a/spec/outputs/test/with_statement_spec.lua +++ b/spec/outputs/test/with_statement_spec.lua | |||
| @@ -53,14 +53,10 @@ return describe("with statement", function() | |||
| 53 | value = 5 | 53 | value = 5 |
| 54 | } | 54 | } |
| 55 | local result | 55 | local result |
| 56 | do | 56 | repeat |
| 57 | local _accum_0 | 57 | result = obj.value * 2 |
| 58 | repeat | 58 | break |
| 59 | _accum_0 = obj.value * 2 | 59 | until true |
| 60 | break | ||
| 61 | until true | ||
| 62 | result = _accum_0 | ||
| 63 | end | ||
| 64 | return assert.same(result, 10) | 60 | return assert.same(result, 10) |
| 65 | end) | 61 | end) |
| 66 | it("should support multiple statements", function() | 62 | it("should support multiple statements", function() |
| @@ -125,27 +121,19 @@ return describe("with statement", function() | |||
| 125 | y = 10 | 121 | y = 10 |
| 126 | } | 122 | } |
| 127 | local result | 123 | local result |
| 128 | do | 124 | repeat |
| 129 | local _accum_0 | 125 | result = obj.x + obj.y |
| 130 | repeat | 126 | break |
| 131 | _accum_0 = obj.x + obj.y | 127 | until true |
| 132 | break | ||
| 133 | until true | ||
| 134 | result = _accum_0 | ||
| 135 | end | ||
| 136 | return assert.same(result, 15) | 128 | return assert.same(result, 15) |
| 137 | end) | 129 | end) |
| 138 | it("should work with string methods", function() | 130 | it("should work with string methods", function() |
| 139 | local s = "hello" | 131 | local s = "hello" |
| 140 | local result | 132 | local result |
| 141 | do | 133 | repeat |
| 142 | local _accum_0 | 134 | result = s:upper() |
| 143 | repeat | 135 | break |
| 144 | _accum_0 = s:upper() | 136 | until true |
| 145 | break | ||
| 146 | until true | ||
| 147 | result = _accum_0 | ||
| 148 | end | ||
| 149 | return assert.same(result, "HELLO") | 137 | return assert.same(result, "HELLO") |
| 150 | end) | 138 | end) |
| 151 | it("should handle metatable access", function() | 139 | it("should handle metatable access", function() |
| @@ -169,12 +157,10 @@ return describe("with statement", function() | |||
| 169 | x = 10 | 157 | x = 10 |
| 170 | } | 158 | } |
| 171 | local _val_0 | 159 | local _val_0 |
| 172 | local _accum_0 | ||
| 173 | repeat | 160 | repeat |
| 174 | _accum_0 = obj.x * 2 | 161 | _val_0 = obj.x * 2 |
| 175 | break | 162 | break |
| 176 | until true | 163 | until true |
| 177 | _val_0 = _accum_0 | ||
| 178 | return _val_0 | 164 | return _val_0 |
| 179 | end | 165 | end |
| 180 | local result = fn() | 166 | local result = fn() |
| @@ -187,12 +173,10 @@ return describe("with statement", function() | |||
| 187 | value = 42 | 173 | value = 42 |
| 188 | } | 174 | } |
| 189 | local _val_0 | 175 | local _val_0 |
| 190 | local _accum_0 | ||
| 191 | repeat | 176 | repeat |
| 192 | _accum_0 = obj.value | 177 | _val_0 = obj.value |
| 193 | break | 178 | break |
| 194 | until true | 179 | until true |
| 195 | _val_0 = _accum_0 | ||
| 196 | return _val_0 | 180 | return _val_0 |
| 197 | end | 181 | end |
| 198 | return assert.same(get_value(), 42) | 182 | return assert.same(get_value(), 42) |
| @@ -202,19 +186,15 @@ return describe("with statement", function() | |||
| 202 | value = 10 | 186 | value = 10 |
| 203 | } | 187 | } |
| 204 | local result | 188 | local result |
| 205 | do | 189 | repeat |
| 206 | local _accum_0 | 190 | local _exp_0 = obj.value |
| 207 | repeat | 191 | if _exp_0 ~= nil then |
| 208 | local _exp_0 = obj.value | 192 | result = _exp_0 |
| 209 | if _exp_0 ~= nil then | 193 | else |
| 210 | _accum_0 = _exp_0 | 194 | result = 0 |
| 211 | else | 195 | end |
| 212 | _accum_0 = 0 | 196 | break |
| 213 | end | 197 | until true |
| 214 | break | ||
| 215 | until true | ||
| 216 | result = _accum_0 | ||
| 217 | end | ||
| 218 | return assert.same(result, 10) | 198 | return assert.same(result, 10) |
| 219 | end) | 199 | end) |
| 220 | it("should handle nil object safely", function() | 200 | it("should handle nil object safely", function() |
| @@ -222,10 +202,10 @@ return describe("with statement", function() | |||
| 222 | do | 202 | do |
| 223 | local _with_0 = nil | 203 | local _with_0 = nil |
| 224 | do | 204 | do |
| 225 | local _accum_0 | 205 | local _accum_0 = { } |
| 226 | repeat | 206 | repeat |
| 227 | if _with_0 ~= nil then | 207 | if _with_0 ~= nil then |
| 228 | _accum_0 = _with_0.value | 208 | result = _with_0.value |
| 229 | break | 209 | break |
| 230 | end | 210 | end |
| 231 | until true | 211 | until true |
| @@ -245,16 +225,12 @@ return describe("with statement", function() | |||
| 245 | end | 225 | end |
| 246 | } | 226 | } |
| 247 | local result | 227 | local result |
| 248 | do | 228 | repeat |
| 249 | local _accum_0 | 229 | obj:add(10) |
| 250 | repeat | 230 | obj:add(5) |
| 251 | obj:add(10) | 231 | result = obj:get() |
| 252 | obj:add(5) | 232 | break |
| 253 | _accum_0 = obj:get() | 233 | until true |
| 254 | break | ||
| 255 | until true | ||
| 256 | result = _accum_0 | ||
| 257 | end | ||
| 258 | return assert.same(result, 20) | 234 | return assert.same(result, 20) |
| 259 | end) | 235 | end) |
| 260 | return it("should support nested property access", function() | 236 | return it("should support nested property access", function() |
| @@ -266,14 +242,10 @@ return describe("with statement", function() | |||
| 266 | } | 242 | } |
| 267 | } | 243 | } |
| 268 | local result | 244 | local result |
| 269 | do | 245 | repeat |
| 270 | local _accum_0 | 246 | result = obj.level1.level2.level3 |
| 271 | repeat | 247 | break |
| 272 | _accum_0 = obj.level1.level2.level3 | 248 | until true |
| 273 | break | ||
| 274 | until true | ||
| 275 | result = _accum_0 | ||
| 276 | end | ||
| 277 | return assert.same(result, "deep") | 249 | return assert.same(result, "deep") |
| 278 | end) | 250 | end) |
| 279 | end) | 251 | end) |
diff --git a/spec/outputs/with.lua b/spec/outputs/with.lua index 3cd8aab..ce0e495 100644 --- a/spec/outputs/with.lua +++ b/spec/outputs/with.lua | |||
| @@ -191,62 +191,52 @@ do | |||
| 191 | f((function() | 191 | f((function() |
| 192 | local _with_0 = item | 192 | local _with_0 = item |
| 193 | local _val_0 | 193 | local _val_0 |
| 194 | do | 194 | repeat |
| 195 | local _accum_0 | 195 | if _with_0.id > 0 then |
| 196 | repeat | 196 | _val_0 = _with_0.content |
| 197 | if _with_0.id > 0 then | 197 | break |
| 198 | _accum_0 = _with_0.content | 198 | end |
| 199 | break | 199 | until true |
| 200 | end | ||
| 201 | until true | ||
| 202 | _val_0 = _accum_0 | ||
| 203 | end | ||
| 204 | return _val_0 | 200 | return _val_0 |
| 205 | end)()) | 201 | end)()) |
| 206 | local a | 202 | local a |
| 207 | do | 203 | do |
| 208 | local _with_0 = tb | 204 | local _with_0 = tb |
| 209 | do | 205 | repeat |
| 210 | local _accum_0 | 206 | if _with_0.v then |
| 211 | repeat | 207 | a = _with_0.a |
| 212 | if _with_0.v then | 208 | break |
| 213 | _accum_0 = _with_0.a | 209 | end |
| 214 | break | 210 | until true |
| 215 | end | ||
| 216 | until true | ||
| 217 | a = _accum_0 | ||
| 218 | end | ||
| 219 | end | 211 | end |
| 220 | local _accum_0 | 212 | local _val_0 |
| 221 | while true do | 213 | while true do |
| 222 | local _with_0 = tb | 214 | local _with_0 = tb |
| 223 | local _accum_1 | 215 | local _accum_0 = { } |
| 224 | repeat | 216 | repeat |
| 225 | if _with_0 ~= nil then | 217 | if _with_0 ~= nil then |
| 226 | _accum_1 = 1 | 218 | _val_0 = 1 |
| 227 | break | 219 | break |
| 228 | end | 220 | end |
| 229 | until true | 221 | until true |
| 230 | _accum_0 = _accum_1 | 222 | _val_0 = _accum_0 |
| 231 | break | 223 | break |
| 232 | end | 224 | end |
| 233 | a = _accum_0 | 225 | a = _val_0 |
| 234 | end | 226 | end |
| 235 | do | 227 | do |
| 236 | local a | 228 | local a |
| 237 | local _accum_0 | ||
| 238 | for i = 1, 100 do | 229 | for i = 1, 100 do |
| 239 | local x = tb[i] | 230 | local x = tb[i] |
| 240 | if x ~= nil then | 231 | if x ~= nil then |
| 241 | local _des_0 = 1 | 232 | local _des_0 = 1 |
| 242 | if _des_0 then | 233 | if _des_0 then |
| 243 | x.id = _des_0 | 234 | x.id = _des_0 |
| 244 | _accum_0 = x | 235 | a = x |
| 245 | break | 236 | break |
| 246 | end | 237 | end |
| 247 | end | 238 | end |
| 248 | end | 239 | end |
| 249 | a = _accum_0 | ||
| 250 | end | 240 | end |
| 251 | do | 241 | do |
| 252 | local tb = { | 242 | local tb = { |
| @@ -254,11 +244,9 @@ do | |||
| 254 | y = 2 | 244 | y = 2 |
| 255 | } | 245 | } |
| 256 | local a | 246 | local a |
| 257 | local _accum_0 | ||
| 258 | repeat | 247 | repeat |
| 259 | _accum_0 = tb.x + tb.y | 248 | a = tb.x + tb.y |
| 260 | break | 249 | break |
| 261 | until true | 250 | until true |
| 262 | a = _accum_0 | ||
| 263 | end | 251 | end |
| 264 | return nil | 252 | return nil |
