aboutsummaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2023-10-23 10:19:42 +0800
committerLi Jin <dragon-fly@qq.com>2023-10-23 10:19:42 +0800
commit08fef1c7698cff09689e9965d993931ca6081257 (patch)
tree2d206d3b3b6cca927881a46873b53be3d0319221 /spec
parent0ecd527e2b9e441c169bc66ecbac12d202b9d1f8 (diff)
downloadyuescript-08fef1c7698cff09689e9965d993931ca6081257.tar.gz
yuescript-08fef1c7698cff09689e9965d993931ca6081257.tar.bz2
yuescript-08fef1c7698cff09689e9965d993931ca6081257.zip
fix chaining condition evaluation rules.v0.20.1
Diffstat (limited to 'spec')
-rw-r--r--spec/inputs/cond.yue22
-rw-r--r--spec/outputs/cond.lua155
-rw-r--r--spec/outputs/unicode/cond.lua12
3 files changed, 185 insertions, 4 deletions
diff --git a/spec/inputs/cond.yue b/spec/inputs/cond.yue
index df7d78e..f5f42a8 100644
--- a/spec/inputs/cond.yue
+++ b/spec/inputs/cond.yue
@@ -237,6 +237,28 @@ do
237 237
238 evaluation = v(1) > v(2) <= v(3) 238 evaluation = v(1) > v(2) <= v(3)
239 239
240do
241 a = v(1) < v(2) < v(3) < v(4)
242 a = x and y or v(1) < v(2) < v(3) < v(4)
243 a = v(1) < v(2) < v(3) < v(4) or x and y
244 a = x and y or v(1) < v(2) < v(3) < v(4) or w and z
245
246 a = v(1) < v(2) < v(3) and b < v(4) < v(5) < v(6)
247 a = x and y or v(1) < v(2) < v(3) and b < v(4) < v(5) < v(6)
248 a = v(1) < v(2) < v(3) and b < v(4) < v(5) < v(6) or x and y
249 a = x and y or v(1) < v(2) < v(3) and b < v(4) < v(5) < v(6) or w and z
250
251 local v1, v2, v3, v4, v5, v6
252 a = v1 < v2 < v3 < v4
253 a = x and y or v1 < v2 < v3 < v4
254 a = v1 < v2 < v3 < v4 or x and y
255 a = x and y or v1 < v2 < v3 < v4 or w and z
256
257 a = v1 < v2 < v3 and b < v4 < v5 < v6
258 a = x and y or v1 < v2 < v3 and b < v4 < v5 < v6
259 a = v1 < v2 < v3 and b < v4 < v5 < v6 or x and y
260 a = x and y or v1 < v2 < v3 and b < v4 < v5 < v6 or w and z
261
240nil 262nil
241 263
242 264
diff --git a/spec/outputs/cond.lua b/spec/outputs/cond.lua
index 651c14a..d7aae02 100644
--- a/spec/outputs/cond.lua
+++ b/spec/outputs/cond.lua
@@ -355,11 +355,162 @@ do
355 local evaluation 355 local evaluation
356 do 356 do
357 local _cond_0 = v(2) 357 local _cond_0 = v(2)
358 evaluation = v(1) < _cond_0 and _cond_0 <= v(3) 358 if not (v(1) < _cond_0) then
359 evaluation = false
360 else
361 evaluation = _cond_0 <= v(3)
362 end
363 end
364 do
365 local _cond_0 = v(2)
366 if not (v(1) > _cond_0) then
367 evaluation = false
368 else
369 evaluation = _cond_0 <= v(3)
370 end
359 end 371 end
372end
373do
360 do 374 do
361 local _cond_0 = v(2) 375 local _cond_0 = v(2)
362 evaluation = v(1) > _cond_0 and _cond_0 <= v(3) 376 if not (v(1) < _cond_0) then
377 a = false
378 else
379 local _cond_1 = v(3)
380 if not (_cond_0 < _cond_1) then
381 a = false
382 else
383 a = _cond_1 < v(4)
384 end
385 end
363 end 386 end
387 a = x and y or (function()
388 local _cond_0 = v(2)
389 if not (v(1) < _cond_0) then
390 return false
391 else
392 local _cond_1 = v(3)
393 if not (_cond_0 < _cond_1) then
394 return false
395 else
396 return _cond_1 < v(4)
397 end
398 end
399 end)()
400 a = (function()
401 local _cond_0 = v(2)
402 if not (v(1) < _cond_0) then
403 return false
404 else
405 local _cond_1 = v(3)
406 if not (_cond_0 < _cond_1) then
407 return false
408 else
409 return _cond_1 < v(4)
410 end
411 end
412 end)() or x and y
413 a = x and y or (function()
414 local _cond_0 = v(2)
415 if not (v(1) < _cond_0) then
416 return false
417 else
418 local _cond_1 = v(3)
419 if not (_cond_0 < _cond_1) then
420 return false
421 else
422 return _cond_1 < v(4)
423 end
424 end
425 end)() or w and z
426 a = (function()
427 local _cond_0 = v(2)
428 if not (v(1) < _cond_0) then
429 return false
430 else
431 return _cond_0 < v(3)
432 end
433 end)() and (function()
434 local _cond_0 = v(4)
435 if not (b < _cond_0) then
436 return false
437 else
438 local _cond_1 = v(5)
439 if not (_cond_0 < _cond_1) then
440 return false
441 else
442 return _cond_1 < v(6)
443 end
444 end
445 end)()
446 a = x and y or (function()
447 local _cond_0 = v(2)
448 if not (v(1) < _cond_0) then
449 return false
450 else
451 return _cond_0 < v(3)
452 end
453 end)() and (function()
454 local _cond_0 = v(4)
455 if not (b < _cond_0) then
456 return false
457 else
458 local _cond_1 = v(5)
459 if not (_cond_0 < _cond_1) then
460 return false
461 else
462 return _cond_1 < v(6)
463 end
464 end
465 end)()
466 a = (function()
467 local _cond_0 = v(2)
468 if not (v(1) < _cond_0) then
469 return false
470 else
471 return _cond_0 < v(3)
472 end
473 end)() and (function()
474 local _cond_0 = v(4)
475 if not (b < _cond_0) then
476 return false
477 else
478 local _cond_1 = v(5)
479 if not (_cond_0 < _cond_1) then
480 return false
481 else
482 return _cond_1 < v(6)
483 end
484 end
485 end)() or x and y
486 a = x and y or (function()
487 local _cond_0 = v(2)
488 if not (v(1) < _cond_0) then
489 return false
490 else
491 return _cond_0 < v(3)
492 end
493 end)() and (function()
494 local _cond_0 = v(4)
495 if not (b < _cond_0) then
496 return false
497 else
498 local _cond_1 = v(5)
499 if not (_cond_0 < _cond_1) then
500 return false
501 else
502 return _cond_1 < v(6)
503 end
504 end
505 end)() or w and z
506 local v1, v2, v3, v4, v5, v6
507 a = v1 < v2 and v2 < v3 and v3 < v4
508 a = x and y or v1 < v2 and v2 < v3 and v3 < v4
509 a = v1 < v2 and v2 < v3 and v3 < v4 or x and y
510 a = x and y or v1 < v2 and v2 < v3 and v3 < v4 or w and z
511 a = v1 < v2 and v2 < v3 and b < v4 and v4 < v5 and v5 < v6
512 a = x and y or v1 < v2 and v2 < v3 and b < v4 and v4 < v5 and v5 < v6
513 a = v1 < v2 and v2 < v3 and b < v4 and v4 < v5 and v5 < v6 or x and y
514 a = x and y or v1 < v2 and v2 < v3 and b < v4 and v4 < v5 and v5 < v6 or w and z
364end 515end
365return nil 516return nil
diff --git a/spec/outputs/unicode/cond.lua b/spec/outputs/unicode/cond.lua
index 9a4ccb9..ed5d274 100644
--- a/spec/outputs/unicode/cond.lua
+++ b/spec/outputs/unicode/cond.lua
@@ -361,11 +361,19 @@ do
361 local _u6c42_u503c 361 local _u6c42_u503c
362 do 362 do
363 local _cond_0 = _u503c(2) 363 local _cond_0 = _u503c(2)
364 _u6c42_u503c = _u503c(1) < _cond_0 and _cond_0 <= _u503c(3) 364 if not (_u503c(1) < _cond_0) then
365 _u6c42_u503c = false
366 else
367 _u6c42_u503c = _cond_0 <= _u503c(3)
368 end
365 end 369 end
366 do 370 do
367 local _cond_0 = _u503c(2) 371 local _cond_0 = _u503c(2)
368 _u6c42_u503c = _u503c(1) > _cond_0 and _cond_0 <= _u503c(3) 372 if not (_u503c(1) > _cond_0) then
373 _u6c42_u503c = false
374 else
375 _u6c42_u503c = _cond_0 <= _u503c(3)
376 end
369 end 377 end
370end 378end
371return nil 379return nil