mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 14:30:27 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
73 lines
3.9 KiB
JavaScript
73 lines
3.9 KiB
JavaScript
|
|
function testSyntax(script) {
|
|
try {
|
|
eval(script);
|
|
} catch (error) {
|
|
if (error instanceof SyntaxError)
|
|
throw new Error("Bad error: " + String(error));
|
|
}
|
|
}
|
|
|
|
function testSyntaxError(script, message) {
|
|
var error = null;
|
|
try {
|
|
eval(script);
|
|
} catch (e) {
|
|
error = e;
|
|
}
|
|
if (!error)
|
|
throw new Error("Expected syntax error not thrown");
|
|
|
|
if (String(error) !== message)
|
|
throw new Error("Bad error: " + String(error));
|
|
}
|
|
|
|
testSyntax("({ a: this.a } = {})");
|
|
testSyntax("({ a: this['a'] } = {})");
|
|
testSyntax("({ a: this[\"a\"] } = {})");
|
|
testSyntax("[this.a ] = []");
|
|
testSyntax("[this['a']] = []");
|
|
testSyntax("[this[0]] = []");
|
|
testSyntax("[...this[0]] = []");
|
|
testSyntax("[...[function f() {}.prop]] = []");
|
|
testSyntax("[...[{prop: 1}.prop]] = []");
|
|
testSyntax("[...[this[0], ...this[1]]] = []");
|
|
testSyntax("({ a: obj.a } = {})");
|
|
testSyntax("({ a: obj['a'] } = {})");
|
|
testSyntax("({ a: obj[\"a\"] } = {})");
|
|
testSyntax("({ a: function() {}['prop'] } = {})");
|
|
testSyntax("({ a: {prop: 1}.prop } = {})");
|
|
testSyntax("[obj.a ] = []");
|
|
testSyntax("[obj['a']] = []");
|
|
testSyntax("[obj[0]] = []");
|
|
testSyntax("[function(){}.prop] = []");
|
|
testSyntax("[{prop: 1}.prop] = []");
|
|
|
|
|
|
testSyntaxError("[...c = 1] = []", "SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element destructuring pattern.");
|
|
testSyntaxError("[...c, d] = []", "SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.");
|
|
testSyntaxError("[this] = []", "SyntaxError: Invalid destructuring assignment target.");
|
|
testSyntaxError("[th\\u{69}s] = []", "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u{69}s'");
|
|
testSyntaxError("[function() {}] = []", "SyntaxError: Invalid destructuring assignment target.");
|
|
testSyntaxError("['string'] = []", "SyntaxError: Invalid destructuring assignment target.");
|
|
testSyntaxError("[123] = []", "SyntaxError: Invalid destructuring assignment target.");
|
|
testSyntaxError("[true] = []", "SyntaxError: Invalid destructuring assignment target.");
|
|
testSyntaxError("[tru\\u0065] = []", "SyntaxError: Unexpected escaped characters in keyword token: 'tru\\u0065'");
|
|
testSyntaxError("[false] = []", "SyntaxError: Invalid destructuring assignment target.");
|
|
testSyntaxError("[f\\u0061lse] = []", "SyntaxError: Unexpected escaped characters in keyword token: 'f\\u0061lse'");
|
|
testSyntaxError("[null] = []", "SyntaxError: Invalid destructuring assignment target.");
|
|
testSyntaxError("[n\\u{75}ll] = []", "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u{75}ll'");
|
|
|
|
testSyntaxError("'use strict'; ({ eval } = {})", "SyntaxError: Cannot modify 'eval' in strict mode.");
|
|
testSyntaxError("'use strict'; ({ eval = 0 } = {})", "SyntaxError: Cannot modify 'eval' in strict mode.");
|
|
testSyntaxError("'use strict'; ({ a: eval } = {})", "SyntaxError: Cannot modify 'eval' in strict mode.");
|
|
testSyntaxError("'use strict'; ({ a: eval = 0 } = {})", "SyntaxError: Cannot modify 'eval' in strict mode.");
|
|
testSyntaxError("'use strict'; ({ arguments } = {})", "SyntaxError: Cannot modify 'arguments' in strict mode.");
|
|
testSyntaxError("'use strict'; ({ arguments = 0 } = {})", "SyntaxError: Cannot modify 'arguments' in strict mode.");
|
|
testSyntaxError("'use strict'; ({ a: arguments } = {})", "SyntaxError: Cannot modify 'arguments' in strict mode.");
|
|
testSyntaxError("'use strict'; ({ a: arguments = 0 } = {})", "SyntaxError: Cannot modify 'arguments' in strict mode.");
|
|
testSyntaxError("'use strict'; ([ eval ] = [])", "SyntaxError: Cannot modify 'eval' in strict mode.");
|
|
testSyntaxError("'use strict'; ([ eval = 0 ] = [])", "SyntaxError: Cannot modify 'eval' in strict mode.");
|
|
testSyntaxError("'use strict'; ([ arguments ] = [])", "SyntaxError: Cannot modify 'arguments' in strict mode.");
|
|
testSyntaxError("'use strict'; ([ arguments = 0 ] = [])", "SyntaxError: Cannot modify 'arguments' in strict mode.");
|