aboutsummaryrefslogtreecommitdiff
path: root/spec/outputs
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2024-03-19 16:21:35 +0800
committerLi Jin <dragon-fly@qq.com>2024-03-19 16:21:35 +0800
commit2733fe565c405f7b382fb7c02c69f78fb65d2f20 (patch)
tree41a91a52c7ee9e9360831693d107e7da897c7a3b /spec/outputs
parent62ddb888d67d047324aa6c411d47aaeac9b658fd (diff)
downloadyuescript-2733fe565c405f7b382fb7c02c69f78fb65d2f20.tar.gz
yuescript-2733fe565c405f7b382fb7c02c69f78fb65d2f20.tar.bz2
yuescript-2733fe565c405f7b382fb7c02c69f78fb65d2f20.zip
fix nil coalescing anonymous function moving issue. add test cases.
Diffstat (limited to 'spec/outputs')
-rw-r--r--spec/outputs/upvalue_func.lua502
1 files changed, 502 insertions, 0 deletions
diff --git a/spec/outputs/upvalue_func.lua b/spec/outputs/upvalue_func.lua
new file mode 100644
index 0000000..125d75f
--- /dev/null
+++ b/spec/outputs/upvalue_func.lua
@@ -0,0 +1,502 @@
1func((function()
2 if cond then
3 return 998
4 else
5 return "abc"
6 end
7end)())
8func(valueA + (function()
9 local _exp_0 = valueB
10 if _exp_0 ~= nil then
11 return _exp_0
12 else
13 return 123
14 end
15end)())
16do
17 (function(_arg_0, ...)
18 local ok = _arg_0
19 return print(select(3, ...))
20 end)(func(1, 2, 3))
21end
22if (function()
23 local _obj_0 = tb
24 if _obj_0 ~= nil then
25 local _obj_1 = _obj_0.abc
26 if _obj_1 ~= nil then
27 local _obj_2 = _obj_1.call
28 if _obj_2 ~= nil then
29 return _obj_2(_obj_1, 123)
30 end
31 return nil
32 end
33 return nil
34 end
35 return nil
36end)() then
37 print("OK")
38end
39func((function()
40 local _obj_0 = getmetatable(tb)
41 return _obj_0["fn"](_obj_0, 123)
42end)(), (function()
43 local _obj_0 = getmetatable(tb)
44 return _obj_0[1 + 1](_obj_0, "abc")
45end)())
46func((function()
47 local _call_0 = tb
48 local _call_1 = _call_0["end"](_call_0)
49 return _call_1["🤣"](_call_1, 123)
50end)())
51local itemA = 1
52local listA = { }
53if (#listA > 0 and (function()
54 for _index_0 = 1, #listA do
55 if listA[_index_0] == itemA then
56 return true
57 end
58 end
59 return false
60end)()) then
61 print("itemA in listA")
62end
63if (itemB ~= nil) and (function()
64 local _check_0 = listB
65 local _val_0 = itemB
66 for _index_0 = 1, #_check_0 do
67 if _check_0[_index_0] == _val_0 then
68 return true
69 end
70 end
71 return false
72end)() then
73 print("itemB in listB")
74end
75func((function()
76 local _tab_0 = { }
77 local _idx_0 = #_tab_0 + 1
78 for _index_0 = 1, #listA do
79 local _value_0 = listA[_index_0]
80 _tab_0[_idx_0] = _value_0
81 _idx_0 = _idx_0 + 1
82 end
83 local _idx_1 = #_tab_0 + 1
84 local _list_0 = listB
85 for _index_0 = 1, #_list_0 do
86 local _value_0 = _list_0[_index_0]
87 _tab_0[_idx_1] = _value_0
88 _idx_1 = _idx_1 + 1
89 end
90 return _tab_0
91end)())
92func((function()
93 local _accum_0 = { }
94 local _len_0 = 1
95 for i = 1, 10 do
96 _accum_0[_len_0] = i
97 _len_0 = _len_0 + 1
98 end
99 return _accum_0
100end)(), (function()
101 local _accum_0 = { }
102 local _len_0 = 1
103 for k in pairs(tb) do
104 _accum_0[_len_0] = k
105 _len_0 = _len_0 + 1
106 end
107 return _accum_0
108end)())
109func((function()
110 local _accum_0 = { }
111 local _len_0 = 1
112 for i = 1, 10 do
113 _accum_0[_len_0] = i + 1
114 _len_0 = _len_0 + 1
115 end
116 return _accum_0
117end)())
118func((function()
119 local _accum_0 = { }
120 local _len_0 = 1
121 for k, v in pairs(tb) do
122 _accum_0[_len_0] = {
123 k,
124 v
125 }
126 _len_0 = _len_0 + 1
127 end
128 return _accum_0
129end)())
130func((function()
131 do
132 local _class_0
133 local _base_0 = { }
134 if _base_0.__index == nil then
135 _base_0.__index = _base_0
136 end
137 _class_0 = setmetatable({
138 __init = function(self)
139 self.value = 1
140 end,
141 __base = _base_0
142 }, {
143 __index = _base_0,
144 __call = function(cls, ...)
145 local _self_0 = setmetatable({ }, _base_0)
146 cls.__init(_self_0, ...)
147 return _self_0
148 end
149 })
150 _base_0.__class = _class_0
151 return _class_0
152 end
153end)())
154func((function()
155 local _with_0 = tb
156 _with_0.field = 1
157 _with_0:func("a")
158 return _with_0
159end)())
160func((function()
161 local _tbl_0 = { }
162 for k, v in pairs(tb) do
163 _tbl_0[tostring(k) .. "-post-fix"] = v * 2
164 end
165 return _tbl_0
166end)())
167func((function()
168 print(123)
169 return "abc"
170end)())
171do
172 (function(_arg_0, ...)
173 local success = _arg_0
174 if success then
175 return print(select('#', ...))
176 end
177 end)(pcall(function()
178 local a = 1
179 print(a + nil)
180 return 1, 2, 3
181 end))
182end
183local i = 1
184func((function()
185 local _accum_0 = { }
186 local _len_0 = 1
187 while cond do
188 i = i + 1
189 _accum_0[_len_0] = i
190 _len_0 = _len_0 + 1
191 end
192 return _accum_0
193end)())
194func((function()
195 local _exp_0 = value
196 if 1 == _exp_0 then
197 return 'a'
198 elseif 2 == _exp_0 then
199 return 'b'
200 end
201end)())
202local _anon_func_0 = function(cond)
203 if cond then
204 return 998
205 else
206 return "abc"
207 end
208end
209local _anon_func_1 = function(valueB)
210 if valueB ~= nil then
211 return valueB
212 else
213 return 123
214 end
215end
216local _anon_func_2 = function(print, select, _arg_0, ...)
217 do
218 local ok = _arg_0
219 return print(select(3, ...))
220 end
221end
222local _anon_func_3 = function(tb)
223 if tb ~= nil then
224 local _obj_0 = tb.abc
225 if _obj_0 ~= nil then
226 local _obj_1 = _obj_0.call
227 if _obj_1 ~= nil then
228 return _obj_1(_obj_0, 123)
229 end
230 return nil
231 end
232 return nil
233 end
234 return nil
235end
236local _anon_func_4 = function(getmetatable, tb)
237 local _obj_0 = getmetatable(tb)
238 return _obj_0["fn"](_obj_0, 123)
239end
240local _anon_func_5 = function(getmetatable, tb)
241 local _obj_0 = getmetatable(tb)
242 return _obj_0[1 + 1](_obj_0, "abc")
243end
244local _anon_func_6 = function(tb)
245 do
246 local _call_0 = tb
247 local _call_1 = _call_0["end"](_call_0)
248 return _call_1["🤣"](_call_1, 123)
249 end
250end
251local _anon_func_7 = function(itemA, listA)
252 for _index_0 = 1, #listA do
253 if listA[_index_0] == itemA then
254 return true
255 end
256 end
257 return false
258end
259local _anon_func_8 = function(itemB, listB)
260 for _index_0 = 1, #listB do
261 if listB[_index_0] == itemB then
262 return true
263 end
264 end
265 return false
266end
267local _anon_func_9 = function(listA, listB, pairs)
268 local _tab_0 = { }
269 local _idx_0 = #_tab_0 + 1
270 for _index_0 = 1, #listA do
271 local _value_0 = listA[_index_0]
272 _tab_0[_idx_0] = _value_0
273 _idx_0 = _idx_0 + 1
274 end
275 local _idx_1 = #_tab_0 + 1
276 for _index_0 = 1, #listB do
277 local _value_0 = listB[_index_0]
278 _tab_0[_idx_1] = _value_0
279 _idx_1 = _idx_1 + 1
280 end
281 return _tab_0
282end
283local _anon_func_10 = function()
284 local _accum_0 = { }
285 local _len_0 = 1
286 for i = 1, 10 do
287 _accum_0[_len_0] = i
288 _len_0 = _len_0 + 1
289 end
290 return _accum_0
291end
292local _anon_func_11 = function(pairs, tb)
293 local _accum_0 = { }
294 local _len_0 = 1
295 for k in pairs(tb) do
296 _accum_0[_len_0] = k
297 _len_0 = _len_0 + 1
298 end
299 return _accum_0
300end
301local _anon_func_12 = function()
302 local _accum_0 = { }
303 local _len_0 = 1
304 for i = 1, 10 do
305 _accum_0[_len_0] = i + 1
306 _len_0 = _len_0 + 1
307 end
308 return _accum_0
309end
310local _anon_func_13 = function(pairs, tb)
311 local _accum_0 = { }
312 local _len_0 = 1
313 for k, v in pairs(tb) do
314 _accum_0[_len_0] = {
315 k,
316 v
317 }
318 _len_0 = _len_0 + 1
319 end
320 return _accum_0
321end
322local _anon_func_14 = function(setmetatable)
323 do
324 local _class_0
325 local _base_0 = { }
326 if _base_0.__index == nil then
327 _base_0.__index = _base_0
328 end
329 _class_0 = setmetatable({
330 __init = function(self)
331 self.value = 1
332 end,
333 __base = _base_0
334 }, {
335 __index = _base_0,
336 __call = function(cls, ...)
337 local _self_0 = setmetatable({ }, _base_0)
338 cls.__init(_self_0, ...)
339 return _self_0
340 end
341 })
342 _base_0.__class = _class_0
343 return _class_0
344 end
345end
346local _anon_func_15 = function(tb)
347 tb.field = 1
348 tb:func("a")
349 return tb
350end
351local _anon_func_16 = function(pairs, tb, tostring)
352 local _tbl_0 = { }
353 for k, v in pairs(tb) do
354 _tbl_0[tostring(k) .. "-post-fix"] = v * 2
355 end
356 return _tbl_0
357end
358local _anon_func_17 = function(print)
359 do
360 print(123)
361 return "abc"
362 end
363end
364local _anon_func_18 = function(print, select, _arg_0, ...)
365 do
366 local success = _arg_0
367 if success then
368 return print(select('#', ...))
369 end
370 end
371end
372local _anon_func_19 = function(print)
373 do
374 local a = 1
375 print(a + nil)
376 return 1, 2, 3
377 end
378end
379local _anon_func_20 = function(cond, i)
380 local _accum_0 = { }
381 local _len_0 = 1
382 while cond do
383 i = i + 1
384 _accum_0[_len_0] = i
385 _len_0 = _len_0 + 1
386 end
387 return _accum_0
388end
389local _anon_func_21 = function(value)
390 if 1 == value then
391 return 'a'
392 elseif 2 == value then
393 return 'b'
394 end
395end
396GameEngine:onUpdate(function(deltaTime)
397 func(_anon_func_0(cond))
398 func(valueA + _anon_func_1(valueB))
399 do
400 _anon_func_2(print, select, func(1, 2, 3))
401 end
402 if _anon_func_3(tb) then
403 print("OK")
404 end
405 func(_anon_func_4(getmetatable, tb), _anon_func_5(getmetatable, tb))
406 func(_anon_func_6(tb))
407 itemA = 1
408 listA = { }
409 if (#listA > 0 and _anon_func_7(itemA, listA)) then
410 print("item in list")
411 end
412 if (itemB ~= nil) and _anon_func_8(itemB, listB) then
413 print("item in list")
414 end
415 func(_anon_func_9(listA, listB, pairs))
416 func(_anon_func_10(), _anon_func_11(pairs, tb))
417 func(_anon_func_12())
418 func(_anon_func_13(pairs, tb))
419 func(_anon_func_14(setmetatable))
420 func(_anon_func_15(tb))
421 func(_anon_func_16(pairs, tb, tostring))
422 func(_anon_func_17(print))
423 do
424 _anon_func_18(print, select, pcall(_anon_func_19, print))
425 end
426 i = 1
427 func(_anon_func_20(cond, i))
428 return func(_anon_func_21(value))
429end)
430local _anon_func_22 = function(cond)
431 if cond then
432 return 998
433 else
434 return "abc"
435 end
436end
437local _anon_func_23 = function(valueB)
438 if valueB ~= nil then
439 return valueB
440 else
441 return 123
442 end
443end
444local _anon_func_24 = function(tb)
445 if tb ~= nil then
446 local _obj_0 = tb.abc
447 if _obj_0 ~= nil then
448 local _obj_1 = _obj_0.call
449 if _obj_1 ~= nil then
450 return _obj_1(_obj_0, 123)
451 end
452 return nil
453 end
454 return nil
455 end
456 return nil
457end
458local _anon_func_26 = function(itemA, listA)
459 for _index_0 = 1, #listA do
460 if listA[_index_0] == itemA then
461 return true
462 end
463 end
464 return false
465end
466local _anon_func_25 = function(itemA, listA, tb)
467 do
468 local _call_0 = tb
469 local _call_1 = _call_0["end"](_call_0)
470 return _call_1["🤣"](_call_1, 123 and (#listA > 0 and _anon_func_26(itemA, listA)))
471 end
472end
473GameEngine:onEvent("SomeEvent", function()
474 return func(value + (_anon_func_22(cond)) + (_anon_func_23(valueB)) > _anon_func_24(tb) + _anon_func_25(itemA, listA, tb))
475end)
476local _anon_func_27 = function(UpdateScoreText, tostring, value)
477 if value > 200 then
478 UpdateScoreText("Win: " .. tostring(value))
479 return "done"
480 else
481 UpdateScoreText("Score: " .. tostring(value))
482 return "continue"
483 end
484end
485GameEngine:schedule(function(deltaTime)
486 local value = 123
487 return func(_anon_func_27(UpdateScoreText, tostring, value))
488end)
489return GameEngine:schedule(function(deltaTime)
490 local value = 123
491 return func((function()
492 if value > 200 then
493 UpdateScoreText("Win: " .. tostring(value))
494 return "done"
495 else
496 GameEngine:schedule(function(deltaTime)
497 return UpdateScoreText("Score: " .. tostring(value))
498 end)
499 return "continue"
500 end
501 end)())
502end)