diff options
author | Li Jin <dragon-fly@qq.com> | 2022-11-21 16:56:43 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-11-21 16:56:43 +0800 |
commit | 58cf1a70971ad37ef9260aa93851e92fd6e4c1ce (patch) | |
tree | fbf8e3ae38b7b230122aac32e5461c5570dc88bf /spec | |
parent | 8abf668c0b031c0aa81f186745eaf154aa036c8a (diff) | |
download | yuescript-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.lua | 33 | ||||
-rw-r--r-- | spec/outputs/switch.lua | 48 |
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 | |||
234 | do | 243 | do |
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 | |||
367 | do | 382 | do |
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 |