slash-after-block.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. test("slash token resolution in lexer", () => {
  2. expect(`{ blah.blah; }\n/foo/`).toEval();
  3. expect(`{ blah?.blah.blah; }\n/foo/`).toEval();
  4. expect("``/foo/").not.toEval();
  5. expect("1/foo/").not.toEval();
  6. expect("1/foo").toEval();
  7. expect("{} /foo/").toEval();
  8. expect("{} /=/").toEval();
  9. expect("{} /=a/").toEval();
  10. expect("{} /* */ /=a/").toEval();
  11. expect("{} /* /a/ */ /=a/").toEval();
  12. expect("(function () {} / 1)").toEval();
  13. expect("(function () {} / 1)").toEval();
  14. expect("+a++ / 1").toEval();
  15. expect("+a-- / 1").toEval();
  16. expect("a.in / b").toEval();
  17. expect("a?.in.in / b").toEval();
  18. expect("a.instanceof / b").toEval();
  19. expect("a?.instanceof.instanceof / b").toEval();
  20. expect("class A { #name; d = a.#name / b; }").toEval();
  21. expect("class A { #name; d = a?.#name / b; }").toEval();
  22. expect("async / b").toEval();
  23. expect("a.delete / b").toEval();
  24. expect("a?.delete.delete / b").toEval();
  25. expect("delete / b/").toEval();
  26. expect("a.in / b").toEval();
  27. expect("a?.in.in / b").toEval();
  28. expect("for (a in / b/) {}").toEval();
  29. expect("a.instanceof / b").toEval();
  30. expect("a?.instanceof.instanceof / b").toEval();
  31. expect("a instanceof / b/").toEval();
  32. expect("a?.instanceof instanceof / b/").toEval();
  33. expect("new / b/").toEval();
  34. expect("null / b").toEval();
  35. expect("for (a of / b/) {}").toEval();
  36. expect("a.return / b").toEval();
  37. expect("a?.return.return / b").toEval();
  38. expect("function foo() { return / b/ }").toEval();
  39. expect("throw / b/").toEval();
  40. expect("a.typeof / b").toEval();
  41. expect("a?.typeof.typeof / b").toEval();
  42. expect("a.void / b").toEval();
  43. expect("a?.void.void / b").toEval();
  44. expect("void / b/").toEval();
  45. expect("await / b").toEval();
  46. expect("await / b/").not.toEval();
  47. expect("async function foo() { await / b }").not.toEval();
  48. expect("async function foo() { await / b/ }").toEval();
  49. expect("yield / b").toEval();
  50. expect("yield / b/").not.toEval();
  51. expect("function* foo() { yield / b }").not.toEval();
  52. expect("function* foo() { yield / b/ }").toEval();
  53. expect("this / 1").toEval();
  54. expect("this / 1 /").not.toEval();
  55. expect("this / 1 / 1").toEval();
  56. expect("this?.a / 1").toEval();
  57. expect("this?.a / 1 /").not.toEval();
  58. expect("this?.a / 1 / 1").toEval();
  59. });