70 lines
3.1 KiB
JavaScript
70 lines
3.1 KiB
JavaScript
description("Tests for ES6 arrow function syntax errors");
|
|
|
|
shouldThrow('=>{}');
|
|
|
|
function checkStatement(statement) {
|
|
var unexpectedSymbols = [ "",
|
|
"*", "/", "%" , "+", "-" ,
|
|
"<<", ">>", ">>>" ,
|
|
"<", ">", "<=", ">=", "instanceof", "in" ,
|
|
"==", "!=", "===", "!==",
|
|
"&" , "^" , "|" ,
|
|
"&&" , "||", ";" , ","
|
|
];
|
|
|
|
for (var i = 0; i < unexpectedSymbols.length; i++) {
|
|
shouldThrow(statement + unexpectedSymbols[i]);
|
|
}
|
|
}
|
|
|
|
checkStatement('x=>');
|
|
checkStatement('x=>{');
|
|
shouldThrow('x=>}');
|
|
|
|
checkStatement('var y = x=>');
|
|
checkStatement('var y = x=>{');
|
|
shouldThrow('var y = x=>}');
|
|
|
|
|
|
shouldThrow('var t = x=>x+1; =>{}');
|
|
shouldThrow('[=>x+1]');
|
|
shouldThrow('[x=>x+1, =>x+1]');
|
|
shouldThrow('var f=>x+1;');
|
|
shouldThrow('var x, y=>y+1;');
|
|
shouldThrow('debug(=>x+1)');
|
|
shouldThrow('debug("xyz", =>x+1)');
|
|
|
|
shouldThrow("var af1=y\n=>y+1");
|
|
shouldThrow("var af2=(y)\n=>y+1");
|
|
shouldThrow("var af3=(x, y)\n=>y+1");
|
|
|
|
shouldThrow('([a, b] => a + b)(["a_", "b_"])' );
|
|
shouldThrow('({a, b} => a + b)({a:"a_", b:"b_"})');
|
|
shouldThrow('({c:a,d:b} => a + b)({c:"a_", d:"b_"})');
|
|
shouldThrow('({c:b,d:a} => a + b)({c:"a_", d:"b_"})');
|
|
|
|
shouldThrow('var arr1 = [a, b] => a + b;');
|
|
shouldThrow('var arr2 = {a, b} => a + b;');
|
|
shouldThrow('var arr3 = {c:a,d:b} => a + b;');
|
|
shouldThrow('var arr3 = {c:b,d:a} => a + b;');
|
|
|
|
shouldThrow('var arr4 = () => { super(); };', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('var arr4 = () => { super; };', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('var arr5 = () => { super.getValue(); };', '"SyntaxError: super is not valid in this context."');
|
|
|
|
shouldThrow('var arr6 = () => super();', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('var arr7 = () => super;', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('var arr8 = () => super.getValue();', '"SyntaxError: super is not valid in this context."');
|
|
|
|
shouldThrow('class A { constructor() { function a () { return () => { super(); };}}', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('class B { constructor() { function b () { return () => { super; }; }; }}', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('class C { constructor() { function c () { return () => { super.getValue(); };}}', '"SyntaxError: super is not valid in this context."');
|
|
|
|
shouldThrow('class D { constructor() { function a () { return () => super(); }}', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('class E { constructor() { function b () { return () => super; }; }}', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('class F { constructor() { function c () { return () => super.getValue(); }}', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('class G {}; class G2 extends G { getValue() { function c () { return () => super.getValue(); }}', '"SyntaxError: super is not valid in this context."');
|
|
shouldThrow('class H {}; class H2 extends H { method() { function *gen() { let arr = () => super.getValue(); arr(); } } }', '"SyntaxError: super is not valid in this context."');
|
|
|
|
var successfullyParsed = true;
|