test("regular comments", () => { const source = ` var i = 0; // i++; /* i++; */ /* i++; */ /**/ i++; i;`; expect(source).toEvalTo(1); }); test("html comments", () => { const source = ` var i = 0; var j = 0; i++; i++; /**/ --> i++; j --> i++; i;`; expect(source).toEvalTo(2); }); test("html comments directly after block comment", () => { expect("0 /* */-->i").not.toEval(); expect(`0 /* */-->i`).toEval(); expect(`0 /* */-->i 'a'`).toEvalTo("a"); }); test("unterminated multi-line comment", () => { expect("/*").not.toEval(); expect("/**").not.toEval(); expect("/*/").not.toEval(); expect("/* foo").not.toEval(); expect("foo /*").not.toEval(); }); test("hashbang comments", () => { expect("#!").toEvalTo(undefined); expect("#!/bin/js").toEvalTo(undefined); expect("#!\n1").toEvalTo(1); expect(" #!").not.toEval(); expect("\n#!").not.toEval(); expect("#!\n#!").not.toEval(); });