From 663a8c622db13b3a9dad962071ff6f3cfb482de3 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Wed, 11 Feb 2026 16:58:21 +0800 Subject: Supported multiple break values. Simplified some generated codes. --- spec/outputs/5.1/loops.lua | 36 +++++------- spec/outputs/codes_from_doc_de.lua | 8 +-- spec/outputs/codes_from_doc_en.lua | 8 +-- spec/outputs/codes_from_doc_id-id.lua | 8 +-- spec/outputs/codes_from_doc_pt-br.lua | 8 +-- spec/outputs/codes_from_doc_zh.lua | 8 +-- spec/outputs/loops.lua | 36 +++++------- spec/outputs/test/config_spec.lua | 12 ++-- spec/outputs/test/do_statement_spec.lua | 4 +- spec/outputs/test/with_statement_spec.lua | 98 +++++++++++-------------------- spec/outputs/with.lua | 50 ++++++---------- 11 files changed, 101 insertions(+), 175 deletions(-) (limited to 'spec') 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) end do local index - do - local _accum_0 - for i = 1, #tb do - if tb[i] then - _accum_0 = i - break - end + for i = 1, #tb do + if tb[i] then + index = i + break end - index = _accum_0 end f((function() - local _accum_0 + local _val_0 for i = 1, #tb do if tb[i] then - _accum_0 = i + _val_0 = i break end end - return _accum_0 + return _val_0 end)()) f((function() local _accum_0 = { } @@ -545,13 +541,13 @@ do i = 1 local idx do - local _accum_0 + local _val_0 while tb[i] do i = i + 1 - _accum_0 = i - 1 + _val_0 = i - 1 break end - idx = _accum_0 + idx = _val_0 end local f1 f1 = function() @@ -560,13 +556,13 @@ do end i = 1 f((function() - local _accum_0 + local _val_0 while tb[i] do i = i + 1 - _accum_0 = i - 1 + _val_0 = i - 1 break end - return _accum_0 + return _val_0 end)()) local _accum_0 = { } local _len_0 = 1 @@ -592,13 +588,13 @@ do print(1) until true do - local _accum_0 + local _val_0 repeat a = func() - _accum_0 = a.x + _val_0 = a.x break until a.v - x = _accum_0 + x = _val_0 end local items 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 end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() for i = 1, 10 do @@ -3324,16 +3322,14 @@ for i = 1, 20 do end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() 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 end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() for i = 1, 10 do @@ -3324,16 +3322,14 @@ for i = 1, 20 do end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() 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 end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() for i = 1, 10 do @@ -3324,16 +3322,14 @@ for i = 1, 20 do end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() 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 end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() for i = 1, 10 do @@ -3324,16 +3322,14 @@ for i = 1, 20 do end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() 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 end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() for i = 1, 10 do @@ -3324,16 +3322,14 @@ for i = 1, 20 do end doubled_evens = _accum_0 local first_large -local _accum_0 local _list_0 = numbers for _index_0 = 1, #_list_0 do local n = _list_0[_index_0] if n > 10 then - _accum_0 = n + first_large = n break end end -first_large = _accum_0 local func_a func_a = function() 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) end do local index - do - local _accum_0 - for i = 1, #tb do - if tb[i] then - _accum_0 = i - break - end + for i = 1, #tb do + if tb[i] then + index = i + break end - index = _accum_0 end f((function() - local _accum_0 + local _val_0 for i = 1, #tb do if tb[i] then - _accum_0 = i + _val_0 = i break end end - return _accum_0 + return _val_0 end)()) f((function() local _accum_0 = { } @@ -426,13 +422,13 @@ do i = 1 local idx do - local _accum_0 + local _val_0 while tb[i] do i = i + 1 - _accum_0 = i - 1 + _val_0 = i - 1 break end - idx = _accum_0 + idx = _val_0 end local f1 f1 = function() @@ -441,13 +437,13 @@ do end i = 1 f((function() - local _accum_0 + local _val_0 while tb[i] do i = i + 1 - _accum_0 = i - 1 + _val_0 = i - 1 break end - return _accum_0 + return _val_0 end)()) local _accum_0 = { } local _len_0 = 1 @@ -473,13 +469,13 @@ do print(1) until true do - local _accum_0 + local _val_0 repeat a = func() - _accum_0 = a.x + _val_0 = a.x break until a.v - x = _accum_0 + x = _val_0 end local items 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() y = 20 } local result - do - local _accum_0 - repeat - _accum_0 = obj.x + obj.y - break - until true - result = _accum_0 - end + repeat + result = obj.x + obj.y + break + until true return assert.same(result, 30) end) 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() } local result do - local _accum_0 repeat - _accum_0 = obj:double() + result = obj:double() break until true - result = _accum_0 end return assert.same(result, 20) 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() value = 5 } local result - do - local _accum_0 - repeat - _accum_0 = obj.value * 2 - break - until true - result = _accum_0 - end + repeat + result = obj.value * 2 + break + until true return assert.same(result, 10) end) it("should support multiple statements", function() @@ -125,27 +121,19 @@ return describe("with statement", function() y = 10 } local result - do - local _accum_0 - repeat - _accum_0 = obj.x + obj.y - break - until true - result = _accum_0 - end + repeat + result = obj.x + obj.y + break + until true return assert.same(result, 15) end) it("should work with string methods", function() local s = "hello" local result - do - local _accum_0 - repeat - _accum_0 = s:upper() - break - until true - result = _accum_0 - end + repeat + result = s:upper() + break + until true return assert.same(result, "HELLO") end) it("should handle metatable access", function() @@ -169,12 +157,10 @@ return describe("with statement", function() x = 10 } local _val_0 - local _accum_0 repeat - _accum_0 = obj.x * 2 + _val_0 = obj.x * 2 break until true - _val_0 = _accum_0 return _val_0 end local result = fn() @@ -187,12 +173,10 @@ return describe("with statement", function() value = 42 } local _val_0 - local _accum_0 repeat - _accum_0 = obj.value + _val_0 = obj.value break until true - _val_0 = _accum_0 return _val_0 end return assert.same(get_value(), 42) @@ -202,19 +186,15 @@ return describe("with statement", function() value = 10 } local result - do - local _accum_0 - repeat - local _exp_0 = obj.value - if _exp_0 ~= nil then - _accum_0 = _exp_0 - else - _accum_0 = 0 - end - break - until true - result = _accum_0 - end + repeat + local _exp_0 = obj.value + if _exp_0 ~= nil then + result = _exp_0 + else + result = 0 + end + break + until true return assert.same(result, 10) end) it("should handle nil object safely", function() @@ -222,10 +202,10 @@ return describe("with statement", function() do local _with_0 = nil do - local _accum_0 + local _accum_0 = { } repeat if _with_0 ~= nil then - _accum_0 = _with_0.value + result = _with_0.value break end until true @@ -245,16 +225,12 @@ return describe("with statement", function() end } local result - do - local _accum_0 - repeat - obj:add(10) - obj:add(5) - _accum_0 = obj:get() - break - until true - result = _accum_0 - end + repeat + obj:add(10) + obj:add(5) + result = obj:get() + break + until true return assert.same(result, 20) end) return it("should support nested property access", function() @@ -266,14 +242,10 @@ return describe("with statement", function() } } local result - do - local _accum_0 - repeat - _accum_0 = obj.level1.level2.level3 - break - until true - result = _accum_0 - end + repeat + result = obj.level1.level2.level3 + break + until true return assert.same(result, "deep") end) 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 f((function() local _with_0 = item local _val_0 - do - local _accum_0 - repeat - if _with_0.id > 0 then - _accum_0 = _with_0.content - break - end - until true - _val_0 = _accum_0 - end + repeat + if _with_0.id > 0 then + _val_0 = _with_0.content + break + end + until true return _val_0 end)()) local a do local _with_0 = tb - do - local _accum_0 - repeat - if _with_0.v then - _accum_0 = _with_0.a - break - end - until true - a = _accum_0 - end + repeat + if _with_0.v then + a = _with_0.a + break + end + until true end - local _accum_0 + local _val_0 while true do local _with_0 = tb - local _accum_1 + local _accum_0 = { } repeat if _with_0 ~= nil then - _accum_1 = 1 + _val_0 = 1 break end until true - _accum_0 = _accum_1 + _val_0 = _accum_0 break end - a = _accum_0 + a = _val_0 end do local a - local _accum_0 for i = 1, 100 do local x = tb[i] if x ~= nil then local _des_0 = 1 if _des_0 then x.id = _des_0 - _accum_0 = x + a = x break end end end - a = _accum_0 end do local tb = { @@ -254,11 +244,9 @@ do y = 2 } local a - local _accum_0 repeat - _accum_0 = tb.x + tb.y + a = tb.x + tb.y break until true - a = _accum_0 end return nil -- cgit v1.2.3-55-g6feb