parentheses.test 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. Pretty printer generates least-parentheses output
  2. -----
  3. <?php
  4. echo 'abc' . 'cde' . 'fgh';
  5. echo 'abc' . ('cde' . 'fgh');
  6. echo 'abc' . 1 + 2 . 'fgh';
  7. echo 'abc' . (1 + 2) . 'fgh';
  8. echo 1 * 2 + 3 / 4 % 5 . 6;
  9. echo 1 * (2 + 3) / (4 % (5 . 6));
  10. $a = $b = $c = $d = $f && true;
  11. ($a = $b = $c = $d = $f) && true;
  12. $a = $b = $c = $d = $f and true;
  13. $a = $b = $c = $d = ($f and true);
  14. $a ? $b : $c ? $d : $e ? $f : $g;
  15. $a ? $b : ($c ? $d : ($e ? $f : $g));
  16. $a ? $b ? $c : $d : $f;
  17. $a ?? $b ?? $c;
  18. ($a ?? $b) ?? $c;
  19. $a ?? ($b ? $c : $d);
  20. $a || ($b ?? $c);
  21. (1 > 0) > (1 < 0);
  22. ++$a + $b;
  23. $a + $b++;
  24. $a ** $b ** $c;
  25. ($a ** $b) ** $c;
  26. -1 ** 2;
  27. yield from $a and yield from $b;
  28. yield from ($a and yield from $b);
  29. print ($a and print $b);
  30. // The following will currently add unnecessary parentheses, because the pretty printer is not aware that assignment
  31. // and incdec only work on variables.
  32. !$a = $b;
  33. ++$a ** $b;
  34. $a ** $b++;
  35. -----
  36. echo 'abc' . 'cde' . 'fgh';
  37. echo 'abc' . ('cde' . 'fgh');
  38. echo 'abc' . 1 + 2 . 'fgh';
  39. echo 'abc' . (1 + 2) . 'fgh';
  40. echo 1 * 2 + 3 / 4 % 5 . 6;
  41. echo 1 * (2 + 3) / (4 % (5 . 6));
  42. $a = $b = $c = $d = $f && true;
  43. ($a = $b = $c = $d = $f) && true;
  44. $a = $b = $c = $d = $f and true;
  45. $a = $b = $c = $d = ($f and true);
  46. $a ? $b : $c ? $d : $e ? $f : $g;
  47. $a ? $b : ($c ? $d : ($e ? $f : $g));
  48. $a ? $b ? $c : $d : $f;
  49. $a ?? $b ?? $c;
  50. ($a ?? $b) ?? $c;
  51. $a ?? ($b ? $c : $d);
  52. $a || ($b ?? $c);
  53. (1 > 0) > (1 < 0);
  54. ++$a + $b;
  55. $a + $b++;
  56. $a ** $b ** $c;
  57. ($a ** $b) ** $c;
  58. -1 ** 2;
  59. yield from $a and yield from $b;
  60. yield from ($a and yield from $b);
  61. print ($a and print $b);
  62. // The following will currently add unnecessary parentheses, because the pretty printer is not aware that assignment
  63. // and incdec only work on variables.
  64. !($a = $b);
  65. (++$a) ** $b;
  66. $a ** ($b++);