aboutsummaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2022-12-28 15:55:15 +0800
committerLi Jin <dragon-fly@qq.com>2022-12-28 15:55:15 +0800
commitdba662758192b41648e6c1201083d83926f07783 (patch)
tree4eca06097fce6ac52bbf5276a6ac2da4affb90d0 /spec
parent5e453de810f8a5e54351609857d742481f057498 (diff)
downloadyuescript-dba662758192b41648e6c1201083d83926f07783.tar.gz
yuescript-dba662758192b41648e6c1201083d83926f07783.tar.bz2
yuescript-dba662758192b41648e6c1201083d83926f07783.zip
add metamethods checking.
Diffstat (limited to 'spec')
-rw-r--r--spec/inputs/import.yue7
-rw-r--r--spec/outputs/destructure.lua72
-rw-r--r--spec/outputs/import.lua16
-rw-r--r--spec/outputs/metatable.lua29
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
66do 66do
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
456end 459end
457do 460do
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
461end 467end
462do 468do
463 local tostring, add 469 local tostring, add
@@ -492,16 +498,15 @@ do
492end 498end
493do 499do
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
506end 511end
507do 512do
@@ -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
90end 90end
91do 91do
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
102end 106end
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
39end 39end
40do 40do
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)
49end 48end
50do 49do
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
64end 65end
65setmetatable(a.b, { }) 66setmetatable(a.b, { })