var caught = false; try { new Function(")"); } catch (e) { assertEq(e instanceof SyntaxError, true); assertEq(e.message.startsWith("expected expression, got ')'") == -1, false); caught = true; } assertEq(caught, true); caught = false; try { new Function("...;"); } catch (e) { assertEq(e instanceof SyntaxError, true); assertEq(e.message.startsWith("expected rest argument name, got ';'") == -1, false); caught = true; } assertEq(caught, true); caught = false; try { new Function("...a;"); } catch (e) { assertEq(e instanceof SyntaxError, true); assertEq(e.message.startsWith("expected closing parenthesis, got ';'") == -1, false); caught = true; } assertEq(caught, true); caught = false; try { new Function("...a);"); } catch (e) { assertEq(e instanceof SyntaxError, true); assertEq(e.message.startsWith("expected '=>' after argument list, got ';'") == -1, false); caught = true; } assertEq(caught, true); caught = false; try { new Function("...a) @"); } catch (e) { assertEq(e instanceof SyntaxError, true); assertEq(e.message.startsWith("expected '=>' after argument list, got '@'") == -1, false); caught = true; } assertEq(caught, true); caught = false; try { new Function("(if)"); } catch (e) { assertEq(e instanceof SyntaxError, true); assertEq(e.message.startsWith("expected expression, got keyword 'if'") == -1, false); caught = true; } assertEq(caught, true); caught = false; try { new Function("("); } catch (e) { assertEq(e instanceof SyntaxError, true); assertEq(e.message.startsWith("expected expression, got end of script") == -1, false); caught = true; } assertEq(caught, true);