diff --git a/features.txt b/features.txt
index f3072571d75ec99506da58b7b00f19c6a12242d1..0b0b8e6774fb3b2ee68a759c55cd935787b96048 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 7cf7fd2c613058545939d472fd75f92dd36827b7..f9a6f6345dacdb7864ddb9765c30f2515366725b 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 3b8eed5bc6403b76daadbaa142e9a6784274cdfb..65ab504e41782844c12f995223d02dd135c9b7d1 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 eaabad6ebb1c00d4a5c896f2b33c307cbc6b4ee6..7be53f94272e971d1a62dddfbdc7fba3e21c8896 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 45166f164868af4f40121620b6b064da8942062a..d0c9e34491d1ae8de0331774fc3ab30b8b14c225 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 eaabad6ebb1c00d4a5c896f2b33c307cbc6b4ee6..b6370bc13e20e675892dd2a16fdd5e59020d76ff 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 7af5c8144d5277ab8138d596e8cc0369f680da7f..0d9a2d3a52bf34a8038ebe71ac310e31464cfdd3 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 21a3db5445d7300f21a2d6deccfe9c6b49d89765..7840bdb77f2a3e554e91b862deb68ffd40e5edb8 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 ed721afebe278beda7576830dbd1c43cbf52f657..f75aa39e080b427f926543b412335722f0dd57d7 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 11aa34d0dab12638dbd3f29dabd23318845e609f..0b795b6e7f783f258119fa4b92fe08cd6d5c546e 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 0000000000000000000000000000000000000000..8ef1ea4d3613f8ef969dcdbb97fcd33f4b7b183f
--- /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 0000000000000000000000000000000000000000..ee4630ca19abdcb0ad264bf718b1f8fed5467d2b
--- /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 0000000000000000000000000000000000000000..1c6b4b438b549b10f21cbd6ac9cbac9aace69810
--- /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 0000000000000000000000000000000000000000..1c8bbf59796110c7217c3db246b856080cd42456
--- /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 5870c9a69a2e17fc30a0ab41520d453ce28e1a02..8ec98eac915dd876889e506db80b3fb3f2ac564a 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 9dafcc047722967bf39f0111cf4e8caca6d05a22..0f9a97c6eb4eff0abe2d5335c8bb1b28bc440756 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 d4517cd6182c8701d261d48be212da5c3884aec3..65ab9d8dbd57fd652a1ef20e3032bbee923cbce6 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 f024c4f07b17851a23f5ebbaf0e3f993399cc9bb..83415b3df47d3d7e5f49c84882b71fcbd4c1d170 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 0000000000000000000000000000000000000000..a994b1e45c7c4f6059298810c30687e142d0f3f3
--- /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 0000000000000000000000000000000000000000..0f9a97c6eb4eff0abe2d5335c8bb1b28bc440756
--- /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 0000000000000000000000000000000000000000..b7ca546bebcf0e35455efcf4696bf1fd082314c1
--- /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 0000000000000000000000000000000000000000..83415b3df47d3d7e5f49c84882b71fcbd4c1d170
--- /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 03975ff3444085bf0af16a067ac522149d6e8df8..37cfa5c05240184c02b61ada98582fcb9ecf5b97 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 f876732792af008a02c054e2dd58dc58b38b297a..15d4cbbab8b90e8cf67799a1469950a3cb3c1264 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 cfa2f4bdd779f4b3864d90759e716f607cc5d3f0..d6f4455ad13850dc4396ffd9ca787578cae1b207 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 af1ce24fa070e33e876682c00665b23c0466a58d..4eda5161c71b5c0058b5a02b25cb0b4110c2943f 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 0a5ef69f3facbd25dbd9cc24ddff446c1ebc26f7..a5faa2bfa666c463024ab14f1de6baba59c00ca4 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 726b8a22f965abe962247717422dee7275394cbc..2b120e887c051bda5437ecda2d4466ba745e4ea9 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 6cb4e6d76cdaa66e7c16c7a606baffa242b70d10..88d6771c5907ff1e0d493b4fcbae1c34d65575e6 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 4991e904b2db5d2155e7ea744fdffc3535fb98c3..a678d0829fda5a3ce07c1ac1c45096c54c6bb0cb 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 8bbacef5b6fb128d782c9ac5b90489d018ec0764..3359f37f772e601768b8f38045ddb6c3217c659f 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 65b5a2166d9af07d4c3faa480e37133e3bf4a318..2a8008219dbb282417e6c28b4070ee55570d9db7 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 86fa84d9c0d1c521c99a2de0d99f7a4638a16644..d9a3c12a12cc08f8dae4c7b2c9052264799d0be0 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 e383332905224be03bc06894359a9bce6735391c..f49c5f74384c7b8f66c75a90c8aa4f9ab923fab7 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 d276eb785ee2d1a180eeb8eee1b760b37d168331..0954958d1bc70f9632423387f25cedee3a51d1ab 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 90cf038bc18d2781cd7121bbc239900fd8a61830..8258639dc5c0b4edf945af5ccc863bbf992b20e4 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 b61f06c89766554235483f9af96279f561814034..ba117941ed951d86ab646601ba17481d470f69ae 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 af0b879bc52dd31bf14f3e86f5244c82a4ca6338..7c3fa400e0082ca855ea773c6e4f801207472047 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 78ba05a84f011d1c2a64990ee00c086baf7647d0..8f84637ef7fbeb6bd84acd55763879359079f054 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 0a3971e53339aa4df676c810441d70b8a0512c12..4d050b6007be37dde77ff6c1642510ac54a9e5e9 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 c131866617f06929eafb34be7abf232f5c1a7774..e357b30cfce03936b36d77af7430a115372d6db0 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 a5b22b1fe47d02019c9a92a668e30ec6312341b5..5ada210582a02bc6bcbed44a41416190cab386fe 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 d7b840a3f9cda852cc235b5b6f3987e418bc340a..f194242c6bab43f6bd9378d7a96b67deb7a2e6f5 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 1332accb95dc85da9329b0039fb8c8eb208e3547..0e766f52fab4a9e01f25de65e192e22f832f17de 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 5771df04eaec9102a3df6cbe10f50a3b2d8a1d57..00b98d4877d3070814f8d639827832b096a76e0c 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 12aade8fb469146802d2e4b5c054fb11b7f633e9..41b19537398606190fa0a91bbeae215e3e6dcb0f 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 e3925d4419ae06e7e4d27b491a40fae6c0b2b5f8..7773dd40edd3ab525018158b822e1b1cd7de8d8b 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 86851ea77cf66cef68b9a4248b09f23bf8db3df9..16c819c58d3ae6e5bb5da591151ec72cb4a91845 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 7b4b88dd69d60429a836fae933a686283a2127d2..d22196ea6d63636c994e9d7e44a8950ae3059cf5 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 e1faa71978a592cbacf1bf355430bd9b6f429601..f006795f1ef0bf1f935bfacfcebb554cc5ca7404 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 1c231db014a90cfbc56fdc732225850f91ad6732..173fcae0614dd24c529e432636865485796fa869 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 af595ddd1ad37b0649665f42d6335e879e8167bc..4a3babfaaaa9de273f5c474b37b0d111e6342852 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 49a0504560209feafd83b19c91a3bb92ec41b4b2..32c2100c9ee81d2d5dba8ef815a042acd4ef4ffd 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 ebdac9dfd377c420645d545a79c04b5e69a82d9a..c1d69b70b2d7b8125e6d1fcb4bbbf5a2ab12012d 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() {