automatic-semicolon-insertion.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. test("Issue #1829, if-else without braces or semicolons", () => {
  2. const source = `if (1)
  3. foo;
  4. else
  5. bar;
  6. if (1)
  7. foo
  8. else
  9. bar
  10. if (1)
  11. foo
  12. else
  13. bar;`;
  14. expect(source).toEval();
  15. });
  16. test("break/continue, variable declaration, do-while, and return asi", () => {
  17. const source = `function foo() {
  18. label:
  19. for (var i = 0; i < 4; i++) {
  20. break // semicolon inserted here
  21. continue // semicolon inserted here
  22. break label // semicolon inserted here
  23. continue label // semicolon inserted here
  24. }
  25. var j // semicolon inserted here
  26. do {
  27. } while (1 === 2) // semicolon inserted here
  28. return // semicolon inserted here
  29. 1;
  30. var curly/* semicolon inserted here */}
  31. foo();`;
  32. expect(source).toEvalTo(undefined);
  33. });
  34. test("more break and continue asi", () => {
  35. const source = `let counter = 0;
  36. let outer;
  37. outer:
  38. for (let i = 0; i < 5; ++i) {
  39. for (let j = 0; j < 5; ++j) {
  40. continue // semicolon inserted here
  41. outer // semicolon inserted here
  42. }
  43. counter++;
  44. }
  45. counter;`;
  46. expect(source).toEvalTo(5);
  47. });
  48. test("eof with no semicolon", () => {
  49. expect("var eof").toEval();
  50. });