diff options
author | Li Jin <dragon-fly@qq.com> | 2022-12-28 15:55:15 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-12-28 15:55:15 +0800 |
commit | dba662758192b41648e6c1201083d83926f07783 (patch) | |
tree | 4eca06097fce6ac52bbf5276a6ac2da4affb90d0 /spec | |
parent | 5e453de810f8a5e54351609857d742481f057498 (diff) | |
download | yuescript-dba662758192b41648e6c1201083d83926f07783.tar.gz yuescript-dba662758192b41648e6c1201083d83926f07783.tar.bz2 yuescript-dba662758192b41648e6c1201083d83926f07783.zip |
add metamethods checking.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/inputs/import.yue | 7 | ||||
-rw-r--r-- | spec/outputs/destructure.lua | 72 | ||||
-rw-r--r-- | spec/outputs/import.lua | 16 | ||||
-rw-r--r-- | spec/outputs/metatable.lua | 29 |
4 files changed, 67 insertions, 57 deletions
diff --git a/spec/inputs/import.yue b/spec/inputs/import.yue index af5545d..fe5caf5 100644 --- a/spec/inputs/import.yue +++ b/spec/inputs/import.yue | |||
@@ -64,8 +64,9 @@ do | |||
64 | import "org.package.module" as function:func, if:ifVar | 64 | import "org.package.module" as function:func, if:ifVar |
65 | 65 | ||
66 | do | 66 | do |
67 | import "m" as {<a>: b} | 67 | import "m" as {<gc>: b} |
68 | import "m" as {e: f, <a>: c} | 68 | import "m" as {:<index>} |
69 | import "m" as {e: f, <pairs>: c} | ||
69 | import "m" as {c: d} | 70 | import "m" as {c: d} |
70 | import "m" as {g, {<h>: i}} | 71 | import "m" as {g, {<close>: i}} |
71 | 72 | ||
diff --git a/spec/outputs/destructure.lua b/spec/outputs/destructure.lua index 8953a2a..cb0eb3f 100644 --- a/spec/outputs/destructure.lua +++ b/spec/outputs/destructure.lua | |||
@@ -288,28 +288,31 @@ do | |||
288 | end) | 288 | end) |
289 | end | 289 | end |
290 | end | 290 | end |
291 | local _obj_0 = tb | 291 | local mtx, y, zItem, index |
292 | local mtx, y, zItem = getmetatable(_obj_0.x), _obj_0.y, _obj_0.z | 292 | do |
293 | if mtx == nil then | 293 | local _obj_0 = tb |
294 | mtx = { } | 294 | mtx, y, zItem = getmetatable(_obj_0.x), _obj_0.y, _obj_0.z |
295 | end | 295 | if mtx == nil then |
296 | local index = getmetatable(_obj_0).__index | 296 | mtx = { } |
297 | if index == nil then | 297 | end |
298 | index = function() | 298 | index = getmetatable(_obj_0).__index |
299 | return nil | 299 | if index == nil then |
300 | index = function() | ||
301 | return nil | ||
302 | end | ||
300 | end | 303 | end |
301 | end | 304 | end |
302 | do | 305 | do |
303 | local _tmp_0 | 306 | local _tmp_0 |
304 | do | 307 | do |
305 | local _obj_1 = getmetatable(tb) | 308 | local _obj_0 = getmetatable(tb) |
306 | _tmp_0 = _obj_1.func | 309 | _tmp_0 = _obj_0.func |
307 | end | 310 | end |
308 | if _tmp_0 == nil then | 311 | if _tmp_0 == nil then |
309 | do | 312 | do |
310 | local _obj_1 = item | 313 | local _obj_0 = item |
311 | if _obj_1 ~= nil then | 314 | if _obj_0 ~= nil then |
312 | _tmp_0 = _obj_1.defVal | 315 | _tmp_0 = _obj_0.defVal |
313 | end | 316 | end |
314 | end | 317 | end |
315 | end | 318 | end |
@@ -455,9 +458,12 @@ do | |||
455 | end | 458 | end |
456 | end | 459 | end |
457 | do | 460 | do |
458 | local _obj_0 = tb | 461 | local value, value_meta |
459 | local value = _obj_0[name] | 462 | do |
460 | local value_meta = getmetatable(_obj_0)[name] | 463 | local _obj_0 = tb |
464 | value = _obj_0[name] | ||
465 | value_meta = getmetatable(_obj_0)[name] | ||
466 | end | ||
461 | end | 467 | end |
462 | do | 468 | do |
463 | local tostring, add | 469 | local tostring, add |
@@ -492,16 +498,15 @@ do | |||
492 | end | 498 | end |
493 | do | 499 | do |
494 | local tb = { } | 500 | local tb = { } |
495 | local _obj_0 = tb | ||
496 | do | 501 | do |
497 | local _tmp_0 = c() | 502 | local _tmp_0 = c() |
498 | local v2 = _obj_0[_tmp_0] | 503 | local v2 = tb[_tmp_0] |
499 | end | 504 | end |
500 | local v1 | 505 | local v1 |
501 | do | 506 | do |
502 | local _obj_1 = getmetatable(_obj_0) | 507 | local _obj_0 = getmetatable(tb) |
503 | local _tmp_1 = a + b | 508 | local _tmp_1 = a + b |
504 | v1 = _obj_1[_tmp_1] | 509 | v1 = _obj_0[_tmp_1] |
505 | end | 510 | end |
506 | end | 511 | end |
507 | do | 512 | do |
@@ -575,16 +580,15 @@ do | |||
575 | local _tab_0 = type(_exp_0) | 580 | local _tab_0 = type(_exp_0) |
576 | _tab_0 = "table" == _tab_0 or "userdata" == _tab_0 | 581 | _tab_0 = "table" == _tab_0 or "userdata" == _tab_0 |
577 | if _tab_0 then | 582 | if _tab_0 then |
578 | local _obj_0 = _exp_0 | ||
579 | do | 583 | do |
580 | local _obj_1 = _obj_0.c | 584 | local _obj_0 = _exp_0.c |
581 | local _type_0 = type(_obj_1) | 585 | local _type_0 = type(_obj_0) |
582 | if "table" == _type_0 or "userdata" == _type_0 then | 586 | if "table" == _type_0 or "userdata" == _type_0 then |
583 | do | 587 | do |
584 | local _obj_2 = getmetatable(_obj_1) | 588 | local _obj_1 = getmetatable(_obj_0) |
585 | local _type_1 = type(_obj_2) | 589 | local _type_1 = type(_obj_1) |
586 | if "table" == _type_1 or "userdata" == _type_1 then | 590 | if "table" == _type_1 or "userdata" == _type_1 then |
587 | meta_field = _obj_2["abc"] | 591 | meta_field = _obj_1["abc"] |
588 | end | 592 | end |
589 | end | 593 | end |
590 | end | 594 | end |
@@ -593,19 +597,19 @@ do | |||
593 | meta_field = "def" | 597 | meta_field = "def" |
594 | end | 598 | end |
595 | do | 599 | do |
596 | local _obj_1 = getmetatable(_obj_0) | 600 | local _obj_0 = getmetatable(_exp_0) |
597 | do | 601 | do |
598 | local _obj_2 = _obj_1[ [[any string]]] | 602 | local _obj_1 = _obj_0[ [[any string]]] |
599 | local _type_0 = type(_obj_2) | 603 | local _type_0 = type(_obj_1) |
600 | if "table" == _type_0 or "userdata" == _type_0 then | 604 | if "table" == _type_0 or "userdata" == _type_0 then |
601 | abc = _obj_2.d | 605 | abc = _obj_1.d |
602 | end | 606 | end |
603 | end | 607 | end |
604 | do | 608 | do |
605 | local _obj_2 = _obj_1['str'] | 609 | local _obj_1 = _obj_0['str'] |
606 | local _type_0 = type(_obj_2) | 610 | local _type_0 = type(_obj_1) |
607 | if "table" == _type_0 or "userdata" == _type_0 then | 611 | if "table" == _type_0 or "userdata" == _type_0 then |
608 | def = _obj_2.e | 612 | def = _obj_1.e |
609 | end | 613 | end |
610 | end | 614 | end |
611 | if abc == nil then | 615 | if abc == nil then |
diff --git a/spec/outputs/import.lua b/spec/outputs/import.lua index edb7c44..f8d6ef0 100644 --- a/spec/outputs/import.lua +++ b/spec/outputs/import.lua | |||
@@ -89,14 +89,18 @@ do | |||
89 | end | 89 | end |
90 | end | 90 | end |
91 | do | 91 | do |
92 | local b = getmetatable(require("m")).__a | 92 | local b = getmetatable(require("m")).__gc |
93 | local _obj_0 = require("m") | 93 | local index = getmetatable(require("m")).__index |
94 | local f = _obj_0.e | 94 | local f, c |
95 | local c = getmetatable(_obj_0).__a | 95 | do |
96 | local _obj_0 = require("m") | ||
97 | f = _obj_0.e | ||
98 | c = getmetatable(_obj_0).__pairs | ||
99 | end | ||
96 | local d = require("m").c | 100 | local d = require("m").c |
97 | local g, i | 101 | local g, i |
98 | do | 102 | do |
99 | local _obj_1 = require("m") | 103 | local _obj_0 = require("m") |
100 | g, i = _obj_1[1], getmetatable(_obj_1[2]).__h | 104 | g, i = _obj_0[1], getmetatable(_obj_0[2]).__close |
101 | end | 105 | end |
102 | end | 106 | end |
diff --git a/spec/outputs/metatable.lua b/spec/outputs/metatable.lua index 937136f..907a584 100644 --- a/spec/outputs/metatable.lua +++ b/spec/outputs/metatable.lua | |||
@@ -38,28 +38,29 @@ getmetatable(a).__add = function(x, y) | |||
38 | return x + y | 38 | return x + y |
39 | end | 39 | end |
40 | do | 40 | do |
41 | local _obj_0 = a | 41 | local new = a.new |
42 | local new = _obj_0.new | ||
43 | local close, closeA | 42 | local close, closeA |
44 | do | 43 | do |
45 | local _obj_1 = getmetatable(_obj_0) | 44 | local _obj_0 = getmetatable(a) |
46 | close, closeA = _obj_1.__close, _obj_1.__close | 45 | close, closeA = _obj_0.__close, _obj_0.__close |
47 | end | 46 | end |
48 | print(new, close, closeA) | 47 | print(new, close, closeA) |
49 | end | 48 | end |
50 | do | 49 | do |
51 | local x, new, var, close, closeA, num, add, sub | 50 | local x, new, var, close, closeA, num, add, sub |
52 | local _obj_0, _obj_1 | ||
53 | x, _obj_0, _obj_1 = 123, a.b.c, func() | ||
54 | new, var = _obj_0.new, _obj_0.var | ||
55 | do | ||
56 | local _obj_2 = getmetatable(_obj_0) | ||
57 | close, closeA = _obj_2.__close, _obj_2.__close | ||
58 | end | ||
59 | num = _obj_1.num | ||
60 | do | 51 | do |
61 | local _obj_2 = getmetatable(_obj_1) | 52 | local _obj_0, _obj_1 |
62 | add, sub = _obj_2.__add, _obj_2.__sub | 53 | x, _obj_0, _obj_1 = 123, a.b.c, func() |
54 | new, var = _obj_0.new, _obj_0.var | ||
55 | do | ||
56 | local _obj_2 = getmetatable(_obj_0) | ||
57 | close, closeA = _obj_2.__close, _obj_2.__close | ||
58 | end | ||
59 | num = _obj_1.num | ||
60 | do | ||
61 | local _obj_2 = getmetatable(_obj_1) | ||
62 | add, sub = _obj_2.__add, _obj_2.__sub | ||
63 | end | ||
63 | end | 64 | end |
64 | end | 65 | end |
65 | setmetatable(a.b, { }) | 66 | setmetatable(a.b, { }) |