diff --git a/features.txt b/features.txt index f3072571d7..0b0b8e6774 100644 --- a/features.txt +++ b/features.txt @@ -115,6 +115,7 @@ template TypedArray u180e Uint8Array +Uint16Array WeakMap WeakSet diff --git a/src/class-fields/eval-err-contains-arguments.case b/src/class-fields/eval-err-contains-arguments.case index 7cf7fd2c61..f9a6f6345d 100644 --- a/src/class-fields/eval-err-contains-arguments.case +++ b/src/class-fields/eval-err-contains-arguments.case @@ -18,7 +18,7 @@ info: | ... For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. features: [class-fields] -template: initializer-eval +template: initializer-eval-arguments ---*/ //- initializer diff --git a/src/class-fields/eval-err-contains-newcall.case b/src/class-fields/eval-err-contains-newtarget.case similarity index 84% rename from src/class-fields/eval-err-contains-newcall.case rename to src/class-fields/eval-err-contains-newtarget.case index 3b8eed5bc6..65ab504e41 100644 --- a/src/class-fields/eval-err-contains-newcall.case +++ b/src/class-fields/eval-err-contains-newtarget.case @@ -2,7 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -desc: error if `new.call` in StatementList of eval +desc: error if `new.target` in StatementList of eval info: | Additional Early Error Rules for Eval Inside Initializer These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. @@ -17,12 +17,8 @@ info: | It is a Syntax Error if StatementList Contains NewTarget. features: [class-fields] -template: initializer-eval +template: initializer-eval-newtarget ---*/ //- initializer -new.call -//- earlyerror -SyntaxError -//- executionerror -SyntaxError +new.target diff --git a/src/class-fields/eval-err-contains-supercall-1.case b/src/class-fields/eval-err-contains-supercall-1.case index eaabad6ebb..7be53f9427 100644 --- a/src/class-fields/eval-err-contains-supercall-1.case +++ b/src/class-fields/eval-err-contains-supercall-1.case @@ -2,7 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -desc: error if `super()` in StatementList of eval +desc: error if `super()['x']` in StatementList of eval info: | Additional Early Error Rules for Eval Inside Initializer These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. @@ -17,12 +17,8 @@ info: | It is a Syntax Error if StatementList Contains SuperCall. features: [class-fields] -template: initializer-eval-super +template: initializer-eval-super-call ---*/ //- initializer -super() -//- earlyerror -SyntaxError -//- executionerror -SyntaxError +super()['x'] diff --git a/src/class-fields/eval-err-contains-supercall-2.case b/src/class-fields/eval-err-contains-supercall-2.case index 45166f1648..d0c9e34491 100644 --- a/src/class-fields/eval-err-contains-supercall-2.case +++ b/src/class-fields/eval-err-contains-supercall-2.case @@ -11,18 +11,14 @@ info: | ... The remaining eval rules apply as outside a constructor, inside a method, and inside a function. - Additional Early Error Rules for Eval Outside Methods - These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. ScriptBody:StatementList It is a Syntax Error if StatementList Contains SuperCall. features: [class-fields] -template: initializer-eval-super +template: initializer-eval-super-call ---*/ //- initializer super().x -//- earlyerror -SyntaxError -//- executionerror -SyntaxError diff --git a/src/class-fields/eval-err-contains-supercall.case b/src/class-fields/eval-err-contains-supercall.case index eaabad6ebb..b6370bc13e 100644 --- a/src/class-fields/eval-err-contains-supercall.case +++ b/src/class-fields/eval-err-contains-supercall.case @@ -17,12 +17,8 @@ info: | It is a Syntax Error if StatementList Contains SuperCall. features: [class-fields] -template: initializer-eval-super +template: initializer-eval-super-call ---*/ //- initializer super() -//- earlyerror -SyntaxError -//- executionerror -SyntaxError diff --git a/src/class-fields/eval-err-contains-superproperty-1.case b/src/class-fields/eval-err-contains-superproperty-1.case index 7af5c8144d..0d9a2d3a52 100644 --- a/src/class-fields/eval-err-contains-superproperty-1.case +++ b/src/class-fields/eval-err-contains-superproperty-1.case @@ -2,7 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -desc: error if `super().x` in StatementList of eval +desc: error if `super.x` in StatementList of eval info: | Additional Early Error Rules for Eval Inside Initializer These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. @@ -17,12 +17,8 @@ info: | It is a Syntax Error if StatementList Contains SuperProperty. features: [class-fields] -template: initializer-eval-super +template: initializer-eval-super-property ---*/ //- initializer super.x -//- earlyerror -SyntaxError -//- executionerror -SyntaxError diff --git a/src/class-fields/eval-err-contains-superproperty-2.case b/src/class-fields/eval-err-contains-superproperty-2.case index 21a3db5445..7840bdb77f 100644 --- a/src/class-fields/eval-err-contains-superproperty-2.case +++ b/src/class-fields/eval-err-contains-superproperty-2.case @@ -2,7 +2,7 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -desc: error if `super().x` in StatementList of eval +desc: error if `super['x']` in StatementList of eval info: | Additional Early Error Rules for Eval Inside Initializer These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. @@ -17,12 +17,8 @@ info: | It is a Syntax Error if StatementList Contains SuperProperty. features: [class-fields] -template: initializer-eval-super +template: initializer-eval-super-property ---*/ //- initializer super['x'] -//- earlyerror -SyntaxError -//- executionerror -SyntaxError diff --git a/src/class-fields/initializer-eval/cls-decl-fields-eval.template b/src/class-fields/initializer-eval-arguments/cls-decl-fields-eval.template similarity index 97% rename from src/class-fields/initializer-eval/cls-decl-fields-eval.template rename to src/class-fields/initializer-eval-arguments/cls-decl-fields-eval.template index ed721afebe..f75aa39e08 100644 --- a/src/class-fields/initializer-eval/cls-decl-fields-eval.template +++ b/src/class-fields/initializer-eval-arguments/cls-decl-fields-eval.template @@ -8,7 +8,7 @@ name: direct eval ---*/ var executed = false; -class C = { +class C { x = eval('executed = true; /*{ initializer }*/;'); } diff --git a/src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template b/src/class-fields/initializer-eval-arguments/cls-decl-fields-indirect-eval.template similarity index 97% rename from src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template rename to src/class-fields/initializer-eval-arguments/cls-decl-fields-indirect-eval.template index 11aa34d0da..0b795b6e7f 100644 --- a/src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template +++ b/src/class-fields/initializer-eval-arguments/cls-decl-fields-indirect-eval.template @@ -8,7 +8,7 @@ name: indirect eval ---*/ var executed = false; -class C = { +class C { x = (0, eval)('executed = true; /*{ initializer }*/;'); } diff --git a/src/class-fields/initializer-eval/cls-expr-fields-eval.template b/src/class-fields/initializer-eval-arguments/cls-expr-fields-eval.template similarity index 100% rename from src/class-fields/initializer-eval/cls-expr-fields-eval.template rename to src/class-fields/initializer-eval-arguments/cls-expr-fields-eval.template diff --git a/src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template b/src/class-fields/initializer-eval-arguments/cls-expr-fields-indirect-eval.template similarity index 100% rename from src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template rename to src/class-fields/initializer-eval-arguments/cls-expr-fields-indirect-eval.template diff --git a/src/class-fields/initializer-eval-newtarget/cls-decl-fields-eval.template b/src/class-fields/initializer-eval-newtarget/cls-decl-fields-eval.template new file mode 100644 index 0000000000..8ef1ea4d36 --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-decl-fields-eval.template @@ -0,0 +1,18 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-direct- +name: direct eval +---*/ + +var executed = false; +class C { + x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-fields/initializer-eval-newtarget/cls-decl-fields-indirect-eval.template b/src/class-fields/initializer-eval-newtarget/cls-decl-fields-indirect-eval.template new file mode 100644 index 0000000000..ee4630ca19 --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-decl-fields-indirect-eval.template @@ -0,0 +1,19 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-indirect- +name: indirect eval +---*/ + +var executed = false; +class C { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-newtarget/cls-expr-fields-eval.template b/src/class-fields/initializer-eval-newtarget/cls-expr-fields-eval.template new file mode 100644 index 0000000000..1c6b4b438b --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-expr-fields-eval.template @@ -0,0 +1,18 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-direct- +name: direct eval +---*/ + +var executed = false; +var C = class { + x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-fields/initializer-eval-newtarget/cls-expr-fields-indirect-eval.template b/src/class-fields/initializer-eval-newtarget/cls-expr-fields-indirect-eval.template new file mode 100644 index 0000000000..1c8bbf5979 --- /dev/null +++ b/src/class-fields/initializer-eval-newtarget/cls-expr-fields-indirect-eval.template @@ -0,0 +1,19 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-indirect- +name: indirect eval +---*/ + +var executed = false; +var C = class { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super/cls-decl-fields-eval.template b/src/class-fields/initializer-eval-super-call/cls-decl-fields-eval.template similarity index 82% rename from src/class-fields/initializer-eval-super/cls-decl-fields-eval.template rename to src/class-fields/initializer-eval-super-call/cls-decl-fields-eval.template index 5870c9a69a..8ec98eac91 100644 --- a/src/class-fields/initializer-eval-super/cls-decl-fields-eval.template +++ b/src/class-fields/initializer-eval-super-call/cls-decl-fields-eval.template @@ -7,14 +7,14 @@ path: language/statements/class/fields-derived-cls-direct- name: direct eval ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = eval('executed = true; /*{ initializer }*/;'); } -assert.throws(/*{ earlyerror }*/, function() { +assert.throws(SyntaxError, function() { new C(); }); diff --git a/src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template similarity index 75% rename from src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template rename to src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template index 9dafcc0477..0f9a97c6eb 100644 --- a/src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template +++ b/src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template @@ -7,15 +7,15 @@ path: language/statements/class/fields-derived-cls-indirect- name: indirect eval ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = (0, eval)('executed = true; /*{ initializer }*/;'); } -assert.throws(/*{ executionerror }*/, function() { +assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super/cls-expr-fields-eval.template b/src/class-fields/initializer-eval-super-call/cls-expr-fields-eval.template similarity index 90% rename from src/class-fields/initializer-eval-super/cls-expr-fields-eval.template rename to src/class-fields/initializer-eval-super-call/cls-expr-fields-eval.template index d4517cd618..65ab9d8dbd 100644 --- a/src/class-fields/initializer-eval-super/cls-expr-fields-eval.template +++ b/src/class-fields/initializer-eval-super-call/cls-expr-fields-eval.template @@ -14,7 +14,7 @@ var C = class extends A { x = eval('executed = true; /*{ initializer }*/;'); } -assert.throws(/*{ earlyerror }*/, function() { +assert.throws(SyntaxError, function() { new C(); }); diff --git a/src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-call/cls-expr-fields-indirect-eval.template similarity index 82% rename from src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template rename to src/class-fields/initializer-eval-super-call/cls-expr-fields-indirect-eval.template index f024c4f07b..83415b3df4 100644 --- a/src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template +++ b/src/class-fields/initializer-eval-super-call/cls-expr-fields-indirect-eval.template @@ -14,8 +14,8 @@ var C = class extends A { x = (0, eval)('executed = true; /*{ initializer }*/;'); } -assert.throws(/*{ executionerror }*/, function() { +assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-property/cls-decl-fields-eval.template b/src/class-fields/initializer-eval-super-property/cls-decl-fields-eval.template new file mode 100644 index 0000000000..a994b1e45c --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-decl-fields-eval.template @@ -0,0 +1,19 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-derived-cls-direct- +name: direct eval +---*/ + +class A {} + +var executed = false; +class C extends A { + x = eval('executed = true; /*{ initializer }*/;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval-super-property/cls-decl-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-property/cls-decl-fields-indirect-eval.template new file mode 100644 index 0000000000..0f9a97c6eb --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-decl-fields-indirect-eval.template @@ -0,0 +1,21 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/statements/class/fields-derived-cls-indirect- +name: indirect eval +---*/ + +class A {} + +var executed = false; +class C extends A { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-fields/initializer-eval-super-property/cls-expr-fields-eval.template b/src/class-fields/initializer-eval-super-property/cls-expr-fields-eval.template new file mode 100644 index 0000000000..b7ca546beb --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-expr-fields-eval.template @@ -0,0 +1,19 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-derived-cls-direct- +name: direct eval +---*/ + +var A = class {} + +var executed = false; +var C = class extends A { + x = eval('executed = true; /*{ initializer }*/;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-fields/initializer-eval-super-property/cls-expr-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-property/cls-expr-fields-indirect-eval.template new file mode 100644 index 0000000000..83415b3df4 --- /dev/null +++ b/src/class-fields/initializer-eval-super-property/cls-expr-fields-indirect-eval.template @@ -0,0 +1,21 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-performeval-rules-in-initializer +path: language/expressions/class/fields-derived-cls-indirect- +name: indirect eval +---*/ + +var A = class {} + +var executed = false; +var C = class extends A { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/built-ins/RegExp/incomplete_hex_unicode_escape.js b/test/annexB/built-ins/RegExp/incomplete_hex_unicode_escape.js similarity index 100% rename from test/built-ins/RegExp/incomplete_hex_unicode_escape.js rename to test/annexB/built-ins/RegExp/incomplete_hex_unicode_escape.js diff --git a/test/built-ins/BigInt/prototype/toString/length.js b/test/built-ins/BigInt/prototype/toString/length.js index 03975ff344..37cfa5c052 100644 --- a/test/built-ins/BigInt/prototype/toString/length.js +++ b/test/built-ins/BigInt/prototype/toString/length.js @@ -13,7 +13,7 @@ features: [BigInt] ---*/ verifyProperty(BigInt.prototype.toString, "length", { - value: 1, + value: 0, writable: false, enumerable: false, configurable: true diff --git a/test/built-ins/BigInt/prototype/toString/string-is-code-units-of-decimal-digits-only.js b/test/built-ins/BigInt/prototype/toString/string-is-code-units-of-decimal-digits-only.js index f876732792..15d4cbbab8 100644 --- a/test/built-ins/BigInt/prototype/toString/string-is-code-units-of-decimal-digits-only.js +++ b/test/built-ins/BigInt/prototype/toString/string-is-code-units-of-decimal-digits-only.js @@ -5,7 +5,6 @@ esid: sec-tostring-applied-to-the-bigint-type description: BigInt .toString() returns only decimal digits, does not include BigIntLiteralSuffix info: | - ToString Applied to the BigInt Type The abstract operation ToString converts a BigInt i to String format as follows: diff --git a/test/built-ins/Object/internals/DefineOwnProperty/nan-equivalence.js b/test/built-ins/Object/internals/DefineOwnProperty/nan-equivalence.js index cfa2f4bdd7..d6f4455ad1 100644 --- a/test/built-ins/Object/internals/DefineOwnProperty/nan-equivalence.js +++ b/test/built-ins/Object/internals/DefineOwnProperty/nan-equivalence.js @@ -19,7 +19,7 @@ info: | 9.1.6.1 OrdinaryDefineOwnProperty 1. Let current be ? O.[[GetOwnProperty]](P). - 2. Let extensible be the value of the [[Extensible]] internal slot of O. + 2. Let extensible be O.[[Extensible]]. 3. Return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current). @@ -28,27 +28,34 @@ info: | [...] 7. Else if IsDataDescriptor(current) and IsDataDescriptor(Desc) are both true, then - a. If the [[Configurable]] field of current is false, then + a. If current.[[Configurable]] is false and current.[[Writable]] is false, + then [...] - b. Else the [[Configurable]] field of current is true, so any change is - acceptable. [...] 9. If O is not undefined, then a. For each field of Desc that is present, set the corresponding attribute of the property named P of object O to the value of the field. 10. Return true. -features: [Float64Array, Uint8Array] +features: [Float64Array, Uint8Array, Uint16Array] includes: [nans.js] ---*/ +var isLittleEndian = new Uint8Array(new Uint16Array([1]).buffer)[0] !== 0; + var float = new Float64Array(1); var ints = new Uint8Array(float.buffer); var len = distinctNaNs.length; -var idx, jdx, subject, first, second; + function byteValue(value) { float[0] = value; - return ints[0] + (ints[1] << 8) + (ints[2] << 16) + (ints[3] << 32) + - (ints[4] << 64) + (ints[5] << 64) + (ints[6] << 128) + (ints[7] << 256); + + var hex = "0123456789ABCDEF"; + var s = ""; + for (var i = 0; i < 8; ++i) { + var v = ints[isLittleEndian ? 7 - i : i]; + s += hex[(v >> 4) & 0xf] + hex[v & 0xf]; + } + return s; } /** @@ -57,21 +64,23 @@ function byteValue(value) { * cannot be verified and this test is expected to pass without evaluating any * assertions. */ -for (idx = 0; idx < len; ++idx) { - for (jdx = 0 ; jdx < len; ++jdx) { - first = distinctNaNs[idx]; - second = distinctNaNs[jdx]; - if (byteValue(first) === byteValue(second)) { +for (var idx = 0; idx < len; ++idx) { + for (var jdx = 0; jdx < len; ++jdx) { + // NB: Don't store the distinct NaN values as global variables, because + // global variables are properties of the global object. And in this test + // we want to ensure NaN-valued properties in objects are properly handled, + // so storing NaN values in the (global) object defeats the purpose. + if (byteValue(distinctNaNs[idx]) === byteValue(distinctNaNs[jdx])) { continue; } - subject = {}; - subject.prop = first; - subject.prop = second; + var subject = {}; + subject.prop = distinctNaNs[idx]; + subject.prop = distinctNaNs[jdx]; assert.sameValue( byteValue(subject.prop), - byteValue(second), + byteValue(distinctNaNs[jdx]), 'Property value was re-set' ); } diff --git a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js index af1ce24fa0..4eda5161c7 100644 --- a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js +++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-1.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template +// - src/class-fields/initializer-eval-super-call/cls-expr-fields-eval.template /*--- -description: error if `super()` in StatementList of eval (direct eval) +description: error if `super()['x']` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -27,7 +27,7 @@ var A = class {} var executed = false; var C = class extends A { - x = eval('executed = true; super();'); + x = eval('executed = true; super()["x"];'); } assert.throws(SyntaxError, function() { diff --git a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js index 0a5ef69f3f..a5faa2bfa6 100644 --- a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js +++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-2.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template +// - src/class-fields/initializer-eval-super-call/cls-expr-fields-eval.template /*--- description: error if `super().x` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer @@ -14,8 +14,8 @@ info: | ... The remaining eval rules apply as outside a constructor, inside a method, and inside a function. - Additional Early Error Rules for Eval Outside Methods - These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. ScriptBody:StatementList It is a Syntax Error if StatementList Contains SuperCall. diff --git a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall.js index 726b8a22f9..2b120e887c 100644 --- a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall.js +++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template +// - src/class-fields/initializer-eval-super-call/cls-expr-fields-eval.template /*--- description: error if `super()` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer diff --git a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js index 6cb4e6d76c..88d6771c59 100644 --- a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js +++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-1.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template +// - src/class-fields/initializer-eval-super-property/cls-expr-fields-eval.template /*--- -description: error if `super().x` in StatementList of eval (direct eval) +description: error if `super.x` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -30,8 +30,6 @@ var C = class extends A { x = eval('executed = true; super.x;'); } -assert.throws(SyntaxError, function() { - new C(); -}); +new C(); -assert.sameValue(executed, false); +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js index 4991e904b2..a678d0829f 100644 --- a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js +++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-2.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template +// - src/class-fields/initializer-eval-super-property/cls-expr-fields-eval.template /*--- -description: error if `super().x` in StatementList of eval (direct eval) +description: error if `super['x']` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -30,8 +30,6 @@ var C = class extends A { x = eval('executed = true; super["x"];'); } -assert.throws(SyntaxError, function() { - new C(); -}); +new C(); -assert.sameValue(executed, false); +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js index 8bbacef5b6..3359f37f77 100644 --- a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js +++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-1.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-expr-fields-indirect-eval.template /*--- -description: error if `super()` in StatementList of eval (indirect eval) +description: error if `super()['x']` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -27,11 +27,11 @@ var A = class {} var executed = false; var C = class extends A { - x = (0, eval)('executed = true; super();'); + x = (0, eval)('executed = true; super()["x"];'); } assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js index 65b5a2166d..2a8008219d 100644 --- a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js +++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-2.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-expr-fields-indirect-eval.template /*--- description: error if `super().x` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -14,8 +14,8 @@ info: | ... The remaining eval rules apply as outside a constructor, inside a method, and inside a function. - Additional Early Error Rules for Eval Outside Methods - These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. ScriptBody:StatementList It is a Syntax Error if StatementList Contains SuperCall. @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js index 86fa84d9c0..d9a3c12a12 100644 --- a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js +++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-expr-fields-indirect-eval.template /*--- description: error if `super()` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js index e383332905..f49c5f7438 100644 --- a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js +++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-1.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-property/cls-expr-fields-indirect-eval.template /*--- -description: error if `super().x` in StatementList of eval (indirect eval) +description: error if `super.x` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js index d276eb785e..0954958d1b 100644 --- a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js +++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-2.case -// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-property/cls-expr-fields-indirect-eval.template /*--- -description: error if `super().x` in StatementList of eval (indirect eval) +description: error if `super['x']` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-direct-eval-err-contains-arguments.js b/test/language/expressions/class/fields-direct-eval-err-contains-arguments.js index 90cf038bc1..8258639dc5 100644 --- a/test/language/expressions/class/fields-direct-eval-err-contains-arguments.js +++ b/test/language/expressions/class/fields-direct-eval-err-contains-arguments.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-arguments.case -// - src/class-fields/initializer-eval/cls-expr-fields-eval.template +// - src/class-fields/initializer-eval-arguments/cls-expr-fields-eval.template /*--- description: error if `arguments` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer diff --git a/test/language/expressions/class/fields-indirect-eval-err-contains-newcall.js b/test/language/expressions/class/fields-direct-eval-err-contains-newtarget.js similarity index 74% rename from test/language/expressions/class/fields-indirect-eval-err-contains-newcall.js rename to test/language/expressions/class/fields-direct-eval-err-contains-newtarget.js index b61f06c897..ba117941ed 100644 --- a/test/language/expressions/class/fields-indirect-eval-err-contains-newcall.js +++ b/test/language/expressions/class/fields-direct-eval-err-contains-newtarget.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: -// - src/class-fields/eval-err-contains-newcall.case -// - src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template +// - src/class-fields/eval-err-contains-newtarget.case +// - src/class-fields/initializer-eval-newtarget/cls-expr-fields-eval.template /*--- -description: error if `new.call` in StatementList of eval (indirect eval) +description: error if `new.target` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -25,11 +25,10 @@ info: | var executed = false; var C = class { - x = (0, eval)('executed = true; new.call;'); + x = eval('executed = true; new.target;'); } -assert.throws(SyntaxError, function() { - new C(); -}); +var c = new C(); assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js b/test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js index af0b879bc5..7c3fa400e0 100644 --- a/test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js +++ b/test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-arguments.case -// - src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template +// - src/class-fields/initializer-eval-arguments/cls-expr-fields-indirect-eval.template /*--- description: error if `arguments` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer diff --git a/test/language/expressions/class/fields-direct-eval-err-contains-newcall.js b/test/language/expressions/class/fields-indirect-eval-err-contains-newtarget.js similarity index 77% rename from test/language/expressions/class/fields-direct-eval-err-contains-newcall.js rename to test/language/expressions/class/fields-indirect-eval-err-contains-newtarget.js index 78ba05a84f..8f84637ef7 100644 --- a/test/language/expressions/class/fields-direct-eval-err-contains-newcall.js +++ b/test/language/expressions/class/fields-indirect-eval-err-contains-newtarget.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: -// - src/class-fields/eval-err-contains-newcall.case -// - src/class-fields/initializer-eval/cls-expr-fields-eval.template +// - src/class-fields/eval-err-contains-newtarget.case +// - src/class-fields/initializer-eval-newtarget/cls-expr-fields-indirect-eval.template /*--- -description: error if `new.call` in StatementList of eval (direct eval) +description: error if `new.target` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -25,7 +25,7 @@ info: | var executed = false; var C = class { - x = eval('executed = true; new.call;'); + x = (0, eval)('executed = true; new.target;'); } assert.throws(SyntaxError, function() { diff --git a/test/language/statements/class/definition/fn-name-static-precedence.js b/test/language/statements/class/definition/fn-name-static-precedence.js index 0a3971e533..4d050b6007 100644 --- a/test/language/statements/class/definition/fn-name-static-precedence.js +++ b/test/language/statements/class/definition/fn-name-static-precedence.js @@ -37,15 +37,18 @@ class B { assert.sameValue(typeof B.name, 'function'); +var isDefined = false; class C { static get name() { + if (isDefined) { + return 'pass'; + } $ERROR('Static `get` accessor should not be executed during definition'); } } -assert.throws(Test262Error, function() { - C.name; -}); +isDefined = true; +assert.sameValue(C.name, 'pass'); class D { static set name(_) { diff --git a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js index c131866617..e357b30cfc 100644 --- a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js +++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-1.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-eval.template /*--- -description: error if `super()` in StatementList of eval (direct eval) +description: error if `super()['x']` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -23,11 +23,11 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { - x = eval('executed = true; super();'); +class C extends A { + x = eval('executed = true; super()["x"];'); } assert.throws(SyntaxError, function() { diff --git a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js index a5b22b1fe4..5ada210582 100644 --- a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js +++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-2.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-eval.template /*--- description: error if `super().x` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer @@ -14,8 +14,8 @@ info: | ... The remaining eval rules apply as outside a constructor, inside a method, and inside a function. - Additional Early Error Rules for Eval Outside Methods - These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. ScriptBody:StatementList It is a Syntax Error if StatementList Contains SuperCall. @@ -23,10 +23,10 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = eval('executed = true; super().x;'); } diff --git a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall.js index d7b840a3f9..f194242c6b 100644 --- a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall.js +++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-eval.template /*--- description: error if `super()` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer @@ -23,10 +23,10 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = eval('executed = true; super();'); } diff --git a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js index 1332accb95..0e766f52fa 100644 --- a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js +++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-1.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template +// - src/class-fields/initializer-eval-super-property/cls-decl-fields-eval.template /*--- -description: error if `super().x` in StatementList of eval (direct eval) +description: error if `super.x` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -23,15 +23,13 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = eval('executed = true; super.x;'); } -assert.throws(SyntaxError, function() { - new C(); -}); +new C(); -assert.sameValue(executed, false); +assert.sameValue(executed, true); diff --git a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js index 5771df04ea..00b98d4877 100644 --- a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js +++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-2.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template +// - src/class-fields/initializer-eval-super-property/cls-decl-fields-eval.template /*--- -description: error if `super().x` in StatementList of eval (direct eval) +description: error if `super['x']` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -23,15 +23,13 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = eval('executed = true; super["x"];'); } -assert.throws(SyntaxError, function() { - new C(); -}); +new C(); -assert.sameValue(executed, false); +assert.sameValue(executed, true); diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js index 12aade8fb4..41b1953739 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-1.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template /*--- -description: error if `super()` in StatementList of eval (indirect eval) +description: error if `super()['x']` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -23,15 +23,15 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { - x = (0, eval)('executed = true; super();'); +class C extends A { + x = (0, eval)('executed = true; super()["x"];'); } assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js index e3925d4419..7773dd40ed 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-2.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template /*--- description: error if `super().x` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -14,8 +14,8 @@ info: | ... The remaining eval rules apply as outside a constructor, inside a method, and inside a function. - Additional Early Error Rules for Eval Outside Methods - These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. ScriptBody:StatementList It is a Syntax Error if StatementList Contains SuperCall. @@ -23,10 +23,10 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = (0, eval)('executed = true; super().x;'); } @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js index 86851ea77c..16c819c58d 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template /*--- description: error if `super()` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -23,10 +23,10 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = (0, eval)('executed = true; super();'); } @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js index 7b4b88dd69..d22196ea6d 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-1.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-property/cls-decl-fields-indirect-eval.template /*--- -description: error if `super().x` in StatementList of eval (indirect eval) +description: error if `super.x` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -23,10 +23,10 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = (0, eval)('executed = true; super.x;'); } @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js index e1faa71978..f006795f1e 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-2.case -// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-property/cls-decl-fields-indirect-eval.template /*--- -description: error if `super().x` in StatementList of eval (indirect eval) +description: error if `super['x']` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -23,10 +23,10 @@ info: | ---*/ -class A = {} +class A {} var executed = false; -class C extends A = { +class C extends A { x = (0, eval)('executed = true; super["x"];'); } @@ -34,4 +34,4 @@ assert.throws(SyntaxError, function() { new C(); }); -assert.sameValue(executed, true); +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-direct-eval-err-contains-arguments.js b/test/language/statements/class/fields-direct-eval-err-contains-arguments.js index 1c231db014..173fcae061 100644 --- a/test/language/statements/class/fields-direct-eval-err-contains-arguments.js +++ b/test/language/statements/class/fields-direct-eval-err-contains-arguments.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-arguments.case -// - src/class-fields/initializer-eval/cls-decl-fields-eval.template +// - src/class-fields/initializer-eval-arguments/cls-decl-fields-eval.template /*--- description: error if `arguments` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer @@ -25,7 +25,7 @@ info: | var executed = false; -class C = { +class C { x = eval('executed = true; arguments;'); } diff --git a/test/language/statements/class/fields-indirect-eval-err-contains-newcall.js b/test/language/statements/class/fields-direct-eval-err-contains-newtarget.js similarity index 73% rename from test/language/statements/class/fields-indirect-eval-err-contains-newcall.js rename to test/language/statements/class/fields-direct-eval-err-contains-newtarget.js index af595ddd1a..4a3babfaaa 100644 --- a/test/language/statements/class/fields-indirect-eval-err-contains-newcall.js +++ b/test/language/statements/class/fields-direct-eval-err-contains-newtarget.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: -// - src/class-fields/eval-err-contains-newcall.case -// - src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template +// - src/class-fields/eval-err-contains-newtarget.case +// - src/class-fields/initializer-eval-newtarget/cls-decl-fields-eval.template /*--- -description: error if `new.call` in StatementList of eval (indirect eval) +description: error if `new.target` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -24,12 +24,11 @@ info: | var executed = false; -class C = { - x = (0, eval)('executed = true; new.call;'); +class C { + x = eval('executed = true; new.target;'); } -assert.throws(SyntaxError, function() { - new C(); -}); +var c = new C(); assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/test/language/statements/class/fields-indirect-eval-err-contains-arguments.js b/test/language/statements/class/fields-indirect-eval-err-contains-arguments.js index 49a0504560..32c2100c9e 100644 --- a/test/language/statements/class/fields-indirect-eval-err-contains-arguments.js +++ b/test/language/statements/class/fields-indirect-eval-err-contains-arguments.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-arguments.case -// - src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template +// - src/class-fields/initializer-eval-arguments/cls-decl-fields-indirect-eval.template /*--- description: error if `arguments` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -25,7 +25,7 @@ info: | var executed = false; -class C = { +class C { x = (0, eval)('executed = true; arguments;'); } diff --git a/test/language/statements/class/fields-direct-eval-err-contains-newcall.js b/test/language/statements/class/fields-indirect-eval-err-contains-newtarget.js similarity index 76% rename from test/language/statements/class/fields-direct-eval-err-contains-newcall.js rename to test/language/statements/class/fields-indirect-eval-err-contains-newtarget.js index ebdac9dfd3..c1d69b70b2 100644 --- a/test/language/statements/class/fields-direct-eval-err-contains-newcall.js +++ b/test/language/statements/class/fields-indirect-eval-err-contains-newtarget.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: -// - src/class-fields/eval-err-contains-newcall.case -// - src/class-fields/initializer-eval/cls-decl-fields-eval.template +// - src/class-fields/eval-err-contains-newtarget.case +// - src/class-fields/initializer-eval-newtarget/cls-decl-fields-indirect-eval.template /*--- -description: error if `new.call` in StatementList of eval (direct eval) +description: error if `new.target` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer features: [class-fields] flags: [generated] @@ -24,8 +24,8 @@ info: | var executed = false; -class C = { - x = eval('executed = true; new.call;'); +class C { + x = (0, eval)('executed = true; new.target;'); } assert.throws(SyntaxError, function() {