Source code

Revision control

Copy as Markdown

Other Tools

// This constructor behaves like `Function` without checking
// if the parameter list end is at the expected position.
// We use this to make sure that the tests we use are otherwise
// syntactically correct.
function DumpFunction(...args) {
let code = "function anonymous(";
code += args.slice(0, -1).join(", ");
code += ") {\n";
code += args[args.length -1];
code += "\n}";
eval(code);
}
const tests = [
["/*", "*/) {"],
["//", ") {"],
["a = `", "` ) {"],
[") { var x = function (", "} "],
["x = function (", "}) {"]
];
for (const test of tests) {
DumpFunction(...test);
assertThrowsInstanceOf(() => new Function(...test), SyntaxError);
}
reportCompare(0, 0, 'ok');