mirror of https://github.com/tc39/test262.git
Refactor AssignmentExpression tests for parsers
A number of tests for the parsing of the AssignmentExpression production were expressed using `eval`. This made the tests more complex than necessary, and also prevented the tests from providing value to ECMAScript parsers. Remove the use of `eval` in the relevant tests and instead express the expectations with literal source text. Remove superfluous "onlyStrict" restriction from tests by declaring the probe binding prior to assignment.
This commit is contained in:
parent
8311965251
commit
025b44f38c
|
@ -1,24 +0,0 @@
|
||||||
// Copyright (c) 2012 Ecma International. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
|
|
||||||
/*---
|
|
||||||
es5id: 11.13.1-4-28-s
|
|
||||||
description: >
|
|
||||||
Strict Mode - SyntaxError is thrown if the identifier 'eval'
|
|
||||||
appears as the LeftHandSideExpression of simple assignment(=)
|
|
||||||
under strict mode
|
|
||||||
flags: [onlyStrict]
|
|
||||||
---*/
|
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
var err = null;
|
|
||||||
var blah = eval;
|
|
||||||
try {
|
|
||||||
eval("var eval = 20;");
|
|
||||||
} catch (e) {
|
|
||||||
err = e;
|
|
||||||
}
|
|
||||||
assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
|
|
||||||
assert.sameValue(blah, eval, 'blah');
|
|
||||||
}
|
|
||||||
testcase();
|
|
|
@ -1,24 +0,0 @@
|
||||||
// Copyright (c) 2012 Ecma International. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
|
|
||||||
/*---
|
|
||||||
es5id: 11.13.1-4-29-s
|
|
||||||
description: >
|
|
||||||
Strict Mode - SyntaxError is thrown if the identifier 'arguments'
|
|
||||||
appears as the LeftHandSideExpression of simple assignment(=)
|
|
||||||
under strict mode
|
|
||||||
flags: [onlyStrict]
|
|
||||||
---*/
|
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
var err = null;
|
|
||||||
var blah = arguments;
|
|
||||||
try {
|
|
||||||
eval("var arguments = 20;");
|
|
||||||
} catch (e) {
|
|
||||||
err = e;
|
|
||||||
}
|
|
||||||
assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
|
|
||||||
assert.sameValue(blah, arguments, 'blah');
|
|
||||||
}
|
|
||||||
testcase();
|
|
|
@ -1,17 +0,0 @@
|
||||||
// Copyright (c) 2012 Ecma International. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
|
|
||||||
/*---
|
|
||||||
es5id: 11.13.1-4-30-s
|
|
||||||
description: >
|
|
||||||
Strict Mode - SyntaxError is thrown if the identifier 'eval'
|
|
||||||
appears as the LeftHandSideExpression (PrimaryExpression) of
|
|
||||||
simple assignment(=) under strict mode
|
|
||||||
flags: [onlyStrict]
|
|
||||||
---*/
|
|
||||||
|
|
||||||
var blah = eval;
|
|
||||||
assert.throws(SyntaxError, function() {
|
|
||||||
eval("(eval) = 20;");
|
|
||||||
});
|
|
||||||
assert.sameValue(blah, eval, 'blah');
|
|
|
@ -1,24 +0,0 @@
|
||||||
// Copyright (c) 2012 Ecma International. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
|
|
||||||
/*---
|
|
||||||
es5id: 11.13.1-4-31-s
|
|
||||||
description: >
|
|
||||||
Strict Mode - SyntaxError is thrown if the identifier 'arguments'
|
|
||||||
appears as the LeftHandSideExpression (PrimaryExpression) of
|
|
||||||
simple assignment(=) under strict mode
|
|
||||||
flags: [onlyStrict]
|
|
||||||
---*/
|
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
var err = null;
|
|
||||||
var blah = arguments;
|
|
||||||
try {
|
|
||||||
eval("(arguments) = 20;");
|
|
||||||
} catch (e) {
|
|
||||||
err = e;
|
|
||||||
}
|
|
||||||
assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
|
|
||||||
assert.sameValue(blah, arguments, 'blah');
|
|
||||||
}
|
|
||||||
testcase();
|
|
|
@ -1,62 +0,0 @@
|
||||||
// Copyright 2009 the Sputnik authors. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
|
|
||||||
/*---
|
|
||||||
info: >
|
|
||||||
White Space and Line Terminator between LeftHandSideExpression and "=" or
|
|
||||||
between "=" and AssignmentExpression are allowed
|
|
||||||
es5id: 11.13.1_A1
|
|
||||||
description: Checking by using eval
|
|
||||||
flags: [noStrict]
|
|
||||||
---*/
|
|
||||||
|
|
||||||
//CHECK#1
|
|
||||||
if ((eval("x\u0009=\u0009true")) !== true) {
|
|
||||||
$ERROR('#1: (x\\u0009=\\u0009true) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#2
|
|
||||||
if ((eval("x\u000B=\u000Btrue")) !== true) {
|
|
||||||
$ERROR('#2: (x\\u000B=\\u000Btrue) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#3
|
|
||||||
if ((eval("x\u000C=\u000Ctrue")) !== true) {
|
|
||||||
$ERROR('#3: (x\\u000C=\\u000Ctrue) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#4
|
|
||||||
if ((eval("x\u0020=\u0020true")) !== true) {
|
|
||||||
$ERROR('#4: (x\\u0020=\\u0020true) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#5
|
|
||||||
if ((eval("x\u00A0=\u00A0true")) !== true) {
|
|
||||||
$ERROR('#5: (x\\u00A0=\\u00A0true) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#6
|
|
||||||
if ((eval("x\u000A=\u000Atrue")) !== true) {
|
|
||||||
$ERROR('#6: (x\\u000A=\\u000Atrue) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#7
|
|
||||||
if ((eval("x\u000D=\u000Dtrue")) !== true) {
|
|
||||||
$ERROR('#7: (x\\u000D=\\u000Dtrue) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#8
|
|
||||||
if ((eval("x\u2028=\u2028true")) !== true) {
|
|
||||||
$ERROR('#8: (x\\u2028=\\u2028true) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHECK#9
|
|
||||||
if ((eval("x\u2029=\u2029true")) !== true) {
|
|
||||||
$ERROR('#9: (x\\u2029=\\u2029true) === true');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//CHECK#10
|
|
||||||
if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
|
|
||||||
$ERROR('#10: (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
|
|
||||||
}
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es5id: 11.13.1-4-30-s
|
||||||
|
description: >
|
||||||
|
Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears as
|
||||||
|
the LeftHandSideExpression (PrimaryExpression) of simple assignment(=).
|
||||||
|
negative:
|
||||||
|
phase: early
|
||||||
|
type: SyntaxError
|
||||||
|
flags: [onlyStrict]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
throw "Test262: This statement should not be evaluated.";
|
||||||
|
|
||||||
|
(arguments) = 20;
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es5id: 11.13.1-4-30-s
|
||||||
|
description: >
|
||||||
|
Strict Mode - SyntaxError is thrown if the identifier 'eval' appears as the
|
||||||
|
LeftHandSideExpression (PrimaryExpression) of simple assignment(=).
|
||||||
|
negative:
|
||||||
|
phase: early
|
||||||
|
type: SyntaxError
|
||||||
|
flags: [onlyStrict]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
throw "Test262: This statement should not be evaluated.";
|
||||||
|
|
||||||
|
(eval) = 20;
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Copyright 2009 the Sputnik authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: >
|
||||||
|
White Space between LeftHandSideExpression and "=" or between "=" and
|
||||||
|
AssignmentExpression is allowed
|
||||||
|
es5id: 11.13.1_A1
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var x;
|
||||||
|
|
||||||
|
x
|
||||||
|
=
|
||||||
|
true;
|
||||||
|
|
||||||
|
if (x !== true) {
|
||||||
|
$ERROR('#6: (x\\u000A=\\u000Atrue) === true');
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
// Copyright 2009 the Sputnik authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: >
|
||||||
|
White Space between LeftHandSideExpression and "=" or between "=" and
|
||||||
|
AssignmentExpression is allowed
|
||||||
|
es5id: 11.13.1_A1
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var x;
|
||||||
|
|
||||||
|
x = 'U+0009';
|
||||||
|
if (x !== 'U+0009') {
|
||||||
|
$ERROR('#1: (x\\u0009=\\u0009true) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x='U+000B';
|
||||||
|
if (x !== 'U+000B') {
|
||||||
|
$ERROR('#2: (x\\u000B=\\u000Btrue) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x='U+000C';
|
||||||
|
if (x !== 'U+000C') {
|
||||||
|
$ERROR('#3: (x\\u000C=\\u000Ctrue) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x = 'U+0020';
|
||||||
|
if (x !== 'U+0020') {
|
||||||
|
$ERROR('#4: (x\\u0020=\\u0020true) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x = 'U+00A0';
|
||||||
|
if (x !== 'U+00A0') {
|
||||||
|
$ERROR('#5: (x\\u00A0=\\u00A0true) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x
=
'U+000D';
|
||||||
|
if (x !== 'U+000D') {
|
||||||
|
$ERROR('#7: (x\\u000D=\\u000Dtrue) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x
=
'U+2028';
|
||||||
|
if (x !== 'U+2028') {
|
||||||
|
$ERROR('#8: (x\\u2028=\\u2028true) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x
=
'U+2029';
|
||||||
|
if (x !== 'U+2029') {
|
||||||
|
$ERROR('#9: (x\\u2029=\\u2029true) === true');
|
||||||
|
}
|
||||||
|
|
||||||
|
x
=
'U+0009U+000BU+000CU+0020U+00A0U+000DU+2028U+2029';
|
||||||
|
if (x !== 'U+0009U+000BU+000CU+0020U+00A0U+000DU+2028U+2029') {
|
||||||
|
$ERROR('#10: (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000D\\u2028\\u2029=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000D\\u2028\\u2029true) === true');
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es5id: 11.13.1-4-28-s
|
||||||
|
description: >
|
||||||
|
Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears
|
||||||
|
as the LeftHandSideExpression of simple assignment(=) under strict mode
|
||||||
|
negative:
|
||||||
|
phase: early
|
||||||
|
type: SyntaxError
|
||||||
|
flags: [onlyStrict]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
throw "Test262: This statement should not be evaluated.";
|
||||||
|
|
||||||
|
var arguments;
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
es5id: 11.13.1-4-28-s
|
||||||
|
description: >
|
||||||
|
Strict Mode - SyntaxError is thrown if the identifier 'eval' appears as the
|
||||||
|
LeftHandSideExpression of simple assignment(=) under strict mode
|
||||||
|
negative:
|
||||||
|
phase: early
|
||||||
|
type: SyntaxError
|
||||||
|
flags: [onlyStrict]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
throw "Test262: This statement should not be evaluated.";
|
||||||
|
|
||||||
|
var eval;
|
Loading…
Reference in New Issue