aboutsummaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2022-11-21 16:56:43 +0800
committerLi Jin <dragon-fly@qq.com>2022-11-21 16:56:43 +0800
commit58cf1a70971ad37ef9260aa93851e92fd6e4c1ce (patch)
treefbf8e3ae38b7b230122aac32e5461c5570dc88bf /spec
parent8abf668c0b031c0aa81f186745eaf154aa036c8a (diff)
downloadyuescript-58cf1a70971ad37ef9260aa93851e92fd6e4c1ce.tar.gz
yuescript-58cf1a70971ad37ef9260aa93851e92fd6e4c1ce.tar.bz2
yuescript-58cf1a70971ad37ef9260aa93851e92fd6e4c1ce.zip
fix table pattern matching. confirm fixing issue #116.
Diffstat (limited to 'spec')
-rw-r--r--spec/outputs/destructure.lua33
-rw-r--r--spec/outputs/switch.lua48
2 files changed, 54 insertions, 27 deletions
diff --git a/spec/outputs/destructure.lua b/spec/outputs/destructure.lua
index f40a658..8953a2a 100644
--- a/spec/outputs/destructure.lua
+++ b/spec/outputs/destructure.lua
@@ -472,7 +472,8 @@ do
472 end 472 end
473 do 473 do
474 local _exp_0 = tb 474 local _exp_0 = tb
475 local _tab_0 = "table" == type(_exp_0) 475 local _tab_0 = type(_exp_0)
476 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
476 if _tab_0 then 477 if _tab_0 then
477 local name, meta_field 478 local name, meta_field
478 do 479 do
@@ -531,14 +532,17 @@ do
531 end 532 end
532 do 533 do
533 local _exp_0 = tb 534 local _exp_0 = tb
534 local _tab_0 = "table" == type(_exp_0) 535 local _tab_0 = type(_exp_0)
536 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
535 if _tab_0 then 537 if _tab_0 then
536 do 538 do
537 local _obj_0 = _exp_0.a 539 local _obj_0 = _exp_0.a
538 if _obj_0 ~= nil then 540 local _type_0 = type(_obj_0)
541 if "table" == _type_0 or "userdata" == _type_0 then
539 do 542 do
540 local _obj_1 = getmetatable(_obj_0) 543 local _obj_1 = getmetatable(_obj_0)
541 if _obj_1 ~= nil then 544 local _type_1 = type(_obj_1)
545 if "table" == _type_1 or "userdata" == _type_1 then
542 add = _obj_1.__add 546 add = _obj_1.__add
543 end 547 end
544 end 548 end
@@ -546,10 +550,12 @@ do
546 end 550 end
547 do 551 do
548 local _obj_0 = _exp_0.b 552 local _obj_0 = _exp_0.b
549 if _obj_0 ~= nil then 553 local _type_0 = type(_obj_0)
554 if "table" == _type_0 or "userdata" == _type_0 then
550 do 555 do
551 local _obj_1 = getmetatable(_obj_0) 556 local _obj_1 = getmetatable(_obj_0)
552 if _obj_1 ~= nil then 557 local _type_1 = type(_obj_1)
558 if "table" == _type_1 or "userdata" == _type_1 then
553 field = _obj_1[fieldName] 559 field = _obj_1[fieldName]
554 end 560 end
555 end 561 end
@@ -566,15 +572,18 @@ do
566 end 572 end
567 do 573 do
568 local _exp_0 = tb 574 local _exp_0 = tb
569 local _tab_0 = "table" == type(_exp_0) 575 local _tab_0 = type(_exp_0)
576 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
570 if _tab_0 then 577 if _tab_0 then
571 local _obj_0 = _exp_0 578 local _obj_0 = _exp_0
572 do 579 do
573 local _obj_1 = _obj_0.c 580 local _obj_1 = _obj_0.c
574 if _obj_1 ~= nil then 581 local _type_0 = type(_obj_1)
582 if "table" == _type_0 or "userdata" == _type_0 then
575 do 583 do
576 local _obj_2 = getmetatable(_obj_1) 584 local _obj_2 = getmetatable(_obj_1)
577 if _obj_2 ~= nil then 585 local _type_1 = type(_obj_2)
586 if "table" == _type_1 or "userdata" == _type_1 then
578 meta_field = _obj_2["abc"] 587 meta_field = _obj_2["abc"]
579 end 588 end
580 end 589 end
@@ -587,13 +596,15 @@ do
587 local _obj_1 = getmetatable(_obj_0) 596 local _obj_1 = getmetatable(_obj_0)
588 do 597 do
589 local _obj_2 = _obj_1[ [[any string]]] 598 local _obj_2 = _obj_1[ [[any string]]]
590 if _obj_2 ~= nil then 599 local _type_0 = type(_obj_2)
600 if "table" == _type_0 or "userdata" == _type_0 then
591 abc = _obj_2.d 601 abc = _obj_2.d
592 end 602 end
593 end 603 end
594 do 604 do
595 local _obj_2 = _obj_1['str'] 605 local _obj_2 = _obj_1['str']
596 if _obj_2 ~= nil then 606 local _type_0 = type(_obj_2)
607 if "table" == _type_0 or "userdata" == _type_0 then
597 def = _obj_2.e 608 def = _obj_2.e
598 end 609 end
599 end 610 end
diff --git a/spec/outputs/switch.lua b/spec/outputs/switch.lua
index 4358027..3c48120 100644
--- a/spec/outputs/switch.lua
+++ b/spec/outputs/switch.lua
@@ -107,37 +107,43 @@ do
107 } 107 }
108 } 108 }
109 do 109 do
110 local _tab_0 = "table" == type(dict) 110 local _tab_0 = type(dict)
111 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
111 if _tab_0 then 112 if _tab_0 then
112 local first = dict[1] 113 local first = dict[1]
113 local one 114 local one
114 do 115 do
115 local _obj_0 = dict[2] 116 local _obj_0 = dict[2]
116 if _obj_0 ~= nil then 117 local _type_0 = type(_obj_0)
118 if "table" == _type_0 or "userdata" == _type_0 then
117 one = _obj_0[1] 119 one = _obj_0[1]
118 end 120 end
119 end 121 end
120 local two 122 local two
121 do 123 do
122 local _obj_0 = dict[2] 124 local _obj_0 = dict[2]
123 if _obj_0 ~= nil then 125 local _type_0 = type(_obj_0)
126 if "table" == _type_0 or "userdata" == _type_0 then
124 two = _obj_0[2] 127 two = _obj_0[2]
125 end 128 end
126 end 129 end
127 local three 130 local three
128 do 131 do
129 local _obj_0 = dict[2] 132 local _obj_0 = dict[2]
130 if _obj_0 ~= nil then 133 local _type_0 = type(_obj_0)
134 if "table" == _type_0 or "userdata" == _type_0 then
131 three = _obj_0[3] 135 three = _obj_0[3]
132 end 136 end
133 end 137 end
134 local c 138 local c
135 do 139 do
136 local _obj_0 = dict.a 140 local _obj_0 = dict.a
137 if _obj_0 ~= nil then 141 local _type_0 = type(_obj_0)
142 if "table" == _type_0 or "userdata" == _type_0 then
138 do 143 do
139 local _obj_1 = _obj_0.b 144 local _obj_1 = _obj_0.b
140 if _obj_1 ~= nil then 145 local _type_1 = type(_obj_1)
146 if "table" == _type_1 or "userdata" == _type_1 then
141 c = _obj_1.c 147 c = _obj_1.c
142 end 148 end
143 end 149 end
@@ -146,10 +152,12 @@ do
146 local z 152 local z
147 do 153 do
148 local _obj_0 = dict.x 154 local _obj_0 = dict.x
149 if _obj_0 ~= nil then 155 local _type_0 = type(_obj_0)
156 if "table" == _type_0 or "userdata" == _type_0 then
150 do 157 do
151 local _obj_1 = _obj_0.y 158 local _obj_1 = _obj_0.y
152 if _obj_1 ~= nil then 159 local _type_1 = type(_obj_1)
160 if "table" == _type_1 or "userdata" == _type_1 then
153 z = _obj_1.z 161 z = _obj_1.z
154 end 162 end
155 end 163 end
@@ -176,7 +184,8 @@ do
176 for _index_0 = 1, #items do 184 for _index_0 = 1, #items do
177 local item = items[_index_0] 185 local item = items[_index_0]
178 do 186 do
179 local _tab_0 = "table" == type(item) 187 local _tab_0 = type(item)
188 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
180 local _match_0 = false 189 local _match_0 = false
181 if _tab_0 then 190 if _tab_0 then
182 local x = item.x 191 local x = item.x
@@ -234,7 +243,8 @@ end
234do 243do
235 local tb = { } 244 local tb = { }
236 do 245 do
237 local _tab_0 = "table" == type(tb) 246 local _tab_0 = type(tb)
247 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
238 if _tab_0 then 248 if _tab_0 then
239 local a = tb.a 249 local a = tb.a
240 local b = tb.b 250 local b = tb.b
@@ -248,7 +258,8 @@ do
248 end 258 end
249 end 259 end
250 do 260 do
251 local _tab_0 = "table" == type(tb) 261 local _tab_0 = type(tb)
262 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
252 if _tab_0 then 263 if _tab_0 then
253 local a = tb.a 264 local a = tb.a
254 local b = tb.b 265 local b = tb.b
@@ -261,7 +272,8 @@ do
261 end 272 end
262 end 273 end
263 do 274 do
264 local _tab_0 = "table" == type(tb) 275 local _tab_0 = type(tb)
276 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
265 local _match_0 = false 277 local _match_0 = false
266 if _tab_0 then 278 if _tab_0 then
267 local a = tb.a 279 local a = tb.a
@@ -281,7 +293,8 @@ do
281 x = "abc" 293 x = "abc"
282 } 294 }
283 do 295 do
284 local _tab_0 = "table" == type(tb) 296 local _tab_0 = type(tb)
297 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
285 local _match_0 = false 298 local _match_0 = false
286 if _tab_0 then 299 if _tab_0 then
287 local x = tb.x 300 local x = tb.x
@@ -308,7 +321,8 @@ do
308 if 1 == _exp_0 then 321 if 1 == _exp_0 then
309 matched = "1" 322 matched = "1"
310 else 323 else
311 local _tab_0 = "table" == type(_exp_0) 324 local _tab_0 = type(_exp_0)
325 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
312 local _match_0 = false 326 local _match_0 = false
313 if _tab_0 then 327 if _tab_0 then
314 local x = _exp_0.x 328 local x = _exp_0.x
@@ -333,7 +347,8 @@ do
333 return "invalid" 347 return "invalid"
334 else 348 else
335 do 349 do
336 local _tab_0 = "table" == type(_exp_0) 350 local _tab_0 = type(_exp_0)
351 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
337 local _match_0 = false 352 local _match_0 = false
338 if _tab_0 then 353 if _tab_0 then
339 local a = _exp_0.a 354 local a = _exp_0.a
@@ -367,7 +382,8 @@ end
367do 382do
368 do 383 do
369 local _exp_0 = y 384 local _exp_0 = y
370 local _tab_0 = "table" == type(_exp_0) 385 local _tab_0 = type(_exp_0)
386 _tab_0 = "table" == _tab_0 or "userdata" == _tab_0
371 if _tab_0 then 387 if _tab_0 then
372 local mt = (function() 388 local mt = (function()
373 local _obj_0 = _exp_0.x 389 local _obj_0 = _exp_0.x