diff options
author | Li Jin <dragon-fly@qq.com> | 2022-11-11 17:19:24 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-11-11 17:19:24 +0800 |
commit | 60f8f00a022ac08701792b2897b72d8c99b50f52 (patch) | |
tree | 1f888c1c6b7907d22ffa842648b000fff989506f /spec/outputs | |
parent | 209fca096b0be5c47553f4c4a94d95de33b23d31 (diff) | |
download | yuescript-0.15.13.tar.gz yuescript-0.15.13.tar.bz2 yuescript-0.15.13.zip |
fix default value issue when doing metatable destructuring.v0.15.13
Diffstat (limited to 'spec/outputs')
-rw-r--r-- | spec/outputs/destructure.lua | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/spec/outputs/destructure.lua b/spec/outputs/destructure.lua index 10ad2d0..f40a658 100644 --- a/spec/outputs/destructure.lua +++ b/spec/outputs/destructure.lua | |||
@@ -503,4 +503,109 @@ do | |||
503 | v1 = _obj_1[_tmp_1] | 503 | v1 = _obj_1[_tmp_1] |
504 | end | 504 | end |
505 | end | 505 | end |
506 | do | ||
507 | local add, field | ||
508 | do | ||
509 | local _obj_0 = tb | ||
510 | add, field = getmetatable(_obj_0.a).__add, getmetatable(_obj_0.b)[fieldName] | ||
511 | if add == nil then | ||
512 | add = addFunc | ||
513 | end | ||
514 | if field == nil then | ||
515 | field = 123 | ||
516 | end | ||
517 | end | ||
518 | local meta_field, abc, def | ||
519 | do | ||
520 | local _obj_0 = getmetatable(tb) | ||
521 | meta_field, abc, def = _obj_0["abc"], _obj_0[ [[any string]]], _obj_0['str'] | ||
522 | if meta_field == nil then | ||
523 | meta_field = "def" | ||
524 | end | ||
525 | if abc == nil then | ||
526 | abc = 123 | ||
527 | end | ||
528 | if def == nil then | ||
529 | def = { } | ||
530 | end | ||
531 | end | ||
532 | do | ||
533 | local _exp_0 = tb | ||
534 | local _tab_0 = "table" == type(_exp_0) | ||
535 | if _tab_0 then | ||
536 | do | ||
537 | local _obj_0 = _exp_0.a | ||
538 | if _obj_0 ~= nil then | ||
539 | do | ||
540 | local _obj_1 = getmetatable(_obj_0) | ||
541 | if _obj_1 ~= nil then | ||
542 | add = _obj_1.__add | ||
543 | end | ||
544 | end | ||
545 | end | ||
546 | end | ||
547 | do | ||
548 | local _obj_0 = _exp_0.b | ||
549 | if _obj_0 ~= nil then | ||
550 | do | ||
551 | local _obj_1 = getmetatable(_obj_0) | ||
552 | if _obj_1 ~= nil then | ||
553 | field = _obj_1[fieldName] | ||
554 | end | ||
555 | end | ||
556 | end | ||
557 | end | ||
558 | if add == nil then | ||
559 | add = addFunc | ||
560 | end | ||
561 | if field == nil then | ||
562 | field = 123 | ||
563 | end | ||
564 | print(add, field) | ||
565 | end | ||
566 | end | ||
567 | do | ||
568 | local _exp_0 = tb | ||
569 | local _tab_0 = "table" == type(_exp_0) | ||
570 | if _tab_0 then | ||
571 | local _obj_0 = _exp_0 | ||
572 | do | ||
573 | local _obj_1 = _obj_0.c | ||
574 | if _obj_1 ~= nil then | ||
575 | do | ||
576 | local _obj_2 = getmetatable(_obj_1) | ||
577 | if _obj_2 ~= nil then | ||
578 | meta_field = _obj_2["abc"] | ||
579 | end | ||
580 | end | ||
581 | end | ||
582 | end | ||
583 | if meta_field == nil then | ||
584 | meta_field = "def" | ||
585 | end | ||
586 | do | ||
587 | local _obj_1 = getmetatable(_obj_0) | ||
588 | do | ||
589 | local _obj_2 = _obj_1[ [[any string]]] | ||
590 | if _obj_2 ~= nil then | ||
591 | abc = _obj_2.d | ||
592 | end | ||
593 | end | ||
594 | do | ||
595 | local _obj_2 = _obj_1['str'] | ||
596 | if _obj_2 ~= nil then | ||
597 | def = _obj_2.e | ||
598 | end | ||
599 | end | ||
600 | if abc == nil then | ||
601 | abc = 123 | ||
602 | end | ||
603 | if def == nil then | ||
604 | def = { } | ||
605 | end | ||
606 | end | ||
607 | print(meta_field, abc, def) | ||
608 | end | ||
609 | end | ||
610 | end | ||
506 | return nil | 611 | return nil |