summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2022-04-24 15:35:53 +0800
committerLi Jin <dragon-fly@qq.com>2022-04-24 15:35:53 +0800
commit249e1de1d32dda2b60b9116c5a4e538475de0192 (patch)
treed62b95ba79cd8b226fe2f8ae172bf646c12bff91 /spec
parentfe6d146bc4454d8096ddd0543d7142db3da5da5b (diff)
downloadyuescript-249e1de1d32dda2b60b9116c5a4e538475de0192.tar.gz
yuescript-249e1de1d32dda2b60b9116c5a4e538475de0192.tar.bz2
yuescript-249e1de1d32dda2b60b9116c5a4e538475de0192.zip
add support for the Fill Operator. fix issue #39.
Diffstat (limited to 'spec')
-rw-r--r--spec/inputs/tables.yue19
-rw-r--r--spec/outputs/tables.lua127
2 files changed, 121 insertions, 25 deletions
diff --git a/spec/inputs/tables.yue b/spec/inputs/tables.yue
index 649c1dc..3a245a7 100644
--- a/spec/inputs/tables.yue
+++ b/spec/inputs/tables.yue
@@ -262,5 +262,24 @@ tbMixB = {
262 1, 2, 3 262 1, 2, 3
263} 263}
264 264
265const template = {
266 foo: "Hello"
267 bar: "World"
268 baz: "!"
269}
270
271const specialized = {
272 ...template
273 bar: "Bob"
274}
275
276specializedB = {
277 function: ->
278 ...template
279 end: ->
280 if: true
281 else: false
282}
283
265nil 284nil
266 285
diff --git a/spec/outputs/tables.lua b/spec/outputs/tables.lua
index b820122..165706d 100644
--- a/spec/outputs/tables.lua
+++ b/spec/outputs/tables.lua
@@ -351,10 +351,14 @@ local menus = {
351local tb 351local tb
352do 352do
353 local _tab_0 = { } 353 local _tab_0 = { }
354 local _list_0 = other 354 local _idx_0 = 1
355 for _index_0 = 1, #_list_0 do 355 for _key_0, _value_0 in pairs(other) do
356 local _value_0 = _list_0[_index_0] 356 if _idx_0 == _key_0 then
357 _tab_0[#_tab_0 + 1] = _value_0 357 _tab_0[#_tab_0 + 1] = _value_0
358 _idx_0 = _idx_0 + 1
359 else
360 _tab_0[_key_0] = _value_0
361 end
358 end 362 end
359 tb = _tab_0 363 tb = _tab_0
360end 364end
@@ -372,9 +376,14 @@ do
372 _with_0:func() 376 _with_0:func()
373 _obj_0 = _with_0 377 _obj_0 = _with_0
374 end 378 end
375 for _index_0 = 1, #_obj_0 do 379 local _idx_0 = 1
376 local _value_0 = _obj_0[_index_0] 380 for _key_0, _value_0 in pairs(_obj_0) do
377 _tab_0[#_tab_0 + 1] = _value_0 381 if _idx_0 == _key_0 then
382 _tab_0[#_tab_0 + 1] = _value_0
383 _idx_0 = _idx_0 + 1
384 else
385 _tab_0[_key_0] = _value_0
386 end
378 end 387 end
379 _tab_0[#_tab_0 + 1] = "a" 388 _tab_0[#_tab_0 + 1] = "a"
380 _tab_0[#_tab_0 + 1] = "b" 389 _tab_0[#_tab_0 + 1] = "b"
@@ -386,9 +395,14 @@ do
386 _obj_1 = _obj_2() 395 _obj_1 = _obj_2()
387 end 396 end
388 end 397 end
389 for _index_0 = 1, #_obj_1 do 398 local _idx_1 = 1
390 local _value_0 = _obj_1[_index_0] 399 for _key_0, _value_0 in pairs(_obj_1) do
391 _tab_0[#_tab_0 + 1] = _value_0 400 if _idx_1 == _key_0 then
401 _tab_0[#_tab_0 + 1] = _value_0
402 _idx_1 = _idx_1 + 1
403 else
404 _tab_0[_key_0] = _value_0
405 end
392 end 406 end
393 _tab_0.key = "value" 407 _tab_0.key = "value"
394 for _index_0 = 1, select('#', ...) do 408 for _index_0 = 1, select('#', ...) do
@@ -409,9 +423,14 @@ do
409 end 423 end
410 _obj_0 = _accum_0 424 _obj_0 = _accum_0
411 end 425 end
412 for _index_0 = 1, #_obj_0 do 426 local _idx_0 = 1
413 local _value_0 = _obj_0[_index_0] 427 for _key_0, _value_0 in pairs(_obj_0) do
414 _tab_0[#_tab_0 + 1] = _value_0 428 if _idx_0 == _key_0 then
429 _tab_0[#_tab_0 + 1] = _value_0
430 _idx_0 = _idx_0 + 1
431 else
432 _tab_0[_key_0] = _value_0
433 end
415 end 434 end
416 _tab_0[#_tab_0 + 1] = 11 435 _tab_0[#_tab_0 + 1] = 11
417 tbMixA = _tab_0 436 tbMixA = _tab_0
@@ -420,34 +439,92 @@ local tbMixB
420do 439do
421 local _tab_0 = { } 440 local _tab_0 = { }
422 local _obj_0 = ... 441 local _obj_0 = ...
423 for _index_0 = 1, #_obj_0 do 442 local _idx_0 = 1
424 local _value_0 = _obj_0[_index_0] 443 for _key_0, _value_0 in pairs(_obj_0) do
425 _tab_0[#_tab_0 + 1] = _value_0 444 if _idx_0 == _key_0 then
445 _tab_0[#_tab_0 + 1] = _value_0
446 _idx_0 = _idx_0 + 1
447 else
448 _tab_0[_key_0] = _value_0
449 end
426 end 450 end
427 local _obj_1 = { 451 local _obj_1 = {
428 ... 452 ...
429 } 453 }
430 for _index_0 = 1, #_obj_1 do 454 local _idx_1 = 1
431 local _value_0 = _obj_1[_index_0] 455 for _key_0, _value_0 in pairs(_obj_1) do
432 _tab_0[#_tab_0 + 1] = _value_0 456 if _idx_1 == _key_0 then
457 _tab_0[#_tab_0 + 1] = _value_0
458 _idx_1 = _idx_1 + 1
459 else
460 _tab_0[_key_0] = _value_0
461 end
433 end 462 end
434 local _obj_2 463 local _obj_2
435 do 464 do
436 local _tab_1 = { } 465 local _tab_1 = { }
437 local _obj_3 = ... 466 local _obj_3 = ...
438 for _index_0 = 1, #_obj_3 do 467 local _idx_2 = 1
439 local _value_0 = _obj_3[_index_0] 468 for _key_0, _value_0 in pairs(_obj_3) do
440 _tab_1[#_tab_1 + 1] = _value_0 469 if _idx_2 == _key_0 then
470 _tab_1[#_tab_1 + 1] = _value_0
471 _idx_2 = _idx_2 + 1
472 else
473 _tab_1[_key_0] = _value_0
474 end
441 end 475 end
442 _obj_2 = _tab_1 476 _obj_2 = _tab_1
443 end 477 end
444 for _index_0 = 1, #_obj_2 do 478 local _idx_2 = 1
445 local _value_0 = _obj_2[_index_0] 479 for _key_0, _value_0 in pairs(_obj_2) do
446 _tab_0[#_tab_0 + 1] = _value_0 480 if _idx_2 == _key_0 then
481 _tab_0[#_tab_0 + 1] = _value_0
482 _idx_2 = _idx_2 + 1
483 else
484 _tab_0[_key_0] = _value_0
485 end
447 end 486 end
448 _tab_0[#_tab_0 + 1] = 1 487 _tab_0[#_tab_0 + 1] = 1
449 _tab_0[#_tab_0 + 1] = 2 488 _tab_0[#_tab_0 + 1] = 2
450 _tab_0[#_tab_0 + 1] = 3 489 _tab_0[#_tab_0 + 1] = 3
451 tbMixB = _tab_0 490 tbMixB = _tab_0
452end 491end
492local template <const> = {
493 foo = "Hello",
494 bar = "World",
495 baz = "!"
496}
497local specialized <const> = (function()
498 local _tab_0 = { }
499 local _idx_0 = 1
500 for _key_0, _value_0 in pairs(template) do
501 if _idx_0 == _key_0 then
502 _tab_0[#_tab_0 + 1] = _value_0
503 _idx_0 = _idx_0 + 1
504 else
505 _tab_0[_key_0] = _value_0
506 end
507 end
508 _tab_0.bar = "Bob"
509 return _tab_0
510end)()
511local specializedB
512do
513 local _tab_0 = {
514 ["function"] = function() end
515 }
516 local _idx_0 = 1
517 for _key_0, _value_0 in pairs(template) do
518 if _idx_0 == _key_0 then
519 _tab_0[#_tab_0 + 1] = _value_0
520 _idx_0 = _idx_0 + 1
521 else
522 _tab_0[_key_0] = _value_0
523 end
524 end
525 _tab_0["end"] = function() end
526 _tab_0["if"] = true
527 _tab_0["else"] = false
528 specializedB = _tab_0
529end
453return nil 530return nil