ladybird/Userland/Libraries/LibJS/Tests/automatic-semicolon-insertion.js
Linus Groh 299c3069c1 LibJS/Tests: Use eval() for toEvalTo(), not Function()
Since we have had eval() for a while now, we can finally use it here -
this allows us to get rid of the confusing return statements in tested
source code.
2021-06-18 20:35:23 +01:00

66 lines
1.2 KiB
JavaScript

test("Issue #1829, if-else without braces or semicolons", () => {
const source = `if (1)
foo;
else
bar;
if (1)
foo
else
bar
if (1)
foo
else
bar;`;
expect(source).toEval();
});
test("break/continue, variable declaration, do-while, and return asi", () => {
const source = `function foo() {
label:
for (var i = 0; i < 4; i++) {
break // semicolon inserted here
continue // semicolon inserted here
break label // semicolon inserted here
continue label // semicolon inserted here
}
var j // semicolon inserted here
do {
} while (1 === 2) // semicolon inserted here
return // semicolon inserted here
1;
var curly/* semicolon inserted here */}
foo();`;
expect(source).toEvalTo(undefined);
});
test("more break and continue asi", () => {
const source = `let counter = 0;
let outer;
outer:
for (let i = 0; i < 5; ++i) {
for (let j = 0; j < 5; ++j) {
continue // semicolon inserted here
outer // semicolon inserted here
}
counter++;
}
counter;`;
expect(source).toEvalTo(5);
});
test("eof with no semicolon", () => {
expect("var eof").toEval();
});