coalesce-logic-expression-mixing.js 1.2 KB

12345678910111213141516171819202122232425262728
  1. test("mixing coalescing and logical operators isn't allowed", () => {
  2. expect("if (0) a ?? b || c").not.toEval();
  3. expect("if (0) a ?? b && c").not.toEval();
  4. expect("if (0) a ?? b * c || d").not.toEval();
  5. expect("if (0) a ?? b * c && d").not.toEval();
  6. expect("if (0) a && b ?? c").not.toEval();
  7. expect("if (0) a || b ?? c").not.toEval();
  8. expect("if (0) a && b * c ?? d").not.toEval();
  9. expect("if (0) a || b * c ?? d").not.toEval();
  10. });
  11. test("mixing coalescing and logical operators with parens", () => {
  12. expect("if (0) a ?? (b || c)").toEval();
  13. expect("if (0) (a ?? b) && c").toEval();
  14. expect("if (0) a ?? (b * c || d)").toEval();
  15. expect("if (0) (a ?? b * c) && d").toEval();
  16. expect("if (0) a && (b ?? c)").toEval();
  17. expect("if (0) (a || b) ?? c").toEval();
  18. expect("if (0) a && (b * c) ?? d").not.toEval();
  19. expect("if (0) a || (b * c) ?? d").not.toEval();
  20. });
  21. test("mixing coalescing and logical operators when 'in' isn't allowed", () => {
  22. expect("for (a ?? b || c in a; false;);").not.toEval();
  23. expect("for (a ?? b && c in a; false;);").not.toEval();
  24. expect("for (a || b ?? c in a; false;);").not.toEval();
  25. expect("for (a && b ?? c in a; false;);").not.toEval();
  26. });