automatic-semicolon-insertion.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. load("test-common.js");
  2. /**
  3. * This file tests automatic semicolon insertion rules.
  4. * If this file produces syntax errors, something is wrong.
  5. */
  6. function bar() {
  7. // https://github.com/SerenityOS/serenity/issues/1829
  8. if (1)
  9. return 1;
  10. else
  11. return 0;
  12. if (1)
  13. return 1
  14. else
  15. return 0
  16. if (1)
  17. return 1
  18. else
  19. return 0;
  20. }
  21. function foo() {
  22. label:
  23. for (var i = 0; i < 4; i++) {
  24. break // semicolon inserted here
  25. continue // semicolon inserted here
  26. break label // semicolon inserted here
  27. continue label // semicolon inserted here
  28. }
  29. var j // semicolon inserted here
  30. do {
  31. } while (1 === 2) // semicolon inserted here
  32. return // semicolon inserted here
  33. 1;
  34. var curly/* semicolon inserted here */}
  35. function baz() {
  36. let counter = 0;
  37. let outer;
  38. outer:
  39. for (let i = 0; i < 5; ++i) {
  40. for (let j = 0; j < 5; ++j) {
  41. continue // semicolon inserted here
  42. outer // semicolon inserted here
  43. }
  44. counter++;
  45. }
  46. return counter;
  47. }
  48. try {
  49. assert(foo() === undefined);
  50. assert(baz() === 5);
  51. console.log("PASS");
  52. } catch (e) {
  53. console.log("FAIL: " + e);
  54. }
  55. // This vardecl must appear exactly at the end of the file (no newline or whitespace after it)
  56. var eof