diff options
author | Li Jin <dragon-fly@qq.com> | 2022-09-30 11:29:41 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-09-30 11:29:41 +0800 |
commit | 5aa41b436b3fdf29f5a0046c68cb60b16fa09eb2 (patch) | |
tree | 5c5c0ecdab0d19544652bc05b70d8131e1645337 /spec/outputs/test | |
parent | a6b6753fda9745f316f3236462b74794b35b85c9 (diff) | |
download | yuescript-5aa41b436b3fdf29f5a0046c68cb60b16fa09eb2.tar.gz yuescript-5aa41b436b3fdf29f5a0046c68cb60b16fa09eb2.tar.bz2 yuescript-5aa41b436b3fdf29f5a0046c68cb60b16fa09eb2.zip |
fix issue #81, refactor continue with gotos.
Diffstat (limited to 'spec/outputs/test')
-rw-r--r-- | spec/outputs/test/loops_spec.lua | 51 |
1 files changed, 17 insertions, 34 deletions
diff --git a/spec/outputs/test/loops_spec.lua b/spec/outputs/test/loops_spec.lua index 34f2e9c..9c85e1a 100644 --- a/spec/outputs/test/loops_spec.lua +++ b/spec/outputs/test/loops_spec.lua | |||
@@ -14,56 +14,39 @@ return describe("loops", function() | |||
14 | local _len_0 = 1 | 14 | local _len_0 = 1 |
15 | for _index_0 = 1, #input do | 15 | for _index_0 = 1, #input do |
16 | local x = input[_index_0] | 16 | local x = input[_index_0] |
17 | local _continue_0 = false | 17 | if x % 2 == 1 then |
18 | repeat | 18 | goto _continue_0 |
19 | if x % 2 == 1 then | ||
20 | _continue_0 = true | ||
21 | break | ||
22 | end | ||
23 | _accum_0[_len_0] = x | ||
24 | _len_0 = _len_0 + 1 | ||
25 | _continue_0 = true | ||
26 | until true | ||
27 | if not _continue_0 then | ||
28 | break | ||
29 | end | 19 | end |
20 | _accum_0[_len_0] = x | ||
21 | _len_0 = _len_0 + 1 | ||
22 | ::_continue_0:: | ||
30 | end | 23 | end |
31 | output = _accum_0 | 24 | output = _accum_0 |
32 | end | 25 | end |
33 | return assert.same(output, { | 26 | return assert.same({ |
34 | 2, | 27 | 2, |
35 | 4, | 28 | 4, |
36 | 6 | 29 | 6 |
37 | }) | 30 | }, output) |
38 | end) | 31 | end) |
39 | return it("continue in repeat", function() | 32 | return it("continue in repeat", function() |
40 | local output = { } | 33 | local output = { } |
41 | local a = 0 | 34 | local a = 0 |
42 | repeat | 35 | repeat |
43 | local _cond_0 = false | 36 | a = a + 1 |
44 | local _continue_0 = false | 37 | if a == 3 then |
45 | repeat | 38 | goto _continue_0 |
46 | a = a + 1 | 39 | end |
47 | if a == 3 then | 40 | if a == 5 then |
48 | _cond_0 = a == 8 | ||
49 | _continue_0 = true | ||
50 | break | ||
51 | end | ||
52 | if a == 5 then | ||
53 | break | ||
54 | end | ||
55 | output[#output + 1] = a | ||
56 | _cond_0 = a == 8 | ||
57 | _continue_0 = true | ||
58 | until true | ||
59 | if not _continue_0 then | ||
60 | break | 41 | break |
61 | end | 42 | end |
62 | until _cond_0 | 43 | output[#output + 1] = a |
63 | return assert.same(output, { | 44 | ::_continue_0:: |
45 | until a == 8 | ||
46 | return assert.same({ | ||
64 | 1, | 47 | 1, |
65 | 2, | 48 | 2, |
66 | 4 | 49 | 4 |
67 | }) | 50 | }, output) |
68 | end) | 51 | end) |
69 | end) | 52 | end) |