From baa5d94bc502db0c9caf8e6d39bba24773160b58 Mon Sep 17 00:00:00 2001 From: Mike Pennisi <mike@mikepennisi.com> Date: Sat, 20 Jan 2018 23:56:35 -0500 Subject: [PATCH] Refactor object initializer tests for parsers A number of tests for the parsing of object initializers 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. --- .../expressions/object/11.1.5-4-4-a-1-s.js | 10 -------- ...-2-2-s.js => getter-body-strict-inside.js} | 21 ++++++++--------- ...2-1-s.js => getter-body-strict-outside.js} | 20 ++++++++-------- ...1.1.5_4-4-a-2.js => prop-dup-data-data.js} | 5 +++- ...11.1.5_4-4-b-2.js => prop-dup-data-set.js} | 5 +++- ...11.1.5_4-4-c-1.js => prop-dup-get-data.js} | 5 +++- ...{11.1.5_4-4-d-1.js => prop-dup-get-get.js} | 5 +++- ...1.5_4-4-d-3.js => prop-dup-get-set-get.js} | 6 ++++- ...11.1.5_4-4-c-2.js => prop-dup-set-data.js} | 5 +++- ...1.5_4-4-d-4.js => prop-dup-set-get-set.js} | 6 ++++- ...{11.1.5_4-4-d-2.js => prop-dup-set-set.js} | 5 +++- ...-2-2-s.js => setter-body-strict-inside.js} | 23 +++++++++---------- ...2-1-s.js => setter-body-strict-outside.js} | 20 ++++++++-------- ...> setter-param-arguments-strict-inside.js} | 13 +++++++---- ... setter-param-arguments-strict-outside.js} | 11 +++++---- ....js => setter-param-eval-strict-inside.js} | 13 +++++++---- ...js => setter-param-eval-strict-outside.js} | 11 +++++---- 17 files changed, 105 insertions(+), 79 deletions(-) delete mode 100644 test/language/expressions/object/11.1.5-4-4-a-1-s.js rename test/language/expressions/object/{11.1.5_6-2-2-s.js => getter-body-strict-inside.js} (55%) rename test/language/expressions/object/{11.1.5_6-2-1-s.js => getter-body-strict-outside.js} (55%) rename test/language/expressions/object/{11.1.5_4-4-a-2.js => prop-dup-data-data.js} (95%) rename test/language/expressions/object/{11.1.5_4-4-b-2.js => prop-dup-data-set.js} (89%) rename test/language/expressions/object/{11.1.5_4-4-c-1.js => prop-dup-get-data.js} (89%) rename test/language/expressions/object/{11.1.5_4-4-d-1.js => prop-dup-get-get.js} (86%) rename test/language/expressions/object/{11.1.5_4-4-d-3.js => prop-dup-get-set-get.js} (81%) rename test/language/expressions/object/{11.1.5_4-4-c-2.js => prop-dup-set-data.js} (89%) rename test/language/expressions/object/{11.1.5_4-4-d-4.js => prop-dup-set-get-set.js} (80%) rename test/language/expressions/object/{11.1.5_4-4-d-2.js => prop-dup-set-set.js} (84%) rename test/language/expressions/object/{11.1.5_7-2-2-s.js => setter-body-strict-inside.js} (51%) rename test/language/expressions/object/{11.1.5_7-2-1-s.js => setter-body-strict-outside.js} (51%) rename test/language/expressions/object/{11.1.5-4-s.js => setter-param-arguments-strict-inside.js} (70%) rename test/language/expressions/object/{11.1.5-2-s.js => setter-param-arguments-strict-outside.js} (73%) rename test/language/expressions/object/{11.1.5-3-s.js => setter-param-eval-strict-inside.js} (71%) rename test/language/expressions/object/{11.1.5-1-s.js => setter-param-eval-strict-outside.js} (74%) diff --git a/test/language/expressions/object/11.1.5-4-4-a-1-s.js b/test/language/expressions/object/11.1.5-4-4-a-1-s.js deleted file mode 100644 index 6d3c6b353d..0000000000 --- a/test/language/expressions/object/11.1.5-4-4-a-1-s.js +++ /dev/null @@ -1,10 +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.1.5-4-4-a-1-s -description: > - Object literal - No SyntaxError for duplicate data property names ----*/ - - eval("({foo:0,foo:1});"); diff --git a/test/language/expressions/object/11.1.5_6-2-2-s.js b/test/language/expressions/object/getter-body-strict-inside.js similarity index 55% rename from test/language/expressions/object/11.1.5_6-2-2-s.js rename to test/language/expressions/object/getter-body-strict-inside.js index 9ae348ff54..279175dfd9 100644 --- a/test/language/expressions/object/11.1.5_6-2-2-s.js +++ b/test/language/expressions/object/getter-body-strict-inside.js @@ -1,23 +1,22 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5_6-2-2-s description: > Strict Mode - SyntaxError is thrown when an assignment to a reserved word or a future reserved word is made inside a strict mode FunctionBody of a PropertyAssignment +negative: + type: SyntaxError + phase: parse flags: [noStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var obj = {\ - get _11_1_5_6_2_2() {\ - \"use strict\";\ - public = 42;\ - return public;\ - }\ - };\ - var _11_1_5_6_2_2 = obj._11_1_5_6_2_2;"); -}); +void { + get x() { + "use strict"; + public = 42; + } +}; diff --git a/test/language/expressions/object/11.1.5_6-2-1-s.js b/test/language/expressions/object/getter-body-strict-outside.js similarity index 55% rename from test/language/expressions/object/11.1.5_6-2-1-s.js rename to test/language/expressions/object/getter-body-strict-outside.js index 65035c0eac..aaf13120c0 100644 --- a/test/language/expressions/object/11.1.5_6-2-1-s.js +++ b/test/language/expressions/object/getter-body-strict-outside.js @@ -1,22 +1,20 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5_6-2-1-s description: > Strict Mode - SyntaxError is thrown when an assignment to a reserved word or a future reserved word is contained in strict code +negative: + type: SyntaxError + phase: parse flags: [onlyStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var obj = {\ - get _11_1_5_6_2_1() {\ - public = 42;\ - return public;\ - }\ - };"); - - var _11_1_5_6_2_1 = obj._11_1_5_6_2_1; -}); +void { + get x() { + public = 42; + } +}; diff --git a/test/language/expressions/object/11.1.5_4-4-a-2.js b/test/language/expressions/object/prop-dup-data-data.js similarity index 95% rename from test/language/expressions/object/11.1.5_4-4-a-2.js rename to test/language/expressions/object/prop-dup-data-data.js index 743b075e31..58ed692524 100644 --- a/test/language/expressions/object/11.1.5_4-4-a-2.js +++ b/test/language/expressions/object/prop-dup-data-data.js @@ -14,4 +14,7 @@ description: > strict mode ---*/ - eval("({foo:0,foo:1});"); +void { + foo: 0, + foo: 1 +}; diff --git a/test/language/expressions/object/11.1.5_4-4-b-2.js b/test/language/expressions/object/prop-dup-data-set.js similarity index 89% rename from test/language/expressions/object/11.1.5_4-4-b-2.js rename to test/language/expressions/object/prop-dup-data-set.js index 03b0c3a556..5022d4a822 100644 --- a/test/language/expressions/object/11.1.5_4-4-b-2.js +++ b/test/language/expressions/object/prop-dup-data-set.js @@ -8,4 +8,7 @@ description: > followed by set accessor definition with the same name ---*/ - eval("({foo : 1, set foo(x){}});"); +void { + foo: 1, + set foo(x) {} +}; diff --git a/test/language/expressions/object/11.1.5_4-4-c-1.js b/test/language/expressions/object/prop-dup-get-data.js similarity index 89% rename from test/language/expressions/object/11.1.5_4-4-c-1.js rename to test/language/expressions/object/prop-dup-get-data.js index 4923c9411c..6f073c6047 100644 --- a/test/language/expressions/object/11.1.5_4-4-c-1.js +++ b/test/language/expressions/object/prop-dup-get-data.js @@ -8,4 +8,7 @@ description: > is followed by a data property definition with the same name ---*/ - eval("({get foo(){}, foo : 1});"); +void { + get foo() {}, + foo: 1 +}; diff --git a/test/language/expressions/object/11.1.5_4-4-d-1.js b/test/language/expressions/object/prop-dup-get-get.js similarity index 86% rename from test/language/expressions/object/11.1.5_4-4-d-1.js rename to test/language/expressions/object/prop-dup-get-get.js index c9d0f2d25f..a31c65557d 100644 --- a/test/language/expressions/object/11.1.5_4-4-d-1.js +++ b/test/language/expressions/object/prop-dup-get-get.js @@ -6,4 +6,7 @@ es5id: 11.1.5_4-4-d-1 description: Object literal - No SyntaxError for duplicate property name (get,get) ---*/ - eval("({get foo(){}, get foo(){}});"); +void { + get foo() {}, + get foo() {} +}; diff --git a/test/language/expressions/object/11.1.5_4-4-d-3.js b/test/language/expressions/object/prop-dup-get-set-get.js similarity index 81% rename from test/language/expressions/object/11.1.5_4-4-d-3.js rename to test/language/expressions/object/prop-dup-get-set-get.js index 306ceeb5bb..3987448c63 100644 --- a/test/language/expressions/object/11.1.5_4-4-d-3.js +++ b/test/language/expressions/object/prop-dup-get-set-get.js @@ -8,4 +8,8 @@ description: > (get,set,get) ---*/ - eval("({get foo(){}, set foo(arg){}, get foo(){}});"); +void { + get foo() {}, + set foo(arg) {}, + get foo() {} +}; diff --git a/test/language/expressions/object/11.1.5_4-4-c-2.js b/test/language/expressions/object/prop-dup-set-data.js similarity index 89% rename from test/language/expressions/object/11.1.5_4-4-c-2.js rename to test/language/expressions/object/prop-dup-set-data.js index 45c121821d..c4fe786efe 100644 --- a/test/language/expressions/object/11.1.5_4-4-c-2.js +++ b/test/language/expressions/object/prop-dup-set-data.js @@ -8,4 +8,7 @@ description: > is followed by a data property definition with the same name ---*/ - eval("({set foo(x){}, foo : 1});"); +void { + set foo(x) {}, + foo: 1 +}; diff --git a/test/language/expressions/object/11.1.5_4-4-d-4.js b/test/language/expressions/object/prop-dup-set-get-set.js similarity index 80% rename from test/language/expressions/object/11.1.5_4-4-d-4.js rename to test/language/expressions/object/prop-dup-set-get-set.js index 83c9645b88..d5ebc514bc 100644 --- a/test/language/expressions/object/11.1.5_4-4-d-4.js +++ b/test/language/expressions/object/prop-dup-set-get-set.js @@ -8,4 +8,8 @@ description: > (set,get,set) ---*/ - eval("({set foo(arg){}, get foo(){}, set foo(arg1){}});"); +void { + set foo(arg) {}, + get foo() {}, + set foo(arg1) {} +}; diff --git a/test/language/expressions/object/11.1.5_4-4-d-2.js b/test/language/expressions/object/prop-dup-set-set.js similarity index 84% rename from test/language/expressions/object/11.1.5_4-4-d-2.js rename to test/language/expressions/object/prop-dup-set-set.js index 14e52d0dcd..6962147373 100644 --- a/test/language/expressions/object/11.1.5_4-4-d-2.js +++ b/test/language/expressions/object/prop-dup-set-set.js @@ -6,4 +6,7 @@ es5id: 11.1.5_4-4-d-2 description: Object literal - No SyntaxError for duplicate property name (set,set) ---*/ - eval("({set foo(arg){}, set foo(arg1){}});"); +void { + set foo(arg) {}, + set foo(arg1) {} +}; diff --git a/test/language/expressions/object/11.1.5_7-2-2-s.js b/test/language/expressions/object/setter-body-strict-inside.js similarity index 51% rename from test/language/expressions/object/11.1.5_7-2-2-s.js rename to test/language/expressions/object/setter-body-strict-inside.js index 08cfe79dfc..56e776a04f 100644 --- a/test/language/expressions/object/11.1.5_7-2-2-s.js +++ b/test/language/expressions/object/setter-body-strict-inside.js @@ -1,23 +1,22 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5_7-2-2-s description: > Strict Mode - SyntaxError is thrown when an assignment to a reserved word is made in a strict FunctionBody of a PropertyAssignment -flags: [onlyStrict] +negative: + type: SyntaxError + phase: parse +flags: [noStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var data = \"data\";\ - var obj = {\ - set _11_1_5_7_2_2(value) {\ - public = 42;\ - data = value;\ - }\ - };\ - obj._11_1_5_7_2_2 = 1;"); -}); +void { + set x(value) { + "use strict"; + public = 42; + } +}; diff --git a/test/language/expressions/object/11.1.5_7-2-1-s.js b/test/language/expressions/object/setter-body-strict-outside.js similarity index 51% rename from test/language/expressions/object/11.1.5_7-2-1-s.js rename to test/language/expressions/object/setter-body-strict-outside.js index f716977416..3587afb53c 100644 --- a/test/language/expressions/object/11.1.5_7-2-1-s.js +++ b/test/language/expressions/object/setter-body-strict-outside.js @@ -1,22 +1,20 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5_7-2-1-s description: > Strict Mode - SyntaxError is thrown when an assignment to a reserved word is contained in strict code +negative: + type: SyntaxError + phase: parse flags: [onlyStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var data = \"data\";\ - var obj = {\ - set _11_1_5_7_2_1(value) {\ - public = 42;\ - data = value;\ - }\ - };\ - obj._11_1_5_7_2_1 = 1;"); -}); +void { + set x(value) { + public = 42; + } +}; diff --git a/test/language/expressions/object/11.1.5-4-s.js b/test/language/expressions/object/setter-param-arguments-strict-inside.js similarity index 70% rename from test/language/expressions/object/11.1.5-4-s.js rename to test/language/expressions/object/setter-param-arguments-strict-inside.js index dc16139062..d5a19e5c77 100644 --- a/test/language/expressions/object/11.1.5-4-s.js +++ b/test/language/expressions/object/setter-param-arguments-strict-inside.js @@ -1,16 +1,21 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5-4-s description: > Strict Mode - SyntaxError is thrown when 'arguments' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment if its FunctionBody is strict code +negative: + type: SyntaxError + phase: parse flags: [noStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var obj = {set _11_1_5_4_fun(arguments) {\"use strict\";}};"); -}); +void { + set x(arguments) { + "use strict"; + } +}; diff --git a/test/language/expressions/object/11.1.5-2-s.js b/test/language/expressions/object/setter-param-arguments-strict-outside.js similarity index 73% rename from test/language/expressions/object/11.1.5-2-s.js rename to test/language/expressions/object/setter-param-arguments-strict-outside.js index 7a4c054df9..1cf1d58c3b 100644 --- a/test/language/expressions/object/11.1.5-2-s.js +++ b/test/language/expressions/object/setter-param-arguments-strict-outside.js @@ -1,16 +1,19 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5-2-s description: > Strict Mode - SyntaxError is thrown when 'arguments' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code +negative: + type: SyntaxError + phase: parse flags: [onlyStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var obj = {set _11_1_5_2_fun(arguments) {} };"); -}); +void { + set x(arguments) {} +}; diff --git a/test/language/expressions/object/11.1.5-3-s.js b/test/language/expressions/object/setter-param-eval-strict-inside.js similarity index 71% rename from test/language/expressions/object/11.1.5-3-s.js rename to test/language/expressions/object/setter-param-eval-strict-inside.js index 831a801944..f666963945 100644 --- a/test/language/expressions/object/11.1.5-3-s.js +++ b/test/language/expressions/object/setter-param-eval-strict-inside.js @@ -1,16 +1,21 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5-3-s description: > Strict Mode - SyntaxError is thrown when 'evals' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment if its FunctionBody is strict code +negative: + type: SyntaxError + phase: parse flags: [noStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var obj = {set _11_1_5_3_fun(eval) { \"use strict\"; }};"); -}); +void { + set x(eval) { + "use strict"; + } +}; diff --git a/test/language/expressions/object/11.1.5-1-s.js b/test/language/expressions/object/setter-param-eval-strict-outside.js similarity index 74% rename from test/language/expressions/object/11.1.5-1-s.js rename to test/language/expressions/object/setter-param-eval-strict-outside.js index abc491dcbe..d2643f55ba 100644 --- a/test/language/expressions/object/11.1.5-1-s.js +++ b/test/language/expressions/object/setter-param-eval-strict-outside.js @@ -1,16 +1,19 @@ // Copyright (c) 2012 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. - /*--- es5id: 11.1.5-1-s description: > Strict Mode - SyntaxError is thrown when 'eval' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code +negative: + type: SyntaxError + phase: parse flags: [onlyStrict] ---*/ +throw "Test262: This statement should not be evaluated."; -assert.throws(SyntaxError, function() { - eval("var obj = {set _11_1_5_1_fun(eval) {}};"); -}); +void { + set x(eval) {} +}; -- GitLab