syntax-error-primary.js (1656B)
1 var caught = false; 2 try { 3 new Function(")"); 4 } catch (e) { 5 assertEq(e instanceof SyntaxError, true); 6 assertEq(e.message.startsWith("expected expression, got ')'") == -1, false); 7 caught = true; 8 } 9 assertEq(caught, true); 10 11 caught = false; 12 try { 13 new Function("...;"); 14 } catch (e) { 15 assertEq(e instanceof SyntaxError, true); 16 assertEq(e.message.startsWith("expected rest argument name, got ';'") == -1, false); 17 caught = true; 18 } 19 assertEq(caught, true); 20 21 caught = false; 22 try { 23 new Function("...a;"); 24 } catch (e) { 25 assertEq(e instanceof SyntaxError, true); 26 assertEq(e.message.startsWith("expected closing parenthesis, got ';'") == -1, false); 27 caught = true; 28 } 29 assertEq(caught, true); 30 31 caught = false; 32 try { 33 new Function("...a);"); 34 } catch (e) { 35 assertEq(e instanceof SyntaxError, true); 36 assertEq(e.message.startsWith("expected '=>' after argument list, got ';'") == -1, false); 37 caught = true; 38 } 39 assertEq(caught, true); 40 41 caught = false; 42 try { 43 new Function("...a) @"); 44 } catch (e) { 45 assertEq(e instanceof SyntaxError, true); 46 assertEq(e.message.startsWith("expected '=>' after argument list, got '@'") == -1, false); 47 caught = true; 48 } 49 assertEq(caught, true); 50 51 caught = false; 52 try { 53 new Function("(if)"); 54 } catch (e) { 55 assertEq(e instanceof SyntaxError, true); 56 assertEq(e.message.startsWith("expected expression, got keyword 'if'") == -1, false); 57 caught = true; 58 } 59 assertEq(caught, true); 60 61 caught = false; 62 try { 63 new Function("("); 64 } catch (e) { 65 assertEq(e instanceof SyntaxError, true); 66 assertEq(e.message.startsWith("expected expression, got end of script") == -1, false); 67 caught = true; 68 } 69 assertEq(caught, true);