Test262 update
https://bugs.webkit.org/show_bug.cgi?id=216753

Reviewed by Darin Adler.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@267332 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JSTests/ChangeLog b/JSTests/ChangeLog
index d707330..3d076f2 100644
--- a/JSTests/ChangeLog
+++ b/JSTests/ChangeLog
@@ -1,5 +1,12 @@
 2020-09-20  Yusuke Suzuki  <ysuzuki@apple.com>
 
+        Test262 update
+        https://bugs.webkit.org/show_bug.cgi?id=216753
+
+        Reviewed by Darin Adler.
+
+2020-09-20  Yusuke Suzuki  <ysuzuki@apple.com>
+
         [JSC] Drop Options::useBigInt
         https://bugs.webkit.org/show_bug.cgi?id=216743
 
diff --git a/JSTests/test262/expectations.yaml b/JSTests/test262/expectations.yaml
index 2309725..bc46cec 100644
--- a/JSTests/test262/expectations.yaml
+++ b/JSTests/test262/expectations.yaml
@@ -1407,9 +1407,6 @@
 test/built-ins/TypedArrayConstructors/of/new-instance-using-custom-ctor.js:
   default: 'TypeError: TypedArray.of requires its this argument to subclass a TypedArray constructor (Testing with Float64Array.)'
   strict mode: 'TypeError: TypedArray.of requires its this argument to subclass a TypedArray constructor (Testing with Float64Array.)'
-test/intl402/DateTimeFormat/prototype/format/timedatestyle-en.js:
-  default: 'Test262Error: Result for date=medium and time=full Expected SameValue(«May 1, 1886 at 2:12:47 PM Coordinated Universal Time», «May 1, 1886, 2:12:47 PM Coordinated Universal Time») to be true'
-  strict mode: 'Test262Error: Result for date=medium and time=full Expected SameValue(«May 1, 1886 at 2:12:47 PM Coordinated Universal Time», «May 1, 1886, 2:12:47 PM Coordinated Universal Time») to be true'
 test/intl402/DateTimeFormat/prototype/formatRange/en-US.js:
   default: 'Test262Error: Expected SameValue(«1/3/2019 – 1/5/2019», «1/3/2019 – 1/5/2019») to be true'
   strict mode: 'Test262Error: Expected SameValue(«1/3/2019 – 1/5/2019», «1/3/2019 – 1/5/2019») to be true'
@@ -1473,9 +1470,6 @@
 test/intl402/Locale/prototype/minimize/removing-likely-subtags-first-adds-likely-subtags.js:
   default: 'Test262Error: "und".minimize() should be "en" Expected SameValue(«en-u-va-posix», «en») to be true'
   strict mode: 'Test262Error: "und".minimize() should be "en" Expected SameValue(«en-u-va-posix», «en») to be true'
-test/intl402/NumberFormat/dft-currency-mnfd-range-check-mxfd.js:
-  default: 'RangeError: maximumFractionDigits is out of range'
-  strict mode: 'RangeError: maximumFractionDigits is out of range'
 test/language/arguments-object/mapped/nonconfigurable-nonenumerable-nonwritable-descriptors-set-by-arguments.js:
   default: 'Test262Error: Expected obj[0] to have enumerable:false.'
 test/language/arguments-object/mapped/nonconfigurable-nonenumerable-nonwritable-descriptors-set-by-param.js:
@@ -1942,11 +1936,6 @@
   default: 'Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all'
 test/language/expressions/arrow-function/scope-param-rest-elem-var-open.js:
   default: 'Test262Error: Expected SameValue(«outside», «inside») to be true'
-test/language/expressions/assignment/S11.13.1_A5_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/assignment/S11.13.1_A5_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "ReferenceError: Can't find variable: x"
 test/language/expressions/assignment/S11.13.1_A7_T1.js:
   default: 'Test262Error: Expected a TypeError but got a Test262Error'
   strict mode: 'Test262Error: Expected a TypeError but got a Test262Error'
@@ -2103,6 +2092,10 @@
 test/language/expressions/assignment/fn-name-lhs-cover.js:
   default: 'Test262Error: descriptor value should be '
   strict mode: 'Test262Error: descriptor value should be '
+test/language/expressions/assignmenttargettype/direct-callexpression-arguments.js:
+  default: 'Test262: This statement should not be evaluated.'
+test/language/expressions/assignmenttargettype/parenthesized-callexpression-arguments.js:
+  default: 'Test262: This statement should not be evaluated.'
 test/language/expressions/async-generator/early-errors-expression-yield-as-function-binding-identifier.js:
   default: 'Test262: This statement should not be evaluated.'
 test/language/expressions/async-generator/eval-var-scope-syntax-err.js:
@@ -2165,6 +2158,192 @@
   default: 'Test262: This statement should not be evaluated.'
 test/language/expressions/class/class-name-ident-static.js:
   default: 'Test262: This statement should not be evaluated.'
+test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-add.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-false.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-true.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-exponetiation-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-generator-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-identifier.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-integer-separators.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-math.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-numeric-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-string-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-computed-property-name-from-yield-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-identifier.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-separators.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-math.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-string-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/cpn-fields-methods-computed-property-name-from-yield-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
 test/language/expressions/class/ident-name-method-def-break-escaped.js:
   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
@@ -2294,127 +2473,81 @@
 test/language/expressions/class/ident-name-method-def-with-escaped.js:
   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
+test/language/expressions/class/subclass-builtins/subclass-BigInt64Array.js:
+  default: "ReferenceError: Can't find variable: BigInt64Array"
+  strict mode: "ReferenceError: Can't find variable: BigInt64Array"
+test/language/expressions/class/subclass-builtins/subclass-BigUint64Array.js:
+  default: "ReferenceError: Can't find variable: BigUint64Array"
+  strict mode: "ReferenceError: Can't find variable: BigUint64Array"
+test/language/expressions/class/subclass-builtins/subclass-WeakRef.js:
+  default: 'TypeError: First argument to WeakRef should be an object'
+  strict mode: 'TypeError: First argument to WeakRef should be an object'
 test/language/expressions/compound-assignment/S11.13.2_A5.10_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.10_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.10_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.10_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.11_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.11_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.11_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.11_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.1_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.1_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.1_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.1_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.2_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.2_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.2_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.2_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.3_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.3_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.3_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.4_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.4_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.4_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.4_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.5_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.5_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.5_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.5_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.6_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.6_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.6_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.6_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.7_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.7_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.7_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.7_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.8_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.8_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.8_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.8_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A5.9_T1.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.9_T2.js:
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/compound-assignment/S11.13.2_A5.9_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.9_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/compound-assignment/S11.13.2_A7.10_T4.js:
   default: 'Test262Error: Expected true but got false'
   strict mode: 'Test262Error: Expected true but got false'
@@ -2859,9 +2992,27 @@
   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
 test/language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js:
   default: 'Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all'
+test/language/expressions/object/method-definition/escaped-get-e.js:
+  default: 'Test262: This statement should not be evaluated.'
+  strict mode: 'Test262: This statement should not be evaluated.'
+test/language/expressions/object/method-definition/escaped-get-g.js:
+  default: 'Test262: This statement should not be evaluated.'
+  strict mode: 'Test262: This statement should not be evaluated.'
+test/language/expressions/object/method-definition/escaped-get-t.js:
+  default: 'Test262: This statement should not be evaluated.'
+  strict mode: 'Test262: This statement should not be evaluated.'
 test/language/expressions/object/method-definition/escaped-get.js:
   default: 'Test262: This statement should not be evaluated.'
   strict mode: 'Test262: This statement should not be evaluated.'
+test/language/expressions/object/method-definition/escaped-set-e.js:
+  default: 'Test262: This statement should not be evaluated.'
+  strict mode: 'Test262: This statement should not be evaluated.'
+test/language/expressions/object/method-definition/escaped-set-s.js:
+  default: 'Test262: This statement should not be evaluated.'
+  strict mode: 'Test262: This statement should not be evaluated.'
+test/language/expressions/object/method-definition/escaped-set-t.js:
+  default: 'Test262: This statement should not be evaluated.'
+  strict mode: 'Test262: This statement should not be evaluated.'
 test/language/expressions/object/method-definition/escaped-set.js:
   default: 'Test262: This statement should not be evaluated.'
   strict mode: 'Test262: This statement should not be evaluated.'
@@ -2887,11 +3038,6 @@
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/postfix-decrement/S11.3.2_A5_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/postfix-decrement/S11.3.2_A5_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/postfix-decrement/S11.3.2_A6_T3.js:
   default: 'Test262Error: Expected true but got false'
   strict mode: 'Test262Error: Expected true but got false'
@@ -2901,11 +3047,6 @@
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/postfix-increment/S11.3.1_A5_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/postfix-increment/S11.3.1_A5_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/postfix-increment/S11.3.1_A5_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/postfix-increment/S11.3.1_A6_T3.js:
   default: 'Test262Error: Expected true but got false'
   strict mode: 'Test262Error: Expected true but got false'
@@ -2915,11 +3056,6 @@
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/prefix-decrement/S11.4.5_A5_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/prefix-decrement/S11.4.5_A5_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/prefix-decrement/S11.4.5_A6_T3.js:
   default: 'Test262Error: Expected true but got false'
   strict mode: 'Test262Error: Expected true but got false'
@@ -2929,11 +3065,6 @@
   default: "ReferenceError: Can't find variable: x"
 test/language/expressions/prefix-increment/S11.4.4_A5_T3.js:
   default: "ReferenceError: Can't find variable: x"
-test/language/expressions/prefix-increment/S11.4.4_A5_T4.js:
-  default: "ReferenceError: Can't find variable: x"
-test/language/expressions/prefix-increment/S11.4.4_A5_T5.js:
-  default: "ReferenceError: Can't find variable: x"
-  strict mode: "TypeError: undefined is not an object (evaluating 'delete this.x')"
 test/language/expressions/prefix-increment/S11.4.4_A6_T3.js:
   default: 'Test262Error: Expected true but got false'
   strict mode: 'Test262Error: Expected true but got false'
@@ -2997,6 +3128,198 @@
   default: 'Test262: This statement should not be evaluated.'
 test/language/statements/class/class-name-ident-static.js:
   default: 'Test262: This statement should not be evaluated.'
+test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-add.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-false.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-true.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-decimal-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-exponetiation-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-generator-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-identifier.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-integer-separators.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-math.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-numeric-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-string-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-computed-property-name-from-yield-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-identifier.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-separators.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-math.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-string-literal.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/cpn-fields-methods-computed-property-name-from-yield-expression.js:
+  default: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+  strict mode: "SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list."
+test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js:
+  default: "ReferenceError: Can't find variable: executed"
+  strict mode: "ReferenceError: Can't find variable: executed"
+test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected SameValue(«true», «false») to be true'
+  strict mode: 'Test262Error: Expected SameValue(«true», «false») to be true'
+test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js:
+  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
+  strict mode: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
 test/language/statements/class/ident-name-method-def-break-escaped.js:
   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
@@ -3126,12 +3449,21 @@
 test/language/statements/class/ident-name-method-def-with-escaped.js:
   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
+test/language/statements/class/subclass-builtins/subclass-BigInt64Array.js:
+  default: "ReferenceError: Can't find variable: BigInt64Array"
+  strict mode: "ReferenceError: Can't find variable: BigInt64Array"
+test/language/statements/class/subclass-builtins/subclass-BigUint64Array.js:
+  default: "ReferenceError: Can't find variable: BigUint64Array"
+  strict mode: "ReferenceError: Can't find variable: BigUint64Array"
+test/language/statements/class/subclass-builtins/subclass-WeakRef.js:
+  default: 'TypeError: First argument to WeakRef should be an object'
+  strict mode: 'TypeError: First argument to WeakRef should be an object'
 test/language/statements/class/subclass/builtin-objects/ArrayBuffer/regular-subclassing.js:
   default: 'Test262Error: Expected true but got false'
   strict mode: 'Test262Error: Expected true but got false'
 test/language/statements/const/dstr/ary-init-iter-get-err-array-prototype.js:
-  default: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
-  strict mode: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
+  default: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
+  strict mode: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
 test/language/statements/const/dstr/ary-ptrn-elem-id-iter-val-array-prototype.js:
   default: 'Test262Error: Expected SameValue(«3», «42») to be true'
   strict mode: 'Test262Error: Expected SameValue(«3», «42») to be true'
@@ -3233,20 +3565,20 @@
   default: 'Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all'
   strict mode: 'Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/language/statements/for/dstr/const-ary-init-iter-get-err-array-prototype.js:
-  default: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
-  strict mode: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
+  default: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
+  strict mode: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
 test/language/statements/for/dstr/const-ary-ptrn-elem-id-iter-val-array-prototype.js:
   default: 'Test262Error: Expected SameValue(«3», «42») to be true'
   strict mode: 'Test262Error: Expected SameValue(«3», «42») to be true'
 test/language/statements/for/dstr/let-ary-init-iter-get-err-array-prototype.js:
-  default: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
-  strict mode: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
+  default: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
+  strict mode: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
 test/language/statements/for/dstr/let-ary-ptrn-elem-id-iter-val-array-prototype.js:
   default: 'Test262Error: Expected SameValue(«3», «42») to be true'
   strict mode: 'Test262Error: Expected SameValue(«3», «42») to be true'
 test/language/statements/for/dstr/var-ary-init-iter-get-err-array-prototype.js:
-  default: 'Test262Error: Expected a TypeError but got a ReferenceError'
-  strict mode: 'Test262Error: Expected a TypeError but got a ReferenceError'
+  default: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
+  strict mode: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
 test/language/statements/for/dstr/var-ary-ptrn-elem-id-iter-val-array-prototype.js:
   default: 'Test262Error: Expected SameValue(«3», «42») to be true'
   strict mode: 'Test262Error: Expected SameValue(«3», «42») to be true'
@@ -3286,13 +3618,19 @@
 test/language/statements/let/block-local-closure-set-before-initialization.js:
   default: 'Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/language/statements/let/dstr/ary-init-iter-get-err-array-prototype.js:
-  default: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
-  strict mode: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
+  default: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
+  strict mode: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
 test/language/statements/let/dstr/ary-ptrn-elem-id-iter-val-array-prototype.js:
   default: 'Test262Error: Expected SameValue(«3», «42») to be true'
   strict mode: 'Test262Error: Expected SameValue(«3», «42») to be true'
 test/language/statements/let/syntax/escaped-let.js:
   default: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
+test/language/statements/switch/scope-lex-async-function.js:
+  default: Expected uncaught exception with name 'ReferenceError' but none was thrown
+test/language/statements/switch/scope-lex-async-generator.js:
+  default: Expected uncaught exception with name 'ReferenceError' but none was thrown
+test/language/statements/switch/scope-lex-generator.js:
+  default: Expected uncaught exception with name 'ReferenceError' but none was thrown
 test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-function.js:
   default: 'Test262: This statement should not be evaluated.'
 test/language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-generator.js:
@@ -3391,9 +3729,12 @@
 test/language/statements/switch/syntax/redeclaration/var-name-redeclaration-attempt-with-generator.js:
   default: 'Test262: This statement should not be evaluated.'
   strict mode: 'Test262: This statement should not be evaluated.'
+test/language/statements/try/completion-values.js:
+  default: 'Test262Error: Expected SameValue(«39», «42») to be true'
+  strict mode: 'Test262Error: Expected SameValue(«39», «42») to be true'
 test/language/statements/variable/dstr/ary-init-iter-get-err-array-prototype.js:
-  default: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
-  strict mode: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all'
+  default: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
+  strict mode: 'TypeError: Spread syntax requires ...iterable[Symbol.iterator] to be a function'
 test/language/statements/variable/dstr/ary-ptrn-elem-id-iter-val-array-prototype.js:
   default: 'Test262Error: Expected SameValue(«3», «42») to be true'
   strict mode: 'Test262Error: Expected SameValue(«3», «42») to be true'
diff --git a/JSTests/test262/harness/sta.js b/JSTests/test262/harness/sta.js
index 42dd47e..ac59d3a 100644
--- a/JSTests/test262/harness/sta.js
+++ b/JSTests/test262/harness/sta.js
@@ -18,11 +18,12 @@
   return "Test262Error: " + this.message;
 };
 
-var $ERROR;
-$ERROR = function $ERROR(message) {
-  throw new Test262Error(message);
+Test262Error.thrower = (...args) => {
+  throw new Test262Error(...args);
 };
 
+var $ERROR = Test262Error.thrower;
+
 function $DONOTEVALUATE() {
   throw "Test262: This statement should not be evaluated.";
 }
diff --git a/JSTests/test262/latest-changes-summary.txt b/JSTests/test262/latest-changes-summary.txt
index b7a2fb6b..22064c7 100644
--- a/JSTests/test262/latest-changes-summary.txt
+++ b/JSTests/test262/latest-changes-summary.txt
@@ -1,500 +1,1174 @@
-A test/annexB/built-ins/RegExp/legacy-accessors/index/prop-desc.js
-A test/annexB/built-ins/RegExp/legacy-accessors/index/this-cross-realm-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/index/this-not-regexp-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/index/this-subclass-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/input/prop-desc.js
-A test/annexB/built-ins/RegExp/legacy-accessors/input/this-cross-realm-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/input/this-not-regexp-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/input/this-subclass-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastMatch/prop-desc.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastMatch/this-cross-realm-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastMatch/this-not-regexp-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastMatch/this-subclass-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastParen/prop-desc.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastParen/this-cross-realm-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastParen/this-not-regexp-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/lastParen/this-subclass-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/leftContext/prop-desc.js
-A test/annexB/built-ins/RegExp/legacy-accessors/leftContext/this-cross-realm-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/leftContext/this-not-regexp-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/leftContext/this-subclass-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/rightContext/prop-desc.js
-A test/annexB/built-ins/RegExp/legacy-accessors/rightContext/this-cross-realm-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/rightContext/this-not-regexp-constructor.js
-A test/annexB/built-ins/RegExp/legacy-accessors/rightContext/this-subclass-constructor.js
-A test/annexB/built-ins/RegExp/prototype/compile/this-cross-realm-instance.js
-A test/annexB/built-ins/RegExp/prototype/compile/this-subclass-instance.js
-A test/built-ins/Array/length/define-own-prop-length-coercion-order-set.js
-A test/built-ins/Array/length/define-own-prop-length-coercion-order.js
-A test/built-ins/Array/length/define-own-prop-length-no-value-order.js
-A test/built-ins/Array/length/define-own-prop-length-overflow-order.js
-A test/built-ins/Array/prototype/methods-called-as-functions.js
-M test/built-ins/Atomics/notify/null-bufferdata-throws.js
-M test/built-ins/Atomics/wait/null-bufferdata-throws.js
-A test/built-ins/Date/prototype/Symbol.toPrimitive/called-as-function.js
-A test/built-ins/Date/prototype/no-date-value.js
-A test/built-ins/Date/prototype/toJSON/called-as-function.js
-A test/built-ins/Error/prototype/no-error-data.js
-A test/built-ins/Error/prototype/toString/called-as-function.js
-A test/built-ins/Promise/prototype/finally/rejected-observable-then-calls-PromiseResolve.js
-A test/built-ins/Promise/prototype/finally/resolved-observable-then-calls-PromiseResolve.js
-M test/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js
-A test/built-ins/RegExp/prototype/toString/called-as-function.js
-M test/built-ins/String/prototype/split/limit-touint32-error.js
-M test/built-ins/String/prototype/split/this-value-tostring-error.js
-A test/intl402/Segmenter/constructor/constructor/options-granularity-abrupt-throws.js
-M test/intl402/Segmenter/constructor/constructor/options-granularity-invalid.js
-A test/intl402/Segmenter/constructor/constructor/options-granularity-toString-abrupt-throws.js
-A test/intl402/Segmenter/constructor/constructor/options-localeMatcher-abrupt-throws.js
-A test/intl402/Segmenter/constructor/constructor/options-localeMatcher-toString-abrupt-throws.js
-A test/intl402/Segmenter/constructor/constructor/options-localeMatcher-valid.js
-A test/intl402/Segmenter/constructor/constructor/options-null.js
-A test/intl402/Segmenter/ctor-custom-get-prototype-poison-throws.js
-A test/intl402/Segmenter/ctor-custom-prototype.js
-A test/intl402/Segmenter/ctor-default-prototype.js
-A test/intl402/Segmenter/proto-from-ctor-realm.js
-A test/intl402/Segmenter/prototype/Symbol.toStringTag.js
-A test/intl402/Segmenter/prototype/segment/containing/branding.js
-A test/intl402/Segmenter/prototype/segment/containing/breakable-input.js
-A test/intl402/Segmenter/prototype/segment/containing/index-throws.js
-A test/intl402/Segmenter/prototype/segment/containing/iswordlike.js
-A test/intl402/Segmenter/prototype/segment/containing/length.js
-A test/intl402/Segmenter/prototype/segment/containing/name.js
-A test/intl402/Segmenter/prototype/segment/containing/one-index.js
-A test/intl402/Segmenter/prototype/segment/containing/out-of-bound-index.js
-A test/intl402/Segmenter/prototype/segment/containing/prop-desc.js
-A test/intl402/Segmenter/prototype/segment/containing/unbreakable-input.js
-A test/intl402/Segmenter/prototype/segment/containing/word-iswordlike.js
-A test/intl402/Segmenter/prototype/segment/containing/zero-index.js
-A test/intl402/Segmenter/prototype/segment/nested-next.js
-A test/intl402/Segmenter/prototype/segment/next-inside-next.js
-A test/intl402/Segmenter/prototype/segment/next-mix-with-containing.js
-A test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js
-A test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js
-A test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js
-A test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js
-A test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign.js
-A test/language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js
-A test/language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign.js
-A test/language/eval-code/direct/async-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-named-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-named-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-nameless-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-nameless-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-expr-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/async-gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/async-gen-named-func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-named-func-expr-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-named-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-named-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-gen-named-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-gen-named-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/async-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-meth-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-meth-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/async-meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-meth-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/async-meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/async-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/async-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/async-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js
-A test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments.js
-A test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js
-A test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments.js
-A test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js
-A test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js
-A test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments.js
-A test/language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js
-A test/language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js
-A test/language/expressions/assignment/target-assignment-inside-function.js
-A test/language/expressions/assignment/target-assignment.js
-M test/language/expressions/async-generator/dstr/ary-ptrn-rest-init-ary.js
-M test/language/expressions/async-generator/dstr/ary-ptrn-rest-init-id.js
-M test/language/expressions/async-generator/dstr/ary-ptrn-rest-init-obj.js
-M test/language/expressions/async-generator/dstr/ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/async-generator/dstr/ary-ptrn-rest-not-final-id.js
-M test/language/expressions/async-generator/dstr/ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-init-ary.js
-M test/language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-init-id.js
-M test/language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-init-obj.js
-M test/language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/async-generator/dstr/named-ary-ptrn-rest-init-ary.js
-M test/language/expressions/async-generator/dstr/named-ary-ptrn-rest-init-id.js
-M test/language/expressions/async-generator/dstr/named-ary-ptrn-rest-init-obj.js
-M test/language/expressions/async-generator/dstr/named-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/async-generator/dstr/named-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/async-generator/dstr/named-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-init-ary.js
-M test/language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-init-id.js
-M test/language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-init-obj.js
-M test/language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-gen-meth-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-gen-meth-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/delete/non-reference-return-true.js
-A test/language/expressions/delete/super-property-method.js
-M test/language/expressions/delete/super-property.js
-M test/language/expressions/object/dstr/async-gen-meth-ary-ptrn-rest-init-ary.js
-M test/language/expressions/object/dstr/async-gen-meth-ary-ptrn-rest-init-id.js
-M test/language/expressions/object/dstr/async-gen-meth-ary-ptrn-rest-init-obj.js
-M test/language/expressions/object/dstr/async-gen-meth-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/object/dstr/async-gen-meth-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/object/dstr/async-gen-meth-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-ary.js
-M test/language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-id.js
-M test/language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-obj.js
-M test/language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/expressions/object/method-definition/name-super-call-body.js
-M test/language/expressions/object/method-definition/name-super-call-param.js
-A test/language/expressions/super/super-reference-resolution.js
-A test/language/identifier-resolution/assign-to-global-undefined.js
-A test/language/module-code/top-level-await/new-await-parens.js
-A test/language/module-code/top-level-await/new-await-script-code.js
-A test/language/module-code/top-level-await/new-await.js
-M test/language/statements/async-generator/dstr/ary-ptrn-rest-init-ary.js
-M test/language/statements/async-generator/dstr/ary-ptrn-rest-init-id.js
-M test/language/statements/async-generator/dstr/ary-ptrn-rest-init-obj.js
-M test/language/statements/async-generator/dstr/ary-ptrn-rest-not-final-ary.js
-M test/language/statements/async-generator/dstr/ary-ptrn-rest-not-final-id.js
-M test/language/statements/async-generator/dstr/ary-ptrn-rest-not-final-obj.js
-M test/language/statements/async-generator/dstr/dflt-ary-ptrn-rest-init-ary.js
-M test/language/statements/async-generator/dstr/dflt-ary-ptrn-rest-init-id.js
-M test/language/statements/async-generator/dstr/dflt-ary-ptrn-rest-init-obj.js
-M test/language/statements/async-generator/dstr/dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/async-generator/dstr/dflt-ary-ptrn-rest-not-final-id.js
-M test/language/statements/async-generator/dstr/dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-gen-meth-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
-M test/language/statements/class/dstr/async-private-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-func-decl-dstr-array-elem-init-yield-ident-invalid.js
-M test/language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-invalid.js
-M test/language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-yield-ident-invalid.js
-M test/language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-invalid.js
-M test/language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-yield-ident-invalid.js
-M test/language/statements/for-await-of/async-func-decl-dstr-array-elem-target-simple-strict.js
-M test/language/statements/for-await-of/async-func-decl-dstr-array-elem-target-yield-invalid.js
-M test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-not-final-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-id.js
-M test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-init-obj.js
-M test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-ary.js
-M test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-id.js
-M test/language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-obj.js
\ No newline at end of file
+M harness/sta.js
+R062 test/built-ins/Array/prototype/shift/throws-with-string-receiver.js test/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js
+D test/built-ins/Error/S15.11.1.1_A1_T1.js
+D test/built-ins/Error/S15.11.1.1_A2_T1.js
+D test/built-ins/Error/S15.11.1.1_A3_T1.js
+D test/built-ins/Error/S15.11.1_A1_T1.js
+D test/built-ins/Error/S15.11.2.1_A1_T1.js
+D test/built-ins/Error/S15.11.2.1_A2_T1.js
+D test/built-ins/Error/S15.11.2.1_A3_T1.js
+D test/built-ins/Error/S15.11.3_A1_T1.js
+D test/built-ins/Error/S15.11.3_A2_T1.js
+A test/built-ins/Error/instance-prototype.js
+A test/built-ins/Error/internal-prototype.js
+A test/built-ins/Error/length.js
+A test/built-ins/Error/name.js
+A test/built-ins/Error/the-initial-value-of-errorprototypemessage-is-the-empty-string.js
+A test/built-ins/Error/tostring-1.js
+A test/built-ins/Error/tostring-2.js
+M test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js
+A test/built-ins/Map/iterator-close-failure-after-set-failure.js
+A test/built-ins/Number/prototype/toPrecision/precision-cannot-be-coerced-to-a-number-in-range.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-default-radix.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-1.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-10.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-11.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-12.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-13.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-14.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-15.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-16.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-17.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-18.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-19.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-2.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-20.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-21.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-22.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-23.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-24.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-25.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-26.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-27.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-28.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-29.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-3.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-30.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-31.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-32.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-33.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-34.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-35.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-36.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-37.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-4.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-5.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-6.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-7.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-8.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-9.js
+A test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-poisoned.js
+A test/built-ins/Object/assign/assignment-to-readonly-property-of-target-must-throw-a-typeerror-exception.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-bigint.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-false.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-null.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-number.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-string.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-symbol.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-true.js
+A test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-undefined.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-bigint.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-false.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-null.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-number.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-string.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-symbol.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-true.js
+A test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-undefined.js
+M test/built-ins/Promise/all/call-resolve-element-after-return.js
+M test/built-ins/Promise/all/call-resolve-element-items.js
+M test/built-ins/Promise/all/call-resolve-element.js
+M test/built-ins/Promise/all/new-resolve-function.js
+M test/built-ins/Promise/all/resolve-before-loop-exit-from-same.js
+M test/built-ins/Promise/all/resolve-before-loop-exit.js
+M test/built-ins/Promise/all/resolve-from-same-thenable.js
+M test/built-ins/Promise/all/same-reject-function.js
+M test/built-ins/Promise/allSettled/call-resolve-element-after-return.js
+M test/built-ins/Promise/allSettled/call-resolve-element-items.js
+M test/built-ins/Promise/allSettled/call-resolve-element.js
+M test/built-ins/Promise/allSettled/new-reject-function.js
+M test/built-ins/Promise/allSettled/new-resolve-function.js
+M test/built-ins/Promise/allSettled/resolve-before-loop-exit-from-same.js
+M test/built-ins/Promise/allSettled/resolve-before-loop-exit.js
+M test/built-ins/Promise/allSettled/resolve-from-same-thenable.js
+M test/built-ins/Promise/any/call-reject-element-after-return.js
+M test/built-ins/Promise/any/call-reject-element-items.js
+M test/built-ins/Promise/any/new-reject-function.js
+M test/built-ins/Promise/any/resolve-before-loop-exit-from-same.js
+M test/built-ins/Promise/any/resolve-before-loop-exit.js
+M test/built-ins/Promise/any/resolve-from-same-thenable.js
+M test/built-ins/Promise/race/resolve-from-same-thenable.js
+M test/built-ins/Promise/race/same-reject-function.js
+M test/built-ins/Promise/race/same-resolve-function.js
+M test/built-ins/Promise/resolve/resolve-from-promise-capability.js
+M test/built-ins/parseInt/15.1.2.2-2-1.js
+M test/built-ins/parseInt/S15.1.2.2_A1_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A1_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A1_T3.js
+M test/built-ins/parseInt/S15.1.2.2_A1_T4.js
+M test/built-ins/parseInt/S15.1.2.2_A1_T5.js
+M test/built-ins/parseInt/S15.1.2.2_A1_T6.js
+M test/built-ins/parseInt/S15.1.2.2_A1_T7.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T10.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T10_U180E.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T3.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T4.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T5.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T6.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T7.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T8.js
+M test/built-ins/parseInt/S15.1.2.2_A2_T9.js
+M test/built-ins/parseInt/S15.1.2.2_A3.1_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A3.1_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A3.1_T3.js
+M test/built-ins/parseInt/S15.1.2.2_A3.1_T4.js
+M test/built-ins/parseInt/S15.1.2.2_A3.1_T5.js
+M test/built-ins/parseInt/S15.1.2.2_A3.1_T6.js
+M test/built-ins/parseInt/S15.1.2.2_A3.1_T7.js
+M test/built-ins/parseInt/S15.1.2.2_A3.2_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A3.2_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A3.2_T3.js
+M test/built-ins/parseInt/S15.1.2.2_A4.1_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A4.1_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A4.2_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A4.2_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A5.1_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A5.2_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A5.2_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A6.1_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A6.1_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A6.1_T3.js
+M test/built-ins/parseInt/S15.1.2.2_A6.1_T4.js
+M test/built-ins/parseInt/S15.1.2.2_A6.1_T5.js
+M test/built-ins/parseInt/S15.1.2.2_A6.1_T6.js
+M test/built-ins/parseInt/S15.1.2.2_A7.1_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A7.1_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A7.2_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A7.2_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A7.2_T3.js
+M test/built-ins/parseInt/S15.1.2.2_A7.3_T1.js
+M test/built-ins/parseInt/S15.1.2.2_A7.3_T2.js
+M test/built-ins/parseInt/S15.1.2.2_A7.3_T3.js
+M test/built-ins/parseInt/S15.1.2.2_A9.1.js
+M test/built-ins/parseInt/S15.1.2.2_A9.2.js
+M test/built-ins/parseInt/S15.1.2.2_A9.3.js
+M test/built-ins/parseInt/S15.1.2.2_A9.4.js
+M test/built-ins/parseInt/S15.1.2.2_A9.5.js
+M test/built-ins/parseInt/S15.1.2.2_A9.6.js
+M test/built-ins/parseInt/name.js
+R061 test/built-ins/parseInt/S15.1.2.2_A9.7.js test/built-ins/parseInt/not-a-constructor.js
+M test/harness/assert-false.js
+M test/harness/assert-notsamevalue-nan.js
+M test/harness/assert-notsamevalue-tostring.js
+M test/harness/assert-obj.js
+M test/harness/assert-samevalue-objects.js
+M test/harness/assert-samevalue-tostring.js
+M test/harness/assert-samevalue-zeros.js
+M test/harness/assert-throws-incorrect-ctor.js
+M test/harness/assert-throws-no-arg.js
+M test/harness/assert-throws-no-error.js
+M test/harness/assert-throws-null-fn.js
+M test/harness/assert-throws-null.js
+M test/harness/assert-throws-primitive.js
+M test/harness/assert-throws-single-arg.js
+M test/harness/assert-tostring.js
+M test/harness/assertRelativeDateMs.js
+M test/harness/compare-array-different-elements.js
+M test/harness/compare-array-different-length.js
+M test/harness/compare-array-empty.js
+M test/harness/compare-array-same-elements-different-order.js
+M test/harness/compare-array-same-elements-same-order.js
+M test/harness/compare-array-sparse.js
+M test/harness/detachArrayBuffer-host-detachArrayBuffer.js
+M test/harness/detachArrayBuffer.js
+M test/harness/nativeFunctionMatcher.js
+M test/harness/promiseHelper.js
+M test/harness/propertyhelper-verifyconfigurable-not-configurable.js
+M test/harness/propertyhelper-verifyenumerable-not-enumerable-symbol.js
+M test/harness/propertyhelper-verifyenumerable-not-enumerable.js
+M test/harness/propertyhelper-verifynotconfigurable-configurable.js
+M test/harness/propertyhelper-verifynotenumerable-enumerable.js
+M test/harness/propertyhelper-verifynotwritable-not-writable-strict.js
+M test/harness/propertyhelper-verifynotwritable-writable.js
+M test/harness/propertyhelper-verifywritable-not-writable.js
+M test/harness/propertyhelper-verifywritable-writable.js
+M test/harness/sta-error.js
+M test/harness/testTypedArray-conversions-call-error.js
+M test/harness/verifyProperty-value-error.js
+M test/intl402/DateTimeFormat/prototype/format/timedatestyle-en.js
+M test/intl402/DateTimeFormat/this-value-ignored.js
+M test/intl402/NumberFormat/dft-currency-mnfd-range-check-mxfd.js
+M test/intl402/NumberFormat/this-value-ignored.js
+M test/intl402/Segmenter/constructor/constructor/options-granularity-abrupt-throws.js
+M test/intl402/Segmenter/constructor/constructor/options-granularity-toString-abrupt-throws.js
+M test/language/comments/S7.4_A1_T1.js
+M test/language/comments/S7.4_A2_T1.js
+D test/language/expressions/assignment/S11.13.1_A5_T4.js
+D test/language/expressions/assignment/S11.13.1_A5_T5.js
+A test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js
+A test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js
+A test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-arrowfunction-0.js
+A test/language/expressions/assignmenttargettype/direct-arrowfunction-1.js
+A test/language/expressions/assignmenttargettype/direct-arrowfunction-2.js
+A test/language/expressions/assignmenttargettype/direct-arrowfunction-3.js
+A test/language/expressions/assignmenttargettype/direct-arrowfunction-4.js
+A test/language/expressions/assignmenttargettype/direct-arrowfunction-5.js
+A test/language/expressions/assignmenttargettype/direct-arrowfunction-6.js
+A test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-0.js
+A test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-1.js
+A test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-2.js
+A test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-3.js
+A test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-4.js
+A test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-5.js
+A test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-6.js
+A test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-callexpression-arguments.js
+A test/language/expressions/assignmenttargettype/direct-callexpression-templateliteral.js
+A test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-identifierreference-arguments-strict.js
+A test/language/expressions/assignmenttargettype/direct-identifierreference-eval-strict.js
+A test/language/expressions/assignmenttargettype/direct-import.meta.js
+A test/language/expressions/assignmenttargettype/direct-importcall.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-minus-minus.js
+A test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-plus-plus.js
+A test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-memberexpression-templateliteral.js
+A test/language/expressions/assignmenttargettype/direct-minus-minus-unaryexpression.js
+A test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js
+A test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js
+A test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js
+A test/language/expressions/assignmenttargettype/direct-new-memberexpression-arguments.js
+A test/language/expressions/assignmenttargettype/direct-new-newexpression.js
+A test/language/expressions/assignmenttargettype/direct-optionalexpression.js
+A test/language/expressions/assignmenttargettype/direct-plus-plus-unaryexpression.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncfunctionexpression.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncgeneratorexpression.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-classexpression.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-functionexpression.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-generatorexpression.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-boolean.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-null.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-numeric.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-string.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-objectliteral.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-regularexpressionliteral.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-templateliteral.js
+A test/language/expressions/assignmenttargettype/direct-primaryexpression-this.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-delete-unaryexpression.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-1.js
+A test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-2.js
+A test/language/expressions/assignmenttargettype/direct-yieldexpression-0.js
+A test/language/expressions/assignmenttargettype/direct-yieldexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-3.js
+A test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-4.js
+A test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-5.js
+A test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-6.js
+A test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-3.js
+A test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-4.js
+A test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-5.js
+A test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-6.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-callexpression-arguments.js
+A test/language/expressions/assignmenttargettype/parenthesized-callexpression-templateliteral.js
+A test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-identifierreference-arguments-strict.js
+A test/language/expressions/assignmenttargettype/parenthesized-identifierreference-eval-strict.js
+A test/language/expressions/assignmenttargettype/parenthesized-import.meta.js
+A test/language/expressions/assignmenttargettype/parenthesized-importcall.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-minus-minus.js
+A test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-plus-plus.js
+A test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-memberexpression-templateliteral.js
+A test/language/expressions/assignmenttargettype/parenthesized-minus-minus-unaryexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js
+A test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js
+A test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js
+A test/language/expressions/assignmenttargettype/parenthesized-new-memberexpression-arguments.js
+A test/language/expressions/assignmenttargettype/parenthesized-new-newexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-optionalexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-plus-plus-unaryexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncfunctionexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncgeneratorexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-classexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-functionexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-generatorexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-boolean.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-null.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-numeric.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-string.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-objectliteral.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-regularexpressionliteral.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-templateliteral.js
+A test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-this.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-delete-unaryexpression.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-1.js
+A test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-2.js
+A test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-0.js
+A test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-1.js
+A test/language/expressions/assignmenttargettype/simple-basic-identifierreference-arguments.js
+A test/language/expressions/assignmenttargettype/simple-basic-identifierreference-await.js
+A test/language/expressions/assignmenttargettype/simple-basic-identifierreference-eval.js
+A test/language/expressions/assignmenttargettype/simple-basic-identifierreference-yield.js
+A test/language/expressions/assignmenttargettype/simple-complex-callexpression-expression.js
+A test/language/expressions/assignmenttargettype/simple-complex-callexpression.identifiername.js
+A test/language/expressions/assignmenttargettype/simple-complex-memberexpression-expression.js
+A test/language/expressions/assignmenttargettype/simple-complex-memberexpression.identifiername.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-add.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-false.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-true.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-literal.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-coalesce.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-and.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-or.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-function-declaration.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-function-expression.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-identifier.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-separators.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-math.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-numeric-literal.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-string-literal.js
+A test/language/expressions/class/cpn-accessors-computed-property-name-from-yield-expression.js
+A test/language/expressions/class/cpn-computed-property-name-from-additive-expression-add.js
+A test/language/expressions/class/cpn-computed-property-name-from-additive-expression-subtract.js
+A test/language/expressions/class/cpn-computed-property-name-from-arrow-function-expression.js
+A test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-assignment.js
+A test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/expressions/class/cpn-computed-property-name-from-async-arrow-function-expression.js
+A test/language/expressions/class/cpn-computed-property-name-from-condition-expression-false.js
+A test/language/expressions/class/cpn-computed-property-name-from-condition-expression-true.js
+A test/language/expressions/class/cpn-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/expressions/class/cpn-computed-property-name-from-decimal-literal.js
+A test/language/expressions/class/cpn-computed-property-name-from-exponetiation-expression.js
+A test/language/expressions/class/cpn-computed-property-name-from-expression-coalesce.js
+A test/language/expressions/class/cpn-computed-property-name-from-expression-logical-and.js
+A test/language/expressions/class/cpn-computed-property-name-from-expression-logical-or.js
+A test/language/expressions/class/cpn-computed-property-name-from-function-declaration.js
+A test/language/expressions/class/cpn-computed-property-name-from-function-expression.js
+A test/language/expressions/class/cpn-computed-property-name-from-generator-function-declaration.js
+A test/language/expressions/class/cpn-computed-property-name-from-identifier.js
+A test/language/expressions/class/cpn-computed-property-name-from-integer-e-notational-literal.js
+A test/language/expressions/class/cpn-computed-property-name-from-integer-separators.js
+A test/language/expressions/class/cpn-computed-property-name-from-math.js
+A test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-div.js
+A test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/expressions/class/cpn-computed-property-name-from-numeric-literal.js
+A test/language/expressions/class/cpn-computed-property-name-from-string-literal.js
+A test/language/expressions/class/cpn-computed-property-name-from-yield-expression.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-add.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-arrow-function-expression.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-false.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-true.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-literal.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-exponetiation-expression.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-expression-coalesce.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-and.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-or.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-function-declaration.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-function-expression.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-generator-function-declaration.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-identifier.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-integer-separators.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-math.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-numeric-literal.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-string-literal.js
+A test/language/expressions/class/cpn-fields-computed-property-name-from-yield-expression.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-declaration.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-expression.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-identifier.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-separators.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-math.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-string-literal.js
+A test/language/expressions/class/cpn-fields-methods-computed-property-name-from-yield-expression.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-equality-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js
+A test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js
+A test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js
+A test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js
+A test/language/expressions/class/subclass-builtins/subclass-AggregateError.js
+A test/language/expressions/class/subclass-builtins/subclass-Array.js
+A test/language/expressions/class/subclass-builtins/subclass-ArrayBuffer.js
+A test/language/expressions/class/subclass-builtins/subclass-BigInt64Array.js
+A test/language/expressions/class/subclass-builtins/subclass-BigUint64Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Boolean.js
+A test/language/expressions/class/subclass-builtins/subclass-DataView.js
+A test/language/expressions/class/subclass-builtins/subclass-Date.js
+A test/language/expressions/class/subclass-builtins/subclass-Error.js
+A test/language/expressions/class/subclass-builtins/subclass-EvalError.js
+A test/language/expressions/class/subclass-builtins/subclass-Float32Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Float64Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Function.js
+A test/language/expressions/class/subclass-builtins/subclass-Int16Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Int32Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Int8Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Map.js
+A test/language/expressions/class/subclass-builtins/subclass-Number.js
+A test/language/expressions/class/subclass-builtins/subclass-Object.js
+A test/language/expressions/class/subclass-builtins/subclass-Promise.js
+A test/language/expressions/class/subclass-builtins/subclass-RangeError.js
+A test/language/expressions/class/subclass-builtins/subclass-ReferenceError.js
+A test/language/expressions/class/subclass-builtins/subclass-RegExp.js
+A test/language/expressions/class/subclass-builtins/subclass-Set.js
+A test/language/expressions/class/subclass-builtins/subclass-SharedArrayBuffer.js
+A test/language/expressions/class/subclass-builtins/subclass-String.js
+A test/language/expressions/class/subclass-builtins/subclass-SyntaxError.js
+A test/language/expressions/class/subclass-builtins/subclass-TypeError.js
+A test/language/expressions/class/subclass-builtins/subclass-URIError.js
+A test/language/expressions/class/subclass-builtins/subclass-Uint16Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Uint32Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Uint8Array.js
+A test/language/expressions/class/subclass-builtins/subclass-Uint8ClampedArray.js
+A test/language/expressions/class/subclass-builtins/subclass-WeakMap.js
+A test/language/expressions/class/subclass-builtins/subclass-WeakRef.js
+A test/language/expressions/class/subclass-builtins/subclass-WeakSet.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.10_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.11_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.1_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.2_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.3_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.4_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.5_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.6_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.7_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.8_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.9_T4.js
+D test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js
+A test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js
+M test/language/expressions/delete/11.4.1-0-1.js
+M test/language/expressions/delete/11.4.1-2-2.js
+M test/language/expressions/delete/11.4.1-3-1.js
+M test/language/expressions/delete/11.4.1-3-2.js
+M test/language/expressions/delete/11.4.1-3-3.js
+M test/language/expressions/delete/11.4.1-4-a-1-s.js
+M test/language/expressions/delete/11.4.1-4-a-2-s.js
+M test/language/expressions/delete/11.4.1-4-a-3-s.js
+M test/language/expressions/delete/11.4.1-4-a-4-s.js
+M test/language/expressions/delete/11.4.1-4.a-1.js
+M test/language/expressions/delete/11.4.1-4.a-10.js
+M test/language/expressions/delete/11.4.1-4.a-11.js
+M test/language/expressions/delete/11.4.1-4.a-12.js
+M test/language/expressions/delete/11.4.1-4.a-13.js
+M test/language/expressions/delete/11.4.1-4.a-14.js
+M test/language/expressions/delete/11.4.1-4.a-15.js
+M test/language/expressions/delete/11.4.1-4.a-16.js
+M test/language/expressions/delete/11.4.1-4.a-17.js
+M test/language/expressions/delete/11.4.1-4.a-2.js
+M test/language/expressions/delete/11.4.1-4.a-3-s.js
+M test/language/expressions/delete/11.4.1-4.a-3.js
+M test/language/expressions/delete/11.4.1-4.a-4.js
+M test/language/expressions/delete/11.4.1-4.a-5.js
+M test/language/expressions/delete/11.4.1-4.a-6.js
+M test/language/expressions/delete/11.4.1-4.a-7.js
+M test/language/expressions/delete/11.4.1-4.a-8-s.js
+M test/language/expressions/delete/11.4.1-4.a-8.js
+M test/language/expressions/delete/11.4.1-4.a-9-s.js
+M test/language/expressions/delete/11.4.1-4.a-9.js
+M test/language/expressions/delete/11.4.1-5-1.js
+M test/language/expressions/delete/11.4.1-5-2.js
+M test/language/expressions/delete/11.4.1-5-3.js
+M test/language/expressions/delete/11.4.1-5-a-27-s.js
+M test/language/expressions/delete/11.4.1-5-a-28-s.js
+M test/language/expressions/delete/11.4.4-4.a-3-s.js
+M test/language/expressions/delete/S11.4.1_A2.1.js
+M test/language/expressions/delete/S11.4.1_A2.2_T1.js
+M test/language/expressions/delete/S11.4.1_A2.2_T2.js
+M test/language/expressions/delete/S11.4.1_A2.2_T3.js
+M test/language/expressions/delete/S11.4.1_A3.1.js
+M test/language/expressions/delete/S11.4.1_A3.2_T1.js
+M test/language/expressions/delete/S11.4.1_A3.2_T2.js
+M test/language/expressions/delete/S11.4.1_A3.2_T3.js
+M test/language/expressions/delete/S11.4.1_A3.3_T1.js
+M test/language/expressions/delete/S11.4.1_A3.3_T2.js
+M test/language/expressions/delete/S11.4.1_A3.3_T3.js
+M test/language/expressions/delete/S11.4.1_A3.3_T4.js
+M test/language/expressions/delete/S11.4.1_A3.3_T5.js
+M test/language/expressions/delete/S11.4.1_A3.3_T6.js
+M test/language/expressions/delete/S11.4.1_A4.js
+M test/language/expressions/delete/S11.4.1_A5.js
+M test/language/expressions/delete/S8.12.7_A1.js
+M test/language/expressions/delete/S8.12.7_A2_T1.js
+M test/language/expressions/delete/S8.12.7_A2_T2.js
+M test/language/expressions/delete/S8.12.7_A3.js
+A test/language/expressions/delete/delete-unresolvable-base-object-reference-throws-typeerror.js
+M test/language/expressions/delete/super-property-method.js
+A test/language/expressions/object/cpn-computed-property-name-from-additive-expression-add.js
+A test/language/expressions/object/cpn-computed-property-name-from-additive-expression-subtract.js
+A test/language/expressions/object/cpn-computed-property-name-from-arrow-function-expression.js
+A test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-assignment.js
+A test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/expressions/object/cpn-computed-property-name-from-async-arrow-function-expression.js
+A test/language/expressions/object/cpn-computed-property-name-from-condition-expression-false.js
+A test/language/expressions/object/cpn-computed-property-name-from-condition-expression-true.js
+A test/language/expressions/object/cpn-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/expressions/object/cpn-computed-property-name-from-decimal-literal.js
+A test/language/expressions/object/cpn-computed-property-name-from-exponetiation-expression.js
+A test/language/expressions/object/cpn-computed-property-name-from-expression-coalesce.js
+A test/language/expressions/object/cpn-computed-property-name-from-expression-logical-and.js
+A test/language/expressions/object/cpn-computed-property-name-from-expression-logical-or.js
+A test/language/expressions/object/cpn-computed-property-name-from-function-declaration.js
+A test/language/expressions/object/cpn-computed-property-name-from-function-expression.js
+A test/language/expressions/object/cpn-computed-property-name-from-generator-function-declaration.js
+A test/language/expressions/object/cpn-computed-property-name-from-identifier.js
+A test/language/expressions/object/cpn-computed-property-name-from-integer-e-notational-literal.js
+A test/language/expressions/object/cpn-computed-property-name-from-integer-separators.js
+A test/language/expressions/object/cpn-computed-property-name-from-math.js
+A test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-div.js
+A test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/expressions/object/cpn-computed-property-name-from-numeric-literal.js
+A test/language/expressions/object/cpn-computed-property-name-from-string-literal.js
+A test/language/expressions/object/cpn-computed-property-name-from-yield-expression.js
+A test/language/expressions/object/identifier-shorthand-await-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-implements-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-interface-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-let-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-package-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-private-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-protected-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-public-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-static-invalid-strict-mode.js
+A test/language/expressions/object/identifier-shorthand-yield-invalid-strict-mode.js
+A test/language/expressions/object/method-definition/computed-property-name-yield-expression.js
+A test/language/expressions/object/method-definition/escaped-get-e.js
+A test/language/expressions/object/method-definition/escaped-get-g.js
+A test/language/expressions/object/method-definition/escaped-get-t.js
+M test/language/expressions/object/method-definition/escaped-get.js
+A test/language/expressions/object/method-definition/escaped-set-e.js
+A test/language/expressions/object/method-definition/escaped-set-s.js
+A test/language/expressions/object/method-definition/escaped-set-t.js
+M test/language/expressions/object/method-definition/escaped-set.js
+D test/language/expressions/postfix-decrement/S11.3.2_A5_T4.js
+D test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js
+A test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js
+A test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js
+D test/language/expressions/postfix-increment/S11.3.1_A5_T4.js
+D test/language/expressions/postfix-increment/S11.3.1_A5_T5.js
+A test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js
+A test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js
+D test/language/expressions/prefix-decrement/S11.4.5_A5_T4.js
+D test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js
+A test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js
+A test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js
+D test/language/expressions/prefix-increment/S11.4.4_A5_T4.js
+D test/language/expressions/prefix-increment/S11.4.4_A5_T5.js
+A test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js
+A test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-add.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-false.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-true.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-literal.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-expression-coalesce.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-and.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-or.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-function-declaration.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-function-expression.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-identifier.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-integer-separators.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-math.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-numeric-literal.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-string-literal.js
+A test/language/statements/class/cpn-accessors-computed-property-name-from-yield-expression.js
+A test/language/statements/class/cpn-computed-property-name-from-additive-expression-add.js
+A test/language/statements/class/cpn-computed-property-name-from-additive-expression-subtract.js
+A test/language/statements/class/cpn-computed-property-name-from-arrow-function-expression.js
+A test/language/statements/class/cpn-computed-property-name-from-assignment-expression-assignment.js
+A test/language/statements/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/statements/class/cpn-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/statements/class/cpn-computed-property-name-from-async-arrow-function-expression.js
+A test/language/statements/class/cpn-computed-property-name-from-condition-expression-false.js
+A test/language/statements/class/cpn-computed-property-name-from-condition-expression-true.js
+A test/language/statements/class/cpn-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/statements/class/cpn-computed-property-name-from-decimal-literal.js
+A test/language/statements/class/cpn-computed-property-name-from-exponetiation-expression.js
+A test/language/statements/class/cpn-computed-property-name-from-expression-coalesce.js
+A test/language/statements/class/cpn-computed-property-name-from-expression-logical-and.js
+A test/language/statements/class/cpn-computed-property-name-from-expression-logical-or.js
+A test/language/statements/class/cpn-computed-property-name-from-function-declaration.js
+A test/language/statements/class/cpn-computed-property-name-from-function-expression.js
+A test/language/statements/class/cpn-computed-property-name-from-generator-function-declaration.js
+A test/language/statements/class/cpn-computed-property-name-from-identifier.js
+A test/language/statements/class/cpn-computed-property-name-from-integer-e-notational-literal.js
+A test/language/statements/class/cpn-computed-property-name-from-integer-separators.js
+A test/language/statements/class/cpn-computed-property-name-from-math.js
+A test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-div.js
+A test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/statements/class/cpn-computed-property-name-from-numeric-literal.js
+A test/language/statements/class/cpn-computed-property-name-from-string-literal.js
+A test/language/statements/class/cpn-computed-property-name-from-yield-expression.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-add.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-arrow-function-expression.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-false.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-true.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-decimal-literal.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-exponetiation-expression.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-expression-coalesce.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-and.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-or.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-function-declaration.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-function-expression.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-generator-function-declaration.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-identifier.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-integer-separators.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-math.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-numeric-literal.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-string-literal.js
+A test/language/statements/class/cpn-fields-computed-property-name-from-yield-expression.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-declaration.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-expression.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-identifier.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-separators.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-math.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-string-literal.js
+A test/language/statements/class/cpn-fields-methods-computed-property-name-from-yield-expression.js
+A test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js
+A test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js
+A test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js
+A test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js
+A test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js
+A test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js
+A test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js
+A test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-equality-init-err-contains-super.js
+A test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js
+A test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js
+A test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js
+A test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js
+A test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js
+A test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js
+A test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js
+A test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js
+A test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js
+A test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js
+A test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js
+A test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js
+A test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js
+A test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js
+A test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js
+A test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js
+A test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js
+A test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-static-private-init-err-contains-super.js
+A test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js
+A test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js
+A test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-ternary-init-err-contains-super.js
+A test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js
+A test/language/statements/class/elements/nested-typeof-init-err-contains-super.js
+A test/language/statements/class/subclass-builtins/subclass-AggregateError.js
+A test/language/statements/class/subclass-builtins/subclass-Array.js
+A test/language/statements/class/subclass-builtins/subclass-ArrayBuffer.js
+A test/language/statements/class/subclass-builtins/subclass-BigInt64Array.js
+A test/language/statements/class/subclass-builtins/subclass-BigUint64Array.js
+A test/language/statements/class/subclass-builtins/subclass-Boolean.js
+A test/language/statements/class/subclass-builtins/subclass-DataView.js
+A test/language/statements/class/subclass-builtins/subclass-Date.js
+A test/language/statements/class/subclass-builtins/subclass-Error.js
+A test/language/statements/class/subclass-builtins/subclass-EvalError.js
+A test/language/statements/class/subclass-builtins/subclass-Float32Array.js
+A test/language/statements/class/subclass-builtins/subclass-Float64Array.js
+A test/language/statements/class/subclass-builtins/subclass-Function.js
+A test/language/statements/class/subclass-builtins/subclass-Int16Array.js
+A test/language/statements/class/subclass-builtins/subclass-Int32Array.js
+A test/language/statements/class/subclass-builtins/subclass-Int8Array.js
+A test/language/statements/class/subclass-builtins/subclass-Map.js
+A test/language/statements/class/subclass-builtins/subclass-Number.js
+A test/language/statements/class/subclass-builtins/subclass-Object.js
+A test/language/statements/class/subclass-builtins/subclass-Promise.js
+A test/language/statements/class/subclass-builtins/subclass-RangeError.js
+A test/language/statements/class/subclass-builtins/subclass-ReferenceError.js
+A test/language/statements/class/subclass-builtins/subclass-RegExp.js
+A test/language/statements/class/subclass-builtins/subclass-Set.js
+A test/language/statements/class/subclass-builtins/subclass-SharedArrayBuffer.js
+A test/language/statements/class/subclass-builtins/subclass-String.js
+A test/language/statements/class/subclass-builtins/subclass-SyntaxError.js
+A test/language/statements/class/subclass-builtins/subclass-TypeError.js
+A test/language/statements/class/subclass-builtins/subclass-URIError.js
+A test/language/statements/class/subclass-builtins/subclass-Uint16Array.js
+A test/language/statements/class/subclass-builtins/subclass-Uint32Array.js
+A test/language/statements/class/subclass-builtins/subclass-Uint8Array.js
+A test/language/statements/class/subclass-builtins/subclass-Uint8ClampedArray.js
+A test/language/statements/class/subclass-builtins/subclass-WeakMap.js
+A test/language/statements/class/subclass-builtins/subclass-WeakRef.js
+A test/language/statements/class/subclass-builtins/subclass-WeakSet.js
+A test/language/statements/switch/scope-lex-async-function.js
+A test/language/statements/switch/scope-lex-async-generator.js
+A test/language/statements/switch/scope-lex-class.js
+A test/language/statements/switch/scope-lex-const.js
+A test/language/statements/switch/scope-lex-generator.js
+A test/language/statements/switch/scope-lex-let.js
+A test/language/statements/try/completion-values-fn-finally-abrupt.js
+A test/language/statements/try/completion-values-fn-finally-normal.js
+A test/language/statements/try/completion-values-fn-finally-return.js
+A test/language/statements/try/completion-values.js
\ No newline at end of file
diff --git a/JSTests/test262/test/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js b/JSTests/test262/test/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js
new file mode 100644
index 0000000..d88ba64
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Array/prototype/shift/throws-when-this-value-length-is-writable-false.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2020 Sony Interactive Entertainment Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-array.prototype.shift
+description: >
+  Array#shift throws TypeError if this value's "length" property was defined with [[Writable]]: false.
+info: |
+  Array.prototype.shift ( )
+  ...
+  3. If len is zero, then
+    a. Perform ? Set(O, "length", 0, true).
+    ...
+  8. Perform ? Set(O, "length", len - 1, true).
+
+  Set ( O, P, V, Throw )
+  ...
+  4. Let success be ? O.[[Set]](P, V, O).
+  5. If success is false and Throw is true, throw a TypeError exception.
+---*/
+
+assert.throws(TypeError, () => {
+  Array.prototype.shift.call('');
+}, "Array.prototype.shift.call('')");
+
+assert.throws(TypeError, () => {
+  Array.prototype.shift.call('abc');
+}, "Array.prototype.shift.call('abc')");
+
+assert.throws(TypeError, () => {
+  Array.prototype.shift.call(function() {});
+}, "Array.prototype.shift.call(function() {})");
+
+assert.throws(TypeError, () => {
+  Array.prototype.shift.call(Object.defineProperty({}, 'length', {writable: false}));
+}, "Array.prototype.shift.call(Object.defineProperty({}, 'length', {writable: false}))");
diff --git a/JSTests/test262/test/built-ins/Array/prototype/shift/throws-with-string-receiver.js b/JSTests/test262/test/built-ins/Array/prototype/shift/throws-with-string-receiver.js
deleted file mode 100644
index da4f7c4..0000000
--- a/JSTests/test262/test/built-ins/Array/prototype/shift/throws-with-string-receiver.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (C) 2020 Sony Interactive Entertainment Inc. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-array.prototype.shift
-description: >
-  Array#shift throws TypeError upon attempting to modify a string
-info: |
-  Array.prototype.shift ( )
-  ...
-  3. If len is zero, then
-    a. Perform ? Set(O, "length", 0, true).
-    ...
-  8. Perform ? Set(O, "length", len - 1, true).
-
-  Set ( O, P, V, Throw )
-  ...
-  4. Let success be ? O.[[Set]](P, V, O).
-  5. If success is false and Throw is true, throw a TypeError exception.
----*/
-
-assert.throws(TypeError, () => {
-  Array.prototype.shift.call('');
-}, "Array.prototype.shift.call('')");
-
-assert.throws(TypeError, () => {
-  Array.prototype.shift.call('abc');
-}, "Array.prototype.shift.call('abc')");
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.1.1_A1_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.1.1_A1_T1.js
deleted file mode 100644
index a30502f..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.1.1_A1_T1.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: |
-    If the argument "message" is not undefined, the message property of the newly constructed object is
-    set to ToString(message)
-es5id: 15.11.1.1_A1_T1
-description: Checking message property of different error objects
----*/
-
-function otherScope(msg)
-{
-  return Error(msg);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-var err1 = Error('msg1');
-if (err1.message !== "msg1") {
-  $ERROR('#1: var err1=Error(\'msg1\'); err1.message==="msg1". Actual: ' + err1.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#2
-var err2 = otherScope('msg2');
-if (err2.message !== "msg2") {
-  $ERROR('#2: function otherScope(msg){return Error(msg);} var err2=otherScope(\'msg2\'); err2.message==="msg2". Actual: ' + err2.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#3
-var err3 = otherScope();
-if (err3.hasOwnProperty('message')) {
-  $ERROR('#3: function otherScope(msg){return Error(msg);} var err3=otherScope(); err3.hasOwnProperty("message"). Actual: ' + err3.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#4
-var err4 = eval("Error('msg4')");
-if (err4.message !== "msg4") {
-  $ERROR('#4: var err4=eval("Error(\'msg4\')"); err4.message==="msg4". Actual: ' + err4.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.1.1_A2_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.1.1_A2_T1.js
deleted file mode 100644
index 5e0c1bd..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.1.1_A2_T1.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: |
-    The [[Prototype]] property of the newly constructed object is set to the original Error prototype
-    object, the one that is the initial value of Error.prototype (15.11.3.1)
-es5id: 15.11.1.1_A2_T1
-description: Checking prototype of the newly constructed Error object
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-var err1 = Error('msg1');
-if (!Error.prototype.isPrototypeOf(err1)) {
-  $ERROR('#1: var err1=Error(\'msg1\'); Error.prototype.isPrototypeOf(err1) return true. Actual: ' + Error.prototype.isPrototypeOf(err1));
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.1.1_A3_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.1.1_A3_T1.js
deleted file mode 100644
index b6709d8..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.1.1_A3_T1.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: The [[Class]] property of the newly constructed object is set to "Error"
-es5id: 15.11.1.1_A3_T1
-description: >
-    Checking Class of the newly constructed Error object using
-    toSting() function
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-Error.prototype.toString = Object.prototype.toString;
-var err1 = Error();
-if (err1.toString() !== '[object ' + 'Error' + ']') {
-  $ERROR('#1: Error.prototype.toString=Object.prototype.toString; var err1=Error(); err1.toString()===\'[object Error]\'. Actual: ' + err1.toString());
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.1_A1_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.1_A1_T1.js
deleted file mode 100644
index 5892170..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.1_A1_T1.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: |
-    The function call Error(...) is equivalent to the object creation expression new
-    Error(...) with the same arguments
-es5id: 15.11.1_A1_T1
-description: Checking constructor of the newly constructed Error object
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-Error.prototype.toString = Object.prototype.toString;
-var err1 = Error();
-if (err1.constructor !== Error) {
-  $ERROR('#1: Error.prototype.toString=Object.prototype.toString; var err1=Error(); err1.constructor===Error. Actual: ' + err1.constructor);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.2.1_A1_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.2.1_A1_T1.js
deleted file mode 100644
index 804116b..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.2.1_A1_T1.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: |
-    If the argument "message" is not undefined, the message property of the newly constructed object is
-    set to ToString(message)
-es5id: 15.11.2.1_A1_T1
-description: Checking message property of different error objects
----*/
-
-function otherScope(msg)
-{
-  return new Error(msg);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-var err1 = new Error('msg1');
-if (err1.message !== "msg1") {
-  $ERROR('#1: var err1=new Error(\'msg1\'); err1.message==="msg1". Actual: ' + err1.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#2
-var err2 = otherScope('msg2');
-if (err2.message !== "msg2") {
-  $ERROR('#2: function otherScope(msg){return new Error(msg);} var err2=otherScope(\'msg2\'); err2.message==="msg2". Actual: ' + err2.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#3
-var err3 = otherScope();
-if (err3.hasOwnProperty('message')) {
-  $ERROR('#3: function otherScope(msg){return new Error(msg);} var err3=otherScope(); err3.hasOwnProperty("message"). Actual: ' + err3.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#4
-var err4 = eval("new Error('msg4')");
-if (err4.message !== "msg4") {
-  $ERROR('#4: var err4=eval("new Error(\'msg4\')"); err4.message==="msg4". Actual: ' + err4.message);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.2.1_A2_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.2.1_A2_T1.js
deleted file mode 100644
index 5848bcd..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.2.1_A2_T1.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: |
-    The [[Prototype]] property of the newly constructed object is set to the original Error prototype
-    object, the one that is the initial value of Error.prototype (15.11.3.1)
-es5id: 15.11.2.1_A2_T1
-description: Checking prototype of the newly constructed Error object
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-var err1 = new Error('msg1');
-if (!Error.prototype.isPrototypeOf(err1)) {
-  $ERROR('#1: Error.prototype.isPrototypeOf(err1) return true. Actual: ' + Error.prototype.isPrototypeOf(err1));
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.2.1_A3_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.2.1_A3_T1.js
deleted file mode 100644
index 4cd3995..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.2.1_A3_T1.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: The [[Class]] property of the newly constructed object is set to "Error"
-es5id: 15.11.2.1_A3_T1
-description: >
-    Checking Class of the newly constructed Error object using
-    toSting() function
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-Error.prototype.toString = Object.prototype.toString;
-var err1 = new Error();
-if (err1.toString() !== '[object ' + 'Error' + ']') {
-  $ERROR('#1: err1.toString()===\'[object Error]\'. Actual: ' + err1.toString());
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.3_A1_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.3_A1_T1.js
deleted file mode 100644
index c0074b6..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.3_A1_T1.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: |
-    The value of the internal [[Prototype]] property of the Error constructor
-    is the Function prototype object(15.3.4)
-es5id: 15.11.3_A1_T1
-description: >
-    Checking prototype of constructor of the newly constructed Error
-    object
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-var err1 = Error("err");
-if (!Function.prototype.isPrototypeOf(err1.constructor)) {
-  $ERROR('#1: var err1=Error("err"); Function.prototype.isPrototypeOf(err1.constructor) return true. Actual:' + Function.prototype.isPrototypeOf(err1.constructor));
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#2
-if (!Function.prototype.isPrototypeOf(Error.constructor)) {
-  $ERROR('#2: Function.prototype.isPrototypeOf(Error.constructor) return true. Actual:' + Function.prototype.isPrototypeOf(Error.constructor));
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/S15.11.3_A2_T1.js b/JSTests/test262/test/built-ins/Error/S15.11.3_A2_T1.js
deleted file mode 100644
index 6cf2532..0000000
--- a/JSTests/test262/test/built-ins/Error/S15.11.3_A2_T1.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: The length property value is 1
-es5id: 15.11.3_A2_T1
-description: Checking length property
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-var err1 = Error("err");
-if (err1.constructor.length !== 1) {
-  $ERROR('#1: var err1=Error("err"); err1.constructor.length===1. Actual: ' + err1.constructor.length);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#2
-if (Error.constructor.length !== 1) {
-  $ERROR('#2: Error.constructor.length===1. Actual: ' + Error.constructor.length);
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/built-ins/Error/instance-prototype.js b/JSTests/test262/test/built-ins/Error/instance-prototype.js
new file mode 100644
index 0000000..07bd505
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Error/instance-prototype.js
@@ -0,0 +1,23 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-error.prototype
+description: >
+  The initial value of Error.prototype is the Error prototype object.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(
+  Error.prototype.isPrototypeOf(new Error()), true,
+  'Error.prototype.isPrototypeOf(new Error()) returns true'
+);
+
+assert.sameValue(
+  Error.prototype.isPrototypeOf(Error()), true,
+  'Error.prototype.isPrototypeOf(Error()) returns true'
+);
+
+verifyNotEnumerable(Error, 'prototype');
+verifyNotWritable(Error, 'prototype');
+verifyNotConfigurable(Error, 'prototype');
diff --git a/JSTests/test262/test/built-ins/Error/internal-prototype.js b/JSTests/test262/test/built-ins/Error/internal-prototype.js
new file mode 100644
index 0000000..0bad7ee
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Error/internal-prototype.js
@@ -0,0 +1,20 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-properties-of-the-error-constructor
+description: >
+  The Error constructor has a [[Prototype]] internal slot whose value is %Function.prototype%.
+---*/
+
+assert.sameValue(
+  Function.prototype.isPrototypeOf(Error().constructor),
+  true,
+  'Function.prototype.isPrototypeOf(err1.constructor) returns true'
+);
+
+assert.sameValue(
+  Function.prototype.isPrototypeOf(Error.constructor),
+  true,
+  'Function.prototype.isPrototypeOf(Error.constructor) returns true'
+);
diff --git a/JSTests/test262/test/built-ins/Error/length.js b/JSTests/test262/test/built-ins/Error/length.js
new file mode 100644
index 0000000..7bfb967
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Error/length.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The length property value is 1
+es5id: 15.11.3_A2_T1
+description: Checking length property
+---*/
+
+var err1 = Error("err");
+assert.sameValue(err1.constructor.length, 1, 'The value of err1.constructor.length is 1');
+assert.sameValue(Error.constructor.length, 1, 'The value of Error.constructor.length is 1');
diff --git a/JSTests/test262/test/built-ins/Error/name.js b/JSTests/test262/test/built-ins/Error/name.js
new file mode 100644
index 0000000..0020034
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Error/name.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-error.prototype.name
+description: >
+  The initial value of Error.prototype.name is "Error".
+---*/
+
+assert.sameValue(Error.prototype.name, 'Error');
+
diff --git a/JSTests/test262/test/built-ins/Error/the-initial-value-of-errorprototypemessage-is-the-empty-string.js b/JSTests/test262/test/built-ins/Error/the-initial-value-of-errorprototypemessage-is-the-empty-string.js
new file mode 100644
index 0000000..d47a0e0
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Error/the-initial-value-of-errorprototypemessage-is-the-empty-string.js
@@ -0,0 +1,13 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-error.prototype.message
+description: The initial value of Error.prototype.message is the empty String.
+---*/
+
+assert.sameValue(Error('a').message, "a", 'The value of err1.message is "a"');
+assert.sameValue(new Error('a').message, "a", 'The value of err1.message is "a"');
+assert(!Error().hasOwnProperty('message'));
+assert(!new Error().hasOwnProperty('message'));
+assert.sameValue(new Error().message, Error.prototype.message, 'The value of new Error().message equals Error.prototype.message');
diff --git a/JSTests/test262/test/built-ins/Error/tostring-1.js b/JSTests/test262/test/built-ins/Error/tostring-1.js
new file mode 100644
index 0000000..9108677
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Error/tostring-1.js
@@ -0,0 +1,13 @@
+// Copyright (C) 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object.prototype.tostring
+description: >
+    Else if O has an [[ErrorData]] internal slot, let builtinTag be "Error".
+---*/
+assert.sameValue(new Error().toString(), 'Error', 'new Error.toString() returns "Error"');
+
+Error.prototype.toString = Object.prototype.toString;
+assert.sameValue(new Error().toString(), '[object Error]', 'new Error.toString() returns "[object Error]" (Object.prototype.toString)');
+
diff --git a/JSTests/test262/test/built-ins/Error/tostring-2.js b/JSTests/test262/test/built-ins/Error/tostring-2.js
new file mode 100644
index 0000000..8cf072a
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Error/tostring-2.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object.prototype.tostring
+description: >
+    Else if O has an [[ErrorData]] internal slot, let builtinTag be "Error".
+---*/
+
+assert.sameValue(
+  Error().toString(),
+  'Error',
+  'Error().toString() returns "Error"'
+);
+
+Error.prototype.toString = Object.prototype.toString;
+assert.sameValue(
+  Error().toString(),
+  '[object Error]',
+  'Error().toString() returns "[object Error]" (Object.prototype.toString)'
+);
diff --git a/JSTests/test262/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js b/JSTests/test262/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js
index 4e48281..10e0c8f 100644
--- a/JSTests/test262/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js
+++ b/JSTests/test262/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js
@@ -27,33 +27,30 @@
     b. Optionally, perform ! HostCleanupFinalizationRegistry(finalizationRegistry).
 features: [cleanupSome, FinalizationRegistry, async-functions, host-gc-required]
 flags: [async, non-deterministic]
-includes: [async-gc.js]
+includes: [async-gc.js, compareArray.js]
 ---*/
 
-var cleanupCallback = 0;
-var called = 0;
-
+let cleanupCallback = 0;
+let holdings = [];
 function cb(holding) {
-  assert.sameValue(holding, 'a');
-  called += 1;
+  holdings.push(holding);
 }
 
-var finalizationRegistry = new FinalizationRegistry(function() {
+let finalizationRegistry = new FinalizationRegistry(function() {
   cleanupCallback += 1;
 });
 
 function emptyCells() {
-  var target = {};
+  let target = {};
   finalizationRegistry.register(target, 'a');
 
-  var prom = asyncGC(target);
+  let prom = asyncGC(target);
   target = null;
 
   return prom;
 }
 
-emptyCells()
-  .then(async function() {
+emptyCells().then(async function() {
   await Promise.resolve(1);
 
   finalizationRegistry.cleanupSome(cb);
@@ -62,7 +59,7 @@
   // cleanupCallback already ran, then cb won't be called.
   let expectedCalled = cleanupCallback === 1 ? 0 : 1;
   // This asserts the registered object was emptied in the previous GC.
-  assert.sameValue(called, expectedCalled, 'cleanupSome callback for the first time');
+  assert.sameValue(holdings.length, expectedCalled, 'cleanupSome callback for the first time');
 
   // At this point, we can't assert if cleanupCallback was called, because it's
   // optional. Although, we can finally assert it's not gonna be called anymore
@@ -81,7 +78,7 @@
 
   finalizationRegistry.cleanupSome(cb);
 
-  assert.sameValue(called, expectedCalled, 'cleanupSome callback is not called anymore, no empty cells');
+  assert.sameValue(holdings.length, expectedCalled, 'cleanupSome callback is not called anymore, no empty cells');
   assert.sameValue(cleanupCallback, 0, 'cleanupCallback is not called again #1');
 
   await $262.gc();
@@ -89,9 +86,12 @@
 
   finalizationRegistry.cleanupSome(cb);
 
-  assert.sameValue(called, expectedCalled, 'cleanupSome callback is not called again #2');
+  assert.sameValue(holdings.length, expectedCalled, 'cleanupSome callback is not called again #2');
   assert.sameValue(cleanupCallback, 0, 'cleanupCallback is not called again #2');
 
+  if (holdings.length) {
+    assert.compareArray(holdings, ['a']);
+  }
+
   await $262.gc();
-  })
-  .then($DONE, resolveAsyncGC);
+}).then($DONE, resolveAsyncGC);
diff --git a/JSTests/test262/test/built-ins/Map/iterator-close-failure-after-set-failure.js b/JSTests/test262/test/built-ins/Map/iterator-close-failure-after-set-failure.js
new file mode 100644
index 0000000..84af089
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Map/iterator-close-failure-after-set-failure.js
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-map-iterable
+description: >
+  The correct error is thrown `Map.prototype.set` throws an error and
+  the IteratorClose throws an error.
+features: [Symbol.iterator]
+---*/
+
+var count = 0;
+var iterable = {};
+iterable[Symbol.iterator] = function() {
+  return {
+    next: function() {
+      return { value: [], done: false };
+    },
+    return: function() {
+        throw new TypeError('ignore');
+    }
+  };
+};
+Map.prototype.set = function() { throw new Test262Error(); }
+
+assert.throws(Test262Error, function() {
+  new Map(iterable);
+});
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toPrecision/precision-cannot-be-coerced-to-a-number-in-range.js b/JSTests/test262/test/built-ins/Number/prototype/toPrecision/precision-cannot-be-coerced-to-a-number-in-range.js
new file mode 100644
index 0000000..084d711
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toPrecision/precision-cannot-be-coerced-to-a-number-in-range.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.toprecision
+description: >
+  Throws a RangeError if precision cannot be coerced to a number in range.
+info: |
+  Let p be ? ToInteger(precision).
+  If x is not finite, return ! Number::toString(x).
+  If p < 1 or p > 100, throw a RangeError exception.
+
+features: [Symbol]
+---*/
+
+var toPrecision = Number.prototype.toPrecision;
+
+assert.throws(RangeError, function() {
+  toPrecision.call(1, function() {});
+}, "`function() {}` doesn't coerce into a number in range (1-100)");
+
+assert.throws(RangeError, function() {
+  toPrecision.call(1, NaN);
+}, "NaN doesn't coerce into a number in range (1-100)");
+
+assert.throws(RangeError, function() {
+  toPrecision.call(1, {});
+}, "{} doesn't coerce into a number in range (1-100)");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-default-radix.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-default-radix.js
new file mode 100644
index 0000000..1cf1fbb
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-default-radix.js
@@ -0,0 +1,20 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  If radix is undefined the Number 10 is used as the value of radix.
+info: |
+  If radix is undefined, let radixNumber be 10.
+  ...
+  If radixNumber = 10, return ! ToString(x).
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in 6.1.6.1.20.
+
+  The optional radix should be an integer value in the inclusive range 2 to 36. If radix is undefined the Number 10 is used as the value of radix.
+---*/
+
+assert.sameValue(0..toString(), "0");
+assert.sameValue(1..toString(), "1");
+assert.sameValue(NaN.toString(), "NaN");
+assert.sameValue(Infinity.toString(), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-1.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-1.js
new file mode 100644
index 0000000..9441230
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-1.js
@@ -0,0 +1,21 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  If radixNumber < 2 or radixNumber > 36, throw a RangeError exception.
+---*/
+
+assert.throws(RangeError, () => {
+  0..toString(1);
+});
+assert.throws(RangeError, () => {
+  1..toString(1);
+});
+assert.throws(RangeError, () => {
+  NaN.toString(1);
+});
+assert.throws(RangeError, () => {
+  Infinity.toString(1);
+});
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-10.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-10.js
new file mode 100644
index 0000000..706dc60
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-10.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (10)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(10), "0");
+assert.sameValue(1..toString(10), "1");
+assert.sameValue(NaN.toString(10), "NaN");
+assert.sameValue(Infinity.toString(10), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-11.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-11.js
new file mode 100644
index 0000000..ca9e7a6
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-11.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (11)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(11), "0");
+assert.sameValue(1..toString(11), "1");
+assert.sameValue(NaN.toString(11), "NaN");
+assert.sameValue(Infinity.toString(11), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-12.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-12.js
new file mode 100644
index 0000000..618044e
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-12.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (12)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(12), "0");
+assert.sameValue(1..toString(12), "1");
+assert.sameValue(NaN.toString(12), "NaN");
+assert.sameValue(Infinity.toString(12), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-13.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-13.js
new file mode 100644
index 0000000..2764285
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-13.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (13)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(13), "0");
+assert.sameValue(1..toString(13), "1");
+assert.sameValue(NaN.toString(13), "NaN");
+assert.sameValue(Infinity.toString(13), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-14.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-14.js
new file mode 100644
index 0000000..82bdab9
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-14.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (14)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(14), "0");
+assert.sameValue(1..toString(14), "1");
+assert.sameValue(NaN.toString(14), "NaN");
+assert.sameValue(Infinity.toString(14), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-15.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-15.js
new file mode 100644
index 0000000..399d425
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-15.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (15)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(15), "0");
+assert.sameValue(1..toString(15), "1");
+assert.sameValue(NaN.toString(15), "NaN");
+assert.sameValue(Infinity.toString(15), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-16.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-16.js
new file mode 100644
index 0000000..418f63f
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-16.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (16)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(16), "0");
+assert.sameValue(1..toString(16), "1");
+assert.sameValue(NaN.toString(16), "NaN");
+assert.sameValue(Infinity.toString(16), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-17.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-17.js
new file mode 100644
index 0000000..403845d
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-17.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (17)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(17), "0");
+assert.sameValue(1..toString(17), "1");
+assert.sameValue(NaN.toString(17), "NaN");
+assert.sameValue(Infinity.toString(17), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-18.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-18.js
new file mode 100644
index 0000000..8d39eb5
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-18.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (18)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(18), "0");
+assert.sameValue(1..toString(18), "1");
+assert.sameValue(NaN.toString(18), "NaN");
+assert.sameValue(Infinity.toString(18), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-19.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-19.js
new file mode 100644
index 0000000..bf0cb43
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-19.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (19)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(19), "0");
+assert.sameValue(1..toString(19), "1");
+assert.sameValue(NaN.toString(19), "NaN");
+assert.sameValue(Infinity.toString(19), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-2.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-2.js
new file mode 100644
index 0000000..fa46986
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-2.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (2)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(2), "0");
+assert.sameValue(1..toString(2), "1");
+assert.sameValue(NaN.toString(2), "NaN");
+assert.sameValue(Infinity.toString(2), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-20.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-20.js
new file mode 100644
index 0000000..38b778c
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-20.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (20)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(20), "0");
+assert.sameValue(1..toString(20), "1");
+assert.sameValue(NaN.toString(20), "NaN");
+assert.sameValue(Infinity.toString(20), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-21.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-21.js
new file mode 100644
index 0000000..3e99d6f
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-21.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (21)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(21), "0");
+assert.sameValue(1..toString(21), "1");
+assert.sameValue(NaN.toString(21), "NaN");
+assert.sameValue(Infinity.toString(21), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-22.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-22.js
new file mode 100644
index 0000000..d350dc1
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-22.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (22)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(22), "0");
+assert.sameValue(1..toString(22), "1");
+assert.sameValue(NaN.toString(22), "NaN");
+assert.sameValue(Infinity.toString(22), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-23.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-23.js
new file mode 100644
index 0000000..df46c75
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-23.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (23)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(23), "0");
+assert.sameValue(1..toString(23), "1");
+assert.sameValue(NaN.toString(23), "NaN");
+assert.sameValue(Infinity.toString(23), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-24.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-24.js
new file mode 100644
index 0000000..19c81d1
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-24.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (24)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(24), "0");
+assert.sameValue(1..toString(24), "1");
+assert.sameValue(NaN.toString(24), "NaN");
+assert.sameValue(Infinity.toString(24), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-25.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-25.js
new file mode 100644
index 0000000..4bf77df
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-25.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (25)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(25), "0");
+assert.sameValue(1..toString(25), "1");
+assert.sameValue(NaN.toString(25), "NaN");
+assert.sameValue(Infinity.toString(25), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-26.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-26.js
new file mode 100644
index 0000000..1502092
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-26.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (26)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(26), "0");
+assert.sameValue(1..toString(26), "1");
+assert.sameValue(NaN.toString(26), "NaN");
+assert.sameValue(Infinity.toString(26), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-27.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-27.js
new file mode 100644
index 0000000..68c06e8
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-27.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (27)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(27), "0");
+assert.sameValue(1..toString(27), "1");
+assert.sameValue(NaN.toString(27), "NaN");
+assert.sameValue(Infinity.toString(27), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-28.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-28.js
new file mode 100644
index 0000000..82e87f4
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-28.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (28)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(28), "0");
+assert.sameValue(1..toString(28), "1");
+assert.sameValue(NaN.toString(28), "NaN");
+assert.sameValue(Infinity.toString(28), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-29.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-29.js
new file mode 100644
index 0000000..3b0d96b
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-29.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (29)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(29), "0");
+assert.sameValue(1..toString(29), "1");
+assert.sameValue(NaN.toString(29), "NaN");
+assert.sameValue(Infinity.toString(29), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-3.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-3.js
new file mode 100644
index 0000000..1448abb
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-3.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (3)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(3), "0");
+assert.sameValue(1..toString(3), "1");
+assert.sameValue(NaN.toString(3), "NaN");
+assert.sameValue(Infinity.toString(3), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-30.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-30.js
new file mode 100644
index 0000000..76f180e
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-30.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (30)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(30), "0");
+assert.sameValue(1..toString(30), "1");
+assert.sameValue(NaN.toString(30), "NaN");
+assert.sameValue(Infinity.toString(30), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-31.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-31.js
new file mode 100644
index 0000000..ac48039
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-31.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (31)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(31), "0");
+assert.sameValue(1..toString(31), "1");
+assert.sameValue(NaN.toString(31), "NaN");
+assert.sameValue(Infinity.toString(31), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-32.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-32.js
new file mode 100644
index 0000000..2c0b16b
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-32.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (32)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(32), "0");
+assert.sameValue(1..toString(32), "1");
+assert.sameValue(NaN.toString(32), "NaN");
+assert.sameValue(Infinity.toString(32), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-33.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-33.js
new file mode 100644
index 0000000..bc19ef13
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-33.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (33)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(33), "0");
+assert.sameValue(1..toString(33), "1");
+assert.sameValue(NaN.toString(33), "NaN");
+assert.sameValue(Infinity.toString(33), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-34.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-34.js
new file mode 100644
index 0000000..5d3e629
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-34.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (34)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(34), "0");
+assert.sameValue(1..toString(34), "1");
+assert.sameValue(NaN.toString(34), "NaN");
+assert.sameValue(Infinity.toString(34), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-35.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-35.js
new file mode 100644
index 0000000..89d1943
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-35.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (35)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(35), "0");
+assert.sameValue(1..toString(35), "1");
+assert.sameValue(NaN.toString(35), "NaN");
+assert.sameValue(Infinity.toString(35), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-36.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-36.js
new file mode 100644
index 0000000..c6d1be5
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-36.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (36)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(36), "0");
+assert.sameValue(1..toString(36), "1");
+assert.sameValue(NaN.toString(36), "NaN");
+assert.sameValue(Infinity.toString(36), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-37.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-37.js
new file mode 100644
index 0000000..cacd004
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-37.js
@@ -0,0 +1,21 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  If radixNumber < 2 or radixNumber > 36, throw a RangeError exception.
+---*/
+
+assert.throws(RangeError, () => {
+  0..toString(37);
+});
+assert.throws(RangeError, () => {
+  1..toString(37);
+});
+assert.throws(RangeError, () => {
+  NaN.toString(37);
+});
+assert.throws(RangeError, () => {
+  Infinity.toString(37);
+});
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-4.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-4.js
new file mode 100644
index 0000000..ea523fd
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-4.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (4)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(4), "0");
+assert.sameValue(1..toString(4), "1");
+assert.sameValue(NaN.toString(4), "NaN");
+assert.sameValue(Infinity.toString(4), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-5.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-5.js
new file mode 100644
index 0000000..88953e0
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-5.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (5)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(5), "0");
+assert.sameValue(1..toString(5), "1");
+assert.sameValue(NaN.toString(5), "NaN");
+assert.sameValue(Infinity.toString(5), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-6.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-6.js
new file mode 100644
index 0000000..a3ee69f
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-6.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (6)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(6), "0");
+assert.sameValue(1..toString(6), "1");
+assert.sameValue(NaN.toString(6), "NaN");
+assert.sameValue(Infinity.toString(6), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-7.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-7.js
new file mode 100644
index 0000000..9a90b1a
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-7.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (7)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(7), "0");
+assert.sameValue(1..toString(7), "1");
+assert.sameValue(NaN.toString(7), "NaN");
+assert.sameValue(Infinity.toString(7), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-8.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-8.js
new file mode 100644
index 0000000..8e285ab
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-8.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (8)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(8), "0");
+assert.sameValue(1..toString(8), "1");
+assert.sameValue(NaN.toString(8), "NaN");
+assert.sameValue(Infinity.toString(8), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-9.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-9.js
new file mode 100644
index 0000000..631a9e6
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-9.js
@@ -0,0 +1,15 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Calling toString(radix) (9)
+info: |
+  Return the String representation of this Number value using the radix specified by radixNumber. Letters a-z are used for digits with values 10 through 35. The precise algorithm is implementation-defined, however the algorithm should be a generalization of that specified in sec-numeric-types-number-tostring.
+---*/
+
+assert.sameValue(0..toString(9), "0");
+assert.sameValue(1..toString(9), "1");
+assert.sameValue(NaN.toString(9), "NaN");
+assert.sameValue(Infinity.toString(9), "Infinity");
diff --git a/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-poisoned.js b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-poisoned.js
new file mode 100644
index 0000000..66f3697
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Number/prototype/toString/numeric-literal-tostring-radix-poisoned.js
@@ -0,0 +1,26 @@
+// Copyright 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-number.prototype.tostring
+description: >
+  Else, let radixNumber be ? ToInteger(radix).
+---*/
+
+var poisoned = {
+  valueOf() {
+    throw new Test262Error();
+  }
+};
+assert.throws(Test262Error, () => {
+  0..toString(poisoned);
+});
+assert.throws(Test262Error, () => {
+  1..toString(poisoned);
+});
+assert.throws(Test262Error, () => {
+  NaN.toString(poisoned);
+});
+assert.throws(Test262Error, () => {
+  Infinity.toString(poisoned);
+});
diff --git a/JSTests/test262/test/built-ins/Object/assign/assignment-to-readonly-property-of-target-must-throw-a-typeerror-exception.js b/JSTests/test262/test/built-ins/Object/assign/assignment-to-readonly-property-of-target-must-throw-a-typeerror-exception.js
new file mode 100644
index 0000000..50fc2da
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/assign/assignment-to-readonly-property-of-target-must-throw-a-typeerror-exception.js
@@ -0,0 +1,29 @@
+// Copyright 2020 Rick Waldron. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+esid:  sec-object.assign
+description: >
+  Assignment to readonly property of target must throw a TypeError exception
+info: |
+  Let to be ? ToObject(target).
+  If only one argument was passed, return to.
+  For each element nextSource of sources, do
+    If nextSource is neither undefined nor null, then
+      Let from be ! ToObject(nextSource).
+      Let keys be ? from.[[OwnPropertyKeys]]().
+      For each element nextKey of keys, do
+        Let desc be ? from.[[GetOwnProperty]](nextKey).
+        If desc is not undefined and desc.[[Enumerable]] is true, then
+          Let propValue be ? Get(from, nextKey).
+          Perform ? Set(to, nextKey, propValue, true).
+
+  Set ( O, P, V, Throw ) sec-set-o-p-v-throw
+
+  Let success be ? O.[[Set]](P, V, O).
+  If success is false and Throw is true, throw a TypeError exception.
+---*/
+
+assert.throws(TypeError, () => {
+  Object.assign('a', [1]);
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-bigint.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-bigint.js
new file mode 100644
index 0000000..168a093
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-bigint.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (bigint)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+features: [BigInt]
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: 0n
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-false.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-false.js
new file mode 100644
index 0000000..a522824
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-false.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (false)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: false
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-null.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-null.js
new file mode 100644
index 0000000..38bae86
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-null.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (null)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: null
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-number.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-number.js
new file mode 100644
index 0000000..a3c6f40
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-number.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (number)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: 1
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-string.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-string.js
new file mode 100644
index 0000000..e1f2b26
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-string.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (string)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: ''
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-symbol.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-symbol.js
new file mode 100644
index 0000000..2847f77
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-symbol.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (symbol)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+features: [Symbol]
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: Symbol()
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-true.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-true.js
new file mode 100644
index 0000000..babc75d
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-true.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (true)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: true
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-undefined.js b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-undefined.js
new file mode 100644
index 0000000..34335f8
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperties/property-description-must-be-an-object-not-undefined.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-objectdefineproperties
+description: >
+  Property description must be an object (undefined)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperties({}, {
+    a: undefined
+  });
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-bigint.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-bigint.js
new file mode 100644
index 0000000..1692a9c
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-bigint.js
@@ -0,0 +1,23 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (bigint)
+info: |
+  Object.defineProperty ( O, P, Attributes )
+
+  ...
+  Let desc be ? ToPropertyDescriptor(Attributes).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+features: [BigInt]
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', 0n);
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-false.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-false.js
new file mode 100644
index 0000000..0de5f15
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-false.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (false)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', false);
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-null.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-null.js
new file mode 100644
index 0000000..63f6340
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-null.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (null)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', null);
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-number.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-number.js
new file mode 100644
index 0000000..3595a89
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-number.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (number)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', 1);
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-string.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-string.js
new file mode 100644
index 0000000..2d5a109
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-string.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (string)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', '');
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-symbol.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-symbol.js
new file mode 100644
index 0000000..b2489e9
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-symbol.js
@@ -0,0 +1,27 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (symbol)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+features: [Symbol]
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', Symbol());
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-true.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-true.js
new file mode 100644
index 0000000..f34dba0
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-true.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (true)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', true);
+});
diff --git a/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-undefined.js b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-undefined.js
new file mode 100644
index 0000000..ca579d4
--- /dev/null
+++ b/JSTests/test262/test/built-ins/Object/defineProperty/property-description-must-be-an-object-not-undefined.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-object.defineproperty
+description: >
+  Property description must be an object (undefined)
+info: |
+  ObjectDefineProperties ( O, Properties )
+
+  ...
+  For each element nextKey of keys, do
+    Let propDesc be ? props.[[GetOwnProperty]](nextKey).
+    If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
+    Let descObj be ? Get(props, nextKey).
+    Let desc be ? ToPropertyDescriptor(descObj).
+  ...
+
+  ToPropertyDescriptor ( Obj )
+
+  If Type(Obj) is not Object, throw a TypeError exception.
+  ...
+---*/
+
+assert.throws(TypeError, () => {
+  Object.defineProperty({}, 'a', undefined);
+});
diff --git a/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-after-return.js b/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-after-return.js
index c644abe..205fc7b 100644
--- a/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-after-return.js
+++ b/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-after-return.js
@@ -25,7 +25,7 @@
     assert.sameValue(values.length, 1, "values.length");
     assert.sameValue(values[0], "expectedValue", "values[0]");
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-items.js b/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-items.js
index 3cf7629..ac7312c 100644
--- a/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-items.js
+++ b/JSTests/test262/test/built-ins/Promise/all/call-resolve-element-items.js
@@ -24,7 +24,7 @@
     assert.sameValue(values[0], "expectedValue-p1", "values[0]");
     assert.sameValue(values[1], "expectedValue-p2", "values[1]");
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/all/call-resolve-element.js b/JSTests/test262/test/built-ins/Promise/all/call-resolve-element.js
index 37be4b0..1926e6a 100644
--- a/JSTests/test262/test/built-ins/Promise/all/call-resolve-element.js
+++ b/JSTests/test262/test/built-ins/Promise/all/call-resolve-element.js
@@ -23,7 +23,7 @@
     assert.sameValue(values.length, 1, "values length");
     assert.sameValue(values[0], "expectedValue", "values[0]");
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/all/new-resolve-function.js b/JSTests/test262/test/built-ins/Promise/all/new-resolve-function.js
index b4778a9..83697b4 100644
--- a/JSTests/test262/test/built-ins/Promise/all/new-resolve-function.js
+++ b/JSTests/test262/test/built-ins/Promise/all/new-resolve-function.js
@@ -18,7 +18,7 @@
 function resolveFunction() {}
 
 function Constructor(executor) {
-  executor(resolveFunction, $ERROR);
+  executor(resolveFunction, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit-from-same.js b/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit-from-same.js
index 0c8d848..1d5bb50 100644
--- a/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit-from-same.js
+++ b/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit-from-same.js
@@ -37,7 +37,7 @@
     assert.sameValue(values[1], "p2-fulfill", "values[1]");
     assert.sameValue(values[2], "p3-fulfill", "values[2]");
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit.js b/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit.js
index 3f09d3c..ad9ea6f 100644
--- a/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit.js
+++ b/JSTests/test262/test/built-ins/Promise/all/resolve-before-loop-exit.js
@@ -37,7 +37,7 @@
     assert.sameValue(values[1], "p2-fulfill", "values[1]");
     assert.sameValue(values[2], "p3-fulfill", "values[2]");
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/all/resolve-from-same-thenable.js b/JSTests/test262/test/built-ins/Promise/all/resolve-from-same-thenable.js
index 430026f..40e0740 100644
--- a/JSTests/test262/test/built-ins/Promise/all/resolve-from-same-thenable.js
+++ b/JSTests/test262/test/built-ins/Promise/all/resolve-from-same-thenable.js
@@ -37,7 +37,7 @@
     assert.sameValue(values[1], "p2-fulfill", "values[1]");
     assert.sameValue(values[2], "p3-fulfill", "values[2]");
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/all/same-reject-function.js b/JSTests/test262/test/built-ins/Promise/all/same-reject-function.js
index 9c81075..403db0c 100644
--- a/JSTests/test262/test/built-ins/Promise/all/same-reject-function.js
+++ b/JSTests/test262/test/built-ins/Promise/all/same-reject-function.js
@@ -16,7 +16,7 @@
 function rejectFunction() {}
 
 function Constructor(executor) {
-  executor($ERROR, rejectFunction);
+  executor(Test262Error.thrower, rejectFunction);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-after-return.js b/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-after-return.js
index cc883f4..fd9f0c9 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-after-return.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-after-return.js
@@ -27,7 +27,7 @@
     valuesArray = values;
     checkSettledPromises(values, expected, 'values');
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-items.js b/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-items.js
index eb7e8217..5daafaa 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-items.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element-items.js
@@ -33,7 +33,7 @@
       }
     ], 'values');
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element.js b/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element.js
index d6cd51f..d855173 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/call-resolve-element.js
@@ -29,7 +29,7 @@
       }
     ], 'values');
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/new-reject-function.js b/JSTests/test262/test/built-ins/Promise/allSettled/new-reject-function.js
index 2cb9428..06ee391 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/new-reject-function.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/new-reject-function.js
@@ -17,7 +17,7 @@
 function rejectFunction() {}
 
 function Constructor(executor) {
-  executor(rejectFunction, $ERROR);
+  executor(rejectFunction, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/new-resolve-function.js b/JSTests/test262/test/built-ins/Promise/allSettled/new-resolve-function.js
index eaacff1..375d435 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/new-resolve-function.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/new-resolve-function.js
@@ -19,7 +19,7 @@
 function resolveFunction() {}
 
 function Constructor(executor) {
-  executor(resolveFunction, $ERROR);
+  executor(resolveFunction, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit-from-same.js b/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit-from-same.js
index 872a4df..9c7bf22 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit-from-same.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit-from-same.js
@@ -47,7 +47,7 @@
       }
     ], 'values');
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit.js b/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit.js
index 07c443f..d2264e9 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/resolve-before-loop-exit.js
@@ -47,7 +47,7 @@
       }
     ], 'values');
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/allSettled/resolve-from-same-thenable.js b/JSTests/test262/test/built-ins/Promise/allSettled/resolve-from-same-thenable.js
index b44a808..15a0b1d 100644
--- a/JSTests/test262/test/built-ins/Promise/allSettled/resolve-from-same-thenable.js
+++ b/JSTests/test262/test/built-ins/Promise/allSettled/resolve-from-same-thenable.js
@@ -47,7 +47,7 @@
       }
     ], 'values');
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/any/call-reject-element-after-return.js b/JSTests/test262/test/built-ins/Promise/any/call-reject-element-after-return.js
index 03b09e0..fe02f2c 100644
--- a/JSTests/test262/test/built-ins/Promise/any/call-reject-element-after-return.js
+++ b/JSTests/test262/test/built-ins/Promise/any/call-reject-element-after-return.js
@@ -19,7 +19,7 @@
 let errorArray;
 
 function Constructor(executor) {
-  executor($ERROR, (error) => {
+  executor(Test262Error.thrower, (error) => {
     callCount++;
     errorArray = error.errors;
   });
diff --git a/JSTests/test262/test/built-ins/Promise/any/call-reject-element-items.js b/JSTests/test262/test/built-ins/Promise/any/call-reject-element-items.js
index 3333a2c..60a77725 100644
--- a/JSTests/test262/test/built-ins/Promise/any/call-reject-element-items.js
+++ b/JSTests/test262/test/built-ins/Promise/any/call-reject-element-items.js
@@ -25,7 +25,7 @@
     assert.sameValue(error.errors[0], "expectedValue-p1", "error.errors[0]");
     assert.sameValue(error.errors[1], "expectedValue-p2", "error.errors[1]");
   }
-  executor($ERROR, reject);
+  executor(Test262Error.thrower, reject);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/any/new-reject-function.js b/JSTests/test262/test/built-ins/Promise/any/new-reject-function.js
index b73cc82..7371bf4 100644
--- a/JSTests/test262/test/built-ins/Promise/any/new-reject-function.js
+++ b/JSTests/test262/test/built-ins/Promise/any/new-reject-function.js
@@ -20,7 +20,7 @@
 function rejectFunction() {}
 
 function Constructor(executor) {
-  executor(rejectFunction, $ERROR);
+  executor(rejectFunction, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit-from-same.js b/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit-from-same.js
index f9af8b9..2ebf2d3 100644
--- a/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit-from-same.js
+++ b/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit-from-same.js
@@ -46,7 +46,7 @@
     assert.sameValue(error.errors[2], "p3-rejection", "error.errors[2] === 'p3-rejection'");
     assert(error instanceof AggregateError, "error instanceof AggregateError");
   }
-  executor($ERROR, reject);
+  executor(Test262Error.thrower, reject);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit.js b/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit.js
index 00542d2..1b01657 100644
--- a/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit.js
+++ b/JSTests/test262/test/built-ins/Promise/any/resolve-before-loop-exit.js
@@ -46,7 +46,7 @@
     assert.sameValue(error.errors[2], "p3-rejection", "error.errors[2] === 'p3-rejection'");
     assert(error instanceof AggregateError, "error instanceof AggregateError");
   }
-  executor($ERROR, reject);
+  executor(Test262Error.thrower, reject);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/any/resolve-from-same-thenable.js b/JSTests/test262/test/built-ins/Promise/any/resolve-from-same-thenable.js
index d8c6cdc..7ed9521 100644
--- a/JSTests/test262/test/built-ins/Promise/any/resolve-from-same-thenable.js
+++ b/JSTests/test262/test/built-ins/Promise/any/resolve-from-same-thenable.js
@@ -16,7 +16,7 @@
     callCount += 1;
     sequence.push(value);
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/race/resolve-from-same-thenable.js b/JSTests/test262/test/built-ins/Promise/race/resolve-from-same-thenable.js
index 3cf1de5..f3e5a53 100644
--- a/JSTests/test262/test/built-ins/Promise/race/resolve-from-same-thenable.js
+++ b/JSTests/test262/test/built-ins/Promise/race/resolve-from-same-thenable.js
@@ -32,7 +32,7 @@
     callCount += 1;
     sequence.push(value);
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/race/same-reject-function.js b/JSTests/test262/test/built-ins/Promise/race/same-reject-function.js
index b67e4ff..028c803 100644
--- a/JSTests/test262/test/built-ins/Promise/race/same-reject-function.js
+++ b/JSTests/test262/test/built-ins/Promise/race/same-reject-function.js
@@ -16,7 +16,7 @@
 function rejectFunction() {}
 
 function Constructor(executor) {
-  executor($ERROR, rejectFunction);
+  executor(Test262Error.thrower, rejectFunction);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/race/same-resolve-function.js b/JSTests/test262/test/built-ins/Promise/race/same-resolve-function.js
index 10b6bfe..2119e53 100644
--- a/JSTests/test262/test/built-ins/Promise/race/same-resolve-function.js
+++ b/JSTests/test262/test/built-ins/Promise/race/same-resolve-function.js
@@ -16,7 +16,7 @@
 function resolveFunction() {}
 
 function Constructor(executor) {
-  executor(resolveFunction, $ERROR);
+  executor(resolveFunction, Test262Error.thrower);
 }
 Constructor.resolve = function(v) {
   return v;
diff --git a/JSTests/test262/test/built-ins/Promise/resolve/resolve-from-promise-capability.js b/JSTests/test262/test/built-ins/Promise/resolve/resolve-from-promise-capability.js
index 76d6483..ee67c19 100644
--- a/JSTests/test262/test/built-ins/Promise/resolve/resolve-from-promise-capability.js
+++ b/JSTests/test262/test/built-ins/Promise/resolve/resolve-from-promise-capability.js
@@ -29,7 +29,7 @@
     thisValue = this;
     args = arguments;
   }
-  executor(resolve, $ERROR);
+  executor(resolve, Test262Error.thrower);
   assert.sameValue(callCount, 0, "callCount before returning from constructor");
 }, object);
 
diff --git a/JSTests/test262/test/built-ins/parseInt/15.1.2.2-2-1.js b/JSTests/test262/test/built-ins/parseInt/15.1.2.2-2-1.js
index 3bcbee9..4dc1dc6 100644
--- a/JSTests/test262/test/built-ins/parseInt/15.1.2.2-2-1.js
+++ b/JSTests/test262/test/built-ins/parseInt/15.1.2.2-2-1.js
@@ -8,4 +8,4 @@
     contain any such characters
 ---*/
 
-assert.sameValue(parseInt(""), NaN, 'parseInt("")');
+assert.sameValue(parseInt(""), NaN, 'parseInt("") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T1.js
index 2716234..86ef53b 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T1.js
@@ -7,5 +7,5 @@
 description: Checking for boolean primitive
 ---*/
 
-assert.sameValue(parseInt(true), NaN, "true");
-assert.sameValue(parseInt(false), NaN, "false");
+assert.sameValue(parseInt(true), NaN, 'parseInt(true) must return NaN');
+assert.sameValue(parseInt(false), NaN, 'parseInt(false) must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T2.js
index fb4a88e..c0304c6 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T2.js
@@ -7,26 +7,7 @@
 description: Checking for number primitive
 ---*/
 
-//CHECK#1
-if (parseInt(-1) !== parseInt("-1")) {
-  $ERROR('#1: parseInt(-1) === parseInt("-1"). Actual: ' + (parseInt(-1)));
-}
-
-//CHECK#2
-if (String(parseInt(Infinity)) !== "NaN") {
-  $ERROR('#2: String(parseInt(Infinity)) === "NaN". Actual: ' + (String(parseInt(Infinity))));
-}
-
-//CHECK#3
-if (String(parseInt(NaN)) !== "NaN") {
-  $ERROR('#3: String(parseInt(NaN)) === "NaN". Actual: ' + (String(parseInt(NaN))));
-}
-
-//CHECK#4
-if (parseInt(-0) !== 0) {
-  $ERROR('#4: parseInt(-0) === 0. Actual: ' + (parseInt(-0)));
-} else {
-  if (1 / parseInt(-0) !== Number.POSITIVE_INFINITY) {
-    $ERROR('#4: parseInt(-0) === +0. Actual: ' + (parseInt(-0)));
-  }
-}
+assert.sameValue(parseInt(-1), parseInt("-1"), 'parseInt(-1) must return the same value returned by parseInt("-1")');
+assert.sameValue(String(parseInt(Infinity)), "NaN", 'String(parseInt(Infinity)) must return "NaN"');
+assert.sameValue(String(parseInt(NaN)), "NaN", 'String(parseInt(NaN)) must return "NaN"');
+assert.sameValue(parseInt(-0), 0, 'parseInt(-0) must return 0');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T3.js
index 3b60473..2c006d9 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T3.js
@@ -7,5 +7,5 @@
 description: Checking for undefined and null
 ---*/
 
-assert.sameValue(parseInt(undefined), NaN, "undefined");
-assert.sameValue(parseInt(null), NaN, "null");
+assert.sameValue(parseInt(undefined), NaN, 'parseInt(undefined) must return NaN');
+assert.sameValue(parseInt(null), NaN, 'parseInt(null) must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T4.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T4.js
index 18edd23..77a6f3c 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T4.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T4.js
@@ -7,5 +7,5 @@
 description: Checking for Boolean object
 ---*/
 
-assert.sameValue(parseInt(new Boolean(true)), NaN, "new Boolean(true)");
-assert.sameValue(parseInt(new Boolean(false)), NaN, "new Boolean(false)");
+assert.sameValue(parseInt(new Boolean(true)), NaN, 'parseInt(new Boolean(true)) must return NaN');
+assert.sameValue(parseInt(new Boolean(false)), NaN, 'parseInt(new Boolean(false)) must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T5.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T5.js
index 92d2cc9..dd78678 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T5.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T5.js
@@ -7,17 +7,12 @@
 description: Checking for Number object
 ---*/
 
-//CHECK#1
-if (parseInt(new Number(-1)) !== parseInt("-1")) {
-  $ERROR('#1: parseInt(new Number(-1)) === parseInt("-1"). Actual: ' + (parseInt(new Number(-1))));
-}
+assert.sameValue(parseInt(new Number(-1)), parseInt("-1"), 'parseInt(new Number(-1)) must return the same value returned by parseInt("-1")');
 
-//CHECK#2
-if (String(parseInt(new Number(Infinity))) !== "NaN") {
-  $ERROR('#2: String(parseInt(new Number(Infinity))) === "NaN". Actual: ' + (String(parseInt(new Number(Infinity)))));
-}
+assert.sameValue(
+  String(parseInt(new Number(Infinity))),
+  "NaN",
+  'String(parseInt(new Number(Infinity))) must return "NaN"'
+);
 
-//CHECK#3
-if (String(parseInt(new Number(NaN))) !== "NaN") {
-  $ERROR('#3: String(parseInt(new Number(NaN))) === "NaN". Actual: ' + (String(parseInt(new Number(NaN)))));
-}
+assert.sameValue(String(parseInt(new Number(NaN))), "NaN", 'String(parseInt(new Number(NaN))) must return "NaN"');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T6.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T6.js
index 4e6680a..caaba65 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T6.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T6.js
@@ -7,22 +7,13 @@
 description: Checking for String object
 ---*/
 
-//CHECK#1
-if (parseInt(new String("-1")) !== parseInt("-1")) {
-  $ERROR('#1: parseInt(new String("-1")) === parseInt("-1"). Actual: ' + (parseInt(new String("-1"))));
-}
+assert.sameValue(parseInt(new String("-1")), parseInt("-1"), 'parseInt(new String("-1")) must return the same value returned by parseInt("-1")');
 
-//CHECK#2
-if (String(parseInt(new String("Infinity"))) !== "NaN") {
-  $ERROR('#2: String(parseInt(new String("Infinity"))) === "NaN". Actual: ' + (String(parseInt(new String("Infinity")))));
-}
+assert.sameValue(
+  String(parseInt(new String("Infinity"))),
+  "NaN",
+  'String(parseInt(new String("Infinity"))) must return "NaN"'
+);
 
-//CHECK#3
-if (String(parseInt(new String("NaN"))) !== "NaN") {
-  $ERROR('#3: String(parseInt(new String("NaN"))) === "NaN". Actual: ' + (String(parseInt(new String("NaN")))));
-}
-
-//CHECK#4
-if (String(parseInt(new String("false"))) !== "NaN") {
-  $ERROR('#4: String(parseInt(new String("false"))) === "NaN". Actual: ' + (String(parseInt(new String("false")))));
-}
+assert.sameValue(String(parseInt(new String("NaN"))), "NaN", 'String(parseInt(new String("NaN"))) must return "NaN"');
+assert.sameValue(String(parseInt(new String("false"))), "NaN", 'String(parseInt(new String("false"))) must return "NaN"');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T7.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T7.js
index f370ed7..75c0d21 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T7.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A1_T7.js
@@ -13,7 +13,7 @@
     return 1
   }
 };
-assert.sameValue(parseInt(object), NaN, "{valueOf: function() {return 1}}");
+assert.sameValue(parseInt(object), NaN, 'parseInt({valueOf: function() {return 1}}) must return NaN');
 
 //CHECK#2
 var object = {
@@ -24,9 +24,12 @@
     return 0
   }
 };
-if (parseInt(object) !== 0) {
-  $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; parseInt(object) === 0. Actual: ' + (parseInt(object)));
-}
+
+assert.sameValue(
+  parseInt(object),
+  0,
+  'parseInt({valueOf: function() {return 1}, toString: function() {return 0}}) must return 0'
+);
 
 //CHECK#3
 var object = {
@@ -37,9 +40,12 @@
     return {}
   }
 };
-if (parseInt(object) !== 1) {
-  $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
-}
+
+assert.sameValue(
+  parseInt(object),
+  1,
+  'parseInt({valueOf: function() {return 1}, toString: function() {return {}}}) must return 1'
+);
 
 //CHECK#4
 try {
@@ -51,16 +57,15 @@
       return 1
     }
   };
-  if (parseInt(object) !== 1) {
-    $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
-  }
+
+  assert.sameValue(
+    parseInt(object),
+    1,
+    'parseInt({valueOf: function() {throw \\"error\\"}, toString: function() {return 1}}) must return 1'
+  );
 }
 catch (e) {
-  if (e === "error") {
-    $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseInt(object) not throw "error"');
-  } else {
-    $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseInt(object) not throw Error. Actual: ' + (e));
-  }
+  assert.notSameValue(e, "error", 'The value of `e` is not "error"');
 }
 
 //CHECK#5
@@ -69,9 +74,7 @@
     return 1
   }
 };
-if (parseInt(object) !== 1) {
-  $ERROR('#5: var object = {toString: function() {return 1}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
-}
+assert.sameValue(parseInt(object), 1, 'parseInt({toString: function() {return 1}}) must return 1');
 
 //CHECK#6
 var object = {
@@ -82,9 +85,12 @@
     return 1
   }
 }
-if (parseInt(object) !== 1) {
-  $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
-}
+
+assert.sameValue(
+  parseInt(object),
+  1,
+  'parseInt({valueOf: function() {return {}}, toString: function() {return 1}}) must return 1'
+);
 
 //CHECK#7
 try {
@@ -97,12 +103,10 @@
     }
   };
   parseInt(object);
-  $ERROR('#7.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseInt(object) throw "error". Actual: ' + (parseInt(object)));
+  Test262Error.thrower('#7.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseInt(object) throw "error". Actual: ' + (parseInt(object)));
 }
 catch (e) {
-  if (e !== "error") {
-    $ERROR('#7.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseInt(object) throw "error". Actual: ' + (e));
-  }
+  assert.sameValue(e, "error", 'The value of `e` is "error"');
 }
 
 //CHECK#8
@@ -116,10 +120,8 @@
     }
   };
   parseInt(object);
-  $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt(object) throw TypeError. Actual: ' + (parseInt(object)));
+  Test262Error.thrower('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt(object) throw TypeError. Actual: ' + (parseInt(object)));
 }
 catch (e) {
-  if ((e instanceof TypeError) !== true) {
-    $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt(object) throw TypeError. Actual: ' + (e));
-  }
+  assert.sameValue(e instanceof TypeError, true, 'The result of `(e instanceof TypeError)` is true');
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T1.js
index f2e2f9b..4a879e0 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T1.js
@@ -7,30 +7,18 @@
 description: "StrWhiteSpaceChar :: TAB (U+0009)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u00091") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u00091") === parseInt("1"). Actual: ' + (parseInt("\u00091")));
-}
+assert.sameValue(parseInt("\u00091"), parseInt("1"), 'parseInt("\\u00091") must return the same value returned by parseInt("1")');
 
-//CHECK#2
-if (parseInt("\u0009\u0009-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u0009\\u0009-1") === parseInt("-1"). Actual: ' + (parseInt("\u0009\u0009-1")));
-}
+assert.sameValue(parseInt("\u0009\u0009-1"), parseInt("-1"), 'parseInt("\\u0009\\u0009-1") must return the same value returned by parseInt("-1")');
 
-//CHECK#3
-if (parseInt("	1") !== parseInt("1")) {
-  $ERROR('#3: parseInt("	1") === parseInt("1"). Actual: ' + (parseInt("	1")));
-}
+assert.sameValue(parseInt("\t1"), parseInt("1"), 'parseInt(" 1") must return the same value returned by parseInt("1")');
 
-//CHECK#4
-if (parseInt("			1") !== parseInt("1")) {
-  $ERROR('#4: parseInt("			1") === parseInt("1"). Actual: ' + (parseInt("			1")));
-}
+assert.sameValue(parseInt("\t\t\t1"), parseInt("1"), 'parseInt(" 1") must return the same value returned by parseInt("1")');
 
-//CHECK#5
-if (parseInt("			\u0009			\u0009-1") !== parseInt("-1")) {
-  $ERROR('#5: parseInt("			\\u0009			\\u0009-1") === parseInt("-1"). Actual: ' + (parseInt("			\u0009			\u0009-1")));
-}
+assert.sameValue(
+  parseInt("\t\t\t\u0009\t\t\t\u0009-1"),
+  parseInt("-1"),
+  'parseInt(" \\u0009 \\u0009-1") must return the same value returned by parseInt("-1")'
+);
 
-//CHECK#6
-assert.sameValue(parseInt("\u0009"), NaN);
+assert.sameValue(parseInt("\u0009"), NaN, 'parseInt("\\u0009") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10.js
index 1b7dd39..cece208 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10.js
@@ -7,35 +7,22 @@
 description: "StrWhiteSpaceChar :: USP"
 ---*/
 
-//CHECK#
-var n;
-var count = 0;
-var errorCount = 0;
 var uspU = ["\u1680", "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", "\u2007", "\u2008", "\u2009", "\u200A", "\u202F", "\u205F", "\u3000"];
 var uspS = ["1680", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "200A", "202F", "205F", "3000"];
 
 for (var index = 0; index < uspU.length; index++) {
-  var result = true;
-  n = false;
-  if (parseInt(uspU[index] + "1") !== parseInt("1")) {
-    $ERROR('#1.' + uspS[index] + ' ');
-    result = false;
-  }
-  if (parseInt(uspU[index] + uspU[index] + uspU[index] + "1") !== parseInt("1")) {
-    $ERROR('#2.' + uspS[index] + ' ');
-    result = false;
-  }
-  n = parseInt(uspU[index]);
-  if (!(n !== n)) {
-    $ERROR('#3.' + uspS[index] + ' ');
-    result = false;
-  }
-  if (result !== true) {
-    errorCount++;
-  }
-  count++;
-}
+  assert.sameValue(
+    parseInt(uspU[index] + "1"),
+    parseInt("1"),
+    'parseInt(uspU[index] + "1") must return the same value returned by parseInt("1")'
+  );
 
-if (errorCount > 0) {
-  $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+  assert.sameValue(
+    parseInt(uspU[index] + uspU[index] + uspU[index] + "1"),
+    parseInt("1"),
+    'parseInt(uspU[index] + uspU[index] + uspU[index] + "1") must return the same value returned by parseInt("1")'
+  );
+
+  let n = parseInt(uspU[index]);
+  assert(n !== n, 'The result of `(n !== n)` is true');
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10_U180E.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10_U180E.js
index 308895f..5db94ac 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10_U180E.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T10_U180E.js
@@ -25,6 +25,6 @@
 
 var mongolianVowelSeparator = "\u180E";
 
-assert.sameValue(parseInt(mongolianVowelSeparator + "1"), NaN, "Single leading U+180E");
-assert.sameValue(parseInt(mongolianVowelSeparator + mongolianVowelSeparator + mongolianVowelSeparator + "1"), NaN, "Multiple leading U+180E");
-assert.sameValue(parseInt(mongolianVowelSeparator), NaN, "Only U+180E");
+assert.sameValue(parseInt(mongolianVowelSeparator + "1"), NaN, 'parseInt(mongolianVowelSeparator + "1") must return NaN');
+assert.sameValue(parseInt(mongolianVowelSeparator + mongolianVowelSeparator + mongolianVowelSeparator + "1"), NaN, 'parseInt( mongolianVowelSeparator + mongolianVowelSeparator + mongolianVowelSeparator + "1" ) must return NaN');
+assert.sameValue(parseInt(mongolianVowelSeparator), NaN, 'parseInt("\\"\\\\u180E\\"") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T2.js
index 16c33f2..b40f967 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T2.js
@@ -1,5 +1,9 @@
 // Copyright 2009 the Sputnik authors.  All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
+assert.sameValue(parseInt("\u00201"), parseInt("1"), 'parseInt("\\u00201") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("\u0020\u0020-1"), parseInt("-1"), 'parseInt("\\u0020\\u0020-1") must return the same value returned by parseInt("-1")');
+assert.sameValue(parseInt(" 1"), parseInt("1"), 'parseInt(" 1") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("       1"), parseInt("1"), 'parseInt(" 1") must return the same value returned by parseInt("1")');
 
 /*---
 info: Operator remove leading StrWhiteSpaceChar
@@ -7,30 +11,11 @@
 description: "StrWhiteSpaceChar :: SP (U+0020)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u00201") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u00201") === parseInt("1"). Actual: ' + (parseInt("\u00201")));
-}
-
-//CHECK#2
-if (parseInt("\u0020\u0020-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u0020\\u0020-1") === parseInt("-1"). Actual: ' + (parseInt("\u0020\u0020-1")));
-}
-
-//CHECK#3
-if (parseInt(" 1") !== parseInt("1")) {
-  $ERROR('#3: parseInt(" 1") === parseInt("1"). Actual: ' + (parseInt(" 1")));
-}
-
-//CHECK#4
-if (parseInt("       1") !== parseInt("1")) {
-  $ERROR('#4: parseInt("       1") === parseInt("1"). Actual: ' + (parseInt("       1")));
-}
-
-//CHECK#5
-if (parseInt("       \u0020       \u0020-1") !== parseInt("-1")) {
-  $ERROR('#5: parseInt("       \\u0020       \\u0020-1") === parseInt("-1"). Actual: ' + (parseInt("       \u0020       \u0020-1")));
-}
+assert.sameValue(
+  parseInt("       \u0020       \u0020-1"),
+  parseInt("-1"),
+  'parseInt(" \\u0020 \\u0020-1") must return the same value returned by parseInt("-1")'
+);
 
 //CHECK#6
-assert.sameValue(parseInt("\u0020"), NaN);
+assert.sameValue(parseInt("\u0020"), NaN, 'parseInt("\\u0020") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T3.js
index 6d1a98a..f2b3e45 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T3.js
@@ -7,15 +7,8 @@
 description: "StrWhiteSpaceChar :: NBSB (U+00A0)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u00A01") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u00A01") === parseInt("1"). Actual: ' + (parseInt("\u00A01")));
-}
-
-//CHECK#2
-if (parseInt("\u00A0\u00A0-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u00A0\\u00A0-1") === parseInt("-1"). Actual: ' + (parseInt("\u00A0\u00A0-1")));
-}
+assert.sameValue(parseInt("\u00A01"), parseInt("1"), 'parseInt("\\u00A01") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("\u00A0\u00A0-1"), parseInt("-1"), 'parseInt("\\u00A0\\u00A0-1") must return the same value returned by parseInt("-1")');
 
 //CHECK#3
-assert.sameValue(parseInt("\u00A0"), NaN);
+assert.sameValue(parseInt("\u00A0"), NaN, 'parseInt("\\u00A0") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T4.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T4.js
index edca074..0314550 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T4.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T4.js
@@ -7,15 +7,8 @@
 description: "StrWhiteSpaceChar :: FF (U+000C)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u000C1") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u000C1") === parseInt("1"). Actual: ' + (parseInt("\u000C1")));
-}
-
-//CHECK#2
-if (parseInt("\u000C\u000C-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u000C\\u000C-1") === parseInt("-1"). Actual: ' + (parseInt("\u000C\u000C-1")));
-}
+assert.sameValue(parseInt("\u000C1"), parseInt("1"), 'parseInt("\\u000C1") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("\u000C\u000C-1"), parseInt("-1"), 'parseInt("\\u000C\\u000C-1") must return the same value returned by parseInt("-1")');
 
 //CHECK#3
-assert.sameValue(parseInt("\u000C"), NaN);
+assert.sameValue(parseInt("\u000C"), NaN, 'parseInt("\\u000C") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T5.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T5.js
index dc0ce10..c2d7dcd 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T5.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T5.js
@@ -7,15 +7,8 @@
 description: "StrWhiteSpaceChar :: VT (U+000B)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u000B1") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u000B1") === parseInt("1"). Actual: ' + (parseInt("\u000B1")));
-}
-
-//CHECK#2
-if (parseInt("\u000B\u000B-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u000B\\u000B-1") === parseInt("-1"). Actual: ' + (parseInt("\u000B\u000B-1")));
-}
+assert.sameValue(parseInt("\u000B1"), parseInt("1"), 'parseInt("\\u000B1") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("\u000B\u000B-1"), parseInt("-1"), 'parseInt("\\u000B\\u000B-1") must return the same value returned by parseInt("-1")');
 
 //CHECK#3
-assert.sameValue(parseInt("\u000B"), NaN);
+assert.sameValue(parseInt("\u000B"), NaN, 'parseInt("\\u000B") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T6.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T6.js
index fb626be..6ee83fc 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T6.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T6.js
@@ -7,15 +7,8 @@
 description: "StrWhiteSpaceChar :: CR (U+000D)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u000D1") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u000D1") === parseInt("1"). Actual: ' + (parseInt("\u000D1")));
-}
-
-//CHECK#2
-if (parseInt("\u000D\u000D-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u000D\\u000D-1") === parseInt("-1"). Actual: ' + (parseInt("\u000D\u000D-1")));
-}
+assert.sameValue(parseInt("\u000D1"), parseInt("1"), 'parseInt("\\u000D1") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("\u000D\u000D-1"), parseInt("-1"), 'parseInt("\\u000D\\u000D-1") must return the same value returned by parseInt("-1")');
 
 //CHECK#3
-assert.sameValue(parseInt("\u000D"), NaN);
+assert.sameValue(parseInt("\u000D"), NaN, 'parseInt("\\u000D") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T7.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T7.js
index 7d1d383..b23e1c7 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T7.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T7.js
@@ -7,15 +7,8 @@
 description: "StrWhiteSpaceChar :: LF (U+000A)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u000A1") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u000A1") === parseInt("1"). Actual: ' + (parseInt("\u000A1")));
-}
-
-//CHECK#2
-if (parseInt("\u000A\u000A-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u000A\\u000A-1") === parseInt("-1"). Actual: ' + (parseInt("\u000A\u000A-1")));
-}
+assert.sameValue(parseInt("\u000A1"), parseInt("1"), 'parseInt("\\u000A1") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("\u000A\u000A-1"), parseInt("-1"), 'parseInt("\\u000A\\u000A-1") must return the same value returned by parseInt("-1")');
 
 //CHECK#3
-assert.sameValue(parseInt("\u000A"), NaN);
+assert.sameValue(parseInt("\u000A"), NaN, 'parseInt("\\u000A") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T8.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T8.js
index d04e40b..0c806cf 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T8.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T8.js
@@ -7,15 +7,8 @@
 description: "StrWhiteSpaceChar :: LS (U+2028)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u20281") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u20281") === parseInt("1"). Actual: ' + (parseInt("\u20281")));
-}
-
-//CHECK#2
-if (parseInt("\u2028\u2028-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u2028\\u2028-1") === parseInt("-1"). Actual: ' + (parseInt("\u2028\u2028-1")));
-}
+assert.sameValue(parseInt("\u20281"), parseInt("1"), 'parseInt("\\u20281") must return the same value returned by parseInt("1")');
+assert.sameValue(parseInt("\u2028\u2028-1"), parseInt("-1"), 'parseInt("\\u2028\\u2028-1") must return the same value returned by parseInt("-1")');
 
 //CHECK#3
-assert.sameValue(parseInt("\u2028"), NaN);
+assert.sameValue(parseInt("\u2028"), NaN, 'parseInt("\\u2028") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T9.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T9.js
index fb49cc0..60b93dd 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T9.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A2_T9.js
@@ -7,15 +7,17 @@
 description: "StrWhiteSpaceChar :: PS (U+2029)"
 ---*/
 
-//CHECK#1
-if (parseInt("\u20291") !== parseInt("1")) {
-  $ERROR('#1: parseInt("\\u20291") === parseInt("1"). Actual: ' + (parseInt("\u20291")));
-}
+assert.sameValue(
+  parseInt("\u20291"),
+  parseInt("1"),
+  'parseInt("\\u20291") must return the same value returned by parseInt("1")'
+);
 
-//CHECK#2
-if (parseInt("\u2029\u2029-1") !== parseInt("-1")) {
-  $ERROR('#2: parseInt("\\u2029\\u2029-1") === parseInt("-1"). Actual: ' + (parseInt("\u2029\u2029-1")));
-}
+assert.sameValue(
+  parseInt("\u2029\u2029-1"),
+  parseInt("-1"),
+  'parseInt("\\u2029\\u2029-1") must return the same value returned by parseInt("-1")'
+);
 
 //CHECK#3
-assert.sameValue(parseInt("\u2029"), NaN);
+assert.sameValue(parseInt("\u2029"), NaN, 'parseInt("\\u2029") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T1.js
index 1604a8f..0d008ba 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T1.js
@@ -7,10 +7,7 @@
 description: Checking for boolean primitive
 ---*/
 
-//CHECK#1
-if (parseInt("11", false) !== parseInt("11", 10)) {
-  $ERROR('#1: parseInt("11", false) === parseInt("11", 10). Actual: ' + (parseInt("11", false)));
-}
+assert.sameValue(parseInt("11", false), parseInt("11", 10), 'parseInt("11", false) must return the same value returned by parseInt("11", 10)');
 
 //CHECK#2
-assert.sameValue(parseInt("11", true), NaN);
+assert.sameValue(parseInt("11", true), NaN, 'parseInt("11", true) must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T2.js
index 3910d27..edaba34 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T2.js
@@ -7,17 +7,6 @@
 description: Checking for string primitive
 ---*/
 
-//CHECK#1
-if (parseInt("11", "2") !== parseInt("11", 2)) {
-  $ERROR('#1: parseInt("11", "2") === parseInt("11", 2). Actual: ' + (parseInt("11", "2")));
-}
-
-//CHECK#2
-if (parseInt("11", "0") !== parseInt("11", 10)) {
-  $ERROR('#2: parseInt("11", "0") === parseInt("11", 10). Actual: ' + (parseInt("11", "0")));
-}
-
-//CHECK#3
-if (parseInt("11", "") !== parseInt("11", 10)) {
-  $ERROR('#3: parseInt("11", "") === parseInt("11", 10). Actual: ' + (parseInt("11", "")));
-}
+assert.sameValue(parseInt("11", "2"), parseInt("11", 2), 'parseInt("11", "2") must return the same value returned by parseInt("11", 2)');
+assert.sameValue(parseInt("11", "0"), parseInt("11", 10), 'parseInt("11", "0") must return the same value returned by parseInt("11", 10)');
+assert.sameValue(parseInt("11", ""), parseInt("11", 10), 'parseInt("11", "") must return the same value returned by parseInt("11", 10)');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T3.js
index 11d185b..56d3002 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T3.js
@@ -7,12 +7,9 @@
 description: Checking for undefined and null
 ---*/
 
-//CHECK#1
-if (parseInt("11", undefined) !== parseInt("11", 10)) {
-  $ERROR('#1: parseInt("11", undefined) === parseInt("11", 10). Actual: ' + (parseInt("11", undefined)));
-}
-
-//CHECK#2
-if (parseInt("11", null) !== parseInt("11", 10)) {
-  $ERROR('#2: parseInt("11", null) === parseInt("11", 10). Actual: ' + (parseInt("11", null)));
-}
+assert.sameValue(
+  parseInt("11", undefined),
+  parseInt("11", 10),
+  'parseInt("11", undefined) must return the same value returned by parseInt("11", 10)'
+);
+assert.sameValue(parseInt("11", null), parseInt("11", 10), 'parseInt("11", null) must return the same value returned by parseInt("11", 10)');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T4.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T4.js
index d454794..796ebd1 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T4.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T4.js
@@ -7,10 +7,11 @@
 description: Checking for Boolean object
 ---*/
 
-//CHECK#1
-if (parseInt("11", new Boolean(false)) !== parseInt("11", false)) {
-  $ERROR('#1: parseInt("11", new Boolean(false)) === parseInt("11", false). Actual: ' + (parseInt("11", new Boolean(false))));
-}
+assert.sameValue(
+  parseInt("11", new Boolean(false)),
+  parseInt("11", false),
+  'parseInt("11", new Boolean(false)) must return the same value returned by parseInt("11", false)'
+);
 
 //CHECK#2
-assert.sameValue(parseInt("11", new Boolean(true)), NaN);
+assert.sameValue(parseInt("11", new Boolean(true)), NaN, 'parseInt("11", new Boolean(true)) must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T5.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T5.js
index f040c2a..4cf073b 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T5.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T5.js
@@ -1,18 +1,19 @@
 // Copyright 2009 the Sputnik authors.  All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
-
 /*---
 info: Operator use ToNumber
 esid: sec-parseint-string-radix
 description: Checking for Number object
 ---*/
 
-//CHECK#1
-if (parseInt("11", new Number(2)) !== parseInt("11", 2)) {
-  $ERROR('#1: parseInt("11", new Number(2)) === parseInt("11", 2). Actual: ' + (parseInt("11", new Number(2))));
-}
+assert.sameValue(
+  parseInt("11", new Number(2)),
+  parseInt("11", 2),
+  'parseInt("11", new Number(2)) must return the same value returned by parseInt("11", 2)'
+);
 
-//CHECK#2
-if (parseInt("11", new Number(Infinity)) !== parseInt("11", Infinity)) {
-  $ERROR('#2: parseInt("11", new Number(Infinity)) === parseInt("11", Infinity). Actual: ' + (parseInt("11", new Number(Infinity))));
-}
+assert.sameValue(
+  parseInt("11", new Number(Infinity)),
+  parseInt("11", Infinity),
+  'parseInt("11", new Number(Infinity)) must return the same value returned by parseInt("11", Infinity)'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T6.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T6.js
index 62d0ace4..1caed72 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T6.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T6.js
@@ -8,12 +8,14 @@
 esid: sec-parseint-string-radix
 ---*/
 
-//CHECK#1
-if (parseInt("11", new String("2")) !== parseInt("11", 2)) {
-  $ERROR('#1: parseInt("11", new String("2")) === parseInt("11", 2). Actual: ' + (parseInt("11", new String("2"))));
-}
+assert.sameValue(
+  parseInt("11", new String("2")),
+  parseInt("11", 2),
+  'parseInt("11", new String("2")) must return the same value returned by parseInt("11", 2)'
+);
 
-//CHECK#2
-if (parseInt("11", new String("Infinity")) !== parseInt("11", Infinity)) {
-  $ERROR('#2: parseInt("11", new String("Infinity")) === parseInt("11", Infinity). Actual: ' + (parseInt("11", new String("Infinity"))));
-}
+assert.sameValue(
+  parseInt("11", new String("Infinity")),
+  parseInt("11", Infinity),
+  'parseInt("11", new String("Infinity")) must return the same value returned by parseInt("11", Infinity)'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T7.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T7.js
index ccea653..3892984 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T7.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.1_T7.js
@@ -13,9 +13,12 @@
     return 2
   }
 };
-if (parseInt("11", object) !== parseInt("11", 2)) {
-  $ERROR('#1: var object = {valueOf: function() {return 2}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
-}
+
+assert.sameValue(
+  parseInt("11", object),
+  parseInt("11", 2),
+  'parseInt("11", {valueOf: function() {return 2}}) must return the same value returned by parseInt("11", 2)'
+);
 
 //CHECK#2
 var object = {
@@ -26,9 +29,12 @@
     return 1
   }
 };
-if (parseInt("11", object) !== parseInt("11", 2)) {
-  $ERROR('#2: var object = {valueOf: function() {return 2}, toString: function() {return 1}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
-}
+
+assert.sameValue(
+  parseInt("11", object),
+  parseInt("11", 2),
+  'parseInt("11", {valueOf: function() {return 2}, toString: function() {return 1}}) must return the same value returned by parseInt("11", 2)'
+);
 
 //CHECK#3
 var object = {
@@ -39,9 +45,12 @@
     return {}
   }
 };
-if (parseInt("11", object) !== parseInt("11", 2)) {
-  $ERROR('#3: var object = {valueOf: function() {return 2}, toString: function() {return {}}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
-}
+
+assert.sameValue(
+  parseInt("11", object),
+  parseInt("11", 2),
+  'parseInt("11", {valueOf: function() {return 2}, toString: function() {return {}}}) must return the same value returned by parseInt("11", 2)'
+);
 
 //CHECK#4
 try {
@@ -53,16 +62,15 @@
       throw "error"
     }
   };
-  if (parseInt("11", object) !== parseInt("11", 2)) {
-    $ERROR('#4.1: var object = {valueOf: function() {return 2}, toString: function() {throw "error"}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
-  }
+
+  assert.sameValue(
+    parseInt("11", object),
+    parseInt("11", 2),
+    'parseInt( "11", {valueOf: function() {return 2}, toString: function() {throw \\"error\\"}} ) must return the same value returned by parseInt("11", 2)'
+  );
 }
 catch (e) {
-  if (e === "error") {
-    $ERROR('#4.2: var object = {valueOf: function() {return 2}, toString: function() {throw "error"}}; parseInt("11", object) not throw "error"');
-  } else {
-    $ERROR('#4.3: var object = {valueOf: function() {return 2}, toString: function() {throw "error"}}; parseInt("11", object) not throw Error. Actual: ' + (e));
-  }
+  assert.notSameValue(e, "error", 'The value of `e` is not "error"');
 }
 
 //CHECK#5
@@ -71,9 +79,12 @@
     return 2
   }
 };
-if (parseInt("11", object) !== parseInt("11", 2)) {
-  $ERROR('#5: var object = {toString: function() {return 2}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
-}
+
+assert.sameValue(
+  parseInt("11", object),
+  parseInt("11", 2),
+  'parseInt("11", {toString: function() {return 2}}) must return the same value returned by parseInt("11", 2)'
+);
 
 //CHECK#6
 var object = {
@@ -84,9 +95,12 @@
     return 2
   }
 }
-if (parseInt("11", object) !== parseInt("11", 2)) {
-  $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 2}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
-}
+
+assert.sameValue(
+  parseInt("11", object),
+  parseInt("11", 2),
+  'parseInt("11", {valueOf: function() {return {}}, toString: function() {return 2}}) must return the same value returned by parseInt("11", 2)'
+);
 
 //CHECK#7
 try {
@@ -99,12 +113,10 @@
     }
   };
   parseInt("11", object);
-  $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 2}}; parseInt("11", object) throw "error". Actual: ' + (parseInt("11", object)));
+  Test262Error.thrower('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 2}}; parseInt("11", object) throw "error". Actual: ' + (parseInt("11", object)));
 }
 catch (e) {
-  if (e !== "error") {
-    $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 2}}; parseInt("11", object) throw "error". Actual: ' + (e));
-  }
+  assert.sameValue(e, "error", 'The value of `e` is "error"');
 }
 
 //CHECK#8
@@ -118,10 +130,8 @@
     }
   };
   parseInt("11", object);
-  $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt("11", object) throw TypeError. Actual: ' + (parseInt("11", object)));
+  Test262Error.thrower('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt("11", object) throw TypeError. Actual: ' + (parseInt("11", object)));
 }
 catch (e) {
-  if ((e instanceof TypeError) !== true) {
-    $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt("11", object) throw TypeError. Actual: ' + (e));
-  }
+  assert.sameValue(e instanceof TypeError, true, 'The result of `(e instanceof TypeError)` is true');
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T1.js
index 2dbbeb9..a764a46 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T1.js
@@ -7,27 +7,18 @@
 description: If radix is NaN, +0, -0, +Infinity, -Infinity, return radix = +0
 ---*/
 
-//CHECK#1
-if (parseInt("11", NaN) !== parseInt("11", 10)) {
-  $ERROR('#1: parseInt("11", NaN) === parseInt("11", 10). Actual: ' + (parseInt("11", NaN)));
-}
+assert.sameValue(parseInt("11", NaN), parseInt("11", 10), 'parseInt("11", NaN) must return the same value returned by parseInt("11", 10)');
+assert.sameValue(parseInt("11", +0), parseInt("11", 10), 'parseInt("11", +0) must return the same value returned by parseInt("11", 10)');
+assert.sameValue(parseInt("11", -0), parseInt("11", 10), 'parseInt("11", -0) must return the same value returned by parseInt("11", 10)');
 
-//CHECK#2
-if (parseInt("11", +0) !== parseInt("11", 10)) {
-  $ERROR('#2: parseInt("11", +0) === parseInt("11", 10). Actual: ' + (parseInt("11", +0)));
-}
+assert.sameValue(
+  parseInt("11", Number.POSITIVE_INFINITY),
+  parseInt("11", 10),
+  'parseInt("11", Number.POSITIVE_INFINITY) must return the same value returned by parseInt("11", 10)'
+);
 
-//CHECK#3
-if (parseInt("11", -0) !== parseInt("11", 10)) {
-  $ERROR('#3: parseInt("11", -0) === parseInt("11", 10). Actual: ' + (parseInt("11", -0)));
-}
-
-//CHECK#4
-if (parseInt("11", Number.POSITIVE_INFINITY) !== parseInt("11", 10)) {
-  $ERROR('#4: parseInt("11", Number.POSITIVE_INFINITY) === parseInt("11", 10). Actual: ' + (parseInt("11", Number.POSITIVE_INFINITY)));
-}
-
-//CHECK#5
-if (parseInt("11", Number.NEGATIVE_INFINITY) !== parseInt("11", 10)) {
-  $ERROR('#5: parseInt("11", Number.NEGATIVE_INFINITY) === parseInt("11", 10). Actual: ' + (parseInt("11", Number.NEGATIVE_INFINITY)));
-}
+assert.sameValue(
+  parseInt("11", Number.NEGATIVE_INFINITY),
+  parseInt("11", 10),
+  'parseInt("11", Number.NEGATIVE_INFINITY) must return the same value returned by parseInt("11", 10)'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T2.js
index 622bdf0..19ee9a1 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T2.js
@@ -7,27 +7,18 @@
 description: ToInt32 use floor
 ---*/
 
-//CHECK#1
-if (parseInt("11", 2.1) !== parseInt("11", 2)) {
-  $ERROR('#1: parseInt("11", 2.1) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.1)));
-}
+assert.sameValue(parseInt("11", 2.1), parseInt("11", 2), 'parseInt("11", 2.1) must return the same value returned by parseInt("11", 2)');
+assert.sameValue(parseInt("11", 2.5), parseInt("11", 2), 'parseInt("11", 2.5) must return the same value returned by parseInt("11", 2)');
+assert.sameValue(parseInt("11", 2.9), parseInt("11", 2), 'parseInt("11", 2.9) must return the same value returned by parseInt("11", 2)');
 
-//CHECK#2
-if (parseInt("11", 2.5) !== parseInt("11", 2)) {
-  $ERROR('#2: parseInt("11", 2.5) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.5)));
-}
+assert.sameValue(
+  parseInt("11", 2.000000000001),
+  parseInt("11", 2),
+  'parseInt("11", 2.000000000001) must return the same value returned by parseInt("11", 2)'
+);
 
-//CHECK#3
-if (parseInt("11", 2.9) !== parseInt("11", 2)) {
-  $ERROR('#3: parseInt("11", 2.9) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.9)));
-}
-
-//CHECK#4
-if (parseInt("11", 2.000000000001) !== parseInt("11", 2)) {
-  $ERROR('#4: parseInt("11", 2.000000000001) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.000000000001)));
-}
-
-//CHECK#5
-if (parseInt("11", 2.999999999999) !== parseInt("11", 2)) {
-  $ERROR('#5: parseInt("11", 2.999999999999) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.999999999999)));
-}
+assert.sameValue(
+  parseInt("11", 2.999999999999),
+  parseInt("11", 2),
+  'parseInt("11", 2.999999999999) must return the same value returned by parseInt("11", 2)'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T3.js
index ee2aa3f..fe8d15f 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A3.2_T3.js
@@ -7,20 +7,21 @@
 description: ToInt32 use modulo
 ---*/
 
-//CHECK#1
-if (parseInt("11", 4294967298) !== parseInt("11", 2)) {
-  $ERROR('#1: parseInt("11", 4294967298) === parseInt("11", 2). Actual: ' + (parseInt("11", 4294967298)));
-}
+assert.sameValue(
+  parseInt("11", 4294967298),
+  parseInt("11", 2),
+  'parseInt("11", 4294967298) must return the same value returned by parseInt("11", 2)'
+);
+assert.sameValue(
+  parseInt("11", 4294967296),
+  parseInt("11", 10),
+  'parseInt("11", 4294967296) must return the same value returned by parseInt("11", 10)'
+);
 
-//CHECK#2
-if (parseInt("11", 4294967296) !== parseInt("11", 10)) {
-  $ERROR('#2: parseInt("11", 4294967296) === parseInt("11", 10). Actual: ' + (parseInt("11", 4294967296)));
-}
+assert.sameValue(parseInt("11", -2147483650), NaN, 'parseInt("11", -2147483650) must return NaN');
 
-//CHECK#3
-assert.sameValue(parseInt("11", -2147483650), NaN, "-2147483650");
-
-//CHECK#4
-if (parseInt("11", -4294967294) !== parseInt("11", 2)) {
-  $ERROR('#4: parseInt("11", -4294967294) === parseInt("11", 2). Actual: ' + (parseInt("11", -4294967294)));
-}
+assert.sameValue(
+  parseInt("11", -4294967294),
+  parseInt("11", 2),
+  'parseInt("11", -4294967294) must return the same value returned by parseInt("11", 2)'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T1.js
index 7d23fe5..907ee6c 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T1.js
@@ -7,67 +7,16 @@
 description: R = 0
 ---*/
 
-//CHECK#0
-if (parseInt("0", 0) !== parseInt("0", 10)) {
-  $ERROR('#0: parseInt("0", 0) === parseInt("0", 10). Actual: ' + (parseInt("0", 0)));
-}
-
-//CHECK#1
-if (parseInt("1", 0) !== parseInt("1", 10)) {
-  $ERROR('#1: parseInt("1", 0) === parseInt("01", 10). Actual: ' + (parseInt("1", 0)));
-}
-
-//CHECK#2
-if (parseInt("2", 0) !== parseInt("2", 10)) {
-  $ERROR('#2: parseInt("2", 0) === parseInt("2", 10). Actual: ' + (parseInt("2", 0)));
-}
-
-//CHECK#3
-if (parseInt("3", 0) !== parseInt("3", 10)) {
-  $ERROR('#3: parseInt("3", 0) === parseInt("3", 10). Actual: ' + (parseInt("3", 0)));
-}
-
-//CHECK#4
-if (parseInt("4", 0) !== parseInt("4", 10)) {
-  $ERROR('#4: parseInt("4", 0) === parseInt(4", 10). Actual: ' + (parseInt("4", 0)));
-}
-
-//CHECK#5
-if (parseInt("5", 0) !== parseInt("5", 10)) {
-  $ERROR('#5: parseInt("5", 0) === parseInt("5", 10). Actual: ' + (parseInt("5", 0)));
-}
-
-//CHECK#6
-if (parseInt("6", 0) !== parseInt("6", 10)) {
-  $ERROR('#6: parseInt("6", 0) === parseInt("6", 10). Actual: ' + (parseInt("6", 0)));
-}
-
-//CHECK#7
-if (parseInt("7", 0) !== parseInt("7", 10)) {
-  $ERROR('#7: parseInt("7", 0) === parseInt("7", 10). Actual: ' + (parseInt("7", 0)));
-}
-
-//CHECK#8
-if (parseInt("8", 0) !== parseInt("8", 10)) {
-  $ERROR('#8: parseInt("8", 0) === parseInt("8", 10). Actual: ' + (parseInt("8", 0)));
-}
-
-//CHECK#9
-if (parseInt("9", 0) !== parseInt("9", 10)) {
-  $ERROR('#9: parseInt("9", 0) === parseInt("9", 10). Actual: ' + (parseInt("9", 0)));
-}
-
-//CHECK#10
-if (parseInt("10", 0) !== parseInt("10", 10)) {
-  $ERROR('#10: parseInt("10", 0) === parseInt("10", 10). Actual: ' + (parseInt("10", 0)));
-}
-
-//CHECK#11
-if (parseInt("11", 0) !== parseInt("11", 10)) {
-  $ERROR('#11: parseInt("11", 0) === parseInt("11", 10). Actual: ' + (parseInt("11", 0)));
-}
-
-//CHECK#12
-if (parseInt("9999", 0) !== parseInt("9999", 10)) {
-  $ERROR('#12: parseInt("9999", 0) === parseInt("9999", 10). Actual: ' + (parseInt("9999", 0)));
-}
+assert.sameValue(parseInt("0", 0), parseInt("0", 10), 'parseInt("0", 0) must return the same value returned by parseInt("0", 10)');
+assert.sameValue(parseInt("1", 0), parseInt("1", 10), 'parseInt("1", 0) must return the same value returned by parseInt("1", 10)');
+assert.sameValue(parseInt("2", 0), parseInt("2", 10), 'parseInt("2", 0) must return the same value returned by parseInt("2", 10)');
+assert.sameValue(parseInt("3", 0), parseInt("3", 10), 'parseInt("3", 0) must return the same value returned by parseInt("3", 10)');
+assert.sameValue(parseInt("4", 0), parseInt("4", 10), 'parseInt("4", 0) must return the same value returned by parseInt("4", 10)');
+assert.sameValue(parseInt("5", 0), parseInt("5", 10), 'parseInt("5", 0) must return the same value returned by parseInt("5", 10)');
+assert.sameValue(parseInt("6", 0), parseInt("6", 10), 'parseInt("6", 0) must return the same value returned by parseInt("6", 10)');
+assert.sameValue(parseInt("7", 0), parseInt("7", 10), 'parseInt("7", 0) must return the same value returned by parseInt("7", 10)');
+assert.sameValue(parseInt("8", 0), parseInt("8", 10), 'parseInt("8", 0) must return the same value returned by parseInt("8", 10)');
+assert.sameValue(parseInt("9", 0), parseInt("9", 10), 'parseInt("9", 0) must return the same value returned by parseInt("9", 10)');
+assert.sameValue(parseInt("10", 0), parseInt("10", 10), 'parseInt("10", 0) must return the same value returned by parseInt("10", 10)');
+assert.sameValue(parseInt("11", 0), parseInt("11", 10), 'parseInt("11", 0) must return the same value returned by parseInt("11", 10)');
+assert.sameValue(parseInt("9999", 0), parseInt("9999", 10), 'parseInt("9999", 0) must return the same value returned by parseInt("9999", 10)');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T2.js
index f4748e0..a36a0f3 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.1_T2.js
@@ -7,67 +7,16 @@
 description: R = undefined
 ---*/
 
-//CHECK#0
-if (parseInt("0") !== parseInt("0", 10)) {
-  $ERROR('#0: parseInt("0") === parseInt("0", 10). Actual: ' + (parseInt("0")));
-}
-
-//CHECK#1
-if (parseInt("1") !== parseInt("1", 10)) {
-  $ERROR('#1: parseInt("1") === parseInt("01", 10). Actual: ' + (parseInt("1")));
-}
-
-//CHECK#2
-if (parseInt("2") !== parseInt("2", 10)) {
-  $ERROR('#2: parseInt("2") === parseInt("2", 10). Actual: ' + (parseInt("2")));
-}
-
-//CHECK#3
-if (parseInt("3") !== parseInt("3", 10)) {
-  $ERROR('#3: parseInt("3") === parseInt("3", 10). Actual: ' + (parseInt("3")));
-}
-
-//CHECK#4
-if (parseInt("4") !== parseInt("4", 10)) {
-  $ERROR('#4: parseInt("4") === parseInt(4", 10). Actual: ' + (parseInt("4")));
-}
-
-//CHECK#5
-if (parseInt("5") !== parseInt("5", 10)) {
-  $ERROR('#5: parseInt("5") === parseInt("5", 10). Actual: ' + (parseInt("5")));
-}
-
-//CHECK#6
-if (parseInt("6") !== parseInt("6", 10)) {
-  $ERROR('#6: parseInt("6") === parseInt("6", 10). Actual: ' + (parseInt("6")));
-}
-
-//CHECK#7
-if (parseInt("7") !== parseInt("7", 10)) {
-  $ERROR('#7: parseInt("7") === parseInt("7", 10). Actual: ' + (parseInt("7")));
-}
-
-//CHECK#8
-if (parseInt("8") !== parseInt("8", 10)) {
-  $ERROR('#8: parseInt("8") === parseInt("8", 10). Actual: ' + (parseInt("8")));
-}
-
-//CHECK#9
-if (parseInt("9") !== parseInt("9", 10)) {
-  $ERROR('#9: parseInt("9") === parseInt("9", 10). Actual: ' + (parseInt("9")));
-}
-
-//CHECK#10
-if (parseInt("10") !== parseInt("10", 10)) {
-  $ERROR('#10: parseInt("10") === parseInt("10", 10). Actual: ' + (parseInt("10")));
-}
-
-//CHECK#11
-if (parseInt("11") !== parseInt("11", 10)) {
-  $ERROR('#11: parseInt("11") === parseInt("11", 10). Actual: ' + (parseInt("11")));
-}
-
-//CHECK#12
-if (parseInt("9999") !== parseInt("9999", 10)) {
-  $ERROR('#12: parseInt("9999") === parseInt("9999", 10). Actual: ' + (parseInt("9999")));
-}
+assert.sameValue(parseInt("0"), parseInt("0", 10), 'parseInt("0") must return the same value returned by parseInt("0", 10)');
+assert.sameValue(parseInt("1"), parseInt("1", 10), 'parseInt("1") must return the same value returned by parseInt("1", 10)');
+assert.sameValue(parseInt("2"), parseInt("2", 10), 'parseInt("2") must return the same value returned by parseInt("2", 10)');
+assert.sameValue(parseInt("3"), parseInt("3", 10), 'parseInt("3") must return the same value returned by parseInt("3", 10)');
+assert.sameValue(parseInt("4"), parseInt("4", 10), 'parseInt("4") must return the same value returned by parseInt("4", 10)');
+assert.sameValue(parseInt("5"), parseInt("5", 10), 'parseInt("5") must return the same value returned by parseInt("5", 10)');
+assert.sameValue(parseInt("6"), parseInt("6", 10), 'parseInt("6") must return the same value returned by parseInt("6", 10)');
+assert.sameValue(parseInt("7"), parseInt("7", 10), 'parseInt("7") must return the same value returned by parseInt("7", 10)');
+assert.sameValue(parseInt("8"), parseInt("8", 10), 'parseInt("8") must return the same value returned by parseInt("8", 10)');
+assert.sameValue(parseInt("9"), parseInt("9", 10), 'parseInt("9") must return the same value returned by parseInt("9", 10)');
+assert.sameValue(parseInt("10"), parseInt("10", 10), 'parseInt("10") must return the same value returned by parseInt("10", 10)');
+assert.sameValue(parseInt("11"), parseInt("11", 10), 'parseInt("11") must return the same value returned by parseInt("11", 10)');
+assert.sameValue(parseInt("9999"), parseInt("9999", 10), 'parseInt("9999") must return the same value returned by parseInt("9999", 10)');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T1.js
index 41bafa3..4232325 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T1.js
@@ -7,15 +7,15 @@
 description: R = 1
 ---*/
 
-assert.sameValue(parseInt("0", 1), NaN, "0");
-assert.sameValue(parseInt("1", 1), NaN, "1");
-assert.sameValue(parseInt("2", 1), NaN, "2");
-assert.sameValue(parseInt("3", 1), NaN, "3");
-assert.sameValue(parseInt("4", 1), NaN, "4");
-assert.sameValue(parseInt("5", 1), NaN, "5");
-assert.sameValue(parseInt("6", 1), NaN, "6");
-assert.sameValue(parseInt("7", 1), NaN, "7");
-assert.sameValue(parseInt("8", 1), NaN, "8");
-assert.sameValue(parseInt("9", 1), NaN, "9");
-assert.sameValue(parseInt("10", 1), NaN, "10");
-assert.sameValue(parseInt("11", 1), NaN, "11");
+assert.sameValue(parseInt("0", 1), NaN, 'parseInt("0", 1) must return NaN');
+assert.sameValue(parseInt("1", 1), NaN, 'parseInt("1", 1) must return NaN');
+assert.sameValue(parseInt("2", 1), NaN, 'parseInt("2", 1) must return NaN');
+assert.sameValue(parseInt("3", 1), NaN, 'parseInt("3", 1) must return NaN');
+assert.sameValue(parseInt("4", 1), NaN, 'parseInt("4", 1) must return NaN');
+assert.sameValue(parseInt("5", 1), NaN, 'parseInt("5", 1) must return NaN');
+assert.sameValue(parseInt("6", 1), NaN, 'parseInt("6", 1) must return NaN');
+assert.sameValue(parseInt("7", 1), NaN, 'parseInt("7", 1) must return NaN');
+assert.sameValue(parseInt("8", 1), NaN, 'parseInt("8", 1) must return NaN');
+assert.sameValue(parseInt("9", 1), NaN, 'parseInt("9", 1) must return NaN');
+assert.sameValue(parseInt("10", 1), NaN, 'parseInt("10", 1) must return NaN');
+assert.sameValue(parseInt("11", 1), NaN, 'parseInt("11", 1) must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T2.js
index c08144f..2b2c361 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A4.2_T2.js
@@ -7,15 +7,15 @@
 description: R = 37
 ---*/
 
-assert.sameValue(parseInt("0", 37), NaN, "0");
-assert.sameValue(parseInt("1", 37), NaN, "1");
-assert.sameValue(parseInt("2", 37), NaN, "2");
-assert.sameValue(parseInt("3", 37), NaN, "3");
-assert.sameValue(parseInt("4", 37), NaN, "4");
-assert.sameValue(parseInt("5", 37), NaN, "5");
-assert.sameValue(parseInt("6", 37), NaN, "6");
-assert.sameValue(parseInt("7", 37), NaN, "7");
-assert.sameValue(parseInt("8", 37), NaN, "8");
-assert.sameValue(parseInt("9", 37), NaN, "9");
-assert.sameValue(parseInt("10", 37), NaN, "10");
-assert.sameValue(parseInt("11", 37), NaN, "11");
+assert.sameValue(parseInt("0", 37), NaN, 'parseInt("0", 37) must return NaN');
+assert.sameValue(parseInt("1", 37), NaN, 'parseInt("1", 37) must return NaN');
+assert.sameValue(parseInt("2", 37), NaN, 'parseInt("2", 37) must return NaN');
+assert.sameValue(parseInt("3", 37), NaN, 'parseInt("3", 37) must return NaN');
+assert.sameValue(parseInt("4", 37), NaN, 'parseInt("4", 37) must return NaN');
+assert.sameValue(parseInt("5", 37), NaN, 'parseInt("5", 37) must return NaN');
+assert.sameValue(parseInt("6", 37), NaN, 'parseInt("6", 37) must return NaN');
+assert.sameValue(parseInt("7", 37), NaN, 'parseInt("7", 37) must return NaN');
+assert.sameValue(parseInt("8", 37), NaN, 'parseInt("8", 37) must return NaN');
+assert.sameValue(parseInt("9", 37), NaN, 'parseInt("9", 37) must return NaN');
+assert.sameValue(parseInt("10", 37), NaN, 'parseInt("10", 37) must return NaN');
+assert.sameValue(parseInt("11", 37), NaN, 'parseInt("11", 37) must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.1_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.1_T1.js
index 2593dfa..fa3dda5 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.1_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.1_T1.js
@@ -11,6 +11,4 @@
 description: Check if parseInt still accepts octal
 ---*/
 
-if (parseInt('010') !== 10) {
-  $ERROR("parseInt should no longer accept octal");
-}
+assert.sameValue(parseInt('010'), 10, 'parseInt(\'010\') must return 10');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T1.js
index e12ecaa..a1f7258 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T1.js
@@ -9,92 +9,26 @@
 description: ": 0x"
 ---*/
 
-//CHECK#0
-if (parseInt("0x0", 0) !== parseInt("0", 16)) {
-  $ERROR('#0: parseInt("0x0", 0) === parseInt("0", 16). Actual: ' + (parseInt("0x0", 0)));
-}
+assert.sameValue(parseInt("0x0", 0), parseInt("0", 16), 'parseInt("0x0", 0) must return the same value returned by parseInt("0", 16)');
+assert.sameValue(parseInt("0x1", 0), parseInt("1", 16), 'parseInt("0x1", 0) must return the same value returned by parseInt("1", 16)');
+assert.sameValue(parseInt("0x2", 0), parseInt("2", 16), 'parseInt("0x2", 0) must return the same value returned by parseInt("2", 16)');
+assert.sameValue(parseInt("0x3", 0), parseInt("3", 16), 'parseInt("0x3", 0) must return the same value returned by parseInt("3", 16)');
+assert.sameValue(parseInt("0x4", 0), parseInt("4", 16), 'parseInt("0x4", 0) must return the same value returned by parseInt("4", 16)');
+assert.sameValue(parseInt("0x5", 0), parseInt("5", 16), 'parseInt("0x5", 0) must return the same value returned by parseInt("5", 16)');
+assert.sameValue(parseInt("0x6", 0), parseInt("6", 16), 'parseInt("0x6", 0) must return the same value returned by parseInt("6", 16)');
+assert.sameValue(parseInt("0x7", 0), parseInt("7", 16), 'parseInt("0x7", 0) must return the same value returned by parseInt("7", 16)');
+assert.sameValue(parseInt("0x8", 0), parseInt("8", 16), 'parseInt("0x8", 0) must return the same value returned by parseInt("8", 16)');
+assert.sameValue(parseInt("0x9", 0), parseInt("9", 16), 'parseInt("0x9", 0) must return the same value returned by parseInt("9", 16)');
+assert.sameValue(parseInt("0xA", 0), parseInt("A", 16), 'parseInt("0xA", 0) must return the same value returned by parseInt("A", 16)');
+assert.sameValue(parseInt("0xB", 0), parseInt("B", 16), 'parseInt("0xB", 0) must return the same value returned by parseInt("B", 16)');
+assert.sameValue(parseInt("0xC", 0), parseInt("C", 16), 'parseInt("0xC", 0) must return the same value returned by parseInt("C", 16)');
+assert.sameValue(parseInt("0xD", 0), parseInt("D", 16), 'parseInt("0xD", 0) must return the same value returned by parseInt("D", 16)');
+assert.sameValue(parseInt("0xE", 0), parseInt("E", 16), 'parseInt("0xE", 0) must return the same value returned by parseInt("E", 16)');
+assert.sameValue(parseInt("0xF", 0), parseInt("F", 16), 'parseInt("0xF", 0) must return the same value returned by parseInt("F", 16)');
+assert.sameValue(parseInt("0xE", 0), parseInt("E", 16), 'parseInt("0xE", 0) must return the same value returned by parseInt("E", 16)');
 
-//CHECK#1
-if (parseInt("0x1", 0) !== parseInt("1", 16)) {
-  $ERROR('#1: parseInt("0x1", 0) === parseInt("1", 16). Actual: ' + (parseInt("0x1", 0)));
-}
-
-//CHECK#2
-if (parseInt("0x2", 0) !== parseInt("2", 16)) {
-  $ERROR('#2: parseInt("0x2", 0) === parseInt("2", 16). Actual: ' + (parseInt("0x2", 0)));
-}
-
-//CHECK#3
-if (parseInt("0x3", 0) !== parseInt("3", 16)) {
-  $ERROR('#3: parseInt("0x3", 0) === parseInt("3", 16). Actual: ' + (parseInt("0x3", 0)));
-}
-
-//CHECK#4
-if (parseInt("0x4", 0) !== parseInt("4", 16)) {
-  $ERROR('#4: parseInt("0x4", 0) === parseInt("4", 16). Actual: ' + (parseInt("0x4", 0)));
-}
-
-//CHECK#5
-if (parseInt("0x5", 0) !== parseInt("5", 16)) {
-  $ERROR('#5: parseInt("0x5", 0) === parseInt("5", 16). Actual: ' + (parseInt("0x5", 0)));
-}
-
-//CHECK#6
-if (parseInt("0x6", 0) !== parseInt("6", 16)) {
-  $ERROR('#6: parseInt("0x6", 0) === parseInt("6", 16). Actual: ' + (parseInt("0x6", 0)));
-}
-
-//CHECK#7
-if (parseInt("0x7", 0) !== parseInt("7", 16)) {
-  $ERROR('#7: parseInt("0x7", 0) === parseInt("7", 16). Actual: ' + (parseInt("0x7", 0)));
-}
-
-//CHECK#8
-if (parseInt("0x8", 0) !== parseInt("8", 16)) {
-  $ERROR('#8: parseInt("0x8", 0) === parseInt("8", 16). Actual: ' + (parseInt("0x8", 0)));
-}
-
-//CHECK#9
-if (parseInt("0x9", 0) !== parseInt("9", 16)) {
-  $ERROR('#9: parseInt("0x9", 0) === parseInt("9", 16). Actual: ' + (parseInt("0x9", 0)));
-}
-
-//CHECK#A
-if (parseInt("0xA", 0) !== parseInt("A", 16)) {
-  $ERROR('#A: parseInt("0xA", 0) === parseInt("A", 16). Actual: ' + (parseInt("0xA", 0)));
-}
-
-//CHECK#B
-if (parseInt("0xB", 0) !== parseInt("B", 16)) {
-  $ERROR('#B: parseInt("0xB", 0) === parseInt("B", 16). Actual: ' + (parseInt("0xB", 0)));
-}
-
-//CHECK#C
-if (parseInt("0xC", 0) !== parseInt("C", 16)) {
-  $ERROR('#C: parseInt("0xC", 0) === parseInt("C", 16). Actual: ' + (parseInt("0xC", 0)));
-}
-
-//CHECK#D
-if (parseInt("0xD", 0) !== parseInt("D", 16)) {
-  $ERROR('#D: parseInt("0xD", 0) === parseInt("D", 16). Actual: ' + (parseInt("0xD", 0)));
-}
-
-//CHECK#E
-if (parseInt("0xE", 0) !== parseInt("E", 16)) {
-  $ERROR('#E: parseInt("0xE", 0) === parseInt("E", 16). Actual: ' + (parseInt("0xE", 0)));
-}
-
-//CHECK#F
-if (parseInt("0xF", 0) !== parseInt("F", 16)) {
-  $ERROR('#F: parseInt("0xF", 0) === parseInt("F", 16). Actual: ' + (parseInt("0xF", 0)));
-}
-
-//CHECK#E
-if (parseInt("0xE", 0) !== parseInt("E", 16)) {
-  $ERROR('#E: parseInt("0xE", 0) === parseInt("E", 16). Actual: ' + (parseInt("0xE", 0)));
-}
-
-//CHECK#ABCDEF
-if (parseInt("0xABCDEF", 0) !== parseInt("ABCDEF", 16)) {
-  $ERROR('#ABCDEF: parseInt("0xABCDEF", 0) === parseInt("ABCDEF", 16). Actual: ' + (parseInt("0xABCDEF", 0)));
-}
+assert.sameValue(
+  parseInt("0xABCDEF", 0),
+  parseInt("ABCDEF", 16),
+  'parseInt("0xABCDEF", 0) must return the same value returned by parseInt("ABCDEF", 16)'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T2.js
index 3777d0a..4667d98 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A5.2_T2.js
@@ -9,92 +9,21 @@
 description: ": 0X"
 ---*/
 
-//CHECK#0
-if (parseInt("0X0", 0) !== parseInt("0", 16)) {
-  $ERROR('#0: parseInt("0X0", 0) === parseInt("0", 16). Actual: ' + (parseInt("0X0", 0)));
-}
-
-//CHECK#1
-if (parseInt("0X1") !== parseInt("1", 16)) {
-  $ERROR('#1: parseInt("0X1") === parseInt("1", 16). Actual: ' + (parseInt("0X1")));
-}
-
-//CHECK#2
-if (parseInt("0X2") !== parseInt("2", 16)) {
-  $ERROR('#2: parseInt("0X2") === parseInt("2", 16). Actual: ' + (parseInt("0X2")));
-}
-
-//CHECK#3
-if (parseInt("0X3") !== parseInt("3", 16)) {
-  $ERROR('#3: parseInt("0X3") === parseInt("3", 16). Actual: ' + (parseInt("0X3")));
-}
-
-//CHECK#4
-if (parseInt("0X4") !== parseInt("4", 16)) {
-  $ERROR('#4: parseInt("0X4") === parseInt("4", 16). Actual: ' + (parseInt("0X4")));
-}
-
-//CHECK#5
-if (parseInt("0X5") !== parseInt("5", 16)) {
-  $ERROR('#5: parseInt("0X5") === parseInt("5", 16). Actual: ' + (parseInt("0X5")));
-}
-
-//CHECK#6
-if (parseInt("0X6") !== parseInt("6", 16)) {
-  $ERROR('#6: parseInt("0X6") === parseInt("6", 16). Actual: ' + (parseInt("0X6")));
-}
-
-//CHECK#7
-if (parseInt("0X7") !== parseInt("7", 16)) {
-  $ERROR('#7: parseInt("0X7") === parseInt("7", 16). Actual: ' + (parseInt("0X7")));
-}
-
-//CHECK#8
-if (parseInt("0X8") !== parseInt("8", 16)) {
-  $ERROR('#8: parseInt("0X8") === parseInt("8", 16). Actual: ' + (parseInt("0X8")));
-}
-
-//CHECK#9
-if (parseInt("0X9") !== parseInt("9", 16)) {
-  $ERROR('#9: parseInt("0X9") === parseInt("9", 16). Actual: ' + (parseInt("0X9")));
-}
-
-//CHECK#A
-if (parseInt("0XA") !== parseInt("A", 16)) {
-  $ERROR('#A: parseInt("0XA") === parseInt("A", 16). Actual: ' + (parseInt("0XA")));
-}
-
-//CHECK#B
-if (parseInt("0XB") !== parseInt("B", 16)) {
-  $ERROR('#B: parseInt("0XB") === parseInt("B", 16). Actual: ' + (parseInt("0XB")));
-}
-
-//CHECK#C
-if (parseInt("0XC") !== parseInt("C", 16)) {
-  $ERROR('#C: parseInt("0XC") === parseInt("C", 16). Actual: ' + (parseInt("0XC")));
-}
-
-//CHECK#D
-if (parseInt("0XD") !== parseInt("D", 16)) {
-  $ERROR('#D: parseInt("0XD") === parseInt("D", 16). Actual: ' + (parseInt("0XD")));
-}
-
-//CHECK#E
-if (parseInt("0XE") !== parseInt("E", 16)) {
-  $ERROR('#E: parseInt("0XE") === parseInt("E", 16). Actual: ' + (parseInt("0XE")));
-}
-
-//CHECK#F
-if (parseInt("0XF") !== parseInt("F", 16)) {
-  $ERROR('#F: parseInt("0XF") === parseInt("F", 16). Actual: ' + (parseInt("0XF")));
-}
-
-//CHECK#E
-if (parseInt("0XE") !== parseInt("E", 16)) {
-  $ERROR('#E: parseInt("0XE") === parseInt("E", 16). Actual: ' + (parseInt("0XE")));
-}
-
-//CHECK#ABCDEF
-if (parseInt("0XABCDEF") !== parseInt("ABCDEF", 16)) {
-  $ERROR('#ABCDEF: parseInt("0XABCDEF") === parseInt("ABCDEF", 16). Actual: ' + (parseInt("0XABCDEF")));
-}
+assert.sameValue(parseInt("0X0", 0), parseInt("0", 16), 'parseInt("0X0", 0) must return the same value returned by parseInt("0", 16)');
+assert.sameValue(parseInt("0X1"), parseInt("1", 16), 'parseInt("0X1") must return the same value returned by parseInt("1", 16)');
+assert.sameValue(parseInt("0X2"), parseInt("2", 16), 'parseInt("0X2") must return the same value returned by parseInt("2", 16)');
+assert.sameValue(parseInt("0X3"), parseInt("3", 16), 'parseInt("0X3") must return the same value returned by parseInt("3", 16)');
+assert.sameValue(parseInt("0X4"), parseInt("4", 16), 'parseInt("0X4") must return the same value returned by parseInt("4", 16)');
+assert.sameValue(parseInt("0X5"), parseInt("5", 16), 'parseInt("0X5") must return the same value returned by parseInt("5", 16)');
+assert.sameValue(parseInt("0X6"), parseInt("6", 16), 'parseInt("0X6") must return the same value returned by parseInt("6", 16)');
+assert.sameValue(parseInt("0X7"), parseInt("7", 16), 'parseInt("0X7") must return the same value returned by parseInt("7", 16)');
+assert.sameValue(parseInt("0X8"), parseInt("8", 16), 'parseInt("0X8") must return the same value returned by parseInt("8", 16)');
+assert.sameValue(parseInt("0X9"), parseInt("9", 16), 'parseInt("0X9") must return the same value returned by parseInt("9", 16)');
+assert.sameValue(parseInt("0XA"), parseInt("A", 16), 'parseInt("0XA") must return the same value returned by parseInt("A", 16)');
+assert.sameValue(parseInt("0XB"), parseInt("B", 16), 'parseInt("0XB") must return the same value returned by parseInt("B", 16)');
+assert.sameValue(parseInt("0XC"), parseInt("C", 16), 'parseInt("0XC") must return the same value returned by parseInt("C", 16)');
+assert.sameValue(parseInt("0XD"), parseInt("D", 16), 'parseInt("0XD") must return the same value returned by parseInt("D", 16)');
+assert.sameValue(parseInt("0XE"), parseInt("E", 16), 'parseInt("0XE") must return the same value returned by parseInt("E", 16)');
+assert.sameValue(parseInt("0XF"), parseInt("F", 16), 'parseInt("0XF") must return the same value returned by parseInt("F", 16)');
+assert.sameValue(parseInt("0XE"), parseInt("E", 16), 'parseInt("0XE") must return the same value returned by parseInt("E", 16)');
+assert.sameValue(parseInt("0XABCDEF"), parseInt("ABCDEF", 16), 'parseInt("0XABCDEF") must return the same value returned by parseInt("ABCDEF", 16)');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T1.js
index 97ad107..94dbe59 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T1.js
@@ -12,7 +12,5 @@
 
 //CHECK#
 for (var i = 2; i <= 36; i++) {
-  if (parseInt("10$1", i) !== i) {
-    $ERROR('#' + i + ': i = ' + i + 'parseInt("10$1", i) === i. Actual: ' + (parseInt("10$1", i)));
-  }
+  assert.sameValue(parseInt("10$1", i), i, 'parseInt("10$1", i) must return the value of i');
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T2.js
index 1699b25..3f68eb4 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T2.js
@@ -13,7 +13,5 @@
 //CHECK#
 var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
 for (var i = 2; i <= 36; i++) {
-  if (parseInt(R_digit[i - 2] + "$", i) !== i - 1) {
-    $ERROR('#' + i + ': ');
-  }
+  assert.sameValue(parseInt(R_digit[i - 2] + "$", i), i - 1, 'parseInt(R_digit[i - 2] + "$", 2) must return i - 1');
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T3.js
index f4b805a..569cb38 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T3.js
@@ -13,7 +13,5 @@
 //CHECK#
 var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
 for (var i = 2; i <= 36; i++) {
-  if (parseInt(R_digit[i - 2] + "$", i) !== i - 1) {
-    $ERROR('#' + i + ': ');
-  }
+  assert.sameValue(parseInt(R_digit[i - 2] + "$", i), i - 1, 'parseInt(R_digit[i - 2] + "$", i) must return i - 1');
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T4.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T4.js
index d08bfbf..e0d6562 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T4.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T4.js
@@ -13,7 +13,9 @@
 //CHECK#
 var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
 for (var i = 2; i <= 35; i++) {
-  if (parseInt(R_digit[i - 2] + R_digit[i - 1], i) !== i - 1) {
-    $ERROR('#' + i + ': ');
-  }
+  assert.sameValue(
+    parseInt(R_digit[i - 2] + R_digit[i - 1], i),
+    i - 1,
+    'parseInt(R_digit[i - 2] + R_digit[i - 1], i) must return i - 1'
+  );
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T5.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T5.js
index e2dcc02..719e0cd 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T5.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T5.js
@@ -13,7 +13,9 @@
 //CHECK#
 var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
 for (var i = 2; i <= 35; i++) {
-  if (parseInt(R_digit[i - 2] + R_digit[i - 1], i) !== i - 1) {
-    $ERROR('#' + i + ': ');
-  }
+  assert.sameValue(
+    parseInt(R_digit[i - 2] + R_digit[i - 1], i),
+    i - 1,
+    'parseInt(R_digit[i - 2] + R_digit[i - 1], i) must return i - 1'
+  );
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T6.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T6.js
index 4837216..8cbc2ce 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T6.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A6.1_T6.js
@@ -10,47 +10,17 @@
 description: Complex test. Radix-R notation in [0..9]
 ---*/
 
-//CHECK#2
-if (parseInt("0123456789", 2) !== 1) {
-  $ERROR('#2: parseInt("0123456789", 2) === 1. Actual: ' + (parseInt("0123456789", 2)));
-}
+assert.sameValue(parseInt("0123456789", 2), 1, 'parseInt("0123456789", 2) must return 1');
+assert.sameValue(parseInt("01234567890", 3), 5, 'parseInt("01234567890", 3) must return 5');
+assert.sameValue(parseInt("01234567890", 4), 27, 'parseInt("01234567890", 4) must return 27');
+assert.sameValue(parseInt("01234567890", 5), 194, 'parseInt("01234567890", 5) must return 194');
+assert.sameValue(parseInt("01234567890", 6), 1865, 'parseInt("01234567890", 6) must return 1865');
+assert.sameValue(parseInt("01234567890", 7), 22875, 'parseInt("01234567890", 7) must return 22875');
+assert.sameValue(parseInt("01234567890", 8), 342391, 'parseInt("01234567890", 8) must return 342391');
+assert.sameValue(parseInt("01234567890", 9), 6053444, 'parseInt("01234567890", 9) must return 6053444');
 
-//CHECK#3
-if (parseInt("01234567890", 3) !== 5) {
-  $ERROR('#3: parseInt("01234567890", 3) === 5. Actual: ' + (parseInt("01234567890", 3)));
-}
-
-//CHECK#4
-if (parseInt("01234567890", 4) !== 27) {
-  $ERROR('#4: parseInt("01234567890", 4) === 27. Actual: ' + (parseInt("01234567890", 4)));
-}
-
-//CHECK#5
-if (parseInt("01234567890", 5) !== 194) {
-  $ERROR('#5: parseInt("01234567890", 5) === 194. Actual: ' + (parseInt("01234567890", 5)));
-}
-
-//CHECK#6
-if (parseInt("01234567890", 6) !== 1865) {
-  $ERROR('#6: parseInt("01234567890", 6) === 1865. Actual: ' + (parseInt("01234567890", 6)));
-}
-
-//CHECK#7
-if (parseInt("01234567890", 7) !== 22875) {
-  $ERROR('#7: parseInt("01234567890", 7) === 22875. Actual: ' + (parseInt("01234567890", 7)));
-}
-
-//CHECK#8
-if (parseInt("01234567890", 8) !== 342391) {
-  $ERROR('#8: parseInt("01234567890", 8) === 342391. Actual: ' + (parseInt("01234567890", 8)));
-}
-
-//CHECK#9
-if (parseInt("01234567890", 9) !== 6053444) {
-  $ERROR('#9: parseInt("01234567890", 9) === 6053444. Actual: ' + (parseInt("01234567890", 9)));
-}
-
-//CHECK#10
-if (parseInt("01234567890", 10) !== Number(1234567890)) {
-  $ERROR('#10: parseInt("01234567890", 10) === Number(1234567890). Actual: ' + (parseInt("01234567890", 10)));
-}
+assert.sameValue(
+  parseInt("01234567890", 10),
+  Number(1234567890),
+  'parseInt("01234567890", 10) must return the same value returned by Number(1234567890)'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T1.js
index 51f965d..80a44ad 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T1.js
@@ -9,5 +9,5 @@
 
 //CHECK#
 for (var i = 2; i <= 36; i++) {
-  assert.sameValue(parseInt("$string", i), NaN);
+  assert.sameValue(parseInt("$string", i), NaN, 'parseInt("$string", i) must return NaN');
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T2.js
index ae3aabd..486f5a5 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.1_T2.js
@@ -7,8 +7,8 @@
 description: x is not a radix-R digit
 ---*/
 
-assert.sameValue(parseInt("$0x"), NaN, "$0x");
-assert.sameValue(parseInt("$0X"), NaN, "$0X");
-assert.sameValue(parseInt("$$$"), NaN, "$$$");
-assert.sameValue(parseInt(""), NaN, "the empty string");
-assert.sameValue(parseInt(" "), NaN, "a string with a single space");
+assert.sameValue(parseInt("$0x"), NaN, 'parseInt("$0x") must return NaN');
+assert.sameValue(parseInt("$0X"), NaN, 'parseInt("$0X") must return NaN');
+assert.sameValue(parseInt("$$$"), NaN, 'parseInt("$$$") must return NaN');
+assert.sameValue(parseInt(""), NaN, 'parseInt("") must return NaN');
+assert.sameValue(parseInt(" "), NaN, 'parseInt(" ") must return NaN');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T1.js
index 9ec442b..cb91465 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T1.js
@@ -29,8 +29,6 @@
       num = num + (i + (k0 - k) - 1) * pow;
       pow = pow * i;
     }
-    if (parseInt(str, i) !== num) {
-      $ERROR('#' + i + '.' + j + ' : ');
-    }
+    assert.sameValue(parseInt(str, i), num, 'parseInt("str + R_digit2[k - 2], i) must return the value of num');
   }
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T2.js
index 0083830..2f0a771 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T2.js
@@ -11,102 +11,23 @@
 description: Checking algorithm for R = 2
 ---*/
 
-//CHECK#1
-if (parseInt("1", 2) !== 1) {
-  $ERROR('#1: parseInt("1", 2) === 1. Actual: ' + (parseInt("1", 2)));
-}
-
-//CHECK#2
-if (parseInt("11", 2) !== 3) {
-  $ERROR('#2: parseInt("11", 2) === 3. Actual: ' + (parseInt("11", 2)));
-}
-
-//CHECK#3
-if (parseInt("111", 2) !== 7) {
-  $ERROR('#3: parseInt("111", 2) === 7. Actual: ' + (parseInt("111", 2)));
-}
-
-//CHECK#4
-if (parseInt("1111", 2) !== 15) {
-  $ERROR('#4: parseInt("1111", 2) === 15. Actual: ' + (parseInt("1111", 2)));
-}
-
-//CHECK#5
-if (parseInt("11111", 2) !== 31) {
-  $ERROR('#5: parseInt("11111", 2) === 31. Actual: ' + (parseInt("11111", 2)));
-}
-
-//CHECK#6
-if (parseInt("111111", 2) !== 63) {
-  $ERROR('#6: parseInt("111111", 2) === 63. Actual: ' + (parseInt("111111", 2)));
-}
-
-//CHECK#7
-if (parseInt("1111111", 2) !== 127) {
-  $ERROR('#7: parseInt("1111111", 2) === 127. Actual: ' + (parseInt("1111111", 2)));
-}
-
-//CHECK#8
-if (parseInt("11111111", 2) !== 255) {
-  $ERROR('#8: parseInt("11111111", 2) === 255. Actual: ' + (parseInt("11111111", 2)));
-}
-
-//CHECK#9
-if (parseInt("111111111", 2) !== 511) {
-  $ERROR('#9: parseInt("111111111", 2) === 511. Actual: ' + (parseInt("111111111", 2)));
-}
-
-//CHECK#10
-if (parseInt("1111111111", 2) !== 1023) {
-  $ERROR('#10: parseInt("1111111111", 2) === 1023. Actual: ' + (parseInt("1111111111", 2)));
-}
-
-//CHECK#11
-if (parseInt("11111111111", 2) !== 2047) {
-  $ERROR('#11: parseInt("11111111111", 2) === 2047. Actual: ' + (parseInt("11111111111", 2)));
-}
-
-//CHECK#12
-if (parseInt("111111111111", 2) !== 4095) {
-  $ERROR('#12: parseInt("111111111111", 2) === 4095. Actual: ' + (parseInt("111111111111", 2)));
-}
-
-//CHECK#13
-if (parseInt("1111111111111", 2) !== 8191) {
-  $ERROR('#13: parseInt("1111111111111", 2) === 8191. Actual: ' + (parseInt("1111111111111", 2)));
-}
-
-//CHECK#14
-if (parseInt("11111111111111", 2) !== 16383) {
-  $ERROR('#14: parseInt("11111111111111", 2) === 16383. Actual: ' + (parseInt("11111111111111", 2)));
-}
-
-//CHECK#15
-if (parseInt("111111111111111", 2) !== 32767) {
-  $ERROR('#15: parseInt("111111111111111", 2) === 32767. Actual: ' + (parseInt("111111111111111", 2)));
-}
-
-//CHECK#16
-if (parseInt("1111111111111111", 2) !== 65535) {
-  $ERROR('#16: parseInt("1111111111111111", 2) === 65535. Actual: ' + (parseInt("1111111111111111", 2)));
-}
-
-//CHECK#17
-if (parseInt("11111111111111111", 2) !== 131071) {
-  $ERROR('#17: parseInt("11111111111111111", 2) === 131071. Actual: ' + (parseInt("11111111111111111", 2)));
-}
-
-//CHECK#18
-if (parseInt("111111111111111111", 2) !== 262143) {
-  $ERROR('#18: parseInt("111111111111111111", 2) === 262143. Actual: ' + (parseInt("111111111111111111", 2)));
-}
-
-//CHECK#19
-if (parseInt("1111111111111111111", 2) !== 524287) {
-  $ERROR('#19: parseInt("1111111111111111111", 2) === 524287. Actual: ' + (parseInt("1111111111111111111", 2)));
-}
-
-//CHECK#20
-if (parseInt("11111111111111111111", 2) !== 1048575) {
-  $ERROR('#20: parseInt("11111111111111111111", 2) === 1048575. Actual: ' + (parseInt("11111111111111111111", 2)));
-}
+assert.sameValue(parseInt("1", 2), 1, 'parseInt("1", 2) must return 1');
+assert.sameValue(parseInt("11", 2), 3, 'parseInt("11", 2) must return 3');
+assert.sameValue(parseInt("111", 2), 7, 'parseInt("111", 2) must return 7');
+assert.sameValue(parseInt("1111", 2), 15, 'parseInt("1111", 2) must return 15');
+assert.sameValue(parseInt("11111", 2), 31, 'parseInt("11111", 2) must return 31');
+assert.sameValue(parseInt("111111", 2), 63, 'parseInt("111111", 2) must return 63');
+assert.sameValue(parseInt("1111111", 2), 127, 'parseInt("1111111", 2) must return 127');
+assert.sameValue(parseInt("11111111", 2), 255, 'parseInt("11111111", 2) must return 255');
+assert.sameValue(parseInt("111111111", 2), 511, 'parseInt("111111111", 2) must return 511');
+assert.sameValue(parseInt("1111111111", 2), 1023, 'parseInt("1111111111", 2) must return 1023');
+assert.sameValue(parseInt("11111111111", 2), 2047, 'parseInt("11111111111", 2) must return 2047');
+assert.sameValue(parseInt("111111111111", 2), 4095, 'parseInt("111111111111", 2) must return 4095');
+assert.sameValue(parseInt("1111111111111", 2), 8191, 'parseInt("1111111111111", 2) must return 8191');
+assert.sameValue(parseInt("11111111111111", 2), 16383, 'parseInt("11111111111111", 2) must return 16383');
+assert.sameValue(parseInt("111111111111111", 2), 32767, 'parseInt("111111111111111", 2) must return 32767');
+assert.sameValue(parseInt("1111111111111111", 2), 65535, 'parseInt("1111111111111111", 2) must return 65535');
+assert.sameValue(parseInt("11111111111111111", 2), 131071, 'parseInt("11111111111111111", 2) must return 131071');
+assert.sameValue(parseInt("111111111111111111", 2), 262143, 'parseInt("111111111111111111", 2) must return 262143');
+assert.sameValue(parseInt("1111111111111111111", 2), 524287, 'parseInt("1111111111111111111", 2) must return 524287');
+assert.sameValue(parseInt("11111111111111111111", 2), 1048575, 'parseInt("11111111111111111111", 2) must return 1048575');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T3.js
index b644e8a5..91a0865 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.2_T3.js
@@ -11,102 +11,68 @@
 description: Checking algorithm for R = 16
 ---*/
 
-//CHECK#1
-if (parseInt("0x1", 16) !== 1) {
-  $ERROR('#1: parseInt("0x1", 16) === 1. Actual: ' + (parseInt("0x1", 16)));
-}
+assert.sameValue(parseInt("0x1", 16), 1, 'parseInt("0x1", 16) must return 1');
+assert.sameValue(parseInt("0X10", 16), 16, 'parseInt("0X10", 16) must return 16');
+assert.sameValue(parseInt("0x100", 16), 256, 'parseInt("0x100", 16) must return 256');
+assert.sameValue(parseInt("0X1000", 16), 4096, 'parseInt("0X1000", 16) must return 4096');
+assert.sameValue(parseInt("0x10000", 16), 65536, 'parseInt("0x10000", 16) must return 65536');
+assert.sameValue(parseInt("0X100000", 16), 1048576, 'parseInt("0X100000", 16) must return 1048576');
+assert.sameValue(parseInt("0x1000000", 16), 16777216, 'parseInt("0x1000000", 16) must return 16777216');
+assert.sameValue(parseInt("0x10000000", 16), 268435456, 'parseInt("0x10000000", 16) must return 268435456');
+assert.sameValue(parseInt("0x100000000", 16), 4294967296, 'parseInt("0x100000000", 16) must return 4294967296');
+assert.sameValue(parseInt("0x1000000000", 16), 68719476736, 'parseInt("0x1000000000", 16) must return 68719476736');
+assert.sameValue(parseInt("0x10000000000", 16), 1099511627776, 'parseInt("0x10000000000", 16) must return 1099511627776');
 
-//CHECK#2
-if (parseInt("0X10", 16) !== 16) {
-  $ERROR('#2: parseInt("0X10", 16) === 16. Actual: ' + (parseInt("0X10", 16)));
-}
+assert.sameValue(
+  parseInt("0x100000000000", 16),
+  17592186044416,
+  'parseInt("0x100000000000", 16) must return 17592186044416'
+);
 
-//CHECK#3
-if (parseInt("0x100", 16) !== 256) {
-  $ERROR('#3: parseInt("0x100", 16) === 256. Actual: ' + (parseInt("0x100", 16)));
-}
+assert.sameValue(
+  parseInt("0x1000000000000", 16),
+  281474976710656,
+  'parseInt("0x1000000000000", 16) must return 281474976710656'
+);
 
-//CHECK#4
-if (parseInt("0X1000", 16) !== 4096) {
-  $ERROR('#4: parseInt("0X1000", 16) === 4096. Actual: ' + (parseInt("0X1000", 16)));
-}
+assert.sameValue(
+  parseInt("0x10000000000000", 16),
+  4503599627370496,
+  'parseInt("0x10000000000000", 16) must return 4503599627370496'
+);
 
-//CHECK#5
-if (parseInt("0x10000", 16) !== 65536) {
-  $ERROR('#5: parseInt("0x10000", 16) === 65536. Actual: ' + (parseInt("0x10000", 16)));
-}
+assert.sameValue(
+  parseInt("0x100000000000000", 16),
+  72057594037927936,
+  'parseInt("0x100000000000000", 16) must return 72057594037927936'
+);
 
-//CHECK#6
-if (parseInt("0X100000", 16) !== 1048576) {
-  $ERROR('#6: parseInt("x100000", 16) === 1048576. Actual: ' + (parseInt("x100000", 16)));
-}
+assert.sameValue(
+  parseInt("0x1000000000000000", 16),
+  1152921504606846976,
+  'parseInt("0x1000000000000000", 16) must return 1152921504606846976'
+);
 
-//CHECK#7
-if (parseInt("0x1000000", 16) !== 16777216) {
-  $ERROR('#7: parseInt("0x1000000", 16) === 16777216. Actual: ' + (parseInt("0x1000000", 16)));
-}
+assert.sameValue(
+  parseInt("0x10000000000000000", 16),
+  18446744073709551616,
+  'parseInt("0x10000000000000000", 16) must return 18446744073709551616'
+);
 
-//CHECK#8
-if (parseInt("0x10000000", 16) !== 268435456) {
-  $ERROR('#8: parseInt("0x10000000", 16) === 268435456. Actual: ' + (parseInt("0x10000000", 16)));
-}
+assert.sameValue(
+  parseInt("0x100000000000000000", 16),
+  295147905179352825856,
+  'parseInt("0x100000000000000000", 16) must return 295147905179352825856'
+);
 
-//CHECK#9
-if (parseInt("0x100000000", 16) !== 4294967296) {
-  $ERROR('#9: parseInt("0x100000000", 16) === 4294967296. Actual: ' + (parseInt("0x100000000", 16)));
-}
+assert.sameValue(
+  parseInt("0x1000000000000000000", 16),
+  4722366482869645213696,
+  'parseInt("0x1000000000000000000", 16) must return 4722366482869645213696'
+);
 
-//CHECK#10
-if (parseInt("0x1000000000", 16) !== 68719476736) {
-  $ERROR('#10: parseInt("0x1000000000", 16) === 68719476736. Actual: ' + (parseInt("0x1000000000", 16)));
-}
-
-//CHECK#10
-if (parseInt("0x10000000000", 16) !== 1099511627776) {
-  $ERROR('#10: parseInt("0x10000000000", 16) === 1099511627776. Actual: ' + (parseInt("0x10000000000", 16)));
-}
-
-//CHECK#12
-if (parseInt("0x100000000000", 16) !== 17592186044416) {
-  $ERROR('#12: parseInt("0x100000000000", 16) === 17592186044416. Actual: ' + (parseInt("0x100000000000", 16)));
-}
-
-//CHECK#13
-if (parseInt("0x1000000000000", 16) !== 281474976710656) {
-  $ERROR('#13: parseInt("0x1000000000000", 16) === 281474976710656. Actual: ' + (parseInt("0x1000000000000", 16)));
-}
-
-//CHECK#14
-if (parseInt("0x10000000000000", 16) !== 4503599627370496) {
-  $ERROR('#14: parseInt("0x10000000000000", 16) === 4503599627370496. Actual: ' + (parseInt("0x10000000000000", 16)));
-}
-
-//CHECK#15
-if (parseInt("0x100000000000000", 16) !== 72057594037927936) {
-  $ERROR('#15: parseInt("0x100000000000000", 16) === 72057594037927936. Actual: ' + (parseInt("0x100000000000000", 16)));
-}
-
-//CHECK#16
-if (parseInt("0x1000000000000000", 16) !== 1152921504606846976) {
-  $ERROR('#16: parseInt("0x1000000000000000", 16) === 1152921504606846976. Actual: ' + (parseInt("0x1000000000000000", 16)));
-}
-
-//CHECK#17
-if (parseInt("0x10000000000000000", 16) !== 18446744073709551616) {
-  $ERROR('#17: parseInt("0x10000000000000000", 16) === 18446744073709551616. Actual: ' + (parseInt("0x10000000000000000", 16)));
-}
-
-//CHECK#18
-if (parseInt("0x100000000000000000", 16) !== 295147905179352825856) {
-  $ERROR('#18: parseInt("0x100000000000000000", 16) === 295147905179352825856. Actual: ' + (parseInt("0x100000000000000000", 16)));
-}
-
-//CHECK#19
-if (parseInt("0x1000000000000000000", 16) !== 4722366482869645213696) {
-  $ERROR('#19: parseInt("0x1000000000000000000", 16) === 4722366482869645213696. Actual: ' + (parseInt("0x1000000000000000000", 16)));
-}
-
-//CHECK#20
-if (parseInt("0x10000000000000000000", 16) !== 75557863725914323419136) {
-  $ERROR('#20: parseInt("0x10000000000000000000", 16) === 75557863725914323419136. Actual: ' + (parseInt("0x10000000000000000000", 16)));
-}
+assert.sameValue(
+  parseInt("0x10000000000000000000", 16),
+  75557863725914323419136,
+  'parseInt("0x10000000000000000000", 16) must return 75557863725914323419136'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T1.js
index b77016d..76954da 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T1.js
@@ -30,8 +30,6 @@
       num = num + (i + (k0 - k) - 1) * pow;
       pow = pow * i;
     }
-    if (parseInt(str, i) !== num * sign) {
-      $ERROR('#' + i + '.' + j + ' : ');
-    }
+    assert.sameValue(parseInt(str, i), num * sign, 'parseInt("str + R_digit2[k - 2], i) must return num * sign');
   }
 }
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T2.js
index 91fd295..3cf6862 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T2.js
@@ -7,102 +7,28 @@
 description: Checking algorithm for R = 2
 ---*/
 
-//CHECK#1
-if (parseInt("-1", 2) !== -1) {
-  $ERROR('#1: parseInt("-1", 2) === -1. Actual: ' + (parseInt("-1", 2)));
-}
+assert.sameValue(parseInt("-1", 2), -1, 'parseInt("-1", 2) must return -1');
+assert.sameValue(parseInt("-11", 2), -3, 'parseInt("-11", 2) must return -3');
+assert.sameValue(parseInt("-111", 2), -7, 'parseInt("-111", 2) must return -7');
+assert.sameValue(parseInt("-1111", 2), -15, 'parseInt("-1111", 2) must return -15');
+assert.sameValue(parseInt("-11111", 2), -31, 'parseInt("-11111", 2) must return -31');
+assert.sameValue(parseInt("-111111", 2), -63, 'parseInt("-111111", 2) must return -63');
+assert.sameValue(parseInt("-1111111", 2), -127, 'parseInt("-1111111", 2) must return -127');
+assert.sameValue(parseInt("-11111111", 2), -255, 'parseInt("-11111111", 2) must return -255');
+assert.sameValue(parseInt("-111111111", 2), -511, 'parseInt("-111111111", 2) must return -511');
+assert.sameValue(parseInt("-1111111111", 2), -1023, 'parseInt("-1111111111", 2) must return -1023');
+assert.sameValue(parseInt("-11111111111", 2), -2047, 'parseInt("-11111111111", 2) must return -2047');
+assert.sameValue(parseInt("-111111111111", 2), -4095, 'parseInt("-111111111111", 2) must return -4095');
+assert.sameValue(parseInt("-1111111111111", 2), -8191, 'parseInt("-1111111111111", 2) must return -8191');
+assert.sameValue(parseInt("-11111111111111", 2), -16383, 'parseInt("-11111111111111", 2) must return -16383');
+assert.sameValue(parseInt("-111111111111111", 2), -32767, 'parseInt("-111111111111111", 2) must return -32767');
+assert.sameValue(parseInt("-1111111111111111", 2), -65535, 'parseInt("-1111111111111111", 2) must return -65535');
+assert.sameValue(parseInt("-11111111111111111", 2), -131071, 'parseInt("-11111111111111111", 2) must return -131071');
+assert.sameValue(parseInt("-111111111111111111", 2), -262143, 'parseInt("-111111111111111111", 2) must return -262143');
+assert.sameValue(parseInt("-1111111111111111111", 2), -524287, 'parseInt("-1111111111111111111", 2) must return -524287');
 
-//CHECK#2
-if (parseInt("-11", 2) !== -3) {
-  $ERROR('#2: parseInt("-11", 2) === -3. Actual: ' + (parseInt("-11", 2)));
-}
-
-//CHECK#3
-if (parseInt("-111", 2) !== -7) {
-  $ERROR('#3: parseInt("-111", 2) === -7. Actual: ' + (parseInt("-111", 2)));
-}
-
-//CHECK#4
-if (parseInt("-1111", 2) !== -15) {
-  $ERROR('#4: parseInt("-1111", 2) === -15. Actual: ' + (parseInt("-1111", 2)));
-}
-
-//CHECK#5
-if (parseInt("-11111", 2) !== -31) {
-  $ERROR('#5: parseInt("-11111", 2) === -31. Actual: ' + (parseInt("-11111", 2)));
-}
-
-//CHECK#6
-if (parseInt("-111111", 2) !== -63) {
-  $ERROR('#6: parseInt("-111111", 2) === -63. Actual: ' + (parseInt("-111111", 2)));
-}
-
-//CHECK#7
-if (parseInt("-1111111", 2) !== -127) {
-  $ERROR('#7: parseInt("-1111111", 2) === -127. Actual: ' + (parseInt("-1111111", 2)));
-}
-
-//CHECK#8
-if (parseInt("-11111111", 2) !== -255) {
-  $ERROR('#8: parseInt("-11111111", 2) === -255. Actual: ' + (parseInt("-11111111", 2)));
-}
-
-//CHECK#9
-if (parseInt("-111111111", 2) !== -511) {
-  $ERROR('#9: parseInt("-111111111", 2) === -511. Actual: ' + (parseInt("-111111111", 2)));
-}
-
-//CHECK#10
-if (parseInt("-1111111111", 2) !== -1023) {
-  $ERROR('#10: parseInt("-1111111111", 2) === -1023. Actual: ' + (parseInt("-1111111111", 2)));
-}
-
-//CHECK#11
-if (parseInt("-11111111111", 2) !== -2047) {
-  $ERROR('#11: parseInt("-11111111111", 2) === -2047. Actual: ' + (parseInt("-11111111111", 2)));
-}
-
-//CHECK#12
-if (parseInt("-111111111111", 2) !== -4095) {
-  $ERROR('#12: parseInt("-111111111111", 2) === -4095. Actual: ' + (parseInt("-111111111111", 2)));
-}
-
-//CHECK#13
-if (parseInt("-1111111111111", 2) !== -8191) {
-  $ERROR('#13: parseInt("-1111111111111", 2) === -8191. Actual: ' + (parseInt("-1111111111111", 2)));
-}
-
-//CHECK#14
-if (parseInt("-11111111111111", 2) !== -16383) {
-  $ERROR('#14: parseInt("-11111111111111", 2) === -16383. Actual: ' + (parseInt("-11111111111111", 2)));
-}
-
-//CHECK#15
-if (parseInt("-111111111111111", 2) !== -32767) {
-  $ERROR('#15: parseInt("-111111111111111", 2) === -32767. Actual: ' + (parseInt("-111111111111111", 2)));
-}
-
-//CHECK#16
-if (parseInt("-1111111111111111", 2) !== -65535) {
-  $ERROR('#16: parseInt("-1111111111111111", 2) === -65535. Actual: ' + (parseInt("-1111111111111111", 2)));
-}
-
-//CHECK#17
-if (parseInt("-11111111111111111", 2) !== -131071) {
-  $ERROR('#17: parseInt("-11111111111111111", 2) === -131071. Actual: ' + (parseInt("-11111111111111111", 2)));
-}
-
-//CHECK#18
-if (parseInt("-111111111111111111", 2) !== -262143) {
-  $ERROR('#18: parseInt("-111111111111111111", 2) === -262143. Actual: ' + (parseInt("-111111111111111111", 2)));
-}
-
-//CHECK#19
-if (parseInt("-1111111111111111111", 2) !== -524287) {
-  $ERROR('#19: parseInt("-1111111111111111111", 2) === -524287. Actual: ' + (parseInt("-1111111111111111111", 2)));
-}
-
-//CHECK#20
-if (parseInt("-11111111111111111111", 2) !== -1048575) {
-  $ERROR('#20: parseInt("-11111111111111111111", 2) === -1048575. Actual: ' + (parseInt("-11111111111111111111", 2)));
-}
+assert.sameValue(
+  parseInt("-11111111111111111111", 2),
+  -1048575,
+  'parseInt("-11111111111111111111", 2) must return -1048575'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T3.js
index 2cd5f98..f699c6f 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A7.3_T3.js
@@ -7,102 +7,63 @@
 description: Checking algorithm for R = 10
 ---*/
 
-//CHECK#1
-if (parseInt("-1", 10) !== -1) {
-  $ERROR('#1: parseInt("-1", 10) === -1. Actual: ' + (parseInt("-1", 10)));
-}
+assert.sameValue(parseInt("-1", 10), -1, 'parseInt("-1", 10) must return -1');
+assert.sameValue(parseInt("-10", 10), -10, 'parseInt("-10", 10) must return -10');
+assert.sameValue(parseInt("-100", 10), -100, 'parseInt("-100", 10) must return -100');
+assert.sameValue(parseInt("-1000", 10), -1000, 'parseInt("-1000", 10) must return -1000');
+assert.sameValue(parseInt("-10000", 10), -10000, 'parseInt("-10000", 10) must return -10000');
+assert.sameValue(parseInt("-100000", 10), -100000, 'parseInt("-100000", 10) must return -100000');
+assert.sameValue(parseInt("-1000000", 10), -1000000, 'parseInt("-1000000", 10) must return -1000000');
+assert.sameValue(parseInt("-10000000", 10), -10000000, 'parseInt("-10000000", 10) must return -10000000');
+assert.sameValue(parseInt("-100000000", 10), -100000000, 'parseInt("-100000000", 10) must return -100000000');
+assert.sameValue(parseInt("-1000000000", 10), -1000000000, 'parseInt("-1000000000", 10) must return -1000000000');
+assert.sameValue(parseInt("-10000000000", 10), -10000000000, 'parseInt("-10000000000", 10) must return -10000000000');
+assert.sameValue(parseInt("-100000000000", 10), -100000000000, 'parseInt("-100000000000", 10) must return -100000000000');
 
-//CHECK#2
-if (parseInt("-10", 10) !== -10) {
-  $ERROR('#2: parseInt("-10", 10) === -10. Actual: ' + (parseInt("-10", 10)));
-}
+assert.sameValue(
+  parseInt("-1000000000000", 10),
+  -1000000000000,
+  'parseInt("-1000000000000", 10) must return -1000000000000'
+);
 
-//CHECK#3
-if (parseInt("-100", 10) !== -100) {
-  $ERROR('#3: parseInt("-100", 10) === -100. Actual: ' + (parseInt("-100", 10)));
-}
+assert.sameValue(
+  parseInt("-10000000000000", 10),
+  -10000000000000,
+  'parseInt("-10000000000000", 10) must return -10000000000000'
+);
 
-//CHECK#4
-if (parseInt("-1000", 10) !== -1000) {
-  $ERROR('#4: parseInt("-1000", 10) === -1000. Actual: ' + (parseInt("-1000", 10)));
-}
+assert.sameValue(
+  parseInt("-100000000000000", 10),
+  -100000000000000,
+  'parseInt("-100000000000000", 10) must return -100000000000000'
+);
 
-//CHECK#5
-if (parseInt("-10000", 10) !== -10000) {
-  $ERROR('#5: parseInt("-10000", 10) === -10000. Actual: ' + (parseInt("-10000", 10)));
-}
+assert.sameValue(
+  parseInt("-1000000000000000", 10),
+  -1000000000000000,
+  'parseInt("-1000000000000000", 10) must return -1000000000000000'
+);
 
-//CHECK#6
-if (parseInt("-100000", 10) !== -100000) {
-  $ERROR('#6: parseInt("-100000", 10) === -100000. Actual: ' + (parseInt("-100000", 10)));
-}
+assert.sameValue(
+  parseInt("-10000000000000000", 10),
+  -10000000000000000,
+  'parseInt("-10000000000000000", 10) must return -10000000000000000'
+);
 
-//CHECK#7
-if (parseInt("-1000000", 10) !== -1000000) {
-  $ERROR('#7: parseInt("-1000000", 10) === -1000000. Actual: ' + (parseInt("-1000000", 10)));
-}
+assert.sameValue(
+  parseInt("-100000000000000000", 10),
+  -100000000000000000,
+  'parseInt("-100000000000000000", 10) must return -100000000000000000'
+);
 
-//CHECK#8
-if (parseInt("-10000000", 10) !== -10000000) {
-  $ERROR('#8: parseInt("-10000000", 10) === -10000000. Actual: ' + (parseInt("-10000000", 10)));
-}
+assert.sameValue(
+  parseInt("-1000000000000000000", 10),
+  -1000000000000000000,
+  'parseInt("-1000000000000000000", 10) must return -1000000000000000000'
+);
 
-//CHECK#9
-if (parseInt("-100000000", 10) !== -100000000) {
-  $ERROR('#9: parseInt("-100000000", 10) === -100000000. Actual: ' + (parseInt("-100000000", 10)));
-}
-
-//CHECK#10
-if (parseInt("-1000000000", 10) !== -1000000000) {
-  $ERROR('#10: parseInt("-1000000000", 10) === -1000000000. Actual: ' + (parseInt("-1000000000", 10)));
-}
-
-//CHECK#10
-if (parseInt("-10000000000", 10) !== -10000000000) {
-  $ERROR('#10: parseInt("-10000000000", 10) === -10000000000. Actual: ' + (parseInt("-10000000000", 10)));
-}
-
-//CHECK#12
-if (parseInt("-100000000000", 10) !== -100000000000) {
-  $ERROR('#12: parseInt("-100000000000", 10) === -100000000000. Actual: ' + (parseInt("-100000000000", 10)));
-}
-
-//CHECK#13
-if (parseInt("-1000000000000", 10) !== -1000000000000) {
-  $ERROR('#13: parseInt("-1000000000000", 10) === -1000000000000. Actual: ' + (parseInt("-1000000000000", 10)));
-}
-
-//CHECK#14
-if (parseInt("-10000000000000", 10) !== -10000000000000) {
-  $ERROR('#14: parseInt("-10000000000000", 10) === -10000000000000. Actual: ' + (parseInt("-10000000000000", 10)));
-}
-
-//CHECK#15
-if (parseInt("-100000000000000", 10) !== -100000000000000) {
-  $ERROR('#15: parseInt("-100000000000000", 10) === -100000000000000. Actual: ' + (parseInt("-100000000000000", 10)));
-}
-
-//CHECK#10
-if (parseInt("-1000000000000000", 10) !== -1000000000000000) {
-  $ERROR('#10: parseInt("-1000000000000000", 10) === -1000000000000000. Actual: ' + (parseInt("-1000000000000000", 10)));
-}
-
-//CHECK#17
-if (parseInt("-10000000000000000", 10) !== -10000000000000000) {
-  $ERROR('#17: parseInt("-10000000000000000", 10) === -10000000000000000. Actual: ' + (parseInt("-10000000000000000", 10)));
-}
-
-//CHECK#18
-if (parseInt("-100000000000000000", 10) !== -100000000000000000) {
-  $ERROR('#18: parseInt("-100000000000000000", 10) === -100000000000000000. Actual: ' + (parseInt("-100000000000000000", 10)));
-}
-
-//CHECK#19
-if (parseInt("-1000000000000000000", 10) !== -1000000000000000000) {
-  $ERROR('#19: parseInt("-1000000000000000000", 10) === -1000000000000000000. Actual: ' + (parseInt("-1000000000000000000", 10)));
-}
-
-//CHECK#20
-if (parseInt("-10000000000000000000", 10) !== -10000000000000000000) {
-  $ERROR('#20: parseInt("-10000000000000000000", 10) === -10000000000000000000. Actual: ' + (parseInt("-10000000000000000000", 10)));
-}
+assert.sameValue(
+  parseInt("-10000000000000000000", 10),
+  -10000000000000000000,
+  'parseInt("-10000000000000000000", 10) must return -10000000000000000000'
+);
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.1.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.1.js
index 0f4e4cd..0246224 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.1.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.1.js
@@ -7,10 +7,11 @@
 description: Checking use propertyIsEnumerable, for-in
 ---*/
 
-//CHECK#1
-if (parseInt.propertyIsEnumerable('length') !== false) {
-  $ERROR('#1: parseInt.propertyIsEnumerable(\'length\') === false. Actual: ' + (parseInt.propertyIsEnumerable('length')));
-}
+assert.sameValue(
+  parseInt.propertyIsEnumerable('length'),
+  false,
+  'parseInt.propertyIsEnumerable(\'length\') must return false'
+);
 
 //CHECK#2
 var result = true;
@@ -20,6 +21,4 @@
   }
 }
 
-if (result !== true) {
-  $ERROR('#2: result = true; for (p in parseInt) { if (p === "length") result = false; }  result === true;');
-}
+assert.sameValue(result, true, 'The value of `result` is true');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.2.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.2.js
index d6a507e..6146844 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.2.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.2.js
@@ -7,19 +7,9 @@
 description: Checking use hasOwnProperty, delete
 ---*/
 
-//CHECK#1
-if (parseInt.hasOwnProperty('length') !== true) {
-  $ERROR('#1: parseInt.hasOwnProperty(\'length\') === true. Actual: ' + (parseInt.hasOwnProperty('length')));
-}
+assert.sameValue(parseInt.hasOwnProperty('length'), true, 'parseInt.hasOwnProperty(\'length\') must return true');
 
 delete parseInt.length;
 
-//CHECK#2
-if (parseInt.hasOwnProperty('length') !== false) {
-  $ERROR('#2: delete parseInt.length; parseInt.hasOwnProperty(\'length\') === false. Actual: ' + (parseInt.hasOwnProperty('length')));
-}
-
-//CHECK#3
-if (parseInt.length === undefined) {
-  $ERROR('#3: delete parseInt.length; parseInt.length !== undefined');
-}
+assert.sameValue(parseInt.hasOwnProperty('length'), false, 'parseInt.hasOwnProperty(\'length\') must return false');
+assert.notSameValue(parseInt.length, undefined, 'The value of parseInt.length is expected to not equal ``undefined``');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.3.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.3.js
index b523e52..735e344 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.3.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.3.js
@@ -8,9 +8,5 @@
 includes: [propertyHelper.js]
 ---*/
 
-//CHECK#1
-var x = parseInt.length;
+assert.sameValue(parseInt.length, 2, 'The value of parseInt.length is 2');
 verifyNotWritable(parseInt, "length", null, Infinity);
-if (parseInt.length !== x) {
-  $ERROR('#1: x = parseInt.length; parseInt.length = Infinity; parseInt.length === x. Actual: ' + (parseInt.length));
-}
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.4.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.4.js
index 26cf97d..5334f31 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.4.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.4.js
@@ -7,7 +7,4 @@
 description: parseInt.length === 2
 ---*/
 
-//CHECK#1
-if (parseInt.length !== 2) {
-  $ERROR('#1: parseInt.length === 2. Actual: ' + (parseInt.length));
-}
+assert.sameValue(parseInt.length, 2, 'The value of parseInt.length is 2');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.5.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.5.js
index 666329f..7784f7a 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.5.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.5.js
@@ -7,10 +7,11 @@
 description: Checking use propertyIsEnumerable, for-in
 ---*/
 
-//CHECK#1
-if (this.propertyIsEnumerable('parseInt') !== false) {
-  $ERROR('#1: this.propertyIsEnumerable(\'parseInt\') === false. Actual: ' + (this.propertyIsEnumerable('parseInt')));
-}
+assert.sameValue(
+  this.propertyIsEnumerable('parseInt'),
+  false,
+  'this.propertyIsEnumerable(\'parseInt\') must return false'
+);
 
 //CHECK#2
 var result = true;
@@ -20,6 +21,4 @@
   }
 }
 
-if (result !== true) {
-  $ERROR('#2: result = true; for (p in this) { if (p === "parseInt") result = false; }  result === true;');
-}
+assert.sameValue(result, true, 'The value of `result` is true');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.6.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.6.js
index ebb49a9..2427906 100644
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.6.js
+++ b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.6.js
@@ -7,7 +7,4 @@
 description: Checking parseInt.prototype
 ---*/
 
-//CHECK#1
-if (parseInt.prototype !== undefined) {
-  $ERROR('#1: parseInt.prototype === undefined. Actual: ' + (parseInt.prototype));
-}
+assert.sameValue(Object.prototype.hasOwnProperty.call(parseInt, "prototype"), false, 'Object.prototype.hasOwnProperty.call(parseInt, "prototype") must return false');
diff --git a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.7.js b/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.7.js
deleted file mode 100644
index 9f84e88..0000000
--- a/JSTests/test262/test/built-ins/parseInt/S15.1.2.2_A9.7.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: The parseInt property can't be used as constructor
-esid: sec-parseint-string-radix
-description: >
-    If property does not implement the internal [[Construct]] method,
-    throw a TypeError exception
----*/
-
-//CHECK#1
-
-try {
-  new parseInt();
-  $ERROR('#1.1: new parseInt() throw TypeError. Actual: ' + (new parseInt()));
-} catch (e) {
-  if ((e instanceof TypeError) !== true) {
-    $ERROR('#1.2: new parseInt() throw TypeError. Actual: ' + (e));
-  }
-}
diff --git a/JSTests/test262/test/built-ins/parseInt/name.js b/JSTests/test262/test/built-ins/parseInt/name.js
index aed07e2..00dc115 100644
--- a/JSTests/test262/test/built-ins/parseInt/name.js
+++ b/JSTests/test262/test/built-ins/parseInt/name.js
@@ -19,7 +19,7 @@
 includes: [propertyHelper.js]
 ---*/
 
-assert.sameValue(parseInt.name, "parseInt");
+assert.sameValue(parseInt.name, "parseInt", 'The value of parseInt.name is "parseInt"');
 
 verifyNotEnumerable(parseInt, "name");
 verifyNotWritable(parseInt, "name");
diff --git a/JSTests/test262/test/built-ins/parseInt/not-a-constructor.js b/JSTests/test262/test/built-ins/parseInt/not-a-constructor.js
new file mode 100644
index 0000000..37c06a8
--- /dev/null
+++ b/JSTests/test262/test/built-ins/parseInt/not-a-constructor.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The parseInt property can't be used as constructor
+esid: sec-parseint-string-radix
+description: >
+    If property does not implement the internal [[Construct]] method,
+    throw a TypeError exception
+---*/
+
+assert.throws(TypeError, () => {
+  new parseInt();
+}, '`new parseInt()` throws TypeError');
diff --git a/JSTests/test262/test/harness/assert-false.js b/JSTests/test262/test/harness/assert-false.js
index 93b8205..110e652 100644
--- a/JSTests/test262/test/harness/assert-false.js
+++ b/JSTests/test262/test/harness/assert-false.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -21,5 +21,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-notsamevalue-nan.js b/JSTests/test262/test/harness/assert-notsamevalue-nan.js
index 856cc48..8e7aaf3 100644
--- a/JSTests/test262/test/harness/assert-notsamevalue-nan.js
+++ b/JSTests/test262/test/harness/assert-notsamevalue-nan.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -21,5 +21,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-notsamevalue-tostring.js b/JSTests/test262/test/harness/assert-notsamevalue-tostring.js
index 0442541..a5bab76 100644
--- a/JSTests/test262/test/harness/assert-notsamevalue-tostring.js
+++ b/JSTests/test262/test/harness/assert-notsamevalue-tostring.js
@@ -15,10 +15,10 @@
 } catch (err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR('Expected a Test262Error, but a "' + err.constructor.name + '" was thrown.');
+    throw new Error('Expected a Test262Error, but a "' + err.constructor.name + '" was thrown.');
   }
 }
 
 if (!threw) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-obj.js b/JSTests/test262/test/harness/assert-obj.js
index edaf82f..17720f6 100644
--- a/JSTests/test262/test/harness/assert-obj.js
+++ b/JSTests/test262/test/harness/assert-obj.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -21,5 +21,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-samevalue-objects.js b/JSTests/test262/test/harness/assert-samevalue-objects.js
index 833f864..e577c58 100644
--- a/JSTests/test262/test/harness/assert-samevalue-objects.js
+++ b/JSTests/test262/test/harness/assert-samevalue-objects.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -21,5 +21,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-samevalue-tostring.js b/JSTests/test262/test/harness/assert-samevalue-tostring.js
index f17143c..377e4cf 100644
--- a/JSTests/test262/test/harness/assert-samevalue-tostring.js
+++ b/JSTests/test262/test/harness/assert-samevalue-tostring.js
@@ -15,10 +15,10 @@
 } catch (err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR('Expected a Test262Error, but a "' + err.constructor.name + '" was thrown.');
+    throw new Error('Expected a Test262Error, but a "' + err.constructor.name + '" was thrown.');
   }
 }
 
 if (!threw) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-samevalue-zeros.js b/JSTests/test262/test/harness/assert-samevalue-zeros.js
index 762634a..4c4ef71 100644
--- a/JSTests/test262/test/harness/assert-samevalue-zeros.js
+++ b/JSTests/test262/test/harness/assert-samevalue-zeros.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -22,5 +22,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-throws-incorrect-ctor.js b/JSTests/test262/test/harness/assert-throws-incorrect-ctor.js
index b12f06e..f3926cb 100644
--- a/JSTests/test262/test/harness/assert-throws-incorrect-ctor.js
+++ b/JSTests/test262/test/harness/assert-throws-incorrect-ctor.js
@@ -16,7 +16,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -24,5 +24,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-throws-no-arg.js b/JSTests/test262/test/harness/assert-throws-no-arg.js
index c8a9f35..dc73e58 100644
--- a/JSTests/test262/test/harness/assert-throws-no-arg.js
+++ b/JSTests/test262/test/harness/assert-throws-no-arg.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -21,5 +21,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-throws-no-error.js b/JSTests/test262/test/harness/assert-throws-no-error.js
index d40b06b..efa01ed 100644
--- a/JSTests/test262/test/harness/assert-throws-no-error.js
+++ b/JSTests/test262/test/harness/assert-throws-no-error.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -21,5 +21,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-throws-null-fn.js b/JSTests/test262/test/harness/assert-throws-null-fn.js
index 7417514..dddff6b 100644
--- a/JSTests/test262/test/harness/assert-throws-null-fn.js
+++ b/JSTests/test262/test/harness/assert-throws-null-fn.js
@@ -13,7 +13,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -21,7 +21,7 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
 
 threw = false;
@@ -31,7 +31,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -39,7 +39,7 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
 
 threw = false;
@@ -49,7 +49,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -57,5 +57,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-throws-null.js b/JSTests/test262/test/harness/assert-throws-null.js
index 7b10f61..10138ed 100644
--- a/JSTests/test262/test/harness/assert-throws-null.js
+++ b/JSTests/test262/test/harness/assert-throws-null.js
@@ -15,7 +15,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -23,5 +23,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-throws-primitive.js b/JSTests/test262/test/harness/assert-throws-primitive.js
index 0a2d8f9..7c7d2ac 100644
--- a/JSTests/test262/test/harness/assert-throws-primitive.js
+++ b/JSTests/test262/test/harness/assert-throws-primitive.js
@@ -14,7 +14,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -22,5 +22,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-throws-single-arg.js b/JSTests/test262/test/harness/assert-throws-single-arg.js
index 2b8ca71..3caeb8c 100644
--- a/JSTests/test262/test/harness/assert-throws-single-arg.js
+++ b/JSTests/test262/test/harness/assert-throws-single-arg.js
@@ -12,7 +12,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -20,5 +20,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assert-tostring.js b/JSTests/test262/test/harness/assert-tostring.js
index 0b78704..6e9c89e 100644
--- a/JSTests/test262/test/harness/assert-tostring.js
+++ b/JSTests/test262/test/harness/assert-tostring.js
@@ -15,10 +15,10 @@
 } catch (err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR('Expected a Test262Error, but a "' + err.constructor.name + '" was thrown.');
+    throw new Error('Expected a Test262Error, but a "' + err.constructor.name + '" was thrown.');
   }
 }
 
 if (!threw) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/assertRelativeDateMs.js b/JSTests/test262/test/harness/assertRelativeDateMs.js
index c8c08b3..9128c6a 100644
--- a/JSTests/test262/test/harness/assertRelativeDateMs.js
+++ b/JSTests/test262/test/harness/assertRelativeDateMs.js
@@ -26,9 +26,9 @@
   thrown = err;
 }
 if (!thrown) {
-  $ERROR('Expected error, but no error was thrown.');
+  throw new Error('Expected error, but no error was thrown.');
 } else if (thrown.constructor !== Test262Error) {
-  $ERROR('Expected error of type Test262Error.');
+  throw new Error('Expected error of type Test262Error.');
 }
 
 thrown = null;
@@ -38,9 +38,9 @@
   thrown = err;
 }
 if (!thrown) {
-  $ERROR('Expected error, but no error was thrown.');
+  throw new Error('Expected error, but no error was thrown.');
 } else if (thrown.constructor !== Test262Error) {
-  $ERROR('Expected error of type Test262Error.');
+  throw new Error('Expected error of type Test262Error.');
 }
 
 thrown = null;
@@ -50,9 +50,9 @@
   thrown = err;
 }
 if (!thrown) {
-  $ERROR('Expected error, but no error was thrown.');
+  throw new Error('Expected error, but no error was thrown.');
 } else if (thrown.constructor !== Test262Error) {
-  $ERROR('Expected error of type Test262Error.');
+  throw new Error('Expected error of type Test262Error.');
 }
 
 thrown = null;
@@ -62,9 +62,9 @@
   thrown = err;
 }
 if (!thrown) {
-  $ERROR('Expected error, but no error was thrown.');
+  throw new Error('Expected error, but no error was thrown.');
 } else if (thrown.constructor !== Test262Error) {
-  $ERROR('Expected error of type Test262Error.');
+  throw new Error('Expected error of type Test262Error.');
 }
 
 thrown = null;
@@ -74,7 +74,7 @@
   thrown = err;
 }
 if (!thrown) {
-  $ERROR('Expected error, but no error was thrown.');
+  throw new Error('Expected error, but no error was thrown.');
 } else if (thrown.constructor !== Test262Error) {
-  $ERROR('Expected error of type Test262Error.');
+  throw new Error('Expected error of type Test262Error.');
 }
diff --git a/JSTests/test262/test/harness/compare-array-different-elements.js b/JSTests/test262/test/harness/compare-array-different-elements.js
index 32ed51c..7519d96 100644
--- a/JSTests/test262/test/harness/compare-array-different-elements.js
+++ b/JSTests/test262/test/harness/compare-array-different-elements.js
@@ -11,5 +11,5 @@
 var second = [0, 'b', undefined];
 
 if (compareArray(first, second) !== false) {
-  $ERROR('Arrays containing different elements are not equivalent.');
+  throw new Error('Arrays containing different elements are not equivalent.');
 }
diff --git a/JSTests/test262/test/harness/compare-array-different-length.js b/JSTests/test262/test/harness/compare-array-different-length.js
index df48a86..a188fc2 100644
--- a/JSTests/test262/test/harness/compare-array-different-length.js
+++ b/JSTests/test262/test/harness/compare-array-different-length.js
@@ -8,9 +8,9 @@
 ---*/
 
 if (compareArray([], [undefined]) !== false) {
-  $ERROR('Arrays of differing lengths are not equivalent.');
+  throw new Error('Arrays of differing lengths are not equivalent.');
 }
 
 if (compareArray([undefined], []) !== false) {
-  $ERROR('Arrays of differing lengths are not equivalent.');
+  throw new Error('Arrays of differing lengths are not equivalent.');
 }
diff --git a/JSTests/test262/test/harness/compare-array-empty.js b/JSTests/test262/test/harness/compare-array-empty.js
index f3196db..af701fd 100644
--- a/JSTests/test262/test/harness/compare-array-empty.js
+++ b/JSTests/test262/test/harness/compare-array-empty.js
@@ -8,5 +8,5 @@
 ---*/
 
 if (compareArray([], []) !== true) {
-  $ERROR('Empty arrays are equivalent.');
+  throw new Error('Empty arrays are equivalent.');
 }
diff --git a/JSTests/test262/test/harness/compare-array-same-elements-different-order.js b/JSTests/test262/test/harness/compare-array-same-elements-different-order.js
index 243d670..aa384c7 100644
--- a/JSTests/test262/test/harness/compare-array-same-elements-different-order.js
+++ b/JSTests/test262/test/harness/compare-array-same-elements-different-order.js
@@ -12,5 +12,5 @@
 var second = [0, 1, '', 's', undefined, null, obj];
 
 if (compareArray(first, second) !== false) {
-  $ERROR('Arrays containing the same elements in different order are not equivalent.');
+  throw new Error('Arrays containing the same elements in different order are not equivalent.');
 }
diff --git a/JSTests/test262/test/harness/compare-array-same-elements-same-order.js b/JSTests/test262/test/harness/compare-array-same-elements-same-order.js
index ac09fed..e363528 100644
--- a/JSTests/test262/test/harness/compare-array-same-elements-same-order.js
+++ b/JSTests/test262/test/harness/compare-array-same-elements-same-order.js
@@ -12,5 +12,5 @@
 var second = [0, 1, '', 's', undefined, null, obj];
 
 if (compareArray(first, second) !== true) {
-  $ERROR('Arrays containing the same elements in the same order are equivalent.');
+  throw new Error('Arrays containing the same elements in the same order are equivalent.');
 }
diff --git a/JSTests/test262/test/harness/compare-array-sparse.js b/JSTests/test262/test/harness/compare-array-sparse.js
index 316039a..ce2f4ae 100644
--- a/JSTests/test262/test/harness/compare-array-sparse.js
+++ b/JSTests/test262/test/harness/compare-array-sparse.js
@@ -8,21 +8,21 @@
 ---*/
 
 if (compareArray([,], [,]) !== true) {
-  $ERROR('Sparse arrays of the same length are equivalent.');
+  throw new Error('Sparse arrays of the same length are equivalent.');
 }
 
 if (compareArray([,], [,,]) !== false) {
-  $ERROR('Sparse arrays of differing lengths are not equivalent.');
+  throw new Error('Sparse arrays of differing lengths are not equivalent.');
 }
 
 if (compareArray([,,], [,]) !== false) {
-  $ERROR('Sparse arrays of differing lengths are not equivalent.');
+  throw new Error('Sparse arrays of differing lengths are not equivalent.');
 }
 
 if (compareArray([,], []) !== false) {
-  $ERROR('Sparse arrays are not equivalent to empty arrays.');
+  throw new Error('Sparse arrays are not equivalent to empty arrays.');
 }
 
 if (compareArray([], [,]) !== false) {
-  $ERROR('Sparse arrays are not equivalent to empty arrays.');
+  throw new Error('Sparse arrays are not equivalent to empty arrays.');
 }
diff --git a/JSTests/test262/test/harness/detachArrayBuffer-host-detachArrayBuffer.js b/JSTests/test262/test/harness/detachArrayBuffer-host-detachArrayBuffer.js
index 2eb65d7..b0714a1 100644
--- a/JSTests/test262/test/harness/detachArrayBuffer-host-detachArrayBuffer.js
+++ b/JSTests/test262/test/harness/detachArrayBuffer-host-detachArrayBuffer.js
@@ -26,18 +26,18 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
   }
   if (err.message !== '$262.detachArrayBuffer called.') {
-    $ERROR(`Expected error message: ${err.message}`);
+    throw new Error(`Expected error message: ${err.message}`);
   }
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
 
 
diff --git a/JSTests/test262/test/harness/detachArrayBuffer.js b/JSTests/test262/test/harness/detachArrayBuffer.js
index 6c25d36..4f95312 100644
--- a/JSTests/test262/test/harness/detachArrayBuffer.js
+++ b/JSTests/test262/test/harness/detachArrayBuffer.js
@@ -19,7 +19,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== ReferenceError) {
-    $ERROR(
+    throw new Error(
       'Expected a ReferenceError, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -27,7 +27,7 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a ReferenceError, but no error was thrown.');
+  throw new Error('Expected a ReferenceError, but no error was thrown.');
 }
 
 
diff --git a/JSTests/test262/test/harness/nativeFunctionMatcher.js b/JSTests/test262/test/harness/nativeFunctionMatcher.js
index c8e49b4..49fdc3e 100644
--- a/JSTests/test262/test/harness/nativeFunctionMatcher.js
+++ b/JSTests/test262/test/harness/nativeFunctionMatcher.js
@@ -31,7 +31,7 @@
   try {
     validateNativeFunctionSource(s);
   } catch (unused) {
-    $ERROR(`${JSON.stringify(s)} should pass`);
+    throw new Error(`${JSON.stringify(s)} should pass`);
   }
 });
 
@@ -55,6 +55,6 @@
     fail = true;
   } catch (unused) {}
   if (fail) {
-    $ERROR(`${JSON.stringify(s)} should fail`);
+    throw new Error(`${JSON.stringify(s)} should fail`);
   }
 });
diff --git a/JSTests/test262/test/harness/promiseHelper.js b/JSTests/test262/test/harness/promiseHelper.js
index d65271d..db56dff 100644
--- a/JSTests/test262/test/harness/promiseHelper.js
+++ b/JSTests/test262/test/harness/promiseHelper.js
@@ -22,7 +22,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -30,6 +30,6 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
 
diff --git a/JSTests/test262/test/harness/propertyhelper-verifyconfigurable-not-configurable.js b/JSTests/test262/test/harness/propertyhelper-verifyconfigurable-not-configurable.js
index e696ab4..105f696 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifyconfigurable-not-configurable.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifyconfigurable-not-configurable.js
@@ -19,7 +19,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -27,5 +27,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable-symbol.js b/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable-symbol.js
index ab36f14..744010f 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable-symbol.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable-symbol.js
@@ -28,5 +28,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable.js b/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable.js
index fb4ccc0..21a7580 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifyenumerable-not-enumerable.js
@@ -26,5 +26,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/propertyhelper-verifynotconfigurable-configurable.js b/JSTests/test262/test/harness/propertyhelper-verifynotconfigurable-configurable.js
index 6db04ba..d02ce26 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifynotconfigurable-configurable.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifynotconfigurable-configurable.js
@@ -18,7 +18,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -26,5 +26,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/propertyhelper-verifynotenumerable-enumerable.js b/JSTests/test262/test/harness/propertyhelper-verifynotenumerable-enumerable.js
index 3c76234..617efa9 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifynotenumerable-enumerable.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifynotenumerable-enumerable.js
@@ -18,7 +18,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
diff --git a/JSTests/test262/test/harness/propertyhelper-verifynotwritable-not-writable-strict.js b/JSTests/test262/test/harness/propertyhelper-verifynotwritable-not-writable-strict.js
index dbfc65b..b9b9f7d 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifynotwritable-not-writable-strict.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifynotwritable-not-writable-strict.js
@@ -17,5 +17,5 @@
 verifyNotWritable(obj, 'a');
 
 if (obj.a !== 123) {
-  $ERROR('`verifyNotWritable` should be non-destructive.');
+  throw new Error('`verifyNotWritable` should be non-destructive.');
 }
diff --git a/JSTests/test262/test/harness/propertyhelper-verifynotwritable-writable.js b/JSTests/test262/test/harness/propertyhelper-verifynotwritable-writable.js
index d86e5af..d31eb9b 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifynotwritable-writable.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifynotwritable-writable.js
@@ -18,7 +18,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -26,5 +26,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/propertyhelper-verifywritable-not-writable.js b/JSTests/test262/test/harness/propertyhelper-verifywritable-not-writable.js
index a038d19..1731eac 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifywritable-not-writable.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifywritable-not-writable.js
@@ -18,7 +18,7 @@
 } catch(err) {
   threw = true;
   if (err.constructor !== Test262Error) {
-    $ERROR(
+    throw new Error(
       'Expected a Test262Error, but a "' + err.constructor.name +
       '" was thrown.'
     );
@@ -26,5 +26,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/propertyhelper-verifywritable-writable.js b/JSTests/test262/test/harness/propertyhelper-verifywritable-writable.js
index 884b7a8..d123bef 100644
--- a/JSTests/test262/test/harness/propertyhelper-verifywritable-writable.js
+++ b/JSTests/test262/test/harness/propertyhelper-verifywritable-writable.js
@@ -16,5 +16,5 @@
 verifyWritable(obj, 'a');
 
 if (obj.a !== 123) {
-  $ERROR('`verifyWritable` should be non-destructive.');
+  throw new Error('`verifyWritable` should be non-destructive.');
 }
diff --git a/JSTests/test262/test/harness/sta-error.js b/JSTests/test262/test/harness/sta-error.js
index f5d8e69..495ce86 100644
--- a/JSTests/test262/test/harness/sta-error.js
+++ b/JSTests/test262/test/harness/sta-error.js
@@ -24,5 +24,5 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/harness/testTypedArray-conversions-call-error.js b/JSTests/test262/test/harness/testTypedArray-conversions-call-error.js
index 479d48f..c6c3b63 100644
--- a/JSTests/test262/test/harness/testTypedArray-conversions-call-error.js
+++ b/JSTests/test262/test/harness/testTypedArray-conversions-call-error.js
@@ -24,7 +24,7 @@
 }
 
 if (threw === false) {
-  $ERROR('Expected a TypeError, but no error was thrown.');
+  throw new Error('Expected a TypeError, but no error was thrown.');
 }
 
 
diff --git a/JSTests/test262/test/harness/verifyProperty-value-error.js b/JSTests/test262/test/harness/verifyProperty-value-error.js
index 0145cac..169c665 100644
--- a/JSTests/test262/test/harness/verifyProperty-value-error.js
+++ b/JSTests/test262/test/harness/verifyProperty-value-error.js
@@ -30,10 +30,10 @@
   }
 
   if (err.message !== 'descriptor value should be 2') {
-    $ERROR('The error thrown did not define the specified message.');
+    throw new Error('The error thrown did not define the specified message.');
   }
 }
 
 if (threw === false) {
-  $ERROR('Expected a Test262Error, but no error was thrown.');
+  throw new Error('Expected a Test262Error, but no error was thrown.');
 }
diff --git a/JSTests/test262/test/intl402/DateTimeFormat/prototype/format/timedatestyle-en.js b/JSTests/test262/test/intl402/DateTimeFormat/prototype/format/timedatestyle-en.js
index bccaa76..f0bd8c1 100644
--- a/JSTests/test262/test/intl402/DateTimeFormat/prototype/format/timedatestyle-en.js
+++ b/JSTests/test262/test/intl402/DateTimeFormat/prototype/format/timedatestyle-en.js
@@ -10,10 +10,10 @@
 
 const date = new Date("1886-05-01T14:12:47Z");
 const dateOptions = [
-  ["full", "Saturday, May 1, 1886", " at "],
-  ["long", "May 1, 1886", " at "],
-  ["medium", "May 1, 1886", ", "],
-  ["short", "5/1/86", ", "],
+  ["full", "Saturday, May 1, 1886"],
+  ["long", "May 1, 1886"],
+  ["medium", "May 1, 1886"],
+  ["short", "5/1/86"],
 ];
 
 const timeOptions = [
@@ -84,18 +84,20 @@
   }
 }
 
-for (const [dateStyle, expectedDate, connector] of dateOptions) {
+for (const [dateStyle, expectedDate] of dateOptions) {
   for (const [timeStyle, expectedTime] of timeOptions) {
     const dtf = new Intl.DateTimeFormat("en-US", {
       dateStyle,
       timeStyle,
       timeZone: "UTC",
     });
+    const result1 = [expectedDate, ", ", expectedTime].join("");
+    const result2 = [expectedDate, " at ", expectedTime].join("");
 
     const dateString = dtf.format(date);
     assert.sameValue(
-      dateString,
-      [expectedDate, connector, expectedTime].join(""),
+      [result1, result2].includes(dateString),
+      true,
       `Result for date=${dateStyle} and time=${timeStyle}`
     );
   }
diff --git a/JSTests/test262/test/intl402/DateTimeFormat/this-value-ignored.js b/JSTests/test262/test/intl402/DateTimeFormat/this-value-ignored.js
index 33b6bfb..ad8ef32 100644
--- a/JSTests/test262/test/intl402/DateTimeFormat/this-value-ignored.js
+++ b/JSTests/test262/test/intl402/DateTimeFormat/this-value-ignored.js
@@ -2,7 +2,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 12.1.1_1
+esid: sec-intl-datetimeformat-constructor
 description: >
     Tests that the this-value is ignored in DateTimeFormat, if the this-value
     isn't a DateTimeFormat instance.
diff --git a/JSTests/test262/test/intl402/NumberFormat/dft-currency-mnfd-range-check-mxfd.js b/JSTests/test262/test/intl402/NumberFormat/dft-currency-mnfd-range-check-mxfd.js
index 487adae..a2a66b0 100644
--- a/JSTests/test262/test/intl402/NumberFormat/dft-currency-mnfd-range-check-mxfd.js
+++ b/JSTests/test262/test/intl402/NumberFormat/dft-currency-mnfd-range-check-mxfd.js
@@ -1,21 +1,79 @@
 // Copyright 2017 the V8 project authors. All rights reserved.
+// Copyright 2020 Apple Inc. All rights reserved.
 // This code is governed by the license found in the LICENSE file.
 
 /*---
 esid: sec-setnfdigitoptions
 description: >
     When a currency is used in Intl.NumberFormat and minimumFractionDigits is
-    not provided, maximumFractionDigits should be set as provided.
+    not provided, maximumFractionDigits should be set as provided if it is larger
+    than currencyDigits.
 ---*/
 
+assert.throws(RangeError, () => {
+    new Intl.NumberFormat('en', {
+        style: 'currency',
+        currency: 'USD',
+        maximumFractionDigits: 1
+    });
+});
+
 assert.sameValue((new Intl.NumberFormat('en', {
     style: 'currency',
     currency: 'USD',
-    maximumFractionDigits: 1
-})).resolvedOptions().maximumFractionDigits, 1);
+    maximumFractionDigits: 2
+})).resolvedOptions().maximumFractionDigits, 2);
+
+assert.sameValue((new Intl.NumberFormat('en', {
+    style: 'currency',
+    currency: 'USD',
+    maximumFractionDigits: 3
+})).resolvedOptions().maximumFractionDigits, 3);
+
+assert.sameValue((new Intl.NumberFormat('en', {
+    style: 'currency',
+    currency: 'USD',
+    maximumFractionDigits: 20
+})).resolvedOptions().maximumFractionDigits, 20);
+
+assert.throws(RangeError, () => {
+    new Intl.NumberFormat('en', {
+        style: 'currency',
+        currency: 'USD',
+        maximumFractionDigits: 21
+    })
+});
+
+assert.throws(RangeError, () => {
+    new Intl.NumberFormat('en', {
+        style: 'currency',
+        currency: 'CLF',
+        maximumFractionDigits: 3
+    })
+});
 
 assert.sameValue((new Intl.NumberFormat('en', {
     style: 'currency',
     currency: 'CLF',
-    maximumFractionDigits: 3
-})).resolvedOptions().maximumSignificantDigits, 3);
+    maximumFractionDigits: 4
+})).resolvedOptions().maximumFractionDigits, 4);
+
+assert.sameValue((new Intl.NumberFormat('en', {
+    style: 'currency',
+    currency: 'CLF',
+    maximumFractionDigits: 5
+})).resolvedOptions().maximumFractionDigits, 5);
+
+assert.sameValue((new Intl.NumberFormat('en', {
+    style: 'currency',
+    currency: 'CLF',
+    maximumFractionDigits: 20
+})).resolvedOptions().maximumFractionDigits, 20);
+
+assert.throws(RangeError, () => {
+    new Intl.NumberFormat('en', {
+        style: 'currency',
+        currency: 'CLF',
+        maximumFractionDigits: 21
+    })
+});
diff --git a/JSTests/test262/test/intl402/NumberFormat/this-value-ignored.js b/JSTests/test262/test/intl402/NumberFormat/this-value-ignored.js
index 3850653..05b7a23 100644
--- a/JSTests/test262/test/intl402/NumberFormat/this-value-ignored.js
+++ b/JSTests/test262/test/intl402/NumberFormat/this-value-ignored.js
@@ -2,7 +2,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.1.1_1
+esid: sec-intl-numberformat-constructor
 description: >
     Tests that the this-value is ignored in NumberFormat, if the this-value
     isn't a NumberFormat instance.
diff --git a/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-abrupt-throws.js b/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-abrupt-throws.js
index fb7c6b8..0800036 100644
--- a/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-abrupt-throws.js
+++ b/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-abrupt-throws.js
@@ -3,8 +3,7 @@
 
 /*---
 esid: sec-intl.segmenter
-description: >
-    Return abrupt completion from GetOption granularity
+description: Return abrupt completion from GetOption granularity
 info: |
     Intl.Segmenter ([ locales [ , options ]])
 
diff --git a/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-toString-abrupt-throws.js b/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-toString-abrupt-throws.js
index f13cff8..ac36568 100644
--- a/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-toString-abrupt-throws.js
+++ b/JSTests/test262/test/intl402/Segmenter/constructor/constructor/options-granularity-toString-abrupt-throws.js
@@ -3,8 +3,7 @@
 
 /*---
 esid: sec-intl.segmenter
-description: >
-    Return abrupt completion from GetOption granularity
+description: Return abrupt completion from GetOption granularity
 
 info: |
     Intl.Segmenter ([ locales [ , options ]])
diff --git a/JSTests/test262/test/language/comments/S7.4_A1_T1.js b/JSTests/test262/test/language/comments/S7.4_A1_T1.js
index afd7ef9..12427b5 100644
--- a/JSTests/test262/test/language/comments/S7.4_A1_T1.js
+++ b/JSTests/test262/test/language/comments/S7.4_A1_T1.js
@@ -8,34 +8,27 @@
 ---*/
 
 //CHECK#1
-// $ERROR('#1: Correct interpretation single line comments');
+// Test262Error.thrower('#1: Correct interpretation single line comments');
 
 //CHECK#2
 var x = 0;
-// x = 1;
-if (x !== 0) {
-  $ERROR('#2: var x = 0; // x = 1; x === 0. Actual: ' + (x));
-}
+assert.sameValue(x, 0, 'The value of `x` is 0');
 
 //CHECK#3
 var // y = 1; 
 y;
-if (y !== undefined) {
-  $ERROR('#3: var // y = 1; \\n y; y === undefined. Actual: ' + (y));
-}  
+assert.sameValue(y, undefined, 'The value of `y` is expected to equal `undefined`');
 
 //CHECK#4
-//$ERROR('#4: Correct interpretation single line comments') //$ERROR('#4: Correct interpretation single line comments'); //
+//Test262Error.thrower('#4: Correct interpretation single line comments') //Test262Error.thrower('#4: Correct interpretation single line comments'); //
 
 ////CHECK#5
 //var x = 1;
 //if (x === 1) {
-//  $ERROR('#5: Correct interpretation single line comments');
+//  Test262Error.thrower('#5: Correct interpretation single line comments');
 //}
 
 //CHECK#6
 //var this.y = 1; 
 this.y++;
-if (isNaN(y) !== true) {
-  $ERROR('#6: //var this.y = 1; \\n this.y++; y === Not-a-Number. Actual: ' + (y));
-}
+assert.sameValue(isNaN(y), true, 'isNaN(y) returns true');
diff --git a/JSTests/test262/test/language/comments/S7.4_A2_T1.js b/JSTests/test262/test/language/comments/S7.4_A2_T1.js
index cdfa7f0..51598ef 100644
--- a/JSTests/test262/test/language/comments/S7.4_A2_T1.js
+++ b/JSTests/test262/test/language/comments/S7.4_A2_T1.js
@@ -8,65 +8,53 @@
 ---*/
 
 /*CHECK#1*/
-/* $ERROR('#1: Correct interpretation multi line comments');
+/* Test262Error.thrower('#1: Correct interpretation multi line comments');
 */
 
 /*CHECK#2*/
 var x = 0;
 /* x = 1;*/
-if (x !== 0) {
-  $ERROR('#2: var x = 0; /* x = 1;*/ x === 0. Actual: ' + (x));
-}
+assert.sameValue(x, 0, 'The value of `x` is 0');
 
 //CHECK#3
-var /* y = 1;*/ 
+var /* y = 1;*/
 y;
-if (y !== undefined) {
-  $ERROR('#3: var /* y = 1; */ \\n y; y === undefined. Actual: ' + (y));
-}  
+assert.sameValue(y, undefined, 'The value of `y` is expected to equal `undefined`');
 
 //CHECK#4
 var /* y = 1;*/ y;
-if (y !== undefined) {
-  $ERROR('#4: var /* y = 1; */ y; y === undefined. Actual: ' + (y));
-}  
+assert.sameValue(y, undefined, 'The value of `y` is expected to equal `undefined`');
 
 /*CHECK#5*/
 /*var x = 1;
 if (x === 1) {
-  $ERROR('#5: Correct interpretation multi line comments');
+  Test262Error.thrower('#5: Correct interpretation multi line comments');
 }
 */
 
 /*CHECK#6*/
-/*var this.y = 1;*/ 
+/*var this.y = 1;*/
 this.y++;
-if (isNaN(y) !== true) {
-  $ERROR('#6: /*var this.y = 1;*/ \\n this.y++; y === Not-a-Number. Actual: ' + (y));
-}
+assert.sameValue(isNaN(y), true, 'isNaN(y) returns true');
 
 //CHECK#7
 var string = "/*var y = 0*/" /* y = 1;*/ 
-if (string !== "/*var y = 0*/") {
-$ERROR('#7: var string = "/*var y = 0*/" /* y = 1;*/ string === "//var y = 0"');
-}
+assert.sameValue(string, "/*var y = 0*/", 'The value of `string` is "/*var y = 0*/"');
 
 //CHECK#8
 var string = "/*var y = 0" /* y = 1;*/ 
-if (string !== "/*var y = 0") {
-$ERROR('#8: var string = "/*var y = 0" /* y = 1;*/ string === "//var y = 0"');
-}
+assert.sameValue(string, "/*var y = 0", 'The value of `string` is "/*var y = 0"');
 
 /*CHECK#9*/
-/** $ERROR('#9: Correct interpretation multi line comments');
+/** Test262Error.thrower('#9: Correct interpretation multi line comments');
 */
 
 /*CHECK#10*/
-/* $ERROR('#10: Correct interpretation multi line comments');
+/* Test262Error.thrower('#10: Correct interpretation multi line comments');
 **/
 
 /*CHECK#11*/
-/****** $ERROR('#11: Correct interpretation multi line comments');*********
+/****** Test262Error.thrower('#11: Correct interpretation multi line comments');*********
 ***********
 *
 
diff --git a/JSTests/test262/test/language/expressions/assignment/S11.13.1_A5_T4.js b/JSTests/test262/test/language/expressions/assignment/S11.13.1_A5_T4.js
deleted file mode 100644
index e02c07f..0000000
--- a/JSTests/test262/test/language/expressions/assignment/S11.13.1_A5_T4.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Assignment Operator calls PutValue(lref, rval)
-es5id: S11.13.1_A5_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, rval) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when assignment is in strict-mode code and the
-    original binding is no longer present.
-flags: [noStrict]
----*/
-
-var scope = {x: 1};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x = (delete scope.x, 2);
-  })();
-}
-
-if (scope.x !== 2) {
-  $ERROR('#1: scope.x === 2. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/assignment/S11.13.1_A5_T5.js b/JSTests/test262/test/language/expressions/assignment/S11.13.1_A5_T5.js
deleted file mode 100644
index cc11e5f..0000000
--- a/JSTests/test262/test/language/expressions/assignment/S11.13.1_A5_T5.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Assignment Operator calls PutValue(lref, rval)
-es5id: S11.13.1_A5_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, rval) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when assignment is in strict-mode code and the
-    original binding is no longer present.
----*/
-
-var global = this;
-Object.defineProperty(this, "x", {
-  configurable: true,
-  value: 1
-});
-
-(function() {
-  "use strict";
-  x = (delete global.x, 2);
-})();
-
-if (this.x !== 2) {
-  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js b/JSTests/test262/test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js
new file mode 100644
index 0000000..6b60373
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js
@@ -0,0 +1,41 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Assignment Operator calls PutValue(lref, rval) (formerly S11.13.1_A5_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+
+var count = 0;
+var global = this;
+
+Object.defineProperty(this, "x", {
+  configurable: true,
+  value: 1
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x = (delete global.x, 2);
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
+assert(!('x' in global));
+
diff --git a/JSTests/test262/test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js b/JSTests/test262/test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js
new file mode 100644
index 0000000..234e721
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js
@@ -0,0 +1,36 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Assignment Operator calls PutValue(lref, rval) (formerly S11.13.1_A5_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+
+var count = 0;
+var scope = {x: 1};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x = (delete scope.x, 2);
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-0.js
new file mode 100644
index 0000000..fa6d829
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-minus-multiplicativeexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AdditiveExpression - MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x - y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-1.js
new file mode 100644
index 0000000..5168d1a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-minus-multiplicativeexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AdditiveExpression - MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 - 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-2.js
new file mode 100644
index 0000000..5e47ac7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-minus-multiplicativeexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-minus-multiplicativeexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AdditiveExpression - MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true - false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-0.js
new file mode 100644
index 0000000..6f3cad8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-plus-multiplicativeexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AdditiveExpression + MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x + y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-1.js
new file mode 100644
index 0000000..23ace08
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-plus-multiplicativeexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AdditiveExpression + MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 + 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-2.js
new file mode 100644
index 0000000..549cf2c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-additiveexpression-plus-multiplicativeexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-plus-multiplicativeexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AdditiveExpression + MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true + false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-0.js
new file mode 100644
index 0000000..f848bcb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  () => {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-1.js
new file mode 100644
index 0000000..bfc10ae
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  () => ({}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-2.js
new file mode 100644
index 0000000..a1da484
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x => x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-3.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-3.js
new file mode 100644
index 0000000..abcd669
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-3.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-3.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x) => x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-4.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-4.js
new file mode 100644
index 0000000..672573c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-4.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-4.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (() => 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-5.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-5.js
new file mode 100644
index 0000000..7303112
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-5.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-5.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (() => true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-6.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-6.js
new file mode 100644
index 0000000..070bcbc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-arrowfunction-6.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-6.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (() => 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-0.js
new file mode 100644
index 0000000..bf49833
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  async () => {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-1.js
new file mode 100644
index 0000000..cf443e1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  async () => ({}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-2.js
new file mode 100644
index 0000000..ebb7f07
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async x => x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-3.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-3.js
new file mode 100644
index 0000000..a9bb3a3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-3.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-3.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async (x) => x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-4.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-4.js
new file mode 100644
index 0000000..b61a3c04
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-4.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-4.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async () => 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-5.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-5.js
new file mode 100644
index 0000000..6a776f3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-5.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-5.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async () => true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-6.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-6.js
new file mode 100644
index 0000000..e5d954b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-asyncarrowfunction-6.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-6.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async () => 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-0.js
new file mode 100644
index 0000000..d9633fa
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseandexpression-bitwise-and-equalityexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseANDExpression: BitwiseANDExpression & EqualityExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x & y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-1.js
new file mode 100644
index 0000000..a15b127
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseandexpression-bitwise-and-equalityexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseANDExpression: BitwiseANDExpression & EqualityExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 & 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-2.js
new file mode 100644
index 0000000..6bf79f0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseandexpression-bitwise-and-equalityexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseandexpression-bitwise-and-equalityexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseANDExpression: BitwiseANDExpression & EqualityExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true & false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js
new file mode 100644
index 0000000..edd49f1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseorexpression-bitwise-or-bitwisexorexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseORExpression: BitwiseORExpression | BitwiseXORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x | y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js
new file mode 100644
index 0000000..9024c6f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseorexpression-bitwise-or-bitwisexorexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseORExpression: BitwiseORExpression | BitwiseXORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 | 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js
new file mode 100644
index 0000000..1021c65
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseorexpression-bitwise-or-bitwisexorexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseORExpression: BitwiseORExpression | BitwiseXORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true | false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js
new file mode 100644
index 0000000..fc37fbc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseXORExpression: BitwiseXORExpression ^ BitwiseANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x ^ y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js
new file mode 100644
index 0000000..8d4e0b9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseXORExpression: BitwiseXORExpression ^ BitwiseANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 ^ 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js
new file mode 100644
index 0000000..6b01abc8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    BitwiseXORExpression: BitwiseXORExpression ^ BitwiseANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true ^ false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-callexpression-arguments.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-callexpression-arguments.js
new file mode 100644
index 0000000..5e38899
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-callexpression-arguments.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/callexpression-arguments.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    CallExpression Arguments
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  f() = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-callexpression-templateliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-callexpression-templateliteral.js
new file mode 100644
index 0000000..a615699
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-callexpression-templateliteral.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/callexpression-templateliteral.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    CallExpression TemplateLiteral
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  f()`` = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js
new file mode 100644
index 0000000..2c04ba4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/coalesceexpressionhead-coalesce-bitwiseorexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    CoalesceExpression: CoalesceExpressionHead ?? BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x ?? y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js
new file mode 100644
index 0000000..8a69e2d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/coalesceexpressionhead-coalesce-bitwiseorexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    CoalesceExpression: CoalesceExpressionHead ?? BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 ?? 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js
new file mode 100644
index 0000000..63e865c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/coalesceexpressionhead-coalesce-bitwiseorexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    CoalesceExpression: CoalesceExpressionHead ?? BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true ?? false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-0.js
new file mode 100644
index 0000000..12f1ff7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression == RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x == y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-1.js
new file mode 100644
index 0000000..9c0033d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression == RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 == 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-2.js
new file mode 100644
index 0000000..7ac79e0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-equal-relationalexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression == RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true == false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-0.js
new file mode 100644
index 0000000..998642e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-not-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression != RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x != y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-1.js
new file mode 100644
index 0000000..dbc0fd0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-not-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression != RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 != 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-2.js
new file mode 100644
index 0000000..6946c1d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-abstract-not-equal-relationalexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-not-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression != RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true != false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-0.js
new file mode 100644
index 0000000..9adcd41
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression === RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x == y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-1.js
new file mode 100644
index 0000000..1e28edd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression === RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 == 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-2.js
new file mode 100644
index 0000000..08e62d0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-equal-relationalexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression === RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true == false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-0.js
new file mode 100644
index 0000000..0d08afd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-not-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression !== RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x !== y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-1.js
new file mode 100644
index 0000000..9b88647
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-not-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression !== RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 !== 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-2.js
new file mode 100644
index 0000000..4500016
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-equalityexpression-strict-not-equal-relationalexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-not-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    EqualityExpression !== RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true !== false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-0.js
new file mode 100644
index 0000000..4b4f11e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/expression-comma-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    Expression: Expression , AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x, y = z) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-1.js
new file mode 100644
index 0000000..8d6cab9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/expression-comma-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    Expression: Expression , AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x, y = 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-2.js
new file mode 100644
index 0000000..2679a7a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-expression-comma-assignmentexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/expression-comma-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    Expression: Expression , AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x, y = true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-identifierreference-arguments-strict.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-identifierreference-arguments-strict.js
new file mode 100644
index 0000000..57901f8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-identifierreference-arguments-strict.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-arguments-strict.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: If this IdentifierReference is contained in strict mode code and StringValue of Identifier is "eval" or "arguments", return invalid. (Direct assignment)
+flags: [generated, onlyStrict]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  arguments = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-identifierreference-eval-strict.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-identifierreference-eval-strict.js
new file mode 100644
index 0000000..62ae19e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-identifierreference-eval-strict.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-eval-strict.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: If this IdentifierReference is contained in strict mode code and StringValue of Identifier is "eval" or "arguments", return invalid. (Direct assignment)
+flags: [generated, onlyStrict]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  eval = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-import.meta.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-import.meta.js
new file mode 100644
index 0000000..fba00e8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-import.meta.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/import.meta.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    import.meta
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  import.meta = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-importcall.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-importcall.js
new file mode 100644
index 0000000..dbcbf30
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-importcall.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/importcall.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated, module]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ImportCall
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  import() = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..cf24704
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression = AssignmentExpression
+    If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x = y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..d873843
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression = AssignmentExpression
+    If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x = 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..3a1a54e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression = AssignmentExpression
+    If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x = true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..baa50c3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-coalesce-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression ??= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ??= y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..2d3255e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-coalesce-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression ??= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ??= 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..f416c21
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-coalesce-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression ??= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ??= true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..ae461e5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-and-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression &&= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x &&= y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..82447e8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-and-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression &&= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x &&= 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..9e4d6e9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-and-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression &&= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x &&= true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..e08f513
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-or-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression ||= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ||= y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..4886356
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-or-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression ||= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ||= 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..481febd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-or-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LeftHandSideExpression ||= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ||= true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-minus-minus.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-minus-minus.js
new file mode 100644
index 0000000..9f82ddc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-minus-minus.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-minus-minus.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UpdateExpression: LeftHandSideExpression--
+    It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x-- = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-plus-plus.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-plus-plus.js
new file mode 100644
index 0000000..ad85e55
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-plus-plus.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-plus-plus.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UpdateExpression: LeftHandSideExpression ++
+    It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x++ = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-0.js
new file mode 100644
index 0000000..07aeb26
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalandexpression-logical-and-bitwiseorexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LogicalANDExpression: LogicalANDExpression && BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x && y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-1.js
new file mode 100644
index 0000000..6cb5e2b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalandexpression-logical-and-bitwiseorexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LogicalANDExpression: LogicalANDExpression && BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 && 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-2.js
new file mode 100644
index 0000000..166073b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalandexpression-logical-and-bitwiseorexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalandexpression-logical-and-bitwiseorexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LogicalANDExpression: LogicalANDExpression && BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true && false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-0.js
new file mode 100644
index 0000000..bf4a17e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalorexpression-logical-or-logicalandexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LogicalORExpression: LogicalORExpression || LogicalANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x || y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-1.js
new file mode 100644
index 0000000..6039507
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalorexpression-logical-or-logicalandexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LogicalORExpression: LogicalORExpression || LogicalANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 || 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-2.js
new file mode 100644
index 0000000..f8008ae
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-logicalorexpression-logical-or-logicalandexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalorexpression-logical-or-logicalandexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    LogicalORExpression: LogicalORExpression || LogicalANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true || false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-memberexpression-templateliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-memberexpression-templateliteral.js
new file mode 100644
index 0000000..67a5b87
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-memberexpression-templateliteral.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/memberexpression-templateliteral.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    MemberExpression TemplateLiteral
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  o.f()`` = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-minus-minus-unaryexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-minus-minus-unaryexpression.js
new file mode 100644
index 0000000..c9ca061
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-minus-minus-unaryexpression.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/minus-minus-unaryexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UpdateExpression: --UnaryExpression
+    It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  --x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js
new file mode 100644
index 0000000..d9b87aa
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x * y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js
new file mode 100644
index 0000000..a5eabdb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 * 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js
new file mode 100644
index 0000000..969d353
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true * false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js
new file mode 100644
index 0000000..c865f79
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x / y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js
new file mode 100644
index 0000000..f42e19a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 / 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js
new file mode 100644
index 0000000..eed8fda
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true / false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-new-memberexpression-arguments.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-new-memberexpression-arguments.js
new file mode 100644
index 0000000..35deb28
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-new-memberexpression-arguments.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/new-memberexpression-arguments.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    new MemberExpression Arguments
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  new f() = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-new-newexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-new-newexpression.js
new file mode 100644
index 0000000..83e39cb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-new-newexpression.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/new-newexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    new NewExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  new f = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-optionalexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-optionalexpression.js
new file mode 100644
index 0000000..ae45ab2ad
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-optionalexpression.js
@@ -0,0 +1,24 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/optionalexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+features: [optional-chaining]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    OptionalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x?.y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-plus-plus-unaryexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-plus-plus-unaryexpression.js
new file mode 100644
index 0000000..14c4f06
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-plus-plus-unaryexpression.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/plus-plus-unaryexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UpdateExpression: ++UnaryExpression
+    It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ++x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncfunctionexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncfunctionexpression.js
new file mode 100644
index 0000000..d750974
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncfunctionexpression.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-asyncfunctionexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression AsyncFunctionExpression; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  async function () {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncgeneratorexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncgeneratorexpression.js
new file mode 100644
index 0000000..d52ebfc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-asyncgeneratorexpression.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-asyncgeneratorexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression AsyncGeneratorExpression; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  async function () {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-classexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-classexpression.js
new file mode 100644
index 0000000..d8268f4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-classexpression.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-classexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression ClassExpression; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  class {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-functionexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-functionexpression.js
new file mode 100644
index 0000000..2ddc98a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-functionexpression.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-functionexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression FunctionExpression, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  function() {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-generatorexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-generatorexpression.js
new file mode 100644
index 0000000..b2f3951
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-generatorexpression.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-generatorexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression ArrayLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  function * () {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-boolean.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-boolean.js
new file mode 100644
index 0000000..ab5aa4bc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-boolean.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-boolean.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression Literal BooleanLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-null.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-null.js
new file mode 100644
index 0000000..4f2dff0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-null.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-null.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression Literal NullLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  null = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-numeric.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-numeric.js
new file mode 100644
index 0000000..6ab95db
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-numeric.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-numeric.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression Literal NumericLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  0 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-string.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-string.js
new file mode 100644
index 0000000..23f4c1d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-literal-string.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-string.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression Literal StringLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  '' = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-objectliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-objectliteral.js
new file mode 100644
index 0000000..0d65a65
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-objectliteral.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-objectliteral.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression ObjectLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  {} = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-regularexpressionliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-regularexpressionliteral.js
new file mode 100644
index 0000000..ca340fc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-regularexpressionliteral.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-regularexpressionliteral.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression RegularExpressionLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  /1/ = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-templateliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-templateliteral.js
new file mode 100644
index 0000000..05ff29d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-templateliteral.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-templateliteral.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression TemplateLiteral; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  `` = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-this.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-this.js
new file mode 100644
index 0000000..468d0cb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-primaryexpression-this.js
@@ -0,0 +1,19 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-this.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: PrimaryExpression this; Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  this = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js
new file mode 100644
index 0000000..3b0a3f8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-or-equal-to-shiftexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression >= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x >= y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js
new file mode 100644
index 0000000..6bef4dc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-or-equal-to-shiftexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression >= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 >= 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js
new file mode 100644
index 0000000..de52e73
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-or-equal-to-shiftexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression >= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true >= false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-0.js
new file mode 100644
index 0000000..41718f1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-shiftexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression > ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x > y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-1.js
new file mode 100644
index 0000000..9479d22
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-shiftexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression > ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 > 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-2.js
new file mode 100644
index 0000000..46beba3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-greater-than-shiftexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-shiftexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression > ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true > false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-0.js
new file mode 100644
index 0000000..33a54ac
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-in-shiftexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression in ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x in y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-1.js
new file mode 100644
index 0000000..78b7112
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-in-shiftexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression in ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 in 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-2.js
new file mode 100644
index 0000000..5eb84fd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-in-shiftexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-in-shiftexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression in ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true in false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-0.js
new file mode 100644
index 0000000..bb6f7fa
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-instanceof-shiftexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression instanceof ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x instanceof y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-1.js
new file mode 100644
index 0000000..92fa88e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-instanceof-shiftexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression instanceof ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 instanceof 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-2.js
new file mode 100644
index 0000000..9143e31
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-instanceof-shiftexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-instanceof-shiftexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression instanceof ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true instanceof false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-0.js
new file mode 100644
index 0000000..233ddfc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-or-equal-to-shiftexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression <= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x <= y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-1.js
new file mode 100644
index 0000000..09ce718
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-or-equal-to-shiftexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression <= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 <= 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-2.js
new file mode 100644
index 0000000..d70bd60
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-or-equal-to-shiftexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-or-equal-to-shiftexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression <= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true <= false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-0.js
new file mode 100644
index 0000000..826e86c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-shiftexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression < ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x < y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-1.js
new file mode 100644
index 0000000..245f11d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-shiftexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression < ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 < 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-2.js
new file mode 100644
index 0000000..700c8f4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-relationalexpression-less-than-shiftexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-shiftexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    RelationalExpression < ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true < false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-0.js
new file mode 100644
index 0000000..92f1e47
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-left-additiveexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression << AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x << y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-1.js
new file mode 100644
index 0000000..6c57beb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-left-additiveexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression << AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 << 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-2.js
new file mode 100644
index 0000000..015227c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-left-additiveexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-left-additiveexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression << AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true << false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-0.js
new file mode 100644
index 0000000..dbf1d73
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-right-additiveexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression >> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x >> y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-1.js
new file mode 100644
index 0000000..7fbdcfb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-right-additiveexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression >> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 >> 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-2.js
new file mode 100644
index 0000000..07d76fb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-bitwise-right-additiveexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-right-additiveexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression >> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true >> false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js
new file mode 100644
index 0000000..d2c0c8b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-unsigned-bitwise-right-additiveexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression >>> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x >>> y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js
new file mode 100644
index 0000000..9db5e95
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-unsigned-bitwise-right-additiveexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression >>> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 >>> 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js
new file mode 100644
index 0000000..395c9d9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-unsigned-bitwise-right-additiveexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShiftExpression >>> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true >>> false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js
new file mode 100644
index 0000000..a1fb80e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShortCircuitExpression ? AssignmentExpression : AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ? y : z) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js
new file mode 100644
index 0000000..e3c65f0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShortCircuitExpression ? AssignmentExpression : AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 ? 2 : 3) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js
new file mode 100644
index 0000000..3998a00
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    ShortCircuitExpression ? AssignmentExpression : AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true ? false : true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-delete-unaryexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-delete-unaryexpression.js
new file mode 100644
index 0000000..544eaf5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-delete-unaryexpression.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-delete-unaryexpression.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: delete UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  delete x.y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-0.js
new file mode 100644
index 0000000..d749b83
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-exclamation-unaryexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: ! UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  !x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-1.js
new file mode 100644
index 0000000..ef4ac44
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-exclamation-unaryexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: ! UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  !1 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-2.js
new file mode 100644
index 0000000..68c75b3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-exclamation-unaryexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-exclamation-unaryexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: ! UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  !true = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-0.js
new file mode 100644
index 0000000..454f238
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-minus-unaryexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: - UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  -x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-1.js
new file mode 100644
index 0000000..feb592c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-minus-unaryexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: - UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  -1 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-2.js
new file mode 100644
index 0000000..97e011f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-minus-unaryexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-minus-unaryexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: - UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  -true = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-0.js
new file mode 100644
index 0000000..69eb940
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-plus-unaryexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: + UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  +x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-1.js
new file mode 100644
index 0000000..642d085
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-plus-unaryexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: + UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  +1 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-2.js
new file mode 100644
index 0000000..4b8cd3e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-plus-unaryexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-plus-unaryexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: + UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  +true = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-0.js
new file mode 100644
index 0000000..3a2dcfe
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-tilde-unaryexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: ~ UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ~x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-1.js
new file mode 100644
index 0000000..0f8f864
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-tilde-unaryexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: ~ UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ~1 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-2.js
new file mode 100644
index 0000000..0017de5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-tilde-unaryexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-tilde-unaryexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: ~ UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ~true = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-0.js
new file mode 100644
index 0000000..ae8ddb7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-typeof-unaryexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: typeof UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  typeof x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-1.js
new file mode 100644
index 0000000..03032c5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-typeof-unaryexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: typeof UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  typeof 1 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-2.js
new file mode 100644
index 0000000..71f4379
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-typeof-unaryexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-typeof-unaryexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: typeof UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  typeof true = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-0.js
new file mode 100644
index 0000000..9bede1a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-void-unaryexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: void UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  void x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-1.js
new file mode 100644
index 0000000..ab5ed99
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-void-unaryexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: void UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  void 1 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-2.js
new file mode 100644
index 0000000..79d9463
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-unaryexpression-void-unaryexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-void-unaryexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UnaryExpression: void UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  void true = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-0.js
new file mode 100644
index 0000000..adc063c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/updateexpression-star-star-exponentiationexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UpdateExpression ** ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  x ** y = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-1.js
new file mode 100644
index 0000000..4f53d32
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/updateexpression-star-star-exponentiationexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UpdateExpression ** ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  1 ** 2 = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-2.js
new file mode 100644
index 0000000..13f1d0e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-updateexpression-star-star-exponentiationexpression-2.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/updateexpression-star-star-exponentiationexpression-2.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    UpdateExpression ** ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  true ** false = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-yieldexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-yieldexpression-0.js
new file mode 100644
index 0000000..533328f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-yieldexpression-0.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/yieldexpression-0.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    YieldExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  yield x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/direct-yieldexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-yieldexpression-1.js
new file mode 100644
index 0000000..97c25e8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/direct-yieldexpression-1.js
@@ -0,0 +1,23 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/yieldexpression-1.case
+// - src/assignment-target-type/invalid/direct.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (Direct assignment)
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Direct assignment
+
+    YieldExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  yield * x = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-0.js
new file mode 100644
index 0000000..1a9bff1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-minus-multiplicativeexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AdditiveExpression - MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x - y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-1.js
new file mode 100644
index 0000000..d760c99
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-minus-multiplicativeexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AdditiveExpression - MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 - 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-2.js
new file mode 100644
index 0000000..e186a15
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-minus-multiplicativeexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-minus-multiplicativeexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AdditiveExpression - MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true - false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-0.js
new file mode 100644
index 0000000..b06c896
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-plus-multiplicativeexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AdditiveExpression + MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x + y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-1.js
new file mode 100644
index 0000000..eb19a87
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-plus-multiplicativeexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AdditiveExpression + MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 + 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-2.js
new file mode 100644
index 0000000..e34496c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-additiveexpression-plus-multiplicativeexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/additiveexpression-plus-multiplicativeexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AdditiveExpression + MultiplicativeExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true + false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-0.js
new file mode 100644
index 0000000..59967d4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (() => {}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-1.js
new file mode 100644
index 0000000..8852798
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (() => ({})) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-2.js
new file mode 100644
index 0000000..2cd321a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x => x)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-3.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-3.js
new file mode 100644
index 0000000..880acde
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-3.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-3.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (((x) => x)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-4.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-4.js
new file mode 100644
index 0000000..e31bb42
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-4.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-4.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((() => 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-5.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-5.js
new file mode 100644
index 0000000..46f6a7c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-5.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-5.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((() => true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-6.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-6.js
new file mode 100644
index 0000000..98b7c5a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-arrowfunction-6.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/arrowfunction-6.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((() => 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-0.js
new file mode 100644
index 0000000..7bfc6d6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async () => {}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-1.js
new file mode 100644
index 0000000..f1d55f2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async () => ({})) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-2.js
new file mode 100644
index 0000000..988a62b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((async x => x)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-3.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-3.js
new file mode 100644
index 0000000..4c0949c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-3.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-3.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((async (x) => x)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-4.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-4.js
new file mode 100644
index 0000000..6866223
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-4.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-4.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((async () => 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-5.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-5.js
new file mode 100644
index 0000000..93168fc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-5.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-5.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((async () => true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-6.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-6.js
new file mode 100644
index 0000000..90f930e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-asyncarrowfunction-6.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/asyncarrowfunction-6.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    AsyncArrowFunction
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((async () => 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-0.js
new file mode 100644
index 0000000..79559a9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseandexpression-bitwise-and-equalityexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseANDExpression: BitwiseANDExpression & EqualityExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x & y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-1.js
new file mode 100644
index 0000000..3a5f986
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseandexpression-bitwise-and-equalityexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseANDExpression: BitwiseANDExpression & EqualityExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 & 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-2.js
new file mode 100644
index 0000000..8d5d6cf
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseandexpression-bitwise-and-equalityexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseandexpression-bitwise-and-equalityexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseANDExpression: BitwiseANDExpression & EqualityExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true & false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js
new file mode 100644
index 0000000..72878fe
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseorexpression-bitwise-or-bitwisexorexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseORExpression: BitwiseORExpression | BitwiseXORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x | y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js
new file mode 100644
index 0000000..584e8f0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseorexpression-bitwise-or-bitwisexorexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseORExpression: BitwiseORExpression | BitwiseXORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 | 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js
new file mode 100644
index 0000000..e984b35
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwiseorexpression-bitwise-or-bitwisexorexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwiseorexpression-bitwise-or-bitwisexorexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseORExpression: BitwiseORExpression | BitwiseXORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true | false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js
new file mode 100644
index 0000000..db7f5b1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwisexorexpression-bitwise-xor-bitwiseandexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseXORExpression: BitwiseXORExpression ^ BitwiseANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ^ y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js
new file mode 100644
index 0000000..b3096ac
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwisexorexpression-bitwise-xor-bitwiseandexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseXORExpression: BitwiseXORExpression ^ BitwiseANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 ^ 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js
new file mode 100644
index 0000000..ee53c5a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/bitwisexorexpression-bitwise-xor-bitwiseandexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    BitwiseXORExpression: BitwiseXORExpression ^ BitwiseANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true ^ false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-callexpression-arguments.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-callexpression-arguments.js
new file mode 100644
index 0000000..ed0458e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-callexpression-arguments.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/callexpression-arguments.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    CallExpression Arguments
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (f()) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-callexpression-templateliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-callexpression-templateliteral.js
new file mode 100644
index 0000000..8a93152
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-callexpression-templateliteral.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/callexpression-templateliteral.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    CallExpression TemplateLiteral
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (f()``) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js
new file mode 100644
index 0000000..67361ec
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/coalesceexpressionhead-coalesce-bitwiseorexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    CoalesceExpression: CoalesceExpressionHead ?? BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ?? y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js
new file mode 100644
index 0000000..2c0baf1f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/coalesceexpressionhead-coalesce-bitwiseorexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    CoalesceExpression: CoalesceExpressionHead ?? BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 ?? 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js
new file mode 100644
index 0000000..4ae6af4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-coalesceexpressionhead-coalesce-bitwiseorexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/coalesceexpressionhead-coalesce-bitwiseorexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    CoalesceExpression: CoalesceExpressionHead ?? BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true ?? false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-0.js
new file mode 100644
index 0000000..7644948
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression == RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x == y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-1.js
new file mode 100644
index 0000000..b06a319
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression == RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 == 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-2.js
new file mode 100644
index 0000000..05858a4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-equal-relationalexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression == RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true == false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-0.js
new file mode 100644
index 0000000..2795a69
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-not-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression != RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x != y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-1.js
new file mode 100644
index 0000000..973b6d8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-not-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression != RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 != 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-2.js
new file mode 100644
index 0000000..44b5ce7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-abstract-not-equal-relationalexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-abstract-not-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression != RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true != false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-0.js
new file mode 100644
index 0000000..1492f43
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression === RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x == y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-1.js
new file mode 100644
index 0000000..d343a6f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression === RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 == 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-2.js
new file mode 100644
index 0000000..d0b6465
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-equal-relationalexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression === RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true == false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-0.js
new file mode 100644
index 0000000..9ae0d7d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-not-equal-relationalexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression !== RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x !== y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-1.js
new file mode 100644
index 0000000..65f925e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-not-equal-relationalexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression !== RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 !== 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-2.js
new file mode 100644
index 0000000..5e0a92c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-equalityexpression-strict-not-equal-relationalexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/equalityexpression-strict-not-equal-relationalexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    EqualityExpression !== RelationalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true !== false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-0.js
new file mode 100644
index 0000000..09aca21
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/expression-comma-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    Expression: Expression , AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x, y = z)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-1.js
new file mode 100644
index 0000000..b7f6db4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/expression-comma-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    Expression: Expression , AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x, y = 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-2.js
new file mode 100644
index 0000000..d200ffd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-expression-comma-assignmentexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/expression-comma-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    Expression: Expression , AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x, y = true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-identifierreference-arguments-strict.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-identifierreference-arguments-strict.js
new file mode 100644
index 0000000..79f90bf
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-identifierreference-arguments-strict.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-arguments-strict.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: If this IdentifierReference is contained in strict mode code and StringValue of Identifier is "eval" or "arguments", return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated, onlyStrict]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (arguments) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-identifierreference-eval-strict.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-identifierreference-eval-strict.js
new file mode 100644
index 0000000..20689f3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-identifierreference-eval-strict.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-eval-strict.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: If this IdentifierReference is contained in strict mode code and StringValue of Identifier is "eval" or "arguments", return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated, onlyStrict]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (eval) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-import.meta.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-import.meta.js
new file mode 100644
index 0000000..d1217f2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-import.meta.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/import.meta.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    import.meta
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (import.meta) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-importcall.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-importcall.js
new file mode 100644
index 0000000..e6c7f18
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-importcall.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/importcall.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated, module]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ImportCall
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (import()) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..80658ac
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression = AssignmentExpression
+    If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x = y)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..e51482e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression = AssignmentExpression
+    If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x = 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..2297ed5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression = AssignmentExpression
+    If LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral, the following Early Error rule is applied, It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x = true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..a052920
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-coalesce-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression ??= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x ??= y)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..e5d0b68
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-coalesce-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression ??= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x ??= 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..c2aec38
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-coalesce-assignment-assignmentexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-coalesce-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression ??= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x ??= true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..68bf0ea
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-and-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression &&= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x &&= y)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..2e3f90b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-and-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression &&= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x &&= 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..9c06ebb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-and-assignment-assignmentexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-and-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression &&= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x &&= true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js
new file mode 100644
index 0000000..82a1ee2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-or-assignment-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression ||= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x ||= y)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js
new file mode 100644
index 0000000..50486e2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-or-assignment-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression ||= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x ||= 1)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js
new file mode 100644
index 0000000..a9bef45
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-logical-or-assignment-assignmentexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-logical-or-assignment-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LeftHandSideExpression ||= AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x ||= true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-minus-minus.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-minus-minus.js
new file mode 100644
index 0000000..ce539d4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-minus-minus.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-minus-minus.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UpdateExpression: LeftHandSideExpression--
+    It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x--) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-plus-plus.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-plus-plus.js
new file mode 100644
index 0000000..d847565
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-plus-plus.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/lefthandsideexpression-plus-plus.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UpdateExpression: LeftHandSideExpression ++
+    It is an early Syntax Error if AssignmentTargetType of LeftHandSideExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x++) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-0.js
new file mode 100644
index 0000000..7d11488
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalandexpression-logical-and-bitwiseorexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LogicalANDExpression: LogicalANDExpression && BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x && y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-1.js
new file mode 100644
index 0000000..3c22d22
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalandexpression-logical-and-bitwiseorexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LogicalANDExpression: LogicalANDExpression && BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 && 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-2.js
new file mode 100644
index 0000000..3196e2c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalandexpression-logical-and-bitwiseorexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalandexpression-logical-and-bitwiseorexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LogicalANDExpression: LogicalANDExpression && BitwiseORExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true && false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-0.js
new file mode 100644
index 0000000..00a0279
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalorexpression-logical-or-logicalandexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LogicalORExpression: LogicalORExpression || LogicalANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x || y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-1.js
new file mode 100644
index 0000000..a2e42ee
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalorexpression-logical-or-logicalandexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LogicalORExpression: LogicalORExpression || LogicalANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 || 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-2.js
new file mode 100644
index 0000000..bc0499a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-logicalorexpression-logical-or-logicalandexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/logicalorexpression-logical-or-logicalandexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    LogicalORExpression: LogicalORExpression || LogicalANDExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true || false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-memberexpression-templateliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-memberexpression-templateliteral.js
new file mode 100644
index 0000000..89c3131
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-memberexpression-templateliteral.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/memberexpression-templateliteral.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    MemberExpression TemplateLiteral
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (o.f()``) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-minus-minus-unaryexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-minus-minus-unaryexpression.js
new file mode 100644
index 0000000..a960e50
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-minus-minus-unaryexpression.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/minus-minus-unaryexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UpdateExpression: --UnaryExpression
+    It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (--x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js
new file mode 100644
index 0000000..33801c7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x * y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js
new file mode 100644
index 0000000..90cfa5b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 * 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js
new file mode 100644
index 0000000..8a6aac7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true * false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js
new file mode 100644
index 0000000..bce4087
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-3.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x / y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js
new file mode 100644
index 0000000..f3b2320
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-4.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 / 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js
new file mode 100644
index 0000000..ee642d3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/multiplicativeexpression-multiplicativeoperator-exponentiationexpression-5.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    MultiplicativeExpression MultiplicativeOperator ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true / false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-new-memberexpression-arguments.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-new-memberexpression-arguments.js
new file mode 100644
index 0000000..8efbbf41
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-new-memberexpression-arguments.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/new-memberexpression-arguments.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    new MemberExpression Arguments
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (new f()) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-new-newexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-new-newexpression.js
new file mode 100644
index 0000000..97ac269
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-new-newexpression.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/new-newexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    new NewExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (new f) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-optionalexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-optionalexpression.js
new file mode 100644
index 0000000..698612a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-optionalexpression.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/optionalexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+features: [optional-chaining]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    OptionalExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x?.y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-plus-plus-unaryexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-plus-plus-unaryexpression.js
new file mode 100644
index 0000000..c58f4ff
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-plus-plus-unaryexpression.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/plus-plus-unaryexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UpdateExpression: ++UnaryExpression
+    It is an early Syntax Error if AssignmentTargetType of UnaryExpression is not simple.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (++x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncfunctionexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncfunctionexpression.js
new file mode 100644
index 0000000..89d44d9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncfunctionexpression.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-asyncfunctionexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression AsyncFunctionExpression; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async function () {}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncgeneratorexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncgeneratorexpression.js
new file mode 100644
index 0000000..83e7af2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-asyncgeneratorexpression.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-asyncgeneratorexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression AsyncGeneratorExpression; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (async function () {}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-classexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-classexpression.js
new file mode 100644
index 0000000..6f5e2b7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-classexpression.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-classexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression ClassExpression; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (class {}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-functionexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-functionexpression.js
new file mode 100644
index 0000000..2e9c908
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-functionexpression.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-functionexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression FunctionExpression, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (function() {}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-generatorexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-generatorexpression.js
new file mode 100644
index 0000000..7989329
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-generatorexpression.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-generatorexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression ArrayLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (function * () {}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-boolean.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-boolean.js
new file mode 100644
index 0000000..2c1ca49
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-boolean.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-boolean.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression Literal BooleanLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-null.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-null.js
new file mode 100644
index 0000000..889a5e4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-null.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-null.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression Literal NullLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (null) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-numeric.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-numeric.js
new file mode 100644
index 0000000..f4cd37a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-numeric.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-numeric.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression Literal NumericLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (0) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-string.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-string.js
new file mode 100644
index 0000000..f278218
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-literal-string.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-literal-string.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression Literal StringLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ('') = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-objectliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-objectliteral.js
new file mode 100644
index 0000000..b7afc74
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-objectliteral.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-objectliteral.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression ObjectLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ({}) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-regularexpressionliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-regularexpressionliteral.js
new file mode 100644
index 0000000..a7e4c1a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-regularexpressionliteral.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-regularexpressionliteral.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression RegularExpressionLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (/1/) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-templateliteral.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-templateliteral.js
new file mode 100644
index 0000000..222a8b6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-templateliteral.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-templateliteral.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression TemplateLiteral; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (``) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-this.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-this.js
new file mode 100644
index 0000000..8dba094
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-primaryexpression-this.js
@@ -0,0 +1,22 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/primaryexpression-this.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: PrimaryExpression this; Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (this) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js
new file mode 100644
index 0000000..81b18ad
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-or-equal-to-shiftexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression >= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x >= y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js
new file mode 100644
index 0000000..3cd716f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-or-equal-to-shiftexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression >= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 >= 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js
new file mode 100644
index 0000000..e1e60b4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-or-equal-to-shiftexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-or-equal-to-shiftexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression >= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true >= false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-0.js
new file mode 100644
index 0000000..1661291
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-shiftexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression > ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x > y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-1.js
new file mode 100644
index 0000000..ddcb790
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-shiftexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression > ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 > 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-2.js
new file mode 100644
index 0000000..711936b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-greater-than-shiftexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-greater-than-shiftexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression > ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true > false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-0.js
new file mode 100644
index 0000000..89eb9e4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-in-shiftexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression in ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x in y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-1.js
new file mode 100644
index 0000000..f78e1d4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-in-shiftexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression in ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 in 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-2.js
new file mode 100644
index 0000000..8c1ce0b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-in-shiftexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-in-shiftexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression in ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true in false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-0.js
new file mode 100644
index 0000000..0e110e4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-instanceof-shiftexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression instanceof ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x instanceof y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-1.js
new file mode 100644
index 0000000..99e7fcb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-instanceof-shiftexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression instanceof ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 instanceof 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-2.js
new file mode 100644
index 0000000..2587658
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-instanceof-shiftexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-instanceof-shiftexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression instanceof ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true instanceof false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-0.js
new file mode 100644
index 0000000..d3c6fb5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-or-equal-to-shiftexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression <= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x <= y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-1.js
new file mode 100644
index 0000000..4132490
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-or-equal-to-shiftexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression <= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 <= 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-2.js
new file mode 100644
index 0000000..3cfa67f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-or-equal-to-shiftexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-or-equal-to-shiftexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression <= ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true <= false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-0.js
new file mode 100644
index 0000000..506f8a2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-shiftexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression < ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x < y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-1.js
new file mode 100644
index 0000000..531c0c0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-shiftexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression < ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 < 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-2.js
new file mode 100644
index 0000000..6b96a57
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-relationalexpression-less-than-shiftexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/relationalexpression-less-than-shiftexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    RelationalExpression < ShiftExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true < false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-0.js
new file mode 100644
index 0000000..2aba85b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-left-additiveexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression << AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x << y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-1.js
new file mode 100644
index 0000000..5becf446
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-left-additiveexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression << AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 << 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-2.js
new file mode 100644
index 0000000..adcae02
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-left-additiveexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-left-additiveexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression << AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true << false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-0.js
new file mode 100644
index 0000000..3130b6f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-right-additiveexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression >> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x >> y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-1.js
new file mode 100644
index 0000000..71a676d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-right-additiveexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression >> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 >> 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-2.js
new file mode 100644
index 0000000..841b9fe
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-bitwise-right-additiveexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-bitwise-right-additiveexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression >> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true >> false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js
new file mode 100644
index 0000000..2270f70
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-unsigned-bitwise-right-additiveexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression >>> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x >>> y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js
new file mode 100644
index 0000000..74b5fbf
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-unsigned-bitwise-right-additiveexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression >>> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 >>> 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js
new file mode 100644
index 0000000..9b61767
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shiftexpression-unsigned-bitwise-right-additiveexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shiftexpression-unsigned-bitwise-right-additiveexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShiftExpression >>> AdditiveExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true >>> false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js
new file mode 100644
index 0000000..6b3e14f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShortCircuitExpression ? AssignmentExpression : AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((x ? y : z)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js
new file mode 100644
index 0000000..829ca8d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShortCircuitExpression ? AssignmentExpression : AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((1 ? 2 : 3)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js
new file mode 100644
index 0000000..7a4528e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/shortcircuitexpression-question-assignmentexpression-else-assignmentexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    ShortCircuitExpression ? AssignmentExpression : AssignmentExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  ((true ? false : true)) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-delete-unaryexpression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-delete-unaryexpression.js
new file mode 100644
index 0000000..6c801fd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-delete-unaryexpression.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-delete-unaryexpression.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: delete UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (delete x.y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-0.js
new file mode 100644
index 0000000..42ef5c4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-exclamation-unaryexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: ! UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (!x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-1.js
new file mode 100644
index 0000000..b3c35e6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-exclamation-unaryexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: ! UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (!1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-2.js
new file mode 100644
index 0000000..e88d5cc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-exclamation-unaryexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-exclamation-unaryexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: ! UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (!true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-0.js
new file mode 100644
index 0000000..96b90db
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-minus-unaryexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: - UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (-x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-1.js
new file mode 100644
index 0000000..5b086a0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-minus-unaryexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: - UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (-1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-2.js
new file mode 100644
index 0000000..3a7761d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-minus-unaryexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-minus-unaryexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: - UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (-true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-0.js
new file mode 100644
index 0000000..4a35cdd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-plus-unaryexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: + UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (+x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-1.js
new file mode 100644
index 0000000..1659ca7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-plus-unaryexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: + UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (+1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-2.js
new file mode 100644
index 0000000..0ef2916
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-plus-unaryexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-plus-unaryexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: + UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (+true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-0.js
new file mode 100644
index 0000000..6c0e37d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-tilde-unaryexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: ~ UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (~x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-1.js
new file mode 100644
index 0000000..ea5d205
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-tilde-unaryexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: ~ UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (~1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-2.js
new file mode 100644
index 0000000..20a5ce8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-tilde-unaryexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-tilde-unaryexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: ~ UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (~true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-0.js
new file mode 100644
index 0000000..0c80744
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-typeof-unaryexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: typeof UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (typeof x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-1.js
new file mode 100644
index 0000000..78e3ef2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-typeof-unaryexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: typeof UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (typeof 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-2.js
new file mode 100644
index 0000000..2f14325
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-typeof-unaryexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-typeof-unaryexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: typeof UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (typeof true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-0.js
new file mode 100644
index 0000000..93d719f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-void-unaryexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: void UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (void x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-1.js
new file mode 100644
index 0000000..9b602b6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-void-unaryexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: void UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (void 1) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-2.js
new file mode 100644
index 0000000..ae92030
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-unaryexpression-void-unaryexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/unaryexpression-void-unaryexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UnaryExpression: void UnaryExpression
+    Static Semantics AssignmentTargetType, Return invalid
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (void true) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-0.js
new file mode 100644
index 0000000..fc204a2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/updateexpression-star-star-exponentiationexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UpdateExpression ** ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (x ** y) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-1.js
new file mode 100644
index 0000000..98ee967
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/updateexpression-star-star-exponentiationexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UpdateExpression ** ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (1 ** 2) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-2.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-2.js
new file mode 100644
index 0000000..c144e6b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-updateexpression-star-star-exponentiationexpression-2.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/updateexpression-star-star-exponentiationexpression-2.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    UpdateExpression ** ExponentiationExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (true ** false) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-0.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-0.js
new file mode 100644
index 0000000..eb3f273
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-0.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/yieldexpression-0.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    YieldExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (yield x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-1.js b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-1.js
new file mode 100644
index 0000000..59069d6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/parenthesized-yieldexpression-1.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/yieldexpression-1.case
+// - src/assignment-target-type/invalid/parenthesized.template
+/*---
+description: Static Semantics AssignmentTargetType, Return invalid. (ParenthesizedExpression)
+esid: sec-grouping-operator-static-semantics-assignmenttargettype
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    ParenthesizedExpression: (Expression)
+
+    Return AssignmentTargetType of Expression.
+
+    YieldExpression
+    Static Semantics AssignmentTargetType, Return invalid.
+
+---*/
+
+$DONOTEVALUATE();
+
+function _() {
+  (yield * x) = 1;
+}
+
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-arguments.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-arguments.js
new file mode 100644
index 0000000..4ad1a86
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-arguments.js
@@ -0,0 +1,10 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-arguments.case
+// - src/assignment-target-type/simple/basic/default.template
+/*---
+description: IdentifierReference  Identifier, Return simple. (Simple Direct assignment)
+flags: [generated, noStrict]
+---*/
+
+
+arguments = 1;
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-await.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-await.js
new file mode 100644
index 0000000..c6e6c08
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-await.js
@@ -0,0 +1,11 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-await.case
+// - src/assignment-target-type/simple/basic/default.template
+/*---
+description: IdentifierReference  await Return simple. (Simple Direct assignment)
+flags: [generated]
+---*/
+var await = 0;
+
+
+await = 1;
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-eval.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-eval.js
new file mode 100644
index 0000000..53ec388
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-eval.js
@@ -0,0 +1,10 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-eval.case
+// - src/assignment-target-type/simple/basic/default.template
+/*---
+description: IdentifierReference Identifier, Return simple. (Simple Direct assignment)
+flags: [generated, noStrict]
+---*/
+
+
+eval = 1;
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-yield.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-yield.js
new file mode 100644
index 0000000..4d0efc4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-basic-identifierreference-yield.js
@@ -0,0 +1,10 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/identifierreference-yield.case
+// - src/assignment-target-type/simple/basic/default.template
+/*---
+description: IdentifierReference yield, Return simple. (Simple Direct assignment)
+flags: [generated, noStrict]
+---*/
+
+
+yield = 1;
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-callexpression-expression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-callexpression-expression.js
new file mode 100644
index 0000000..0bf608a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-callexpression-expression.js
@@ -0,0 +1,18 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/callexpression-expression.case
+// - src/assignment-target-type/simple/complex/default.template
+/*---
+description: Static Semantics AssignmentTargetType, Return simple (Simple Direct assignment)
+flags: [generated]
+info: |
+    CallExpression [ Expression ]
+    Static Semantics AssignmentTargetType, Return simple
+
+---*/
+
+
+let v = 'v';
+let o = { [v]: 1, f() {} };
+let f = () => o;
+
+f()[v] = 1;
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-callexpression.identifiername.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-callexpression.identifiername.js
new file mode 100644
index 0000000..1feff5b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-callexpression.identifiername.js
@@ -0,0 +1,18 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/callexpression.identifiername.case
+// - src/assignment-target-type/simple/complex/default.template
+/*---
+description: Static Semantics AssignmentTargetType, Return simple (Simple Direct assignment)
+flags: [generated]
+info: |
+    CallExpression . IdentifierName
+    Static Semantics AssignmentTargetType, Return simple
+
+---*/
+
+
+let v = 'v';
+let o = { [v]: 1, f() {} };
+let f = () => o;
+
+f().IdentifierName = 1;
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-memberexpression-expression.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-memberexpression-expression.js
new file mode 100644
index 0000000..eb324a8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-memberexpression-expression.js
@@ -0,0 +1,18 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/memberexpression-expression.case
+// - src/assignment-target-type/simple/complex/default.template
+/*---
+description: Static Semantics AssignmentTargetType, Return simple (Simple Direct assignment)
+flags: [generated]
+info: |
+    MemberExpression [ Expression ]
+    Static Semantics AssignmentTargetType, Return simple
+
+---*/
+
+
+let v = 'v';
+let o = { [v]: 1, f() {} };
+let f = () => o;
+
+o[v] = 1;
diff --git a/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-memberexpression.identifiername.js b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-memberexpression.identifiername.js
new file mode 100644
index 0000000..1b95694
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/assignmenttargettype/simple-complex-memberexpression.identifiername.js
@@ -0,0 +1,18 @@
+// This file was procedurally generated from the following sources:
+// - src/assignment-target-type/memberexpression.identifiername.case
+// - src/assignment-target-type/simple/complex/default.template
+/*---
+description: Static Semantics AssignmentTargetType, Return simple (Simple Direct assignment)
+flags: [generated]
+info: |
+    MemberExpression . IdentifierName
+    Static Semantics AssignmentTargetType, Return simple
+
+---*/
+
+
+let v = 'v';
+let o = { [v]: 1, f() {} };
+let f = () => o;
+
+o.v = 1;
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..449c554
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1 + 1]() {
+    return 2;
+  }
+
+  set [1 + 1](v) {
+    return 2;
+  }
+
+  static get [1 + 1]() {
+    return 2;
+  }
+
+  static set [1 + 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1],
+  2
+);
+assert.sameValue(
+  c[1 + 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1 + 1],
+  2
+);
+assert.sameValue(
+  C[1 + 1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..22fb865
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1 - 1]() {
+    return 0;
+  }
+
+  set [1 - 1](v) {
+    return 0;
+  }
+
+  static get [1 - 1]() {
+    return 0;
+  }
+
+  static set [1 - 1](v) {
+    return 0;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1],
+  0
+);
+assert.sameValue(
+  c[1 - 1] = 0,
+  0
+);
+
+assert.sameValue(
+  C[1 - 1],
+  0
+);
+assert.sameValue(
+  C[1 - 1] = 0,
+  0
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..096377a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [() => { }]() {
+    return 1;
+  }
+
+  set [() => { }](v) {
+    return 1;
+  }
+
+  static get [() => { }]() {
+    return 1;
+  }
+
+  static set [() => { }](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }],
+  1
+);
+assert.sameValue(
+  c[() => { }] = 1,
+  1
+);
+
+assert.sameValue(
+  C[() => { }],
+  1
+);
+assert.sameValue(
+  C[() => { }] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..d90589d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  get [x = 1]() {
+    return 2;
+  }
+
+  set [x = 1](v) {
+    return 2;
+  }
+
+  static get [x = 1]() {
+    return 2;
+  }
+
+  static set [x = 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1],
+  2
+);
+assert.sameValue(
+  c[x = 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x = 1],
+  2
+);
+assert.sameValue(
+  C[x = 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..85e29f4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  get [x |= 1]() {
+    return 2;
+  }
+
+  set [x |= 1](v) {
+    return 2;
+  }
+
+  static get [x |= 1]() {
+    return 2;
+  }
+
+  static set [x |= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1],
+  2
+);
+assert.sameValue(
+  c[x |= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x |= 1],
+  2
+);
+assert.sameValue(
+  C[x |= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..da941cb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+let C = class {
+  get [x ??= 1]() {
+    return 2;
+  }
+
+  set [x ??= 1](v) {
+    return 2;
+  }
+
+  static get [x ??= 1]() {
+    return 2;
+  }
+
+  static set [x ??= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1],
+  2
+);
+assert.sameValue(
+  c[x ??= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x ??= 1],
+  2
+);
+assert.sameValue(
+  C[x ??= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..33d90bc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  get [x &&= 1]() {
+    return 2;
+  }
+
+  set [x &&= 1](v) {
+    return 2;
+  }
+
+  static get [x &&= 1]() {
+    return 2;
+  }
+
+  static set [x &&= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1],
+  2
+);
+assert.sameValue(
+  c[x &&= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x &&= 1],
+  2
+);
+assert.sameValue(
+  C[x &&= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..eeff6f9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  get [x ||= 1]() {
+    return 2;
+  }
+
+  set [x ||= 1](v) {
+    return 2;
+  }
+
+  static get [x ||= 1]() {
+    return 2;
+  }
+
+  static set [x ||= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1],
+  2
+);
+assert.sameValue(
+  c[x ||= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x ||= 1],
+  2
+);
+assert.sameValue(
+  C[x ||= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..c18810b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [async () => {}]() {
+    return 1;
+  }
+
+  set [async () => {}](v) {
+    return 1;
+  }
+
+  static get [async () => {}]() {
+    return 1;
+  }
+
+  static set [async () => {}](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}],
+  1
+);
+assert.sameValue(
+  c[async () => {}] = 1,
+  1
+);
+
+assert.sameValue(
+  C[async () => {}],
+  1
+);
+assert.sameValue(
+  C[async () => {}] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..d070a08
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [false ? 1 : 2]() {
+    return 1;
+  }
+
+  set [false ? 1 : 2](v) {
+    return 1;
+  }
+
+  static get [false ? 1 : 2]() {
+    return 1;
+  }
+
+  static set [false ? 1 : 2](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2],
+  1
+);
+assert.sameValue(
+  c[false ? 1 : 2] = 1,
+  1
+);
+
+assert.sameValue(
+  C[false ? 1 : 2],
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..6411e95
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  set [true ? 1 : 2](v) {
+    return 2;
+  }
+
+  static get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  static set [true ? 1 : 2](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  c[true ? 1 : 2] = 2,
+  2
+);
+
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..283150e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1.e1]() {
+    return 2;
+  }
+
+  set [1.e1](v) {
+    return 2;
+  }
+
+  static get [1.e1]() {
+    return 2;
+  }
+
+  static set [1.e1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1],
+  2
+);
+assert.sameValue(
+  c[1.e1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1.e1],
+  2
+);
+assert.sameValue(
+  C[1.e1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..25e3ab0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1.1]() {
+    return 2;
+  }
+
+  set [1.1](v) {
+    return 2;
+  }
+
+  static get [1.1]() {
+    return 2;
+  }
+
+  static set [1.1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1],
+  2
+);
+assert.sameValue(
+  c[1.1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1.1],
+  2
+);
+assert.sameValue(
+  C[1.1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..08106a1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [2 ** 2]() {
+    return 4;
+  }
+
+  set [2 ** 2](v) {
+    return 4;
+  }
+
+  static get [2 ** 2]() {
+    return 4;
+  }
+
+  static set [2 ** 2](v) {
+    return 4;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2],
+  4
+);
+assert.sameValue(
+  c[2 ** 2] = 4,
+  4
+);
+
+assert.sameValue(
+  C[2 ** 2],
+  4
+);
+assert.sameValue(
+  C[2 ** 2] = 4,
+  4
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..ce59833
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+let C = class {
+  get [x ?? 1]() {
+    return 2;
+  }
+
+  set [x ?? 1](v) {
+    return 2;
+  }
+
+  static get [x ?? 1]() {
+    return 2;
+  }
+
+  static set [x ?? 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1],
+  2
+);
+assert.sameValue(
+  c[x ?? 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x ?? 1],
+  2
+);
+assert.sameValue(
+  C[x ?? 1] = 2,
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..d3b0884
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  get [x && 1]() {
+    return 2;
+  }
+
+  set [x && 1](v) {
+    return 2;
+  }
+
+  static get [x && 1]() {
+    return 2;
+  }
+
+  static set [x && 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1],
+  2
+);
+assert.sameValue(
+  c[x && 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x && 1],
+  2
+);
+assert.sameValue(
+  C[x && 1] = 2,
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..135c449
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  get [x || 1]() {
+    return 2;
+  }
+
+  set [x || 1](v) {
+    return 2;
+  }
+
+  static get [x || 1]() {
+    return 2;
+  }
+
+  static set [x || 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1],
+  2
+);
+assert.sameValue(
+  c[x || 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x || 1],
+  2
+);
+assert.sameValue(
+  C[x || 1] = 2,
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..6bcf6c5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-function-declaration.js
@@ -0,0 +1,75 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+let C = class {
+  get [f()]() {
+    return 1;
+  }
+
+  set [f()](v) {
+    return 1;
+  }
+
+  static get [f()]() {
+    return 1;
+  }
+
+  static set [f()](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()],
+  1
+);
+assert.sameValue(
+  c[f()] = 1,
+  1
+);
+
+assert.sameValue(
+  C[f()],
+  1
+);
+assert.sameValue(
+  C[f()] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..71fc6d4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-function-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [function () {}]() {
+    return 1;
+  }
+
+  set [function () {}](v) {
+    return 1;
+  }
+
+  static get [function () {}]() {
+    return 1;
+  }
+
+  static set [function () {}](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}],
+  1
+);
+assert.sameValue(
+  c[function () {}] = 1,
+  1
+);
+
+assert.sameValue(
+  C[function () {}],
+  1
+);
+assert.sameValue(
+  C[function () {}] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..8ff9b06
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,75 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+let C = class {
+  get [g()]() {
+    return 1;
+  }
+
+  set [g()](v) {
+    return 1;
+  }
+
+  static get [g()]() {
+    return 1;
+  }
+
+  static set [g()](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()],
+  1
+);
+assert.sameValue(
+  c[g()] = 1,
+  1
+);
+
+assert.sameValue(
+  C[g()],
+  1
+);
+assert.sameValue(
+  C[g()] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-identifier.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..cc02b1b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-identifier.js
@@ -0,0 +1,76 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+let C = class {
+  get [x]() {
+    return '2';
+  }
+
+  set [x](v) {
+    return '2';
+  }
+
+  static get [x]() {
+    return '2';
+  }
+
+  static set [x](v) {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x],
+  '2'
+);
+assert.sameValue(
+  c[x] = '2',
+  '2'
+);
+
+assert.sameValue(
+  C[x],
+  '2'
+);
+assert.sameValue(
+  C[x] = '2',
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..eca1310
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1]() {
+    return 2;
+  }
+
+  set [1](v) {
+    return 2;
+  }
+
+  static get [1]() {
+    return 2;
+  }
+
+  static set [1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  c[1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1],
+  2
+);
+assert.sameValue(
+  C[1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..9bc9cb7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-integer-separators.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+
+  set [1_2_3_4_5_6_7_8](v) {
+    return 1_2_3_4_5_6_7_8;
+  }
+
+  static get [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+
+  static set [1_2_3_4_5_6_7_8](v) {
+    return 1_2_3_4_5_6_7_8;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8,
+  1_2_3_4_5_6_7_8
+);
+
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8,
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-math.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-math.js
new file mode 100644
index 0000000..43164fa
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-math.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+
+  set [1 + 2 - 3 * 4 / 5 ** 6](v) {
+    return 2.999232;
+  }
+
+  static get [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+
+  static set [1 + 2 - 3 * 4 / 5 ** 6](v) {
+    return 2.999232;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6] = 2.999232,
+  2.999232
+);
+
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6] = 2.999232,
+  2.999232
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..d54c341
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1 / 1]() {
+    return 1;
+  }
+
+  set [1 / 1](v) {
+    return 1;
+  }
+
+  static get [1 / 1]() {
+    return 1;
+  }
+
+  static set [1 / 1](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1],
+  1
+);
+assert.sameValue(
+  c[1 / 1] = 1,
+  1
+);
+
+assert.sameValue(
+  C[1 / 1],
+  1
+);
+assert.sameValue(
+  C[1 / 1] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..7aba212
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1 * 1]() {
+    return 1;
+  }
+
+  set [1 * 1](v) {
+    return 1;
+  }
+
+  static get [1 * 1]() {
+    return 1;
+  }
+
+  static set [1 * 1](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1],
+  1
+);
+assert.sameValue(
+  c[1 * 1] = 1,
+  1
+);
+
+assert.sameValue(
+  C[1 * 1],
+  1
+);
+assert.sameValue(
+  C[1 * 1] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..182891e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [1]() {
+    return 2;
+  }
+
+  set [1](v) {
+    return 2;
+  }
+
+  static get [1]() {
+    return 2;
+  }
+
+  static set [1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  c[1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1],
+  2
+);
+assert.sameValue(
+  C[1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..dd516b2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-string-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get ['1']() {
+    return '2';
+  }
+
+  set ['1'](v) {
+    return '2';
+  }
+
+  static get ['1']() {
+    return '2';
+  }
+
+  static set ['1'](v) {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'],
+  '2'
+);
+assert.sameValue(
+  c['1'] = '2',
+  '2'
+);
+
+assert.sameValue(
+  C['1'],
+  '2'
+);
+assert.sameValue(
+  C['1'] = '2',
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..78cca44
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-accessors-computed-property-name-from-yield-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-expression-accessors.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  set [true ? 1 : 2](v) {
+    return 2;
+  }
+
+  static get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  static set [true ? 1 : 2](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  c[true ? 1 : 2] = 2,
+  2
+);
+
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..94b1b47
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 1]() {
+    return 2;
+  }
+  static [1 + 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1](),
+  2
+);
+assert.sameValue(
+  C[1 + 1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..6530f40
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 - 1]() {
+    return 0;
+  }
+  static [1 - 1]() {
+    return 0;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1](),
+  0
+);
+assert.sameValue(
+  C[1 - 1](),
+  0
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..82fdc44
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [() => { }]() {
+    return 1;
+  }
+  static [() => { }]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }](),
+  1
+);
+assert.sameValue(
+  C[() => { }](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..c3af76f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x = 1]() {
+    return 2;
+  }
+  static [x = 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1](),
+  2
+);
+assert.sameValue(
+  C[x = 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..8127810
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x |= 1]() {
+    return 2;
+  }
+  static [x |= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1](),
+  2
+);
+assert.sameValue(
+  C[x |= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..c5cca00
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+let C = class {
+  [x ??= 1]() {
+    return 2;
+  }
+  static [x ??= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1](),
+  2
+);
+assert.sameValue(
+  C[x ??= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..cd294b0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x &&= 1]() {
+    return 2;
+  }
+  static [x &&= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1](),
+  2
+);
+assert.sameValue(
+  C[x &&= 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..68ab416
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x ||= 1]() {
+    return 2;
+  }
+  static [x ||= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1](),
+  2
+);
+assert.sameValue(
+  C[x ||= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..3b6dd30
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [async () => {}]() {
+    return 1;
+  }
+  static [async () => {}]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}](),
+  1
+);
+assert.sameValue(
+  C[async () => {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..4536284
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [false ? 1 : 2]() {
+    return 1;
+  }
+  static [false ? 1 : 2]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2](),
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..ead7824
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2]() {
+    return 2;
+  }
+  static [true ? 1 : 2]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..07a2ef3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.e1]() {
+    return 2;
+  }
+  static [1.e1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1](),
+  2
+);
+assert.sameValue(
+  C[1.e1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..cfdef37
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.1]() {
+    return 2;
+  }
+  static [1.1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1](),
+  2
+);
+assert.sameValue(
+  C[1.1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..002b66f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [2 ** 2]() {
+    return 4;
+  }
+  static [2 ** 2]() {
+    return 4;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2](),
+  4
+);
+assert.sameValue(
+  C[2 ** 2](),
+  4
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..b77d700
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+let C = class {
+  [x ?? 1]() {
+    return 2;
+  }
+  static [x ?? 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1](),
+  2
+);
+assert.sameValue(
+  C[x ?? 1](),
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..059a89c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x && 1]() {
+    return 2;
+  }
+  static [x && 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1](),
+  2
+);
+assert.sameValue(
+  C[x && 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..4bdf00d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x || 1]() {
+    return 2;
+  }
+  static [x || 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1](),
+  2
+);
+assert.sameValue(
+  C[x || 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..b46921a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-function-declaration.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+let C = class {
+  [f()]() {
+    return 1;
+  }
+  static [f()]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()](),
+  1
+);
+assert.sameValue(
+  C[f()](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..99393a7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-function-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [function () {}]() {
+    return 1;
+  }
+  static [function () {}]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}](),
+  1
+);
+assert.sameValue(
+  C[function () {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..7874908
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+let C = class {
+  [g()]() {
+    return 1;
+  }
+  static [g()]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()](),
+  1
+);
+assert.sameValue(
+  C[g()](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-identifier.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..2b9ac0d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-identifier.js
@@ -0,0 +1,58 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+let C = class {
+  [x]() {
+    return '2';
+  }
+  static [x]() {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x](),
+  '2'
+);
+assert.sameValue(
+  C[x](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..2f0dc37
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1]() {
+    return 2;
+  }
+  static [1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..6711c9e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-integer-separators.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+  static [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-math.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-math.js
new file mode 100644
index 0000000..0ed258d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-math.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+  static [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..f3701a3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 / 1]() {
+    return 1;
+  }
+  static [1 / 1]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1](),
+  1
+);
+assert.sameValue(
+  C[1 / 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..674bdf6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 * 1]() {
+    return 1;
+  }
+  static [1 * 1]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1](),
+  1
+);
+assert.sameValue(
+  C[1 * 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..3050257
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1]() {
+    return 2;
+  }
+  static [1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..3432e2a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-string-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  ['1']() {
+    return '2';
+  }
+  static ['1']() {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'](),
+  '2'
+);
+assert.sameValue(
+  C['1'](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..713b213
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-computed-property-name-from-yield-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-expression.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2]() {
+    return 2;
+  }
+  static [true ? 1 : 2]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..b88bda2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 1] = 2;
+
+  static [1 + 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1],
+  2
+);
+assert.sameValue(
+  C[1 + 1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..ab59a5c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 - 1] = 0;
+
+  static [1 - 1] = 0;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1],
+  0
+);
+assert.sameValue(
+  C[1 - 1],
+  0
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..f174fef
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [() => { }] = 1;
+
+  static [() => { }] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }],
+  1
+);
+assert.sameValue(
+  C[() => { }],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..d5464ac
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x = 1] = 2;
+
+  static [x = 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1],
+  2
+);
+assert.sameValue(
+  C[x = 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..84ddcc3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x |= 1] = 2;
+
+  static [x |= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1],
+  2
+);
+assert.sameValue(
+  C[x |= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..fc37842
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+let C = class {
+  [x ??= 1] = 2;
+
+  static [x ??= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1],
+  2
+);
+assert.sameValue(
+  C[x ??= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..54e8395
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x &&= 1] = 2;
+
+  static [x &&= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1],
+  2
+);
+assert.sameValue(
+  C[x &&= 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..8475d2b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x ||= 1] = 2;
+
+  static [x ||= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1],
+  2
+);
+assert.sameValue(
+  C[x ||= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..135d214
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [async () => {}] = 1;
+
+  static [async () => {}] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}],
+  1
+);
+assert.sameValue(
+  C[async () => {}],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..61cee2f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [false ? 1 : 2] = 1;
+
+  static [false ? 1 : 2] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2],
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..e1688be
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = 2;
+
+  static [true ? 1 : 2] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..0761d75
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.e1] = 2;
+
+  static [1.e1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1],
+  2
+);
+assert.sameValue(
+  C[1.e1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..9df8e87
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.1] = 2;
+
+  static [1.1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1],
+  2
+);
+assert.sameValue(
+  C[1.1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..06b0e7b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [2 ** 2] = 4;
+
+  static [2 ** 2] = 4;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2],
+  4
+);
+assert.sameValue(
+  C[2 ** 2],
+  4
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..4bbd99f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+let C = class {
+  [x ?? 1] = 2;
+
+  static [x ?? 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1],
+  2
+);
+assert.sameValue(
+  C[x ?? 1],
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..506cb4f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x && 1] = 2;
+
+  static [x && 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1],
+  2
+);
+assert.sameValue(
+  C[x && 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..de6bb499
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x || 1] = 2;
+
+  static [x || 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1],
+  2
+);
+assert.sameValue(
+  C[x || 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..abfc51c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-function-declaration.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+let C = class {
+  [f()] = 1;
+
+  static [f()] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()],
+  1
+);
+assert.sameValue(
+  C[f()],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..a866b0f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-function-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [function () {}] = 1;
+
+  static [function () {}] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}],
+  1
+);
+assert.sameValue(
+  C[function () {}],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..cd0a21f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+let C = class {
+  [g()] = 1;
+
+  static [g()] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()],
+  1
+);
+assert.sameValue(
+  C[g()],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-identifier.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..bfe3f5e8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-identifier.js
@@ -0,0 +1,55 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+let C = class {
+  [x] = '2';
+
+  static [x] = '2';
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x],
+  '2'
+);
+assert.sameValue(
+  C[x],
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..75a9165
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = 2;
+
+  static [1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  C[1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..c1d6e3e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-integer-separators.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8;
+
+  static [1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-math.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-math.js
new file mode 100644
index 0000000..3a56e0a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-math.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 2 - 3 * 4 / 5 ** 6] = 2.999232;
+
+  static [1 + 2 - 3 * 4 / 5 ** 6] = 2.999232;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..d656de7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 / 1] = 1;
+
+  static [1 / 1] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1],
+  1
+);
+assert.sameValue(
+  C[1 / 1],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..11d7ec9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 * 1] = 1;
+
+  static [1 * 1] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1],
+  1
+);
+assert.sameValue(
+  C[1 * 1],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..1ba5f60
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = 2;
+
+  static [1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  C[1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..55c2278
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-string-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  ['1'] = '2';
+
+  static ['1'] = '2';
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'],
+  '2'
+);
+assert.sameValue(
+  C['1'],
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..f50441b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-computed-property-name-from-yield-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = 2;
+
+  static [true ? 1 : 2] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..2392f6b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 1] = () => {
+    return 2;
+  };
+
+  static [1 + 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1](),
+  2
+);
+assert.sameValue(
+  C[1 + 1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..54d286a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 - 1] = () => {
+    return 0;
+  };
+
+  static [1 - 1] = () => {
+    return 0;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1](),
+  0
+);
+assert.sameValue(
+  C[1 - 1](),
+  0
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..6321d4c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [() => { }] = () => {
+    return 1;
+  };
+
+  static [() => { }] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }](),
+  1
+);
+assert.sameValue(
+  C[() => { }](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..cf3889a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x = 1] = () => {
+    return 2;
+  };
+
+  static [x = 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1](),
+  2
+);
+assert.sameValue(
+  C[x = 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..d840f4d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x |= 1] = () => {
+    return 2;
+  };
+
+  static [x |= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1](),
+  2
+);
+assert.sameValue(
+  C[x |= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..13d53bc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+let C = class {
+  [x ??= 1] = () => {
+    return 2;
+  };
+
+  static [x ??= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1](),
+  2
+);
+assert.sameValue(
+  C[x ??= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..42f0328
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x &&= 1] = () => {
+    return 2;
+  };
+
+  static [x &&= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1](),
+  2
+);
+assert.sameValue(
+  C[x &&= 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..259719d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x ||= 1] = () => {
+    return 2;
+  };
+
+  static [x ||= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1](),
+  2
+);
+assert.sameValue(
+  C[x ||= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..08f6668
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [async () => {}] = () => {
+    return 1;
+  };
+
+  static [async () => {}] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}](),
+  1
+);
+assert.sameValue(
+  C[async () => {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..53f609f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [false ? 1 : 2] = () => {
+    return 1;
+  };
+
+  static [false ? 1 : 2] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2](),
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..68f7c16
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = () => {
+    return 2;
+  };
+
+  static [true ? 1 : 2] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..5365fd6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.e1] = () => {
+    return 2;
+  };
+
+  static [1.e1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1](),
+  2
+);
+assert.sameValue(
+  C[1.e1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..c3ba5e4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.1] = () => {
+    return 2;
+  };
+
+  static [1.1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1](),
+  2
+);
+assert.sameValue(
+  C[1.1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..335fe62
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [2 ** 2] = () => {
+    return 4;
+  };
+
+  static [2 ** 2] = () => {
+    return 4;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2](),
+  4
+);
+assert.sameValue(
+  C[2 ** 2](),
+  4
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..b1375ba
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+let C = class {
+  [x ?? 1] = () => {
+    return 2;
+  };
+
+  static [x ?? 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1](),
+  2
+);
+assert.sameValue(
+  C[x ?? 1](),
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..a6f46b6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x && 1] = () => {
+    return 2;
+  };
+
+  static [x && 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1](),
+  2
+);
+assert.sameValue(
+  C[x && 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..80e6df8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x || 1] = () => {
+    return 2;
+  };
+
+  static [x || 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1](),
+  2
+);
+assert.sameValue(
+  C[x || 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..fcd37f6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-declaration.js
@@ -0,0 +1,58 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+let C = class {
+  [f()] = () => {
+    return 1;
+  };
+
+  static [f()] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()](),
+  1
+);
+assert.sameValue(
+  C[f()](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..0b6bedd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-function-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [function () {}] = () => {
+    return 1;
+  };
+
+  static [function () {}] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}](),
+  1
+);
+assert.sameValue(
+  C[function () {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..33a3280
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,58 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+let C = class {
+  [g()] = () => {
+    return 1;
+  };
+
+  static [g()] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()](),
+  1
+);
+assert.sameValue(
+  C[g()](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-identifier.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..9bbb020
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-identifier.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+let C = class {
+  [x] = () => {
+    return '2';
+  };
+
+  static [x] = () => {
+    return '2';
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x](),
+  '2'
+);
+assert.sameValue(
+  C[x](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..3198515
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = () => {
+    return 2;
+  };
+
+  static [1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..69043df
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-integer-separators.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1_2_3_4_5_6_7_8] = () => {
+    return 1_2_3_4_5_6_7_8;
+  };
+
+  static [1_2_3_4_5_6_7_8] = () => {
+    return 1_2_3_4_5_6_7_8;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-math.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-math.js
new file mode 100644
index 0000000..4df3806
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-math.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 2 - 3 * 4 / 5 ** 6] = () => {
+    return 2.999232;
+  };
+
+  static [1 + 2 - 3 * 4 / 5 ** 6] = () => {
+    return 2.999232;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..e45e702
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 / 1] = () => {
+    return 1;
+  };
+
+  static [1 / 1] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1](),
+  1
+);
+assert.sameValue(
+  C[1 / 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..25ee4d4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 * 1] = () => {
+    return 1;
+  };
+
+  static [1 * 1] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1](),
+  1
+);
+assert.sameValue(
+  C[1 * 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..9d13e21
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = () => {
+    return 2;
+  };
+
+  static [1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..c0fe0cb
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-string-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  ['1'] = () => {
+    return '2';
+  };
+
+  static ['1'] = () => {
+    return '2';
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'](),
+  '2'
+);
+assert.sameValue(
+  C['1'](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..ef4c92c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/cpn-fields-methods-computed-property-name-from-yield-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-expression-fields-methods.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = () => {
+    return 2;
+  };
+
+  static [true ? 1 : 2] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..72f0e75
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; () => super.x;');
+};
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..6a48ac2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; () => super["x"];');
+};
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..b794bfd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; () => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..44f7506
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; () => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..582e643
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; () => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..e523f36
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('() => super.x;');
+};
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..be773cf
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('() => super["x"];');
+};
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..9de46aa
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('() => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..b7e3bb6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('() => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..f337a1a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('() => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..7a76c8b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+let executed = false;
+let C = class {
+  x = eval('executed = true; () => arguments;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..67de684
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  x = eval('executed = true; () => new.target;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x(), undefined);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..d096d25
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var C = class {
+  x = (0, eval)('() => arguments;');
+}
+
+assert.throws(ReferenceError, function() {
+  new C().x();
+});
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..6c1ba58
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var C = class {
+  x = (0, eval)('() => new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..2bab1b5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; () => super.x;');
+  x() {
+    this.#x();
+  }
+};
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..c0d28ac
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; () => super["x"];');
+  x() {
+    this.#x();
+  }
+};
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..6c8057c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; () => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..37fe854
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; () => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..e4f274a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; () => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..538aa22
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('() => super.x;');
+};
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..372913b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('() => super["x"];');
+};
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..e925b92
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('() => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..d868d42
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('() => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..3b4a10f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('() => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..ce6c619
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var C = class {
+  #x = eval('() => arguments;');
+  x() {
+    this.#x();
+  }
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..376c5d5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  #x = eval('executed = true; () => new.target;');
+  x() {
+    this.#x();
+  }
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x(), undefined);
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..7b1ff0d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var C = class {
+  #x = (0, eval)('() => arguments;');
+  x() {
+    this.#x();
+  }
+}
+
+assert.throws(ReferenceError, function() {
+  new C().x();
+});
diff --git a/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..6181956
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var C = class {
+  #x = (0, eval)('() => new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js
new file mode 100644
index 0000000..081119a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => {
+    var t = () => arguments;
+  }
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js
new file mode 100644
index 0000000..c6172ae
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template
+/*---
+description: Syntax error if `super()` used in class field (arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => {
+    var t = () => super();
+  }
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..9055ba9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+var C = class {
+  [x] = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js
new file mode 100644
index 0000000..2e2e2a4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+var C = class {
+  [x] = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..493903e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; super.x;');
+};
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..e9d4bf9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; super["x"];');
+};
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..88157d5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..94012ed
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..2b76da8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = eval('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..531c4a5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('executed = true; super.x;');
+};
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..3333bd5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('executed = true; super["x"];');
+};
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..b728d96
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..6858800
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..650ff73
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  x = (0, eval)('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..686c5ae
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+let executed = false;
+let C = class {
+  x = () => {
+    let f = eval('executed = true; arguments;');
+    f();
+  }
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..bcf7061
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  x = eval('executed = true; new.target;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x, undefined);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js
new file mode 100644
index 0000000..3c2b49b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-equality-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (equality expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => {} == arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-equality-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-equality-init-err-contains-super.js
new file mode 100644
index 0000000..f89f0d9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-equality-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-equality-nested.template
+/*---
+description: Syntax error if `super()` used in class field (equality expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => {} == super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..c485d1e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  x = () => (0, eval)('executed = true; arguments;');
+}
+
+assert.throws(ReferenceError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..3f19849
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  x = (0, eval)('executed = true; new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..0cf3fae
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..946b3a5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js
new file mode 100644
index 0000000..32fde6e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (private field, arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => {
+    var t = () => arguments;
+  }
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js
new file mode 100644
index 0000000..2bb202c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template
+/*---
+description: Syntax error if `super()` used in class field (private field, arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => {
+    var t = () => super();
+  }
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..81ce4ab
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; super.x;');
+};
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..ed6b58d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; super["x"];');
+};
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..65def27
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..551a2ad
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..777a493
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..1a2dee0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; super.x;');
+};
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..6a8af65
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; super["x"];');
+};
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..edec954
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..1f3a45a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..5e8d45b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..42a8b97
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  #x = () => eval('executed = true; arguments;');
+  x() {
+    this.#x();
+  }
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..23a1b78
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  #x = eval('executed = true; new.target;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x, undefined);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..64e85d6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  #x = () => (0, eval)('executed = true; arguments;');
+  x() {
+    this.#x();
+  }
+}
+
+assert.throws(ReferenceError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..11116d8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+var C = class {
+  #x = (0, eval)('executed = true; new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..73c832e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (ClassElementName PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..ca6375a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (ClassElementName PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js
new file mode 100644
index 0000000..2794d87
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (private field, ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => true ? {} : arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js
new file mode 100644
index 0000000..3e27897
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template
+/*---
+description: Syntax error if `super()` used in class field (private field, ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => true ? {} : super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js
new file mode 100644
index 0000000..8c4b53f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (private field, typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => typeof arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js
new file mode 100644
index 0000000..df6cc11
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template
+/*---
+description: Syntax error if `super()` used in class field (private field, typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  #x = () => typeof super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..496640f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public, computed-property-names]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+var C = class {
+  static [x] = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js
new file mode 100644
index 0000000..dc2217d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public, computed-property-names]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+var C = class {
+  static [x] = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js
new file mode 100644
index 0000000..51c1924
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  static x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js
new file mode 100644
index 0000000..0688c5d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  static x = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js
new file mode 100644
index 0000000..ba98f89
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  static #x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js
new file mode 100644
index 0000000..acd4e1e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  static #x = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..36cd3ec
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  static 'x' = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..28c8da0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  static 'x' = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..43d80b3
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  'x' = () => arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..ffef059
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  'x' = () => super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js
new file mode 100644
index 0000000..68ea1dd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => true ? {} : arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js
new file mode 100644
index 0000000..7d365a8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template
+/*---
+description: Syntax error if `super()` used in class field (ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => true ? {} : super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js b/JSTests/test262/test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js
new file mode 100644
index 0000000..027a563
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => typeof arguments;
+}
diff --git a/JSTests/test262/test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js b/JSTests/test262/test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js
new file mode 100644
index 0000000..f36c306
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template
+/*---
+description: Syntax error if `super()` used in class field (typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var C = class {
+  x = () => typeof super();
+}
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-AggregateError.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-AggregateError.js
new file mode 100644
index 0000000..25017ad
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-AggregateError.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/AggregateError.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubAggregateError() instanceof AggregateError (Subclass instanceof Heritage)
+features: [AggregateError]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends AggregateError {}
+
+const sub = new Subclass([]);
+assert(sub instanceof Subclass);
+assert(sub instanceof AggregateError);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Array.js
new file mode 100644
index 0000000..301b080
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Array.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubArray() instanceof Array (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-ArrayBuffer.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-ArrayBuffer.js
new file mode 100644
index 0000000..ecd7656
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-ArrayBuffer.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/ArrayBuffer.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubArrayBuffer() instanceof ArrayBuffer (Subclass instanceof Heritage)
+features: [TypedArray, ArrayBuffer]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends ArrayBuffer {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof ArrayBuffer);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-BigInt64Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-BigInt64Array.js
new file mode 100644
index 0000000..af2594a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-BigInt64Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/BigInt64Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubBigInt64Array() instanceof BigInt64Array (Subclass instanceof Heritage)
+features: [TypedArray, BigInt]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends BigInt64Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof BigInt64Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-BigUint64Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-BigUint64Array.js
new file mode 100644
index 0000000..69d60a1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-BigUint64Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/BigUint64Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubBigUint64Array() instanceof BigUint64Array (Subclass instanceof Heritage)
+features: [TypedArray, BigInt]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends BigUint64Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof BigUint64Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Boolean.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Boolean.js
new file mode 100644
index 0000000..36d3396
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Boolean.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Boolean.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubBoolean() instanceof Boolean (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Boolean {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Boolean);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-DataView.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-DataView.js
new file mode 100644
index 0000000..44ae378e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-DataView.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/DataView.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubDataView() instanceof DataView (Subclass instanceof Heritage)
+features: [TypedArray, DataView]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends DataView {}
+
+const sub = new Subclass(new ArrayBuffer(1));
+assert(sub instanceof Subclass);
+assert(sub instanceof DataView);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Date.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Date.js
new file mode 100644
index 0000000..e22fbce
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Date.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Date.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubDate() instanceof Date (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Date {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Date);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Error.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Error.js
new file mode 100644
index 0000000..246f5e9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Error.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Error.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubError() instanceof Error (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Error {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Error);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-EvalError.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-EvalError.js
new file mode 100644
index 0000000..097ec86
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-EvalError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/EvalError.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubEvalError() instanceof EvalError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends EvalError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof EvalError);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Float32Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Float32Array.js
new file mode 100644
index 0000000..4d9425b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Float32Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Float32Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubFloat32Array() instanceof Float32Array (Subclass instanceof Heritage)
+features: [TypedArray, Float32Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Float32Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Float32Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Float64Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Float64Array.js
new file mode 100644
index 0000000..5bf436b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Float64Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Float64Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubFloat64Array() instanceof Float64Array (Subclass instanceof Heritage)
+features: [TypedArray, Float64Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Float64Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Float64Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Function.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Function.js
new file mode 100644
index 0000000..3bddba9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Function.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Function.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubFunction() instanceof Function (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Function {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Function);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int16Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int16Array.js
new file mode 100644
index 0000000..440db2e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int16Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Int16Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubInt16Array() instanceof Int16Array (Subclass instanceof Heritage)
+features: [TypedArray, Int16Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Int16Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Int16Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int32Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int32Array.js
new file mode 100644
index 0000000..236d3a9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int32Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Int32Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubInt32Array() instanceof Int32Array (Subclass instanceof Heritage)
+features: [TypedArray, Int32Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Int32Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Int32Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int8Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int8Array.js
new file mode 100644
index 0000000..4dd7da5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Int8Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Int8Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubInt8Array() instanceof Int8Array (Subclass instanceof Heritage)
+features: [TypedArray, Int8Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Int8Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Int8Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Map.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Map.js
new file mode 100644
index 0000000..4f03e68
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Map.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Map.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubMap() instanceof Map (Subclass instanceof Heritage)
+features: [Map]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Map {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Map);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Number.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Number.js
new file mode 100644
index 0000000..cb4e474
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Number.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Number.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubNumber() instanceof Number (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Number {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Number);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Object.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Object.js
new file mode 100644
index 0000000..cb85bf8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Object.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Object.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubObject() instanceof Object (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Object {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Object);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Promise.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Promise.js
new file mode 100644
index 0000000..be4441b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Promise.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Promise.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubPromise() instanceof Promise (Subclass instanceof Heritage)
+features: [Promise]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Promise {}
+
+const sub = new Subclass(() => {});
+assert(sub instanceof Subclass);
+assert(sub instanceof Promise);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-RangeError.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-RangeError.js
new file mode 100644
index 0000000..ad60428
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-RangeError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/RangeError.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubRangeError() instanceof RangeError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends RangeError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof RangeError);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-ReferenceError.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-ReferenceError.js
new file mode 100644
index 0000000..bd206a5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-ReferenceError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/ReferenceError.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubReferenceError() instanceof ReferenceError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends ReferenceError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof ReferenceError);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-RegExp.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-RegExp.js
new file mode 100644
index 0000000..6c592b6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-RegExp.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/RegExp.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubRegExp() instanceof RegExp (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends RegExp {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof RegExp);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Set.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Set.js
new file mode 100644
index 0000000..638d7d4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Set.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Set.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubSet() instanceof Set (Subclass instanceof Heritage)
+features: [Set]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Set {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Set);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-SharedArrayBuffer.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-SharedArrayBuffer.js
new file mode 100644
index 0000000..ddac1f0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-SharedArrayBuffer.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/SharedArrayBuffer.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubSharedArrayBuffer() instanceof SharedArrayBuffer (Subclass instanceof Heritage)
+features: [SharedArrayBuffer]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends SharedArrayBuffer {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof SharedArrayBuffer);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-String.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-String.js
new file mode 100644
index 0000000..f16ed35
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-String.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/String.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubString() instanceof String (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends String {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof String);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-SyntaxError.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-SyntaxError.js
new file mode 100644
index 0000000..b6d2113
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-SyntaxError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/SyntaxError.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubSyntaxError() instanceof SyntaxError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends SyntaxError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof SyntaxError);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-TypeError.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-TypeError.js
new file mode 100644
index 0000000..4964421
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-TypeError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/TypeError.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubTypeError() instanceof TypeError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends TypeError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof TypeError);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-URIError.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-URIError.js
new file mode 100644
index 0000000..0a64a36
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-URIError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/URIError.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubURIError() instanceof URIError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+const Subclass = class extends URIError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof URIError);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint16Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint16Array.js
new file mode 100644
index 0000000..4880572
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint16Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint16Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubUint16Array() instanceof Uint16Array (Subclass instanceof Heritage)
+features: [TypedArray, Uint16Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Uint16Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint16Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint32Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint32Array.js
new file mode 100644
index 0000000..65345c2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint32Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint32Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubUint32Array() instanceof Uint32Array (Subclass instanceof Heritage)
+features: [TypedArray, Uint32Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Uint32Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint32Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint8Array.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint8Array.js
new file mode 100644
index 0000000..bf7c2d1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint8Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint8Array.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubUint8Array() instanceof Uint8Array (Subclass instanceof Heritage)
+features: [TypedArray, Uint8Array]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Uint8Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint8Array);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint8ClampedArray.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint8ClampedArray.js
new file mode 100644
index 0000000..2c28237
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-Uint8ClampedArray.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint8ClampedArray.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubUint8ClampedArray() instanceof Uint8ClampedArray (Subclass instanceof Heritage)
+features: [TypedArray, Uint8ClampedArray]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends Uint8ClampedArray {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint8ClampedArray);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakMap.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakMap.js
new file mode 100644
index 0000000..71953ea
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakMap.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/WeakMap.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubWeakMap() instanceof WeakMap (Subclass instanceof Heritage)
+features: [WeakMap]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends WeakMap {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof WeakMap);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakRef.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakRef.js
new file mode 100644
index 0000000..7d841a4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakRef.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/WeakRef.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubWeakRef() instanceof WeakRef (Subclass instanceof Heritage)
+features: [WeakRef]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends WeakRef {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof WeakRef);
diff --git a/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakSet.js b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakSet.js
new file mode 100644
index 0000000..ff00b60
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/class/subclass-builtins/subclass-WeakSet.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/WeakSet.case
+// - src/subclass-builtins/default/expression.template
+/*---
+description: new SubWeakSet() instanceof WeakSet (Subclass instanceof Heritage)
+features: [WeakSet]
+flags: [generated]
+---*/
+
+
+const Subclass = class extends WeakSet {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof WeakSet);
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.10_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.10_T4.js
deleted file mode 100644
index e99bac8..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.10_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.10_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x ^= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x ^= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x ^= 3;
-  })();
-}
-
-if (scope.x !== 1) {
-  $ERROR('#1: scope.x === 1. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js
deleted file mode 100644
index 4aef65d..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.10_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x ^= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x ^= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x ^= 3;
-})();
-
-if (this.x !== 1) {
-  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.11_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.11_T4.js
deleted file mode 100644
index 8c8412f..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.11_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.11_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x |= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x |= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x |= 4;
-  })();
-}
-
-if (scope.x !== 6) {
-  $ERROR('#1: scope.x === 6. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js
deleted file mode 100644
index ecbed10..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.11_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x |= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x |= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x |= 4;
-})();
-
-if (this.x !== 6) {
-  $ERROR('#1: this.x === 6. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.1_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.1_T4.js
deleted file mode 100644
index 96d309fc..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.1_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.1_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x *= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x *= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x *= 3;
-  })();
-}
-
-if (scope.x !== 6) {
-  $ERROR('#1: scope.x === 6. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js
deleted file mode 100644
index ebbf1f6..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.1_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x *= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x *= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x *= 3;
-})();
-
-if (this.x !== 6) {
-  $ERROR('#1: this.x === 6. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.2_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.2_T4.js
deleted file mode 100644
index c198639..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.2_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.2_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x /= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x /= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 6;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x /= 3;
-  })();
-}
-
-if (scope.x !== 2) {
-  $ERROR('#1: scope.x === 2. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js
deleted file mode 100644
index e1753f7..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.2_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x /= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x /= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 6;
-  }
-});
-
-(function() {
-  "use strict";
-  x /= 3;
-})();
-
-if (this.x !== 2) {
-  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.3_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.3_T4.js
deleted file mode 100644
index 7513278..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.3_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.3_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x %= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x %= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 5;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x %= 3;
-  })();
-}
-
-if (scope.x !== 2) {
-  $ERROR('#1: scope.x === 2. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js
deleted file mode 100644
index 70fa8fa..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.3_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x %= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x %= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 5;
-  }
-});
-
-(function() {
-  "use strict";
-  x %= 3;
-})();
-
-if (this.x !== 2) {
-  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.4_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.4_T4.js
deleted file mode 100644
index df24808..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.4_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.4_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x += y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x += y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x += 1;
-  })();
-}
-
-if (scope.x !== 3) {
-  $ERROR('#1: scope.x === 3. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js
deleted file mode 100644
index d49c695..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.4_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x += y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x += y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x += 1;
-})();
-
-if (this.x !== 3) {
-  $ERROR('#1: this.x === 3. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.5_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.5_T4.js
deleted file mode 100644
index 7da5d54..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.5_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.5_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x -= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x -= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x -= 1;
-  })();
-}
-
-if (scope.x !== 1) {
-  $ERROR('#1: scope.x === 1. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js
deleted file mode 100644
index b2c7ad6..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.5_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x -= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x -= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x -= 1;
-})();
-
-if (this.x !== 1) {
-  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.6_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.6_T4.js
deleted file mode 100644
index b766a7d..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.6_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.6_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x <<= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x <<= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x <<= 3;
-  })();
-}
-
-if (scope.x !== 16) {
-  $ERROR('#1: scope.x === 16. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js
deleted file mode 100644
index 7eb81cd..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.6_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x <<= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x <<= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x <<= 3;
-})();
-
-if (this.x !== 16) {
-  $ERROR('#1: this.x === 16. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.7_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.7_T4.js
deleted file mode 100644
index 484b412..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.7_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.7_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x >>= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x >>= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 16;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x >>= 3;
-  })();
-}
-
-if (scope.x !== 2) {
-  $ERROR('#1: scope.x === 2. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js
deleted file mode 100644
index a818c56..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.7_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x >>= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x >>= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 16;
-  }
-});
-
-(function() {
-  "use strict";
-  x >>= 3;
-})();
-
-if (this.x !== 2) {
-  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.8_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.8_T4.js
deleted file mode 100644
index 718e63d..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.8_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.8_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x >>>= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x >>>= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 16;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x >>>= 3;
-  })();
-}
-
-if (scope.x !== 2) {
-  $ERROR('#1: scope.x === 2. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js
deleted file mode 100644
index f9dad8a..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.8_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x >>>= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x >>>= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 16;
-  }
-});
-
-(function() {
-  "use strict";
-  x >>>= 3;
-})();
-
-if (this.x !== 2) {
-  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.9_T4.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.9_T4.js
deleted file mode 100644
index f3c9a35..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.9_T4.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.9_T4
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x &= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x &= y".
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 5;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x &= 3;
-  })();
-}
-
-if (scope.x !== 1) {
-  $ERROR('#1: scope.x === 1. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js b/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js
deleted file mode 100644
index 20bfbea..0000000
--- a/JSTests/test262/test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Compound Assignment Operator calls PutValue(lref, v)
-es5id: S11.13.2_A5.9_T5
-description: >
-    Evaluating LeftHandSideExpression lref returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lref, v) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x &= y' is in strict-mode code and the
-    original binding is no longer present.
-    Check operator is "x &= y".
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 5;
-  }
-});
-
-(function() {
-  "use strict";
-  x &= 3;
-})();
-
-if (this.x !== 1) {
-  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js
new file mode 100644
index 0000000..e761e0d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.10_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x ^= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js
new file mode 100644
index 0000000..5df4c0e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js
@@ -0,0 +1,41 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.4_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x += 1;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js
new file mode 100644
index 0000000..df04571
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.4_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x += 1;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
+
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js
new file mode 100644
index 0000000..660724a
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js
@@ -0,0 +1,41 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.5_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x -= 1;
+      count++;
+    });
+    count++;
+})();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
+
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js
new file mode 100644
index 0000000..dc0159f
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.5_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x -= 1;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js
new file mode 100644
index 0000000..22b6dbc
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.6_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x <<= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js
new file mode 100644
index 0000000..350a721
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.6_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x <<= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js
new file mode 100644
index 0000000..f4abf82
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.7_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 16;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x >>= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js
new file mode 100644
index 0000000..9079e76
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.7_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 16;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x >>= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js
new file mode 100644
index 0000000..2dfe18b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.8_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 16;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x >>>= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js
new file mode 100644
index 0000000..ca00e07
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.8_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 16;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x >>>= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js
new file mode 100644
index 0000000..e42fb5b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.11_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x |= 4;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js
new file mode 100644
index 0000000..3ee9605
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.9_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 5;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x &= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js
new file mode 100644
index 0000000..c41b445
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.9_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 5;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x &= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js
new file mode 100644
index 0000000..b8a7462
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.11_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x |= 4;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js
new file mode 100644
index 0000000..0668987
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.1_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x *= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js
new file mode 100644
index 0000000..abc9431
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.1_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x *= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js
new file mode 100644
index 0000000..39dbc68
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.2_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 6;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x /= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js
new file mode 100644
index 0000000..f977cb7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.2_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 6;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x /= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js
new file mode 100644
index 0000000..c039181
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.3_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 5;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x %= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js
new file mode 100644
index 0000000..ee2b3e6
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.3_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 5;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x %= 3;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js
new file mode 100644
index 0000000..61d6db0
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.10_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x ^= 3;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-0-1.js b/JSTests/test262/test/language/expressions/delete/11.4.1-0-1.js
index 632d0f3..5113176 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-0-1.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-0-1.js
@@ -5,17 +5,14 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-0-1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator as UnaryExpression
 flags: [noStrict]
 ---*/
 
-function testcase() {
-  var x = 1;
-  var y = 2;
-  var z = 3;
+var x = 1;
+var y = 2;
+var z = 3;
 
-  assert((!delete x || delete y), '(!delete x || delete y)');
-  assert(delete delete z, 'delete delete z');
- }
-testcase();
+assert((!delete x || delete y), '(!delete x || delete y)');
+assert(delete delete z, 'delete delete z');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-2-2.js b/JSTests/test262/test/language/expressions/delete/11.4.1-2-2.js
index 0951a60..f7dc4eb 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-2-2.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-2-2.js
@@ -2,16 +2,18 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-2-2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns true when deleting returned value from a
     function
 ---*/
 
-  var bIsFooCalled = false;
-  var foo = function(){bIsFooCalled = true;};
+var bIsFooCalled = false;
+var foo = function() {
+  bIsFooCalled = true;
+};
 
-  var d = delete foo();
+var d = delete foo();
 
 assert.sameValue(d, true, 'd');
 assert.sameValue(bIsFooCalled, true, 'bIsFooCalled');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-3-1.js b/JSTests/test262/test/language/expressions/delete/11.4.1-3-1.js
index c04ee45..25b7932 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-3-1.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-3-1.js
@@ -2,14 +2,11 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-3-1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns true when deleting an unresolvable
     reference
 flags: [noStrict]
 ---*/
 
-  // just cooking up a long/veryLikely unique name
-  var d = delete __ES3_1_test_suite_test_11_4_1_3_unique_id_0__;
-
-assert.sameValue(d, true, 'd');
+assert.sameValue(delete unresolvable, true, 'delete unresolvable === true');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-3-2.js b/JSTests/test262/test/language/expressions/delete/11.4.1-3-2.js
index 6084683..fa65c53 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-3-2.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-3-2.js
@@ -2,13 +2,12 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-3-2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator throws ReferenceError when deleting an explicitly
     qualified yet unresolvable reference (base obj undefined)
 ---*/
 
-  // just cooking up a long/veryLikely unique name
 assert.throws(ReferenceError, function() {
-    var d = delete __ES3_1_test_suite_test_11_4_1_3_unique_id_2__.x;
+  delete unresolvable.x;
 });
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-3-3.js b/JSTests/test262/test/language/expressions/delete/11.4.1-3-3.js
index 30b6b49..6eeab3a 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-3-3.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-3-3.js
@@ -2,13 +2,11 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-3-3
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns true when deleting an explicitly qualified
     yet unresolvable reference (property undefined for base obj)
 ---*/
 
-  var __ES3_1_test_suite_test_11_4_1_3_unique_id_3__ = {};
-  var d = delete __ES3_1_test_suite_test_11_4_1_3_unique_id_3__.x;
-
-assert.sameValue(d, true, 'd');
+var o = {};
+assert.sameValue(delete o.x, true);
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-1-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-1-s.js
index 73544a0..49ea7d4 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-1-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-1-s.js
@@ -2,19 +2,19 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-4-a-1-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     Strict Mode - TypeError is thrown when deleting non-configurable
     data property
 flags: [onlyStrict]
 ---*/
 
-        var obj = {};
-        Object.defineProperty(obj, "prop", {
-            value: "abc",
-            configurable: false
-        });
-assert.throws(TypeError, function() {
-            delete obj.prop;
+var obj = {};
+Object.defineProperty(obj, 'prop', {
+  value: 'abc',
+  configurable: false,
 });
-assert.sameValue(obj.prop, "abc", 'obj.prop');
+assert.throws(TypeError, function() {
+  delete obj.prop;
+});
+assert.sameValue(obj.prop, 'abc', 'obj.prop');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-2-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-2-s.js
index 431d61f..6d6a21a 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-2-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-2-s.js
@@ -2,21 +2,21 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-4-a-2-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     Strict Mode - TypeError is thrown when deleting non-configurable
     accessor property
 flags: [onlyStrict]
 ---*/
 
-        var obj = {};
-        Object.defineProperty(obj, "prop", {
-            get: function () {
-                return "abc"; 
-            },
-            configurable: false
-        });
-assert.throws(TypeError, function() {
-            delete obj.prop;
+var obj = {};
+Object.defineProperty(obj, 'prop', {
+  get: function() {
+    return 'abc';
+  },
+  configurable: false,
 });
-assert.sameValue(obj.prop, "abc", 'obj.prop');
+assert.throws(TypeError, function() {
+  delete obj.prop;
+});
+assert.sameValue(obj.prop, 'abc', 'obj.prop');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-3-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-3-s.js
index 3816fb9..81f8686 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-3-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-3-s.js
@@ -2,17 +2,21 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-4-a-3-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     TypeError isn't thrown when deleting configurable data property
 ---*/
 
-        var obj = {};
-        Object.defineProperty(obj, "prop", {
-            value: "abc",
-            configurable: true
-        });
+var obj = {};
+Object.defineProperty(obj, 'prop', {
+  value: 'abc',
+  configurable: true,
+});
 
-        delete obj.prop;
+delete obj.prop;
 
-assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert.sameValue(
+  obj.hasOwnProperty('prop'),
+  false,
+  'obj.hasOwnProperty("prop")'
+);
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-4-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-4-s.js
index ed5c2d4..cabbb53 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-4-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4-a-4-s.js
@@ -2,19 +2,23 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-4-a-4-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     TypeError isn't thrown when deleting configurable accessor property
 ---*/
 
-        var obj = {};
-        Object.defineProperty(obj, "prop", {
-            get: function () {
-                return "abc"; 
-            },
-            configurable: true
-        });
+var obj = {};
+Object.defineProperty(obj, 'prop', {
+  get: function() {
+    return 'abc';
+  },
+  configurable: true,
+});
 
-        delete obj.prop;
+delete obj.prop;
 
-assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert.sameValue(
+  obj.hasOwnProperty('prop'),
+  false,
+  'obj.hasOwnProperty("prop")'
+);
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-1.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-1.js
index c7bb16f..39d8913 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-1.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-1.js
@@ -5,18 +5,21 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns true when deleting a configurable data
     property
 ---*/
 
-  var o = {};
+var o = {};
 
-  var desc = { value: 1, configurable: true };
-  Object.defineProperty(o, "foo", desc);
+var desc = {
+  value: 1,
+  configurable: true,
+};
+Object.defineProperty(o, 'foo', desc);
 
-  var d = delete o.foo;
+var d = delete o.foo;
 
 assert.sameValue(d, true, 'd');
-assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
+assert.sameValue(o.hasOwnProperty('foo'), false, 'o.hasOwnProperty("foo")');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-10.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-10.js
index 5bfd3fd..5f704b9 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-10.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-10.js
@@ -5,7 +5,7 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-10
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns true for property (stringify) defined on
     built-in object (JSON)
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-11.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-11.js
index 3ac4a40..1390e10 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-11.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-11.js
@@ -5,21 +5,19 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-11
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns true on deleting arguments
     properties(arguments.callee)
 flags: [noStrict]
 ---*/
 
-function testcase() {
-  function foo(a,b)
-  {
-    return (delete arguments.callee); 
+(function() {
+  function foo(a, b) {
+    return delete arguments.callee;
   }
   var d = delete arguments.callee;
 
   assert.sameValue(d, true, 'd');
   assert.sameValue(arguments.callee, undefined, 'arguments.callee');
- }
-testcase();
+})();
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-12.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-12.js
index e43c600..e4dab5a 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-12.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-12.js
@@ -5,14 +5,14 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-12
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns false when deleting a property(length)
 flags: [noStrict]
 ---*/
 
-  var a = [1,2,3]
-  a.x = 10;
-  var d = delete a.length
+var a = [1, 2, 3];
+a.x = 10;
+var d = delete a.length;
 
 assert.sameValue(d, false, 'd');
 assert.sameValue(a.length, 3, 'a.length');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-13.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-13.js
index f8e770e..622340d 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-13.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-13.js
@@ -5,19 +5,15 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-13
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns false when deleting Array object
 flags: [noStrict]
 ---*/
 
-function testcase() {
+var a = [1, 2, 3];
+a.x = 10;
 
-  var a = [1,2,3]
-  a.x = 10;
+var d = delete a;
 
-  var d = delete a 
-
-  assert.sameValue(d, false, 'd');
-  assert.sameValue(Array.isArray(a), true, 'Array.isArray(a)');
- }
-testcase();
+assert.sameValue(d, false, 'd');
+assert.sameValue(Array.isArray(a), true, 'Array.isArray(a)');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-14.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-14.js
index 5076086..bc6ad83 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-14.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-14.js
@@ -5,13 +5,13 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-14
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns true when deleting Array elements
 ---*/
 
-  var a = [1,2,3]
-  a.x = 10;
-  var d = delete a[1]
+var a = [1, 2, 3];
+a.x = 10;
+var d = delete a[1];
 
 assert.sameValue(d, true, 'd');
 assert.sameValue(a[1], undefined, 'a[1]');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-15.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-15.js
index 71bec55..f57cf15 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-15.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-15.js
@@ -5,13 +5,13 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-15
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns true when deleting Array expandos
 ---*/
 
-  var a = [1,2,3]
-  a.x = 10;
-  var d = delete a.x;
+var a = [1, 2, 3];
+a.x = 10;
+var d = delete a.x;
 
 assert.sameValue(d, true, 'd');
 assert.sameValue(a.x, undefined, 'a.x');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-16.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-16.js
index f709f56..ed7e2f8 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-16.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-16.js
@@ -5,13 +5,12 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-16
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns false on deleting arguments object
 flags: [noStrict]
 ---*/
 
-function testcase() {
+(function() {
   assert.sameValue(delete arguments, false, 'delete arguments');
   assert.notSameValue(arguments, undefined, 'arguments');
- }
-testcase();
+})();
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-17.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-17.js
index f30af42..36168df 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-17.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-17.js
@@ -5,14 +5,13 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-17
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns true on deleting a arguments element
 ---*/
 
-  function foo(a,b)
-  {
-    var d = delete arguments[0];
-    return (d === true && arguments[0] === undefined);  
-  }
+function foo(a, b) {
+  var d = delete arguments[0];
+  return d === true && arguments[0] === undefined;
+}
 
-assert.sameValue(foo(1,2), true, 'foo(1,2)');
+assert.sameValue(foo(1, 2), true, 'foo(1,2)');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-2.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-2.js
index 071c49c..e8baad8 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-2.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-2.js
@@ -5,21 +5,26 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns true when deleting a configurable accessor
     property
 ---*/
 
-  var o = {};
+var o = {};
 
-  // define an accessor
-  // dummy getter
-  var getter = function () { return 1; }
-  var desc = { get: getter, configurable: true };
-  Object.defineProperty(o, "foo", desc);
-    
-  var d = delete o.foo;
+// define an accessor
+// dummy getter
+var getter = function() {
+  return 1;
+};
+var desc = {
+  get: getter,
+  configurable: true,
+};
+Object.defineProperty(o, 'foo', desc);
+
+var d = delete o.foo;
 
 assert.sameValue(d, true, 'd');
-assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
+assert.sameValue(o.hasOwnProperty('foo'), false, 'o.hasOwnProperty("foo")');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3-s.js
index 5aef59c..6bacf23 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3-s.js
@@ -5,18 +5,20 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-3-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator throws TypeError when deleting a non-configurable
     data property in strict mode
 flags: [onlyStrict]
 ---*/
 
-  var o = {};
-  var desc = { value : 1 }; // all other attributes default to false
-  Object.defineProperty(o, "foo", desc);
-  
-  // Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
+var o = {};
+var desc = {
+  value: 1,
+}; // all other attributes default to false
+Object.defineProperty(o, 'foo', desc);
+
+// Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
 assert.throws(TypeError, function() {
-    delete o.foo;
+  delete o.foo;
 });
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3.js
index 46df44b..4b757d1 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-3.js
@@ -5,19 +5,22 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-3
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns false when deleting a non-configurable
     data property
 flags: [noStrict]
 ---*/
 
-  var o = {};
-  var desc = { value : 1, configurable: false }; // all other attributes default to false
-  Object.defineProperty(o, "foo", desc);
-  
-  // Now, deleting o.foo should fail because [[Configurable]] on foo is false.
-  var d = delete o.foo;
+var o = {};
+var desc = {
+  value: 1,
+  configurable: false,
+}; // all other attributes default to false
+Object.defineProperty(o, 'foo', desc);
+
+// Now, deleting o.foo should fail because [[Configurable]] on foo is false.
+var d = delete o.foo;
 
 assert.sameValue(d, false, 'd');
-assert.sameValue(o.hasOwnProperty("foo"), true, 'o.hasOwnProperty("foo")');
+assert.sameValue(o.hasOwnProperty('foo'), true, 'o.hasOwnProperty("foo")');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-4.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-4.js
index 7304fbc6..5bbf7e3 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-4.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-4.js
@@ -5,14 +5,14 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-4
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns false when deleting a non-configurable
     data property (NaN)
 flags: [noStrict]
 ---*/
 
-  // NaN (15.1.1.1) has [[Configurable]] set to false.
-  var d = delete NaN;
+// NaN (15.1.1.1) has [[Configurable]] set to false.
+var d = delete NaN;
 
 assert.sameValue(d, false, 'd');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-5.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-5.js
index f2e37490..2db299d 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-5.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-5.js
@@ -5,24 +5,20 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-5
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns false when deleting the declaration of the environment object
     inside 'with'
 flags: [noStrict]
 ---*/
 
-function testcase() {
-  var o = new Object();
-  o.x = 1;
-  var d;
-  with(o)
-  {
-    d = delete o;
-  }
+var o = new Object();
+o.x = 1;
+var d;
+with(o) {
+  d = delete o;
+}
 
-  assert.sameValue(d, false, 'd');
-  assert.sameValue(typeof(o), 'object', 'typeof(o)');
-  assert.sameValue(o.x, 1, 'o.x');
- }
-testcase();
+assert.sameValue(d, false, 'd');
+assert.sameValue(typeof o, 'object', 'typeof(o)');
+assert.sameValue(o.x, 1, 'o.x');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-6.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-6.js
index 0d54a9f..c78f23e 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-6.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-6.js
@@ -5,18 +5,17 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-6
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns true when deleting a property inside 'with'
 flags: [noStrict]
 ---*/
 
-  var o = new Object();
-  o.x = 1;
-  var d;
-  with(o)
-  {
-    d = delete x;
-  }
+var o = new Object();
+o.x = 1;
+var d;
+with(o) {
+  d = delete x;
+}
 
 assert.sameValue(d, true, 'd');
 assert.sameValue(o.x, undefined, 'o.x');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-7.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-7.js
index 0da05a5..f2730db 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-7.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-7.js
@@ -5,16 +5,13 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-7
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator inside 'eval'
 flags: [noStrict]
 ---*/
 
-function testcase() {
-  var x = 1;
-  var d = eval("delete x");
+var x = 1;
+var d = eval('delete x');
 
-  assert.sameValue(d, false, 'd');
-  assert.sameValue(x, 1, 'x');
- }
-testcase();
+assert.sameValue(d, false, 'd');
+assert.sameValue(x, 1, 'x');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8-s.js
index ff7731d..89a857d 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8-s.js
@@ -5,7 +5,7 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-8-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator throws TypeError when deleting a non-configurable
     data property in strict mode
@@ -13,7 +13,7 @@
 ---*/
 
 var global = this;
-  // NaN (15.1.1.1) has [[Configurable]] set to false.
+// NaN (15.1.1.1) has [[Configurable]] set to false.
 assert.throws(TypeError, function() {
-    delete global.NaN;
+  delete global.NaN;
 });
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8.js
index e8bf354..7d025c0 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-8.js
@@ -5,7 +5,7 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-8
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: delete operator returns true for built-in objects (JSON)
 flags: [noStrict]
 ---*/
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9-s.js
index a4decad..386eddb 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9-s.js
@@ -5,14 +5,13 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-9-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator throws TypeError when deleting a non-configurable
     data property (Math.LN2) in strict mode
 flags: [onlyStrict]
 ---*/
 
-
 assert.throws(TypeError, function() {
-    delete Math.LN2;
+  delete Math.LN2;
 });
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9.js b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9.js
index 23d8410..8b12d32 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-4.a-9.js
@@ -5,13 +5,13 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.1-4.a-9
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns false when deleting a non-configurable
     data property (Math.LN2)
 flags: [noStrict]
 ---*/
 
-  var d = delete Math.LN2;
+var d = delete Math.LN2;
 
 assert.sameValue(d, false, 'd');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-5-1.js b/JSTests/test262/test/language/expressions/delete/11.4.1-5-1.js
index c73f564..7ddad75 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-5-1.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-5-1.js
@@ -2,20 +2,17 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-5-1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns false when deleting a direct reference to
     a var
 flags: [noStrict]
 ---*/
 
-function testcase() {
-  var x = 1;
+var x = 1;
 
-  // Now, deleting 'x' directly should fail;
-  var d = delete x;
+// Now, deleting 'x' directly should fail;
+var d = delete x;
 
-  assert.sameValue(d, false, 'd');
-  assert.sameValue(x, 1, 'x');
- }
-testcase();
+assert.sameValue(d, false, 'd');
+assert.sameValue(x, 1, 'x');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-5-2.js b/JSTests/test262/test/language/expressions/delete/11.4.1-5-2.js
index 2e56510..5acd9ce 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-5-2.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-5-2.js
@@ -2,19 +2,18 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-5-2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns false when deleting a direct reference to
     a function argument
 flags: [noStrict]
 ---*/
 
-  function foo(a,b) {
-  
-    // Now, deleting 'a' directly should fail
-    // because 'a' is direct reference to a function argument;
-    var d = delete a;
-    return (d === false && a === 1);
-  }
+function foo(a, b) {
+  // Now, deleting 'a' directly should fail
+  // because 'a' is direct reference to a function argument;
+  var d = delete a;
+  return d === false && a === 1;
+}
 
-assert(foo(1,2), 'foo(1,2) !== true');
+assert(foo(1, 2), 'foo(1,2) !== true');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-5-3.js b/JSTests/test262/test/language/expressions/delete/11.4.1-5-3.js
index 6e2d7e4..47763e3 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-5-3.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-5-3.js
@@ -2,20 +2,17 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-5-3
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator returns false when deleting a direct reference to
     a function name
 flags: [noStrict]
 ---*/
 
-function testcase() {
-  var foo = function(){};
+var foo = function() {};
 
-  // Now, deleting 'foo' directly should fail;
-  var d = delete foo;
+// Now, deleting 'foo' directly should fail;
+var d = delete foo;
 
-  assert.sameValue(d, false, 'd');
-  assert.sameValue(typeof foo, 'function', 'typeof foo');
- }
-testcase();
+assert.sameValue(d, false, 'd');
+assert.sameValue(typeof foo, 'function', 'typeof foo');
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-27-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-27-s.js
index b2bd625..554e550 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-27-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-27-s.js
@@ -2,16 +2,21 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-5-a-27-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     Strict Mode - TypeError is thrown after deleting a property,
     calling preventExtensions, and attempting to reassign the property
 flags: [onlyStrict]
 ---*/
 
-        var a = {x:0, get y() { return 0;}};
-        delete a.x;
-        Object.preventExtensions(a);
+var a = {
+  x: 0,
+  get y() {
+    return 0;
+  },
+};
+delete a.x;
+Object.preventExtensions(a);
 assert.throws(TypeError, function() {
-            a.x = 1;
+  a.x = 1;
 });
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-28-s.js b/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-28-s.js
index 0028e84..e0de7f2 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-28-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.1-5-a-28-s.js
@@ -2,9 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 11.4.1-5-a-28-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Strict Mode - TypeError is not thrown when deleting RegExp.length
 ---*/
 
-    var a = new RegExp();
-    var b = delete RegExp.length;
+var a = new RegExp();
+var b = delete RegExp.length;
diff --git a/JSTests/test262/test/language/expressions/delete/11.4.4-4.a-3-s.js b/JSTests/test262/test/language/expressions/delete/11.4.4-4.a-3-s.js
index 1177189..6bacf23 100644
--- a/JSTests/test262/test/language/expressions/delete/11.4.4-4.a-3-s.js
+++ b/JSTests/test262/test/language/expressions/delete/11.4.4-4.a-3-s.js
@@ -5,18 +5,20 @@
 info: |
     This test is actually testing the [[Delete]] internal method (8.12.8). Since the
     language provides no way to directly exercise [[Delete]], the tests are placed here.
-es5id: 11.4.4-4.a-3-s
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     delete operator throws TypeError when deleting a non-configurable
     data property in strict mode
 flags: [onlyStrict]
 ---*/
 
-  var o = {};
-  var desc = { value : 1 }; // all other attributes default to false
-  Object.defineProperty(o, "foo", desc);
-  
-  // Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
+var o = {};
+var desc = {
+  value: 1,
+}; // all other attributes default to false
+Object.defineProperty(o, 'foo', desc);
+
+// Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
 assert.throws(TypeError, function() {
-    delete o.foo;
+  delete o.foo;
 });
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.1.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.1.js
index e1b2a25..03f8adf 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.1.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.1.js
@@ -3,7 +3,7 @@
 
 /*---
 info: If Type(x) is not Reference, return true
-es5id: 11.4.1_A2.1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking primitive value and Object value cases
 ---*/
 
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T1.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T1.js
index 17eb9cf..9e5c9fc7 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T1.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T1.js
@@ -3,7 +3,7 @@
 
 /*---
 info: If GetBase(x) doesn't have a property GetPropertyName(x), return true
-es5id: 11.4.1_A2.2_T1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking undeclared variable case
 flags: [noStrict]
 ---*/
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T2.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T2.js
index b90b056..e260822 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T2.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T2.js
@@ -3,15 +3,17 @@
 
 /*---
 info: If GetBase(x) doesn't have a property GetPropertyName(x), return true
-es5id: 11.4.1_A2.2_T2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking Object object and Function object cases
 ---*/
 
 //CHECK#1
-function MyFunction(){}
+function MyFunction() {}
 var MyObject = new MyFunction();
 if (delete MyObject.prop !== true) {
-  $ERROR('#1: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject.prop === true');
+  $ERROR(
+    '#1: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject.prop === true'
+  );
 }
 
 //CHECK#2
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T3.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T3.js
index cf63124..3b5f462 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T3.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A2.2_T3.js
@@ -3,7 +3,7 @@
 
 /*---
 info: If GetBase(x) doesn't have a property GetPropertyName(x), return true
-es5id: 11.4.1_A2.2_T3
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking undeclared variable case
 ---*/
 
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.1.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.1.js
index ed59b3e..7da9161 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.1.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.1.js
@@ -3,7 +3,7 @@
 
 /*---
 info: If the property has the DontDelete attribute, return false
-es5id: 11.4.1_A3.1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 flags: [noStrict]
 ---*/
@@ -21,7 +21,7 @@
 }
 
 //CHECK#3
-function MyFunction(){};
+function MyFunction() {}
 if (delete MyFunction !== false) {
   $ERROR('#3: function MyFunction(){}; delete MyFunction === false');
 }
@@ -29,5 +29,7 @@
 //CHECK#4
 var MyObject = new MyFunction();
 if (delete MyObject !== false) {
-  $ERROR('#4: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false');
+  $ERROR(
+    '#4: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false'
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T1.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T1.js
index 8953c00..4da4156 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T1.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T1.js
@@ -3,7 +3,7 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, return true
-es5id: 11.4.1_A3.2_T1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 flags: [noStrict]
 ---*/
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T2.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T2.js
index 5a4771d..b722a07 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T2.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T2.js
@@ -3,13 +3,15 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, return true
-es5id: 11.4.1_A3.2_T2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 ---*/
 
 //CHECK#1
-function MyFunction(){};
+function MyFunction() {}
 MyFunction.prop = 1;
 if (delete MyFunction.prop !== true) {
-  $ERROR('#1: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop === true');
+  $ERROR(
+    '#1: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop === true'
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T3.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T3.js
index 799354e..44f4a88 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T3.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.2_T3.js
@@ -3,14 +3,16 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, return true
-es5id: 11.4.1_A3.2_T3
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 ---*/
 
 //CHECK#1
-function MyFunction(){};
+function MyFunction() {}
 var MyObject = new MyFunction();
 MyObject.prop = 1;
 if (delete MyObject.prop !== true) {
-  $ERROR('#1: function MyFunction(){}; var MyObject = new MyFunction(); MyFunction.prop = 1; delete MyObject.prop === true');
+  $ERROR(
+    '#1: function MyFunction(){}; var MyObject = new MyFunction(); MyFunction.prop = 1; delete MyObject.prop === true'
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T1.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T1.js
index 99e0644..ec0c6071 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T1.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T1.js
@@ -3,7 +3,7 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, remove the property
-es5id: 11.4.1_A3.3_T1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 flags: [noStrict]
 ---*/
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T2.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T2.js
index fa66d73..f74e2e5 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T2.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T2.js
@@ -3,15 +3,17 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, remove the property
-es5id: 11.4.1_A3.3_T2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 ---*/
 
 //CHECK#1
-function MyFunction(){};
+function MyFunction() {}
 MyFunction.prop = 1;
 delete MyFunction.prop;
 if (MyFunction.prop !== undefined) {
-  $ERROR('#1: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop; MyFunction.prop === undefined. Actual: ' + (MyFunction.prop));
-
+  $ERROR(
+    '#1: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop; MyFunction.prop === undefined. Actual: ' +
+    MyFunction.prop
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T3.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T3.js
index 23b019b..cd127b1 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T3.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T3.js
@@ -3,15 +3,18 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, remove the property
-es5id: 11.4.1_A3.3_T3
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 ---*/
 
 //CHECK#1
-function MyFunction(){};
+function MyFunction() {}
 var MyObjectVar = new MyFunction();
 MyObjectVar.prop = 1;
 delete MyObjectVar.prop;
 if (MyObjectVar.prop !== undefined) {
-  $ERROR('#1: function MyFunction(){}; var MyObjectVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectVar.prop; MyObjectVar.prop === undefined. Actual: ' + (MyObjectVar.prop));
+  $ERROR(
+    '#1: function MyFunction(){}; var MyObjectVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectVar.prop; MyObjectVar.prop === undefined. Actual: ' +
+    MyObjectVar.prop
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T4.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T4.js
index 2eaf5fb..95383d2 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T4.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T4.js
@@ -3,14 +3,16 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, remove the property
-es5id: 11.4.1_A3.3_T4
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 flags: [noStrict]
 ---*/
 
 //CHECK#1
-function MyFunction(){};
+function MyFunction() {}
 var MyObjectVar = new MyFunction();
 if (delete MyObjectVar !== false) {
-  $ERROR('#1: function MyFunction(){}; var MyObjectVar = new MyFunction(); delete MyObjectVar === false');
+  $ERROR(
+    '#1: function MyFunction(){}; var MyObjectVar = new MyFunction(); delete MyObjectVar === false'
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T5.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T5.js
index fc537b3..3d3c090 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T5.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T5.js
@@ -3,16 +3,19 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, remove the property
-es5id: 11.4.1_A3.3_T5
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 flags: [noStrict]
 ---*/
 
 //CHECK#1
-function MyFunction(){};
+function MyFunction() {}
 MyObjectNotVar = new MyFunction();
 MyObjectNotVar.prop = 1;
 delete MyObjectNotVar.prop;
 if (MyObjectNotVar.prop !== undefined) {
-  $ERROR('#1: function MyFunction(){}; MyObjectNotVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectNotVar.prop; MyObjectNotVar.prop === undefined. Actual: ' + (MyObjectNotVar.prop));
+  $ERROR(
+    '#1: function MyFunction(){}; MyObjectNotVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectNotVar.prop; MyObjectNotVar.prop === undefined. Actual: ' +
+    MyObjectNotVar.prop
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T6.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T6.js
index 119a8670..a861a5d 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T6.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A3.3_T6.js
@@ -3,14 +3,16 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, remove the property
-es5id: 11.4.1_A3.3_T6
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking declared variable
 flags: [noStrict]
 ---*/
 
 //CHECK#1
-function MyFunction(){};
+function MyFunction() {}
 var MyObjectVar = new MyFunction();
 if (delete MyObjectNotVar !== true) {
-  $ERROR('#1: function MyFunction(){}; var MyObjectNotVar = new MyFunction(); delete MyObjectNotVar === true');
+  $ERROR(
+    '#1: function MyFunction(){}; var MyObjectNotVar = new MyFunction(); delete MyObjectNotVar === true'
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A4.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A4.js
index b4b677d..aede12d 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A4.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A4.js
@@ -5,7 +5,7 @@
 info: |
     "Delete" operator removes property, which is reference to the object, not
     the object
-es5id: 11.4.1_A4
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Checking two reference by one object
 flags: [noStrict]
 ---*/
@@ -14,6 +14,9 @@
 var obj = new Object();
 var ref = obj;
 delete ref;
-if (typeof obj !== "object") {
-  $ERROR('#1: obj = new Object(); ref = obj; delete ref; typeof obj === "object". Actual: ' + (typeof obj));
+if (typeof obj !== 'object') {
+  $ERROR(
+    '#1: obj = new Object(); ref = obj; delete ref; typeof obj === "object". Actual: ' +
+    typeof obj
+  );
 }
diff --git a/JSTests/test262/test/language/expressions/delete/S11.4.1_A5.js b/JSTests/test262/test/language/expressions/delete/S11.4.1_A5.js
index c11e5e5..fb80c93 100644
--- a/JSTests/test262/test/language/expressions/delete/S11.4.1_A5.js
+++ b/JSTests/test262/test/language/expressions/delete/S11.4.1_A5.js
@@ -6,7 +6,7 @@
     A strict delete should either succeed, returning true, or it
     should fail by throwing a TypeError. Under no circumstances
     should a strict delete return false.
-es5id: 11.4.1_A5
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     See if a strict delete returns false when deleting a  non-standard
     property.
diff --git a/JSTests/test262/test/language/expressions/delete/S8.12.7_A1.js b/JSTests/test262/test/language/expressions/delete/S8.12.7_A1.js
index 93f8767..0bc64a8 100644
--- a/JSTests/test262/test/language/expressions/delete/S8.12.7_A1.js
+++ b/JSTests/test262/test/language/expressions/delete/S8.12.7_A1.js
@@ -5,23 +5,23 @@
 info: |
     When the [[Delete]] method of O is called with property name P,
     and If the property has the DontDelete attribute, return false
-es5id: 8.12.7_A1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Try to delete Math.E, that has the DontDelete attribute
 flags: [noStrict]
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#1
-if (delete Math.E !== false){
-  $ERROR('#1: delete Math.E === false. Actual: ' + (delete Math.E));
-};
+if (delete Math.E !== false) {
+  $ERROR('#1: delete Math.E === false. Actual: ' + delete Math.E);
+}
 //
 //////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#2
-if (Math.E === undefined){
+if (Math.E === undefined) {
   $ERROR('#2: delete Math.E; Math.E !== undefined');
-};
+}
 //
 //////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T1.js b/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T1.js
index 4b2e6ea..def166c 100644
--- a/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T1.js
+++ b/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T1.js
@@ -5,7 +5,7 @@
 info: |
     When the [[Delete]] method of O is called with property name P,
     and if O doesn't have a property with name P, return true
-es5id: 8.12.7_A2_T1
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Try to delete not existent properties
 ---*/
 
@@ -13,25 +13,34 @@
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#1
-if (delete __color__map.red !== true){
-  $ERROR('#1: var __color__map = {}; delete __color__map.red === true. Actual: ' + (delete __color__map.red));
-};
+if (delete __color__map.red !== true) {
+  $ERROR(
+    '#1: var __color__map = {}; delete __color__map.red === true. Actual: ' +
+    delete __color__map.red
+  );
+}
 //
 //////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#2
-if (delete __color__map["green"] !== true){
-  $ERROR('#2: var __color__map = {}; delete __color__map["green"] === true. Actual: ' + (delete __color__map["green"]));
-};
+if (delete __color__map['green'] !== true) {
+  $ERROR(
+    '#2: var __color__map = {}; delete __color__map["green"] === true. Actual: ' +
+    delete __color__map['green']
+  );
+}
 //
 //////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#3
 var blue = 1;
-if (delete __color__map[blue] !== true){
-  $ERROR('#3: var __color__map = {}; var blue = 1; delete __color__map[blue] === true. Actual: ' + (delete __color__map[blue]));
-};
+if (delete __color__map[blue] !== true) {
+  $ERROR(
+    '#3: var __color__map = {}; var blue = 1; delete __color__map[blue] === true. Actual: ' +
+    delete __color__map[blue]
+  );
+}
 //
 //////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T2.js b/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T2.js
index da1b581..b1bf331 100644
--- a/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T2.js
+++ b/JSTests/test262/test/language/expressions/delete/S8.12.7_A2_T2.js
@@ -5,20 +5,26 @@
 info: |
     When the [[Delete]] method of O is called with property name P,
     and if O doesn't have a property with name P, return true
-es5id: 8.12.7_A2_T2
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: >
     Try to delete not existent properties of O, but existent property
     of prototype
 ---*/
 
-function Palette(){};
-Palette.prototype = {red:0xFF0000, green:0x00FF00};
-var __palette = new Palette;
+function Palette() {}
+Palette.prototype = {
+  red: 0xff0000,
+  green: 0x00ff00,
+};
+var __palette = new Palette();
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#1
-if (__palette.red !== 0xFF0000){
-  $ERROR('#1: function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; __palette.red === 0xFF0000. Actual: ' + (__palette.red));
+if (__palette.red !== 0xff0000) {
+  $ERROR(
+    '#1: function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; __palette.red === 0xFF0000. Actual: ' +
+    __palette.red
+  );
 }
 //
 //////////////////////////////////////////////////////////////////////////////
@@ -26,15 +32,21 @@
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#2
 if (delete __palette.red !== true) {
-  $ERROR('#2 function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; delete __palette.red === true. Actual: ' + (delete __palette.red));
+  $ERROR(
+    '#2 function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; delete __palette.red === true. Actual: ' +
+    delete __palette.red
+  );
 }
 //
 //////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#3
-if (__palette.red !== 0xFF0000){
-  $ERROR('#3: function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; __palette.red === 0xFF0000. Actual: ' + (__palette.red));
+if (__palette.red !== 0xff0000) {
+  $ERROR(
+    '#3: function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; __palette.red === 0xFF0000. Actual: ' +
+    __palette.red
+  );
 }
 //
 //////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/language/expressions/delete/S8.12.7_A3.js b/JSTests/test262/test/language/expressions/delete/S8.12.7_A3.js
index af5c5e0..73c3efe 100644
--- a/JSTests/test262/test/language/expressions/delete/S8.12.7_A3.js
+++ b/JSTests/test262/test/language/expressions/delete/S8.12.7_A3.js
@@ -5,44 +5,60 @@
 info: |
     When the [[Delete]] method of O is called with property name P,
     removes the property with name P from O and return true
-es5id: 8.12.7_A3
+esid: sec-delete-operator-runtime-semantics-evaluation
 description: Delete existent properties
 ---*/
 
-var BLUE_NUM=1;
-var BLUE_STR="1";
-var YELLOW_NUM=2;
-var YELLOW_STR="2";
-var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00};
+var BLUE_NUM = 1;
+var BLUE_STR = '1';
+var YELLOW_NUM = 2;
+var YELLOW_STR = '2';
+var __color__map = {
+  red: 0xff0000,
+  BLUE_NUM: 0x0000ff,
+  green: 0x00ff00,
+  YELLOW_STR: 0xffff00,
+};
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#1
-if (delete __color__map[YELLOW_NUM] !== true){
-  $ERROR('#1: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[YELLOW_NUM] === true;');
-};
+if (delete __color__map[YELLOW_NUM] !== true) {
+  $ERROR(
+    '#1: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[YELLOW_NUM] === true;'
+  );
+}
 //
 //////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#2
 if (__color__map[YELLOW_STR] !== undefined) {
-  $ERROR('#2: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[YELLOW_NUM]; __color__map[YELLOW_STR] === undefined. Actual: ' + (__color__map[YELLOW_STR]));
+  $ERROR(
+    '#2: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[YELLOW_NUM]; __color__map[YELLOW_STR] === undefined. Actual: ' +
+    __color__map[YELLOW_STR]
+  );
 }
 //
 //////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#3
-if (delete __color__map[BLUE_STR] !== true){
-  $ERROR('#3: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[BLUE_STR] === true. Actual: ' + (delete __color__map[BLUE_STR]));
-};
+if (delete __color__map[BLUE_STR] !== true) {
+  $ERROR(
+    '#3: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[BLUE_STR] === true. Actual: ' +
+    delete __color__map[BLUE_STR]
+  );
+}
 //
 //////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#4
 if (__color__map[BLUE_NUM] !== undefined) {
-  $ERROR('#4: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[BLUE_STR]; __color__map[BLUE_NUM] === undefined. Actual: ' + (__color__map[BLUE_NUM]));
+  $ERROR(
+    '#4: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[BLUE_STR]; __color__map[BLUE_NUM] === undefined. Actual: ' +
+    __color__map[BLUE_NUM]
+  );
 }
 //
 //////////////////////////////////////////////////////////////////////////////
diff --git a/JSTests/test262/test/language/expressions/delete/delete-unresolvable-base-object-reference-throws-typeerror.js b/JSTests/test262/test/language/expressions/delete/delete-unresolvable-base-object-reference-throws-typeerror.js
new file mode 100644
index 0000000..848a4f7
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/delete/delete-unresolvable-base-object-reference-throws-typeerror.js
@@ -0,0 +1,12 @@
+// Copyright (c) 2020 Rick Waldron.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-delete-operator-runtime-semantics-evaluation
+description: >
+  delete operations throws TypeError exception when base object is unresolvable reference.
+---*/
+
+assert.throws(TypeError, () => {
+  delete Object[0][0];
+});
diff --git a/JSTests/test262/test/language/expressions/delete/super-property-method.js b/JSTests/test262/test/language/expressions/delete/super-property-method.js
index 31157a7..1a501a0 100644
--- a/JSTests/test262/test/language/expressions/delete/super-property-method.js
+++ b/JSTests/test262/test/language/expressions/delete/super-property-method.js
@@ -7,7 +7,9 @@
 ---*/
 
 class X {
-  method() { return this; }
+  method() {
+    return this;
+  }
 }
 
 class Y extends X {
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..49540de
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1 + 1]: 2
+};
+
+assert.sameValue(
+  o[1 + 1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..5210945
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1 - 1]: 0
+};
+
+assert.sameValue(
+  o[1 - 1],
+  0
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..7d97f1b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [() => { }]: 1
+};
+
+assert.sameValue(
+  o[() => { }],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..3550266
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let o = {
+  [x = 1]: 2
+};
+
+assert.sameValue(
+  o[x = 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..3442e31
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let o = {
+  [x |= 1]: 2
+};
+
+assert.sameValue(
+  o[x |= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..d039851
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+let o = {
+  [x ??= 1]: 2
+};
+
+assert.sameValue(
+  o[x ??= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..7eb0ea5
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let o = {
+  [x &&= 1]: 2
+};
+
+assert.sameValue(
+  o[x &&= 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..b2efa1b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let o = {
+  [x ||= 1]: 2
+};
+
+assert.sameValue(
+  o[x ||= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..824515c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [async () => {}]: 1
+};
+
+assert.sameValue(
+  o[async () => {}],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..22ae53b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [false ? 1 : 2]: 1
+};
+
+assert.sameValue(
+  o[false ? 1 : 2],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..11aba9c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [true ? 1 : 2]: 2
+};
+
+assert.sameValue(
+  o[true ? 1 : 2],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..cd455a8
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1.e1]: 2
+};
+
+assert.sameValue(
+  o[1.e1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..1b8531b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1.1]: 2
+};
+
+assert.sameValue(
+  o[1.1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..e5163a4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [2 ** 2]: 4
+};
+
+assert.sameValue(
+  o[2 ** 2],
+  4
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..be1c7d2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+let o = {
+  [x ?? 1]: 2
+};
+
+assert.sameValue(
+  o[x ?? 1],
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..1737449
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let o = {
+  [x && 1]: 2
+};
+
+assert.sameValue(
+  o[x && 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..9437dae
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let o = {
+  [x || 1]: 2
+};
+
+assert.sameValue(
+  o[x || 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..ffd4714
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-function-declaration.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+let o = {
+  [f()]: 1
+};
+
+assert.sameValue(
+  o[f()],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..e63a383
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-function-expression.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [function () {}]: 1
+};
+
+assert.sameValue(
+  o[function () {}],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..96e88354
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+let o = {
+  [g()]: 1
+};
+
+assert.sameValue(
+  o[g()],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-identifier.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..d569660
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-identifier.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+let o = {
+  [x]: '2'
+};
+
+assert.sameValue(
+  o[x],
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..83c8c28
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1]: 2
+};
+
+assert.sameValue(
+  o[1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..7e9bf89
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-integer-separators.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1_2_3_4_5_6_7_8]: 1_2_3_4_5_6_7_8
+};
+
+assert.sameValue(
+  o[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-math.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-math.js
new file mode 100644
index 0000000..7a797ec
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-math.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1 + 2 - 3 * 4 / 5 ** 6]: 2.999232
+};
+
+assert.sameValue(
+  o[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..45deb31
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1 / 1]: 1
+};
+
+assert.sameValue(
+  o[1 / 1],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..a6d2c11
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1 * 1]: 1
+};
+
+assert.sameValue(
+  o[1 * 1],
+  1
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..26a8e55
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [1]: 2
+};
+
+assert.sameValue(
+  o[1],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..36d45e1
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-string-literal.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  ['1']: '2'
+};
+
+assert.sameValue(
+  o['1'],
+  '2'
+);
diff --git a/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..2541042
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/cpn-computed-property-name-from-yield-expression.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/object-literal.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ObjectLiteral)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ObjectLiteral:
+      { PropertyDefinitionList }
+
+    PropertyDefinitionList:
+      PropertyDefinition
+
+    PropertyDefinition:
+      PropertyName: AssignmentExpression
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let o = {
+  [true ? 1 : 2]: 2
+};
+
+assert.sameValue(
+  o[true ? 1 : 2],
+  2
+);
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-await-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-await-strict-mode.js
new file mode 100644
index 0000000..f789d2e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-await-strict-mode.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. await is valid in non-module strict mode code.
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+  Identifier : IdentifierName but not ReservedWord
+
+---*/
+
+var await = 1;
+(function() {
+  "use strict";
+  ({
+    await
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-implements-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-implements-invalid-strict-mode.js
new file mode 100644
index 0000000..30eb84b
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-implements-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (implements)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var implements = 1;
+(function() {
+  "use strict";
+  ({
+    implements
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-interface-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-interface-invalid-strict-mode.js
new file mode 100644
index 0000000..559cb77
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-interface-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (interface)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var interface = 1;
+(function() {
+  "use strict";
+  ({
+    interface
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-let-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-let-invalid-strict-mode.js
new file mode 100644
index 0000000..6c59c13
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-let-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (let)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var let = 1;
+(function() {
+  "use strict";
+  ({
+    let
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-package-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-package-invalid-strict-mode.js
new file mode 100644
index 0000000..a237541
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-package-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (package)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var package = 1;
+(function() {
+  "use strict";
+  ({
+    package
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-private-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-private-invalid-strict-mode.js
new file mode 100644
index 0000000..8901acd
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-private-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (private)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield".
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var private = 1;
+(function() {
+  "use strict";
+  ({
+    private
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-protected-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-protected-invalid-strict-mode.js
new file mode 100644
index 0000000..22ddb72
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-protected-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (protected)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var protected = 1;
+(function() {
+  "use strict";
+  ({
+    protected
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-public-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-public-invalid-strict-mode.js
new file mode 100644
index 0000000..e9fc80e
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-public-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (public)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var public = 1;
+(function() {
+  "use strict";
+  ({
+    public
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-static-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-static-invalid-strict-mode.js
new file mode 100644
index 0000000..85b4693
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-static-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (static)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var static = 1;
+(function() {
+  "use strict";
+  ({
+    static
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/identifier-shorthand-yield-invalid-strict-mode.js b/JSTests/test262/test/language/expressions/object/identifier-shorthand-yield-invalid-strict-mode.js
new file mode 100644
index 0000000..82eecff
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/identifier-shorthand-yield-invalid-strict-mode.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+  Object literal shorthands are limited to valid identifier references. Future Reserved Words are disallowed in Strict Mode. (yield)
+esid: sec-object-initializer
+flags: [noStrict]
+info: |
+  PropertyDefinition:
+    IdentifierReference
+    CoverInitializedName
+    PropertyName : AssignmentExpression
+    MethodDefinition
+
+  Identifier : IdentifierName but not ReservedWord
+    It is a Syntax Error if this phrase is contained in strict mode code and
+    the StringValue of IdentifierName is: "implements", "interface", "let",
+    "package", "private", "protected", "public", "static", or "yield". 
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+var yield = 1;
+(function() {
+  "use strict";
+  ({
+    yield
+  });
+});
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/computed-property-name-yield-expression.js b/JSTests/test262/test/language/expressions/object/method-definition/computed-property-name-yield-expression.js
new file mode 100644
index 0000000..5e24d00
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/method-definition/computed-property-name-yield-expression.js
@@ -0,0 +1,38 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    When the `yield` keyword occurs within the PropertyName of a
+    non-generator MethodDefinition within a generator function, it behaves as a
+    YieldExpression.
+info: |
+  ComputedPropertyName:
+    [ AssignmentExpression ]
+
+  AssignmentExpression[In, Yield, Await]:
+    [+Yield]YieldExpression[?In, ?Await]
+
+features: [computed-property-names, generators]
+flags: [noStrict]
+---*/
+
+function * g() {
+  let o = {
+    [yield 10]: 1,
+    a: 'a'
+  };
+
+  yield 20;
+  return o;
+}
+
+let iter = g();
+assert.sameValue(iter.next().value, 10);
+assert.sameValue(iter.next().value, 20);
+
+let outcome = iter.next().value;
+
+assert.sameValue(outcome[undefined], 1);
+assert.sameValue(outcome.a, 'a');
+
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-e.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-e.js
new file mode 100644
index 0000000..bb4d90d
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-e.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-grammar-notation
+description: >
+  The `get` contextual keyword must not contain Unicode escape sequences.
+info: |
+  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
+  in fixed width font, both in the productions of the grammars and throughout this
+  specification whenever the text directly refers to such a terminal symbol. These
+  are to appear in a script exactly as written. All terminal symbol code points
+  specified in this way are to be understood as the appropriate Unicode code points
+  from the Basic Latin range, as opposed to any similar-looking code points from
+  other Unicode ranges.
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+({
+  g\u0065t m() {}
+});
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-g.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-g.js
new file mode 100644
index 0000000..5998b7c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-g.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-grammar-notation
+description: >
+  The `get` contextual keyword must not contain Unicode escape sequences.
+info: |
+  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
+  in fixed width font, both in the productions of the grammars and throughout this
+  specification whenever the text directly refers to such a terminal symbol. These
+  are to appear in a script exactly as written. All terminal symbol code points
+  specified in this way are to be understood as the appropriate Unicode code points
+  from the Basic Latin range, as opposed to any similar-looking code points from
+  other Unicode ranges.
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+({
+  \u0067et m() {}
+});
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-t.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-t.js
new file mode 100644
index 0000000..58b9036
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get-t.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-grammar-notation
+description: >
+  The `get` contextual keyword must not contain Unicode escape sequences.
+info: |
+  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
+  in fixed width font, both in the productions of the grammars and throughout this
+  specification whenever the text directly refers to such a terminal symbol. These
+  are to appear in a script exactly as written. All terminal symbol code points
+  specified in this way are to be understood as the appropriate Unicode code points
+  from the Basic Latin range, as opposed to any similar-looking code points from
+  other Unicode ranges.
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+({
+  ge\u0074 m() {}
+});
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-get.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get.js
index f573600..e976a4d 100644
--- a/JSTests/test262/test/language/expressions/object/method-definition/escaped-get.js
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-get.js
@@ -21,5 +21,5 @@
 $DONOTEVALUATE();
 
 ({
-  g\u0065t m() {}
+  \u0067\u0065\u0074 m() {}
 });
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-e.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-e.js
new file mode 100644
index 0000000..47b0758
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-e.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-grammar-notation
+description: >
+  The `set` contextual keyword must not contain Unicode escape sequences.
+info: |
+  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
+  in fixed width font, both in the productions of the grammars and throughout this
+  specification whenever the text directly refers to such a terminal symbol. These
+  are to appear in a script exactly as written. All terminal symbol code points
+  specified in this way are to be understood as the appropriate Unicode code points
+  from the Basic Latin range, as opposed to any similar-looking code points from
+  other Unicode ranges.
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+({
+  s\u0065t m(v) {}
+});
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-s.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-s.js
new file mode 100644
index 0000000..047d318
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-s.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-grammar-notation
+description: >
+  The `set` contextual keyword must not contain Unicode escape sequences.
+info: |
+  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
+  in fixed width font, both in the productions of the grammars and throughout this
+  specification whenever the text directly refers to such a terminal symbol. These
+  are to appear in a script exactly as written. All terminal symbol code points
+  specified in this way are to be understood as the appropriate Unicode code points
+  from the Basic Latin range, as opposed to any similar-looking code points from
+  other Unicode ranges.
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+({
+  \u0073et m(v) {}
+});
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-t.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-t.js
new file mode 100644
index 0000000..dc10378
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set-t.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-grammar-notation
+description: >
+  The `set` contextual keyword must not contain Unicode escape sequences.
+info: |
+  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
+  in fixed width font, both in the productions of the grammars and throughout this
+  specification whenever the text directly refers to such a terminal symbol. These
+  are to appear in a script exactly as written. All terminal symbol code points
+  specified in this way are to be understood as the appropriate Unicode code points
+  from the Basic Latin range, as opposed to any similar-looking code points from
+  other Unicode ranges.
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+$DONOTEVALUATE();
+
+({
+  se\u0074 m(v) {}
+});
diff --git a/JSTests/test262/test/language/expressions/object/method-definition/escaped-set.js b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set.js
index be90588..e15c254 100644
--- a/JSTests/test262/test/language/expressions/object/method-definition/escaped-set.js
+++ b/JSTests/test262/test/language/expressions/object/method-definition/escaped-set.js
@@ -21,5 +21,5 @@
 $DONOTEVALUATE();
 
 ({
-  s\u0065t m(v) {}
+  \u0073\u0065\u0074 m(v) {}
 });
diff --git a/JSTests/test262/test/language/expressions/postfix-decrement/S11.3.2_A5_T4.js b/JSTests/test262/test/language/expressions/postfix-decrement/S11.3.2_A5_T4.js
deleted file mode 100644
index 1b4f49d..0000000
--- a/JSTests/test262/test/language/expressions/postfix-decrement/S11.3.2_A5_T4.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator x-- calls PutValue(lhs, newValue)
-es5id: S11.3.2_A5_T4
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x--' is in strict-mode code and the
-    original binding is no longer present.
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x--;
-  })();
-}
-
-if (scope.x !== 1) {
-  $ERROR('#1: scope.x === 1. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js b/JSTests/test262/test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js
deleted file mode 100644
index 15576f9..0000000
--- a/JSTests/test262/test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator x-- calls PutValue(lhs, newValue)
-es5id: S11.3.2_A5_T5
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x--' is in strict-mode code and the
-    original binding is no longer present.
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x--;
-})();
-
-if (this.x !== 1) {
-  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js b/JSTests/test262/test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js
new file mode 100644
index 0000000..2aa6af2
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator x-- calls PutValue(lhs, newValue) (formerly S11.3.2_A5_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x--;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js b/JSTests/test262/test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js
new file mode 100644
index 0000000..0ce3607
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator x-- calls PutValue(lhs, newValue) (formerly S11.3.2_A5_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x--;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/postfix-increment/S11.3.1_A5_T4.js b/JSTests/test262/test/language/expressions/postfix-increment/S11.3.1_A5_T4.js
deleted file mode 100644
index f4733d9..0000000
--- a/JSTests/test262/test/language/expressions/postfix-increment/S11.3.1_A5_T4.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator x++ calls PutValue(lhs, newValue)
-es5id: S11.3.1_A5_T4
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x++' is in strict-mode code and the
-    original binding is no longer present.
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    x++;
-  })();
-}
-
-if (scope.x !== 3) {
-  $ERROR('#1: scope.x === 3. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/postfix-increment/S11.3.1_A5_T5.js b/JSTests/test262/test/language/expressions/postfix-increment/S11.3.1_A5_T5.js
deleted file mode 100644
index 9416dc5..0000000
--- a/JSTests/test262/test/language/expressions/postfix-increment/S11.3.1_A5_T5.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator x++ calls PutValue(lhs, newValue)
-es5id: S11.3.1_A5_T5
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when 'x++' is in strict-mode code and the
-    original binding is no longer present.
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  x++;
-})();
-
-if (this.x !== 3) {
-  $ERROR('#1: this.x === 3. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js b/JSTests/test262/test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js
new file mode 100644
index 0000000..2250e99
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator x++ calls PutValue(lhs, newValue) (formerly S11.3.1_A5_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    x++;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js b/JSTests/test262/test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js
new file mode 100644
index 0000000..990a7b4
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator x++ calls PutValue(lhs, newValue) (formerly S11.3.1_A5_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      x++;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/prefix-decrement/S11.4.5_A5_T4.js b/JSTests/test262/test/language/expressions/prefix-decrement/S11.4.5_A5_T4.js
deleted file mode 100644
index d9de039..0000000
--- a/JSTests/test262/test/language/expressions/prefix-decrement/S11.4.5_A5_T4.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator --x calls PutValue(lhs, newValue)
-es5id: S11.4.5_A5_T4
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when '--x' is in strict-mode code and the
-    original binding is no longer present.
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    --x;
-  })();
-}
-
-if (scope.x !== 1) {
-  $ERROR('#1: scope.x === 1. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js b/JSTests/test262/test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js
deleted file mode 100644
index b59dc68..0000000
--- a/JSTests/test262/test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator --x calls PutValue(lhs, newValue)
-es5id: S11.4.5_A5_T5
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when '--x' is in strict-mode code and the
-    original binding is no longer present.
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  --x;
-})();
-
-if (this.x !== 1) {
-  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js b/JSTests/test262/test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js
new file mode 100644
index 0000000..dad98ea
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator --x calls PutValue(lhs, newValue) (formerly S11.4.5_A5_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    --x;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js b/JSTests/test262/test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js
new file mode 100644
index 0000000..fe1e217
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator --x calls PutValue(lhs, newValue) (formerly S11.4.5_A5_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      --x;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/expressions/prefix-increment/S11.4.4_A5_T4.js b/JSTests/test262/test/language/expressions/prefix-increment/S11.4.4_A5_T4.js
deleted file mode 100644
index 67bfcd11..0000000
--- a/JSTests/test262/test/language/expressions/prefix-increment/S11.4.4_A5_T4.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator ++x calls PutValue(lhs, newValue)
-es5id: S11.4.4_A5_T4
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when '++x' is in strict-mode code and the
-    original binding is no longer present.
-flags: [noStrict]
----*/
-
-var scope = {
-  get x() {
-    delete this.x;
-    return 2;
-  }
-};
-
-with (scope) {
-  (function() {
-    "use strict";
-    ++x;
-  })();
-}
-
-if (scope.x !== 3) {
-  $ERROR('#1: scope.x === 3. Actual: ' + (scope.x));
-}
diff --git a/JSTests/test262/test/language/expressions/prefix-increment/S11.4.4_A5_T5.js b/JSTests/test262/test/language/expressions/prefix-increment/S11.4.4_A5_T5.js
deleted file mode 100644
index 5381e2a..0000000
--- a/JSTests/test262/test/language/expressions/prefix-increment/S11.4.4_A5_T5.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2014 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: Operator ++x calls PutValue(lhs, newValue)
-es5id: S11.4.4_A5_T5
-description: >
-    Evaluating LeftHandSideExpression lhs returns Reference type; Reference
-    base value is an environment record and environment record kind is
-    object environment record. PutValue(lhs, newValue) uses the initially
-    created Reference even if the environment binding is no longer present.
-    No ReferenceError is thrown when '++x' is in strict-mode code and the
-    original binding is no longer present.
----*/
-
-Object.defineProperty(this, "x", {
-  configurable: true,
-  get: function() {
-    delete this.x;
-    return 2;
-  }
-});
-
-(function() {
-  "use strict";
-  ++x;
-})();
-
-if (this.x !== 3) {
-  $ERROR('#1: this.x === 3. Actual: ' + (this.x));
-}
diff --git a/JSTests/test262/test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js b/JSTests/test262/test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js
new file mode 100644
index 0000000..1c55dd9
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator ++x calls PutValue(lhs, newValue) (formerly S11.4.4_A5_T5)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+Object.defineProperty(this, "x", {
+  configurable: true,
+  get: function() {
+    delete this.x;
+    return 2;
+  }
+});
+
+(function() {
+  "use strict";
+  assert.throws(ReferenceError, () => {
+    count++;
+    ++x;
+    count++;
+  });
+  count++;
+})();
+
+assert.sameValue(count, 2);
+assert(!('x' in this));
diff --git a/JSTests/test262/test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js b/JSTests/test262/test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js
new file mode 100644
index 0000000..8e2065c
--- /dev/null
+++ b/JSTests/test262/test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-object-environment-records-setmutablebinding-n-v-s
+description: >
+  Operator ++x calls PutValue(lhs, newValue) (formerly S11.4.4_A5_T4)
+info: |
+  The concrete Environment Record method SetMutableBinding for object Environment
+  Records attempts to set the value of the Environment Record's associated binding
+  object's property whose name is the value of the argument N to the value of argument V.
+  A property named N normally already exists but if it does not or is not currently writable,
+  error handling is determined by the value of the Boolean argument S.
+
+  Let stillExists be ? HasProperty(bindings, N).
+  If stillExists is false and S is true, throw a ReferenceError exception.
+flags: [noStrict]
+---*/
+var count = 0;
+var scope = {
+  get x() {
+    delete this.x;
+    return 2;
+  }
+};
+
+with (scope) {
+  (function() {
+    "use strict";
+    assert.throws(ReferenceError, () => {
+      count++;
+      ++x;
+      count++;
+    });
+    count++;
+  })();
+}
+
+assert.sameValue(count, 2);
+assert(!('x' in scope));
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..0fe9308
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1 + 1]() {
+    return 2;
+  }
+
+  set [1 + 1](v) {
+    return 2;
+  }
+
+  static get [1 + 1]() {
+    return 2;
+  }
+
+  static set [1 + 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1],
+  2
+);
+assert.sameValue(
+  c[1 + 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1 + 1],
+  2
+);
+assert.sameValue(
+  C[1 + 1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..21d62ce
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1 - 1]() {
+    return 0;
+  }
+
+  set [1 - 1](v) {
+    return 0;
+  }
+
+  static get [1 - 1]() {
+    return 0;
+  }
+
+  static set [1 - 1](v) {
+    return 0;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1],
+  0
+);
+assert.sameValue(
+  c[1 - 1] = 0,
+  0
+);
+
+assert.sameValue(
+  C[1 - 1],
+  0
+);
+assert.sameValue(
+  C[1 - 1] = 0,
+  0
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..cea789f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [() => { }]() {
+    return 1;
+  }
+
+  set [() => { }](v) {
+    return 1;
+  }
+
+  static get [() => { }]() {
+    return 1;
+  }
+
+  static set [() => { }](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }],
+  1
+);
+assert.sameValue(
+  c[() => { }] = 1,
+  1
+);
+
+assert.sameValue(
+  C[() => { }],
+  1
+);
+assert.sameValue(
+  C[() => { }] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..0e8958f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  get [x = 1]() {
+    return 2;
+  }
+
+  set [x = 1](v) {
+    return 2;
+  }
+
+  static get [x = 1]() {
+    return 2;
+  }
+
+  static set [x = 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1],
+  2
+);
+assert.sameValue(
+  c[x = 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x = 1],
+  2
+);
+assert.sameValue(
+  C[x = 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..7d096ab
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  get [x |= 1]() {
+    return 2;
+  }
+
+  set [x |= 1](v) {
+    return 2;
+  }
+
+  static get [x |= 1]() {
+    return 2;
+  }
+
+  static set [x |= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1],
+  2
+);
+assert.sameValue(
+  c[x |= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x |= 1],
+  2
+);
+assert.sameValue(
+  C[x |= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..512d22e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+class C {
+  get [x ??= 1]() {
+    return 2;
+  }
+
+  set [x ??= 1](v) {
+    return 2;
+  }
+
+  static get [x ??= 1]() {
+    return 2;
+  }
+
+  static set [x ??= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1],
+  2
+);
+assert.sameValue(
+  c[x ??= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x ??= 1],
+  2
+);
+assert.sameValue(
+  C[x ??= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..304b580
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  get [x &&= 1]() {
+    return 2;
+  }
+
+  set [x &&= 1](v) {
+    return 2;
+  }
+
+  static get [x &&= 1]() {
+    return 2;
+  }
+
+  static set [x &&= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1],
+  2
+);
+assert.sameValue(
+  c[x &&= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x &&= 1],
+  2
+);
+assert.sameValue(
+  C[x &&= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..1704184
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  get [x ||= 1]() {
+    return 2;
+  }
+
+  set [x ||= 1](v) {
+    return 2;
+  }
+
+  static get [x ||= 1]() {
+    return 2;
+  }
+
+  static set [x ||= 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1],
+  2
+);
+assert.sameValue(
+  c[x ||= 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x ||= 1],
+  2
+);
+assert.sameValue(
+  C[x ||= 1] = 2,
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..8669bfc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [async () => {}]() {
+    return 1;
+  }
+
+  set [async () => {}](v) {
+    return 1;
+  }
+
+  static get [async () => {}]() {
+    return 1;
+  }
+
+  static set [async () => {}](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}],
+  1
+);
+assert.sameValue(
+  c[async () => {}] = 1,
+  1
+);
+
+assert.sameValue(
+  C[async () => {}],
+  1
+);
+assert.sameValue(
+  C[async () => {}] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..fae29dd
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [false ? 1 : 2]() {
+    return 1;
+  }
+
+  set [false ? 1 : 2](v) {
+    return 1;
+  }
+
+  static get [false ? 1 : 2]() {
+    return 1;
+  }
+
+  static set [false ? 1 : 2](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2],
+  1
+);
+assert.sameValue(
+  c[false ? 1 : 2] = 1,
+  1
+);
+
+assert.sameValue(
+  C[false ? 1 : 2],
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..58beaff
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  set [true ? 1 : 2](v) {
+    return 2;
+  }
+
+  static get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  static set [true ? 1 : 2](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  c[true ? 1 : 2] = 2,
+  2
+);
+
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..e7a5570
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1.e1]() {
+    return 2;
+  }
+
+  set [1.e1](v) {
+    return 2;
+  }
+
+  static get [1.e1]() {
+    return 2;
+  }
+
+  static set [1.e1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1],
+  2
+);
+assert.sameValue(
+  c[1.e1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1.e1],
+  2
+);
+assert.sameValue(
+  C[1.e1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..38948c8
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1.1]() {
+    return 2;
+  }
+
+  set [1.1](v) {
+    return 2;
+  }
+
+  static get [1.1]() {
+    return 2;
+  }
+
+  static set [1.1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1],
+  2
+);
+assert.sameValue(
+  c[1.1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1.1],
+  2
+);
+assert.sameValue(
+  C[1.1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..65a4c51
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [2 ** 2]() {
+    return 4;
+  }
+
+  set [2 ** 2](v) {
+    return 4;
+  }
+
+  static get [2 ** 2]() {
+    return 4;
+  }
+
+  static set [2 ** 2](v) {
+    return 4;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2],
+  4
+);
+assert.sameValue(
+  c[2 ** 2] = 4,
+  4
+);
+
+assert.sameValue(
+  C[2 ** 2],
+  4
+);
+assert.sameValue(
+  C[2 ** 2] = 4,
+  4
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..69ecc38
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+class C {
+  get [x ?? 1]() {
+    return 2;
+  }
+
+  set [x ?? 1](v) {
+    return 2;
+  }
+
+  static get [x ?? 1]() {
+    return 2;
+  }
+
+  static set [x ?? 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1],
+  2
+);
+assert.sameValue(
+  c[x ?? 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x ?? 1],
+  2
+);
+assert.sameValue(
+  C[x ?? 1] = 2,
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..ea3dfbe
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  get [x && 1]() {
+    return 2;
+  }
+
+  set [x && 1](v) {
+    return 2;
+  }
+
+  static get [x && 1]() {
+    return 2;
+  }
+
+  static set [x && 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1],
+  2
+);
+assert.sameValue(
+  c[x && 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x && 1],
+  2
+);
+assert.sameValue(
+  C[x && 1] = 2,
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..03fa21a
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,77 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  get [x || 1]() {
+    return 2;
+  }
+
+  set [x || 1](v) {
+    return 2;
+  }
+
+  static get [x || 1]() {
+    return 2;
+  }
+
+  static set [x || 1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1],
+  2
+);
+assert.sameValue(
+  c[x || 1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[x || 1],
+  2
+);
+assert.sameValue(
+  C[x || 1] = 2,
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..914b6aef
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-function-declaration.js
@@ -0,0 +1,75 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+class C {
+  get [f()]() {
+    return 1;
+  }
+
+  set [f()](v) {
+    return 1;
+  }
+
+  static get [f()]() {
+    return 1;
+  }
+
+  static set [f()](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()],
+  1
+);
+assert.sameValue(
+  c[f()] = 1,
+  1
+);
+
+assert.sameValue(
+  C[f()],
+  1
+);
+assert.sameValue(
+  C[f()] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..7a34142
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-function-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [function () {}]() {
+    return 1;
+  }
+
+  set [function () {}](v) {
+    return 1;
+  }
+
+  static get [function () {}]() {
+    return 1;
+  }
+
+  static set [function () {}](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}],
+  1
+);
+assert.sameValue(
+  c[function () {}] = 1,
+  1
+);
+
+assert.sameValue(
+  C[function () {}],
+  1
+);
+assert.sameValue(
+  C[function () {}] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..abbfd72
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,75 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+class C {
+  get [g()]() {
+    return 1;
+  }
+
+  set [g()](v) {
+    return 1;
+  }
+
+  static get [g()]() {
+    return 1;
+  }
+
+  static set [g()](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()],
+  1
+);
+assert.sameValue(
+  c[g()] = 1,
+  1
+);
+
+assert.sameValue(
+  C[g()],
+  1
+);
+assert.sameValue(
+  C[g()] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-identifier.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..3cd00dc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-identifier.js
@@ -0,0 +1,76 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+class C {
+  get [x]() {
+    return '2';
+  }
+
+  set [x](v) {
+    return '2';
+  }
+
+  static get [x]() {
+    return '2';
+  }
+
+  static set [x](v) {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x],
+  '2'
+);
+assert.sameValue(
+  c[x] = '2',
+  '2'
+);
+
+assert.sameValue(
+  C[x],
+  '2'
+);
+assert.sameValue(
+  C[x] = '2',
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..19639a1
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1]() {
+    return 2;
+  }
+
+  set [1](v) {
+    return 2;
+  }
+
+  static get [1]() {
+    return 2;
+  }
+
+  static set [1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  c[1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1],
+  2
+);
+assert.sameValue(
+  C[1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..d5d6389
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-integer-separators.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+
+  set [1_2_3_4_5_6_7_8](v) {
+    return 1_2_3_4_5_6_7_8;
+  }
+
+  static get [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+
+  static set [1_2_3_4_5_6_7_8](v) {
+    return 1_2_3_4_5_6_7_8;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8,
+  1_2_3_4_5_6_7_8
+);
+
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8,
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-math.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-math.js
new file mode 100644
index 0000000..e41060e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-math.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+
+  set [1 + 2 - 3 * 4 / 5 ** 6](v) {
+    return 2.999232;
+  }
+
+  static get [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+
+  static set [1 + 2 - 3 * 4 / 5 ** 6](v) {
+    return 2.999232;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6] = 2.999232,
+  2.999232
+);
+
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6] = 2.999232,
+  2.999232
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..98f72ebe
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1 / 1]() {
+    return 1;
+  }
+
+  set [1 / 1](v) {
+    return 1;
+  }
+
+  static get [1 / 1]() {
+    return 1;
+  }
+
+  static set [1 / 1](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1],
+  1
+);
+assert.sameValue(
+  c[1 / 1] = 1,
+  1
+);
+
+assert.sameValue(
+  C[1 / 1],
+  1
+);
+assert.sameValue(
+  C[1 / 1] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..33b2d00
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1 * 1]() {
+    return 1;
+  }
+
+  set [1 * 1](v) {
+    return 1;
+  }
+
+  static get [1 * 1]() {
+    return 1;
+  }
+
+  static set [1 * 1](v) {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1],
+  1
+);
+assert.sameValue(
+  c[1 * 1] = 1,
+  1
+);
+
+assert.sameValue(
+  C[1 * 1],
+  1
+);
+assert.sameValue(
+  C[1 * 1] = 1,
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..44cf51c
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [1]() {
+    return 2;
+  }
+
+  set [1](v) {
+    return 2;
+  }
+
+  static get [1]() {
+    return 2;
+  }
+
+  static set [1](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  c[1] = 2,
+  2
+);
+
+assert.sameValue(
+  C[1],
+  2
+);
+assert.sameValue(
+  C[1] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..5652546
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-string-literal.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get ['1']() {
+    return '2';
+  }
+
+  set ['1'](v) {
+    return '2';
+  }
+
+  static get ['1']() {
+    return '2';
+  }
+
+  static set ['1'](v) {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'],
+  '2'
+);
+assert.sameValue(
+  c['1'] = '2',
+  '2'
+);
+
+assert.sameValue(
+  C['1'],
+  '2'
+);
+assert.sameValue(
+  C['1'] = '2',
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..8bba049
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-accessors-computed-property-name-from-yield-expression.js
@@ -0,0 +1,74 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-declaration-accessors.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  set [true ? 1 : 2](v) {
+    return 2;
+  }
+
+  static get [true ? 1 : 2]() {
+    return 2;
+  }
+
+  static set [true ? 1 : 2](v) {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  c[true ? 1 : 2] = 2,
+  2
+);
+
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2] = 2,
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..e80de81
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1 + 1]() {
+    return 2;
+  }
+  static [1 + 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1](),
+  2
+);
+assert.sameValue(
+  C[1 + 1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..8f9b8f8
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1 - 1]() {
+    return 0;
+  }
+  static [1 - 1]() {
+    return 0;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1](),
+  0
+);
+assert.sameValue(
+  C[1 - 1](),
+  0
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..328ec03
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [() => { }]() {
+    return 1;
+  }
+  static [() => { }]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }](),
+  1
+);
+assert.sameValue(
+  C[() => { }](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..b9ed222
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  [x = 1]() {
+    return 2;
+  }
+  static [x = 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1](),
+  2
+);
+assert.sameValue(
+  C[x = 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..a385b5c
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  [x |= 1]() {
+    return 2;
+  }
+  static [x |= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1](),
+  2
+);
+assert.sameValue(
+  C[x |= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..cd285da
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+class C {
+  [x ??= 1]() {
+    return 2;
+  }
+  static [x ??= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1](),
+  2
+);
+assert.sameValue(
+  C[x ??= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..556a70b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  [x &&= 1]() {
+    return 2;
+  }
+  static [x &&= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1](),
+  2
+);
+assert.sameValue(
+  C[x &&= 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..f2b6872
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  [x ||= 1]() {
+    return 2;
+  }
+  static [x ||= 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1](),
+  2
+);
+assert.sameValue(
+  C[x ||= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..850f3d4
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [async () => {}]() {
+    return 1;
+  }
+  static [async () => {}]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}](),
+  1
+);
+assert.sameValue(
+  C[async () => {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..05883ef
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [false ? 1 : 2]() {
+    return 1;
+  }
+  static [false ? 1 : 2]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2](),
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..a16b3ed
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [true ? 1 : 2]() {
+    return 2;
+  }
+  static [true ? 1 : 2]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..0c36953
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1.e1]() {
+    return 2;
+  }
+  static [1.e1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1](),
+  2
+);
+assert.sameValue(
+  C[1.e1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..6466646
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1.1]() {
+    return 2;
+  }
+  static [1.1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1](),
+  2
+);
+assert.sameValue(
+  C[1.1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..49143fa
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [2 ** 2]() {
+    return 4;
+  }
+  static [2 ** 2]() {
+    return 4;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2](),
+  4
+);
+assert.sameValue(
+  C[2 ** 2](),
+  4
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..c2e9baa
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+class C {
+  [x ?? 1]() {
+    return 2;
+  }
+  static [x ?? 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1](),
+  2
+);
+assert.sameValue(
+  C[x ?? 1](),
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..414bc4a
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  [x && 1]() {
+    return 2;
+  }
+  static [x && 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1](),
+  2
+);
+assert.sameValue(
+  C[x && 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..974f6db
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+class C {
+  [x || 1]() {
+    return 2;
+  }
+  static [x || 1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1](),
+  2
+);
+assert.sameValue(
+  C[x || 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..c53df59
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-function-declaration.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+class C {
+  [f()]() {
+    return 1;
+  }
+  static [f()]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()](),
+  1
+);
+assert.sameValue(
+  C[f()](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..a1c4bc5
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-function-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [function () {}]() {
+    return 1;
+  }
+  static [function () {}]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}](),
+  1
+);
+assert.sameValue(
+  C[function () {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..bd42bdf
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+class C {
+  [g()]() {
+    return 1;
+  }
+  static [g()]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()](),
+  1
+);
+assert.sameValue(
+  C[g()](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-identifier.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..71bdd85
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-identifier.js
@@ -0,0 +1,58 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+class C {
+  [x]() {
+    return '2';
+  }
+  static [x]() {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x](),
+  '2'
+);
+assert.sameValue(
+  C[x](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..85f5b4a
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1]() {
+    return 2;
+  }
+  static [1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..d142025
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-integer-separators.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+  static [1_2_3_4_5_6_7_8]() {
+    return 1_2_3_4_5_6_7_8;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-math.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-math.js
new file mode 100644
index 0000000..0e11978
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-math.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+  static [1 + 2 - 3 * 4 / 5 ** 6]() {
+    return 2.999232;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..c36cf85
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1 / 1]() {
+    return 1;
+  }
+  static [1 / 1]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1](),
+  1
+);
+assert.sameValue(
+  C[1 / 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..dc1cad7
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1 * 1]() {
+    return 1;
+  }
+  static [1 * 1]() {
+    return 1;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1](),
+  1
+);
+assert.sameValue(
+  C[1 * 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..a15baec
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [1]() {
+    return 2;
+  }
+  static [1]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..7f082228
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-string-literal.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  ['1']() {
+    return '2';
+  }
+  static ['1']() {
+    return '2';
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'](),
+  '2'
+);
+assert.sameValue(
+  C['1'](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..fba6c71
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-computed-property-name-from-yield-expression.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-declaration.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassDeclaration)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+class C {
+  [true ? 1 : 2]() {
+    return 2;
+  }
+  static [true ? 1 : 2]() {
+    return 2;
+  }
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..4531506
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 1] = 2;
+
+  static [1 + 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1],
+  2
+);
+assert.sameValue(
+  C[1 + 1],
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..59dfe1e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 - 1] = 0;
+
+  static [1 - 1] = 0;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1],
+  0
+);
+assert.sameValue(
+  C[1 - 1],
+  0
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..7210909
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [() => { }] = 1;
+
+  static [() => { }] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }],
+  1
+);
+assert.sameValue(
+  C[() => { }],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..bb0f7b7
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x = 1] = 2;
+
+  static [x = 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1],
+  2
+);
+assert.sameValue(
+  C[x = 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..f63fbe6
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x |= 1] = 2;
+
+  static [x |= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1],
+  2
+);
+assert.sameValue(
+  C[x |= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..3c26df9
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+let C = class {
+  [x ??= 1] = 2;
+
+  static [x ??= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1],
+  2
+);
+assert.sameValue(
+  C[x ??= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..29c9914
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x &&= 1] = 2;
+
+  static [x &&= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1],
+  2
+);
+assert.sameValue(
+  C[x &&= 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..6e52e50
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x ||= 1] = 2;
+
+  static [x ||= 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1],
+  2
+);
+assert.sameValue(
+  C[x ||= 1],
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..446d56b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [async () => {}] = 1;
+
+  static [async () => {}] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}],
+  1
+);
+assert.sameValue(
+  C[async () => {}],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..b9d9e4b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [false ? 1 : 2] = 1;
+
+  static [false ? 1 : 2] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2],
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..892202a
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = 2;
+
+  static [true ? 1 : 2] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..3f97d99
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.e1] = 2;
+
+  static [1.e1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1],
+  2
+);
+assert.sameValue(
+  C[1.e1],
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..5ba23f4
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.1] = 2;
+
+  static [1.1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1],
+  2
+);
+assert.sameValue(
+  C[1.1],
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..1a05d5e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [2 ** 2] = 4;
+
+  static [2 ** 2] = 4;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2],
+  4
+);
+assert.sameValue(
+  C[2 ** 2],
+  4
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..d9ab321
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+let C = class {
+  [x ?? 1] = 2;
+
+  static [x ?? 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1],
+  2
+);
+assert.sameValue(
+  C[x ?? 1],
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..3c394fc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x && 1] = 2;
+
+  static [x && 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1],
+  2
+);
+assert.sameValue(
+  C[x && 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..1eee730
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x || 1] = 2;
+
+  static [x || 1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1],
+  2
+);
+assert.sameValue(
+  C[x || 1],
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..c4a96fc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-function-declaration.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+let C = class {
+  [f()] = 1;
+
+  static [f()] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()],
+  1
+);
+assert.sameValue(
+  C[f()],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..fafa6c6
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-function-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [function () {}] = 1;
+
+  static [function () {}] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}],
+  1
+);
+assert.sameValue(
+  C[function () {}],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..10731d7
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,54 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+let C = class {
+  [g()] = 1;
+
+  static [g()] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()],
+  1
+);
+assert.sameValue(
+  C[g()],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-identifier.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..223ea5c
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-identifier.js
@@ -0,0 +1,55 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+let C = class {
+  [x] = '2';
+
+  static [x] = '2';
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x],
+  '2'
+);
+assert.sameValue(
+  C[x],
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..c8a4f55
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = 2;
+
+  static [1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  C[1],
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..205d835
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-integer-separators.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8;
+
+  static [1_2_3_4_5_6_7_8] = 1_2_3_4_5_6_7_8;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8],
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-math.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-math.js
new file mode 100644
index 0000000..357fb494
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-math.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 2 - 3 * 4 / 5 ** 6] = 2.999232;
+
+  static [1 + 2 - 3 * 4 / 5 ** 6] = 2.999232;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6],
+  2.999232
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..465b2cf
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 / 1] = 1;
+
+  static [1 / 1] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1],
+  1
+);
+assert.sameValue(
+  C[1 / 1],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..214ba32
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 * 1] = 1;
+
+  static [1 * 1] = 1;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1],
+  1
+);
+assert.sameValue(
+  C[1 * 1],
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..19356af
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = 2;
+
+  static [1] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1],
+  2
+);
+assert.sameValue(
+  C[1],
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..d40596a
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-string-literal.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  ['1'] = '2';
+
+  static ['1'] = '2';
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'],
+  '2'
+);
+assert.sameValue(
+  C['1'],
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..e6cf0bf
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-computed-property-name-from-yield-expression.js
@@ -0,0 +1,53 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = 2;
+
+  static [true ? 1 : 2] = 2;
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2],
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2],
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js
new file mode 100644
index 0000000..1ff660b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-add.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-add.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from additive expression "add" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 1] = () => {
+    return 2;
+  };
+
+  static [1 + 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 1](),
+  2
+);
+assert.sameValue(
+  C[1 + 1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js
new file mode 100644
index 0000000..7cbeada
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-additive-expression-subtract.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-additive-expression-subtract.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from additive expression "subtract" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 - 1] = () => {
+    return 0;
+  };
+
+  static [1 - 1] = () => {
+    return 0;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 - 1](),
+  0
+);
+assert.sameValue(
+  C[1 - 1](),
+  0
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js
new file mode 100644
index 0000000..f7f0742
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-arrow-function-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from arrow function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [() => { }] = () => {
+    return 1;
+  };
+
+  static [() => { }] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[() => { }](),
+  1
+);
+assert.sameValue(
+  C[() => { }](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js
new file mode 100644
index 0000000..09ce1d8
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-assignment.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-assignment.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from assignment expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x = 1] = () => {
+    return 2;
+  };
+
+  static [x = 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x = 1](),
+  2
+);
+assert.sameValue(
+  C[x = 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js
new file mode 100644
index 0000000..3aea034
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-bitwise-or.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-bitwise-or.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from assignment expression bitwise or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x |= 1] = () => {
+    return 2;
+  };
+
+  static [x |= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x |= 1](),
+  2
+);
+assert.sameValue(
+  C[x |= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js
new file mode 100644
index 0000000..2215a3e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-coalesce.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from assignment expression coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = null;
+
+
+let C = class {
+  [x ??= 1] = () => {
+    return 2;
+  };
+
+  static [x ??= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ??= 1](),
+  2
+);
+assert.sameValue(
+  C[x ??= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js
new file mode 100644
index 0000000..8c0bfe5
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-and.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from assignment expression logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x &&= 1] = () => {
+    return 2;
+  };
+
+  static [x &&= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x &&= 1](),
+  2
+);
+assert.sameValue(
+  C[x &&= 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js
new file mode 100644
index 0000000..bc39a8f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-assignment-expression-logical-or.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-assignment-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from assignment expression logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x ||= 1] = () => {
+    return 2;
+  };
+
+  static [x ||= 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ||= 1](),
+  2
+);
+assert.sameValue(
+  C[x ||= 1](),
+  2
+);
+
+assert.sameValue(x, 1);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js
new file mode 100644
index 0000000..aefe565
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-async-arrow-function-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-async-arrow-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [async () => {}] = () => {
+    return 1;
+  };
+
+  static [async () => {}] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[async () => {}](),
+  1
+);
+assert.sameValue(
+  C[async () => {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js
new file mode 100644
index 0000000..46ae9c3
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-false.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-false.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [false ? 1 : 2] = () => {
+    return 1;
+  };
+
+  static [false ? 1 : 2] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[false ? 1 : 2](),
+  1
+);
+assert.sameValue(
+  C[false ? 1 : 2](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js
new file mode 100644
index 0000000..cd9d9dd
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-condition-expression-true.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-condition-expression-true.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = () => {
+    return 2;
+  };
+
+  static [true ? 1 : 2] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js
new file mode 100644
index 0000000..db83da5
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-e-notational-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from decimal e notational literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.e1] = () => {
+    return 2;
+  };
+
+  static [1.e1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.e1](),
+  2
+);
+assert.sameValue(
+  C[1.e1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js
new file mode 100644
index 0000000..2c1742d
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-decimal-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-decimal-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from decimal literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1.1] = () => {
+    return 2;
+  };
+
+  static [1.1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1.1](),
+  2
+);
+assert.sameValue(
+  C[1.1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js
new file mode 100644
index 0000000..f920c4e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-exponetiation-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-exponetiation-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from exponentiation expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [2 ** 2] = () => {
+    return 4;
+  };
+
+  static [2 ** 2] = () => {
+    return 4;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[2 ** 2](),
+  4
+);
+assert.sameValue(
+  C[2 ** 2](),
+  4
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js
new file mode 100644
index 0000000..ea8146e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-coalesce.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-coalesce.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from coalesce (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x;
+
+
+let C = class {
+  [x ?? 1] = () => {
+    return 2;
+  };
+
+  static [x ?? 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x ?? 1](),
+  2
+);
+assert.sameValue(
+  C[x ?? 1](),
+  2
+);
+
+assert.sameValue(x, undefined);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js
new file mode 100644
index 0000000..57212a6
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-and.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-and.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from logical and (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x && 1] = () => {
+    return 2;
+  };
+
+  static [x && 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x && 1](),
+  2
+);
+assert.sameValue(
+  C[x && 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js
new file mode 100644
index 0000000..1d9f302
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-expression-logical-or.js
@@ -0,0 +1,60 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-expression-logical-or.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from logical or (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 0;
+
+
+let C = class {
+  [x || 1] = () => {
+    return 2;
+  };
+
+  static [x || 1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x || 1](),
+  2
+);
+assert.sameValue(
+  C[x || 1](),
+  2
+);
+
+assert.sameValue(x, 0);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-declaration.js
new file mode 100644
index 0000000..c9d6256
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-declaration.js
@@ -0,0 +1,58 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function f() {}
+
+
+let C = class {
+  [f()] = () => {
+    return 1;
+  };
+
+  static [f()] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[f()](),
+  1
+);
+assert.sameValue(
+  C[f()](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-expression.js
new file mode 100644
index 0000000..1160c22
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-function-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-function-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from function expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [function () {}] = () => {
+    return 1;
+  };
+
+  static [function () {}] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[function () {}](),
+  1
+);
+assert.sameValue(
+  C[function () {}](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js
new file mode 100644
index 0000000..bc28389
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-generator-function-declaration.js
@@ -0,0 +1,58 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-generator-function-declaration.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from generator function (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+function * g() { return 1; }
+
+
+let C = class {
+  [g()] = () => {
+    return 1;
+  };
+
+  static [g()] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[g()](),
+  1
+);
+assert.sameValue(
+  C[g()](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-identifier.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-identifier.js
new file mode 100644
index 0000000..c6dbbcb
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-identifier.js
@@ -0,0 +1,59 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-identifier.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+let x = 1;
+
+
+
+let C = class {
+  [x] = () => {
+    return '2';
+  };
+
+  static [x] = () => {
+    return '2';
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[x](),
+  '2'
+);
+assert.sameValue(
+  C[x](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js
new file mode 100644
index 0000000..7bd091e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-e-notational-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-e-notational-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = () => {
+    return 2;
+  };
+
+  static [1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-separators.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-separators.js
new file mode 100644
index 0000000..ce199be
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-integer-separators.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-integer-separators.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from integer with separators (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1_2_3_4_5_6_7_8] = () => {
+    return 1_2_3_4_5_6_7_8;
+  };
+
+  static [1_2_3_4_5_6_7_8] = () => {
+    return 1_2_3_4_5_6_7_8;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
+assert.sameValue(
+  C[1_2_3_4_5_6_7_8](),
+  1_2_3_4_5_6_7_8
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-math.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-math.js
new file mode 100644
index 0000000..b0b0ff8
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-math.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-math.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from math (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 + 2 - 3 * 4 / 5 ** 6] = () => {
+    return 2.999232;
+  };
+
+  static [1 + 2 - 3 * 4 / 5 ** 6] = () => {
+    return 2.999232;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
+assert.sameValue(
+  C[1 + 2 - 3 * 4 / 5 ** 6](),
+  2.999232
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js
new file mode 100644
index 0000000..06be10b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-div.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-div.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from multiplicative expression "divide" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 / 1] = () => {
+    return 1;
+  };
+
+  static [1 / 1] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 / 1](),
+  1
+);
+assert.sameValue(
+  C[1 / 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js
new file mode 100644
index 0000000..f5b100e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-multiplicative-expression-mult.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-multiplicative-expression-mult.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from multiplicative expression "multiply" (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1 * 1] = () => {
+    return 1;
+  };
+
+  static [1 * 1] = () => {
+    return 1;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1 * 1](),
+  1
+);
+assert.sameValue(
+  C[1 * 1](),
+  1
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js
new file mode 100644
index 0000000..e61fc14
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-numeric-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-numeric-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from numeric literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [1] = () => {
+    return 2;
+  };
+
+  static [1] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[1](),
+  2
+);
+assert.sameValue(
+  C[1](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-string-literal.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-string-literal.js
new file mode 100644
index 0000000..2e618877
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-string-literal.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-string-literal.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from string literal (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  ['1'] = () => {
+    return '2';
+  };
+
+  static ['1'] = () => {
+    return '2';
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c['1'](),
+  '2'
+);
+assert.sameValue(
+  C['1'](),
+  '2'
+);
diff --git a/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-yield-expression.js b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-yield-expression.js
new file mode 100644
index 0000000..1fbe11e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/cpn-fields-methods-computed-property-name-from-yield-expression.js
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/computed-property-names/computed-property-name-from-yield-expression.case
+// - src/computed-property-names/evaluation/class-declaration-fields-methods.template
+/*---
+description: Computed property name from condition expression (ComputedPropertyName in ClassExpression)
+esid: prod-ComputedPropertyName
+features: [computed-property-names]
+flags: [generated]
+info: |
+    ClassExpression:
+      classBindingIdentifier opt ClassTail
+
+    ClassTail:
+      ClassHeritage opt { ClassBody opt }
+
+    ClassBody:
+      ClassElementList
+
+    ClassElementList:
+      ClassElement
+
+    ClassElement:
+      MethodDefinition
+
+    MethodDefinition:
+      PropertyName ...
+      get PropertyName ...
+      set PropertyName ...
+
+    PropertyName:
+      ComputedPropertyName
+
+    ComputedPropertyName:
+      [ AssignmentExpression ]
+---*/
+
+
+let C = class {
+  [true ? 1 : 2] = () => {
+    return 2;
+  };
+
+  static [true ? 1 : 2] = () => {
+    return 2;
+  };
+};
+
+let c = new C();
+
+assert.sameValue(
+  c[true ? 1 : 2](),
+  2
+);
+assert.sameValue(
+  C[true ? 1 : 2](),
+  2
+);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..bbe1a4e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; () => super.x;');
+}
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..19716c9
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; () => super["x"];');
+}
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..9fc933f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; () => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..7b8acdb
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; () => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..94b210f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; () => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..3474620
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+class A {}
+class C extends A {
+  x = (0, eval)('() => super.x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..a300b11
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+class A {}
+class C extends A {
+  x = (0, eval)('() => super["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..dc9a08a
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+class A {}
+class C extends A {
+  x = (0, eval)('() => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..a73d1f2
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+class A {}
+class C extends A {
+  x = (0, eval)('() => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..1c4ce74
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+class A {}
+class C extends A {
+  x = (0, eval)('() => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..92ace77
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C {
+  x = eval('executed = true; () => arguments;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..350453b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C {
+  x = eval('executed = true; () => new.target;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x(), undefined);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..9efee68
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+class C {
+  x = (0, eval)('() => arguments;');
+}
+
+assert.throws(ReferenceError, function() {
+  new C().x();
+});
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..c6df641
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+class C {
+  x = (0, eval)('() => new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..7f70d06
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; () => super.x;');
+  x() {
+    this.#x();
+  }
+}
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..63cbf97
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; () => super["x"];');
+  x() {
+    this.#x();
+  }
+}
+
+new C().x();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..7815c26
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; () => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..a451d75
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; () => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..eeea688
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; () => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..f36b517
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+class A {}
+class C extends A {
+  #x = (0, eval)('() => super.x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..447d804
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+class A {}
+class C extends A {
+  #x = (0, eval)('() => super["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..5682f5e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+class A {}
+class C extends A {
+  #x = (0, eval)('() => super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..39bf761
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+class A {}
+class C extends A {
+  #x = (0, eval)('() => super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..ebfe2bf
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+class A {}
+class C extends A {
+  #x = (0, eval)('() => super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..35cda00
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C {
+  #x = eval('executed = true; () => arguments;');
+  constructor() {
+    this.#x();
+  }
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..32a2591
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C {
+  #x = eval('executed = true; () => new.target;');
+  x() {
+    this.#x();
+  }
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x(), undefined);
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..8773bb9
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+class C {
+  #x = (0, eval)('() => arguments;');
+  x() {
+    this.#x();
+  }
+}
+
+assert.throws(ReferenceError, function() {
+  new C().x();
+});
diff --git a/JSTests/test262/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..11e24c0
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-arrow-body.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+class C {
+  #x = (0, eval)('() => new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js
new file mode 100644
index 0000000..9ff614e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => {
+    var t = () => arguments;
+  }
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js
new file mode 100644
index 0000000..0bd1f1c
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template
+/*---
+description: Syntax error if `super()` used in class field (arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => {
+    var t = () => super();
+  }
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..1b03172
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, computed-property-names]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+class C {
+  [x] = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js
new file mode 100644
index 0000000..5872fbe
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, computed-property-names]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+class C {
+  [x] = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..f919e3a
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; super.x;');
+}
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..217ee47
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; super["x"];');
+}
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..3feefdb5
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..c02130d
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..4962a95
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = eval('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..8510c3b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = (0, eval)('executed = true; super.x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..a507b14
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = (0, eval)('executed = true; super["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..0a671ad
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = (0, eval)('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..e097529
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = (0, eval)('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..7a1db11
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  x = (0, eval)('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..592ff91
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C {
+  x = () => {
+    var t = () => { eval('executed = true; arguments;'); };
+    t();
+  }
+}
+
+assert.throws(SyntaxError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..843e134
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C {
+  x = eval('executed = true; new.target;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x, undefined);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js
new file mode 100644
index 0000000..abd33bf
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-equality-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (equality expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => {} == arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-equality-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-equality-init-err-contains-super.js
new file mode 100644
index 0000000..a83ad49
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-equality-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-equality-nested.template
+/*---
+description: Syntax error if `super()` used in class field (equality expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => {} == super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..cdb7e4d
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C {
+  x = () => {
+    var t = () => { (0, eval)('executed = true; arguments;'); };
+    t();
+  }
+}
+
+assert.throws(ReferenceError, function() {
+  new C().x();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..74428c1
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-public]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C {
+  x = (0, eval)('executed = true; new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..3db862c
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..041efe99
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js
new file mode 100644
index 0000000..bdd6ae0
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js
@@ -0,0 +1,38 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (private field, arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => {
+    var t = () => arguments;
+    t();
+  }
+}
+
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js
new file mode 100644
index 0000000..221c988
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template
+/*---
+description: Syntax error if `super()` used in class field (private field, arrow function expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, arrow-function, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => {
+    var t = () => super();
+    t();
+  }
+}
+
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..50617df
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template
+/*---
+description: super.x in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; super.x;');
+}
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..3ba143f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; super["x"];');
+}
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..5830dd2
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..3a5a995
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 0000000..a37e3526
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js
new file mode 100644
index 0000000..644a508
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-1.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template
+/*---
+description: super.x in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = (0, eval)('executed = true; super.x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js
new file mode 100644
index 0000000..83570fe
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-contains-superproperty-2.case
+// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template
+/*---
+description: super['x'] in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+
+      ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains SuperProperty.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = (0, eval)('executed = true; super["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 0000000..d356a08
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-1.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template
+/*---
+description: error if `super()['x']` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = (0, eval)('executed = true; super()["x"];');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 0000000..2082351
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall-2.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+info: |
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = (0, eval)('executed = true; super().x;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 0000000..0d3e51f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-supercall.case
+// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    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.
+
+---*/
+
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = (0, eval)('executed = true; super();');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js
new file mode 100644
index 0000000..348280e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js
@@ -0,0 +1,42 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C {
+  #x = () => {
+    var t = () => { eval('executed = true; arguments;'); };
+    t();
+  }
+  constructor() {
+    this.#x();
+  }
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..df27a39
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C {
+  #x = eval('executed = true; new.target;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x, undefined);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js
new file mode 100644
index 0000000..fbcfc71
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-arguments.case
+// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-nested.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if ContainsArguments of StatementList is true.
+      ...
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C {
+  #x = (0, eval)('executed = true; arguments;');
+}
+
+assert.throws(ReferenceError, function() {
+  new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js b/JSTests/test262/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js
new file mode 100644
index 0000000..9558216
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/eval-err-contains-newtarget.case
+// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-nested.template
+/*---
+description: error if `new.target` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class, new.target, class-fields-private]
+flags: [generated]
+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.
+    ScriptBody : StatementList
+
+      ...
+      The remaining eval rules apply as outside a constructor, inside a method, and inside a function.
+
+    Additional Early Error Rules for Eval Outside Functions
+    These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+    ScriptBody : StatementList
+
+      It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C {
+  #x = (0, eval)('executed = true; new.target;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..07bae17
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (ClassElementName PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..3471ba4
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (ClassElementName PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js
new file mode 100644
index 0000000..d38d1c3
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (private field, ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => false ? {} : arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js
new file mode 100644
index 0000000..ef2ed844
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template
+/*---
+description: Syntax error if `super()` used in class field (private field, ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => false ? {} : super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js
new file mode 100644
index 0000000..524839e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (private field, typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => typeof arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js
new file mode 100644
index 0000000..8e41221
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template
+/*---
+description: Syntax error if `super()` used in class field (private field, typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  #x = () => typeof super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..6b8dca8
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public, computed-property-names]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+class C {
+  static [x] = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js
new file mode 100644
index 0000000..7b4bae8
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js
@@ -0,0 +1,27 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static computed ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public, computed-property-names]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+var x = "string";
+class C {
+  static [x] = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js
new file mode 100644
index 0000000..42941cc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  static x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js
new file mode 100644
index 0000000..197045b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  static x = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js
new file mode 100644
index 0000000..77bd3af
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  static #x = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-private-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-static-private-init-err-contains-super.js
new file mode 100644
index 0000000..fc766f7
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-private-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static PrivateName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-private]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  static #x = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..5567c01
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (static string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  static 'x' = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..18ce9fc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (static string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public, class-static-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  static 'x' = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js
new file mode 100644
index 0000000..630a9e9
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  'x' = () => arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js
new file mode 100644
index 0000000..a024434
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template
+/*---
+description: Syntax error if `super()` used in class field (string literal ClassElementName)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  'x' = () => super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js
new file mode 100644
index 0000000..9663202
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => false ? {} : arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-ternary-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-ternary-init-err-contains-super.js
new file mode 100644
index 0000000..2fabefd
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-ternary-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template
+/*---
+description: Syntax error if `super()` used in class field (ternary expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => false ? {} : super();
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js b/JSTests/test262/test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js
new file mode 100644
index 0000000..284521f2
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-arguments.case
+// - src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template
+/*---
+description: Syntax error if `arguments` used in class field (typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if ContainsArguments of Initializer is true.
+
+    Static Semantics: ContainsArguments
+      IdentifierReference : Identifier
+
+      1. If the StringValue of Identifier is "arguments", return true.
+      ...
+      For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => typeof arguments;
+}
diff --git a/JSTests/test262/test/language/statements/class/elements/nested-typeof-init-err-contains-super.js b/JSTests/test262/test/language/statements/class/elements/nested-typeof-init-err-contains-super.js
new file mode 100644
index 0000000..a7d13cc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/elements/nested-typeof-init-err-contains-super.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/init-err-contains-super.case
+// - src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template
+/*---
+description: Syntax error if `super()` used in class field (typeof expression)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class, class-fields-public]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Static Semantics: Early Errors
+
+      FieldDefinition:
+        PropertyNameInitializeropt
+
+      - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true.
+
+---*/
+
+$DONOTEVALUATE();
+
+class C {
+  x = () => typeof super();
+}
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-AggregateError.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-AggregateError.js
new file mode 100644
index 0000000..04f4976
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-AggregateError.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/AggregateError.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubAggregateError() instanceof AggregateError (Subclass instanceof Heritage)
+features: [AggregateError]
+flags: [generated]
+---*/
+
+
+class Subclass extends AggregateError {}
+
+const sub = new Subclass([]);
+assert(sub instanceof Subclass);
+assert(sub instanceof AggregateError);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Array.js
new file mode 100644
index 0000000..dc1d577
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Array.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubArray() instanceof Array (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-ArrayBuffer.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-ArrayBuffer.js
new file mode 100644
index 0000000..178905b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-ArrayBuffer.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/ArrayBuffer.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubArrayBuffer() instanceof ArrayBuffer (Subclass instanceof Heritage)
+features: [TypedArray, ArrayBuffer]
+flags: [generated]
+---*/
+
+
+class Subclass extends ArrayBuffer {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof ArrayBuffer);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-BigInt64Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-BigInt64Array.js
new file mode 100644
index 0000000..d9e9bfd
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-BigInt64Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/BigInt64Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubBigInt64Array() instanceof BigInt64Array (Subclass instanceof Heritage)
+features: [TypedArray, BigInt]
+flags: [generated]
+---*/
+
+
+class Subclass extends BigInt64Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof BigInt64Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-BigUint64Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-BigUint64Array.js
new file mode 100644
index 0000000..9afc893
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-BigUint64Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/BigUint64Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubBigUint64Array() instanceof BigUint64Array (Subclass instanceof Heritage)
+features: [TypedArray, BigInt]
+flags: [generated]
+---*/
+
+
+class Subclass extends BigUint64Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof BigUint64Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Boolean.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Boolean.js
new file mode 100644
index 0000000..018cbf1
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Boolean.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Boolean.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubBoolean() instanceof Boolean (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends Boolean {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Boolean);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-DataView.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-DataView.js
new file mode 100644
index 0000000..eca5d12
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-DataView.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/DataView.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubDataView() instanceof DataView (Subclass instanceof Heritage)
+features: [TypedArray, DataView]
+flags: [generated]
+---*/
+
+
+class Subclass extends DataView {}
+
+const sub = new Subclass(new ArrayBuffer(1));
+assert(sub instanceof Subclass);
+assert(sub instanceof DataView);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Date.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Date.js
new file mode 100644
index 0000000..098ecf2
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Date.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Date.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubDate() instanceof Date (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends Date {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Date);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Error.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Error.js
new file mode 100644
index 0000000..62cbab9
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Error.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Error.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubError() instanceof Error (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends Error {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Error);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-EvalError.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-EvalError.js
new file mode 100644
index 0000000..67ce228
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-EvalError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/EvalError.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubEvalError() instanceof EvalError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends EvalError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof EvalError);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Float32Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Float32Array.js
new file mode 100644
index 0000000..07edce6
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Float32Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Float32Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubFloat32Array() instanceof Float32Array (Subclass instanceof Heritage)
+features: [TypedArray, Float32Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Float32Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Float32Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Float64Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Float64Array.js
new file mode 100644
index 0000000..581dbd7
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Float64Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Float64Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubFloat64Array() instanceof Float64Array (Subclass instanceof Heritage)
+features: [TypedArray, Float64Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Float64Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Float64Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Function.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Function.js
new file mode 100644
index 0000000..c474772
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Function.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Function.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubFunction() instanceof Function (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends Function {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Function);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int16Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int16Array.js
new file mode 100644
index 0000000..92b1de8
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int16Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Int16Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubInt16Array() instanceof Int16Array (Subclass instanceof Heritage)
+features: [TypedArray, Int16Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Int16Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Int16Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int32Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int32Array.js
new file mode 100644
index 0000000..e87645e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int32Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Int32Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubInt32Array() instanceof Int32Array (Subclass instanceof Heritage)
+features: [TypedArray, Int32Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Int32Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Int32Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int8Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int8Array.js
new file mode 100644
index 0000000..d7d1d0b
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Int8Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Int8Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubInt8Array() instanceof Int8Array (Subclass instanceof Heritage)
+features: [TypedArray, Int8Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Int8Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Int8Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Map.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Map.js
new file mode 100644
index 0000000..9ba5e4e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Map.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Map.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubMap() instanceof Map (Subclass instanceof Heritage)
+features: [Map]
+flags: [generated]
+---*/
+
+
+class Subclass extends Map {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Map);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Number.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Number.js
new file mode 100644
index 0000000..b8b9555
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Number.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Number.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubNumber() instanceof Number (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends Number {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Number);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Object.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Object.js
new file mode 100644
index 0000000..ab02825
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Object.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Object.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubObject() instanceof Object (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends Object {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Object);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Promise.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Promise.js
new file mode 100644
index 0000000..2cd8270
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Promise.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Promise.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubPromise() instanceof Promise (Subclass instanceof Heritage)
+features: [Promise]
+flags: [generated]
+---*/
+
+
+class Subclass extends Promise {}
+
+const sub = new Subclass(() => {});
+assert(sub instanceof Subclass);
+assert(sub instanceof Promise);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-RangeError.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-RangeError.js
new file mode 100644
index 0000000..fe2b279
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-RangeError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/RangeError.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubRangeError() instanceof RangeError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends RangeError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof RangeError);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-ReferenceError.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-ReferenceError.js
new file mode 100644
index 0000000..5635b3e
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-ReferenceError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/ReferenceError.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubReferenceError() instanceof ReferenceError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends ReferenceError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof ReferenceError);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-RegExp.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-RegExp.js
new file mode 100644
index 0000000..ab06263
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-RegExp.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/RegExp.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubRegExp() instanceof RegExp (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends RegExp {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof RegExp);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Set.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Set.js
new file mode 100644
index 0000000..c4801cc9
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Set.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Set.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubSet() instanceof Set (Subclass instanceof Heritage)
+features: [Set]
+flags: [generated]
+---*/
+
+
+class Subclass extends Set {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Set);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-SharedArrayBuffer.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-SharedArrayBuffer.js
new file mode 100644
index 0000000..e116e1c
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-SharedArrayBuffer.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/SharedArrayBuffer.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubSharedArrayBuffer() instanceof SharedArrayBuffer (Subclass instanceof Heritage)
+features: [SharedArrayBuffer]
+flags: [generated]
+---*/
+
+
+class Subclass extends SharedArrayBuffer {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof SharedArrayBuffer);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-String.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-String.js
new file mode 100644
index 0000000..b8cdd75
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-String.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/String.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubString() instanceof String (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends String {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof String);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-SyntaxError.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-SyntaxError.js
new file mode 100644
index 0000000..67f8fd9
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-SyntaxError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/SyntaxError.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubSyntaxError() instanceof SyntaxError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends SyntaxError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof SyntaxError);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-TypeError.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-TypeError.js
new file mode 100644
index 0000000..7a323ce
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-TypeError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/TypeError.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubTypeError() instanceof TypeError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends TypeError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof TypeError);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-URIError.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-URIError.js
new file mode 100644
index 0000000..9ea3632
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-URIError.js
@@ -0,0 +1,14 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/URIError.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubURIError() instanceof URIError (Subclass instanceof Heritage)
+flags: [generated]
+---*/
+
+
+class Subclass extends URIError {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof URIError);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint16Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint16Array.js
new file mode 100644
index 0000000..9e9fe5c
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint16Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint16Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubUint16Array() instanceof Uint16Array (Subclass instanceof Heritage)
+features: [TypedArray, Uint16Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Uint16Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint16Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint32Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint32Array.js
new file mode 100644
index 0000000..72cdfd6
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint32Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint32Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubUint32Array() instanceof Uint32Array (Subclass instanceof Heritage)
+features: [TypedArray, Uint32Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Uint32Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint32Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint8Array.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint8Array.js
new file mode 100644
index 0000000..2df0004
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint8Array.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint8Array.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubUint8Array() instanceof Uint8Array (Subclass instanceof Heritage)
+features: [TypedArray, Uint8Array]
+flags: [generated]
+---*/
+
+
+class Subclass extends Uint8Array {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint8Array);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint8ClampedArray.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint8ClampedArray.js
new file mode 100644
index 0000000..b00ab80
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-Uint8ClampedArray.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/Uint8ClampedArray.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubUint8ClampedArray() instanceof Uint8ClampedArray (Subclass instanceof Heritage)
+features: [TypedArray, Uint8ClampedArray]
+flags: [generated]
+---*/
+
+
+class Subclass extends Uint8ClampedArray {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof Uint8ClampedArray);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakMap.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakMap.js
new file mode 100644
index 0000000..0a861b7
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakMap.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/WeakMap.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubWeakMap() instanceof WeakMap (Subclass instanceof Heritage)
+features: [WeakMap]
+flags: [generated]
+---*/
+
+
+class Subclass extends WeakMap {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof WeakMap);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakRef.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakRef.js
new file mode 100644
index 0000000..8f949f1
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakRef.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/WeakRef.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubWeakRef() instanceof WeakRef (Subclass instanceof Heritage)
+features: [WeakRef]
+flags: [generated]
+---*/
+
+
+class Subclass extends WeakRef {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof WeakRef);
diff --git a/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakSet.js b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakSet.js
new file mode 100644
index 0000000..5008810
--- /dev/null
+++ b/JSTests/test262/test/language/statements/class/subclass-builtins/subclass-WeakSet.js
@@ -0,0 +1,15 @@
+// This file was procedurally generated from the following sources:
+// - src/subclass-builtins/WeakSet.case
+// - src/subclass-builtins/default/statement.template
+/*---
+description: new SubWeakSet() instanceof WeakSet (Subclass instanceof Heritage)
+features: [WeakSet]
+flags: [generated]
+---*/
+
+
+class Subclass extends WeakSet {}
+
+const sub = new Subclass();
+assert(sub instanceof Subclass);
+assert(sub instanceof WeakSet);
diff --git a/JSTests/test262/test/language/statements/switch/scope-lex-async-function.js b/JSTests/test262/test/language/statements/switch/scope-lex-async-function.js
new file mode 100644
index 0000000..2dab4d4
--- /dev/null
+++ b/JSTests/test262/test/language/statements/switch/scope-lex-async-function.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-switch-statement-runtime-semantics-evaluation
+description: Creation of new lexical environment (into `default` clause)
+info: |
+    1. Let exprRef be the result of evaluating Expression.
+    2. Let switchValue be ? GetValue(exprRef).
+    3. Let oldEnv be the running execution context's LexicalEnvironment.
+    4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
+    5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
+    6. Set the running execution context's LexicalEnvironment to blockEnv.
+    7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
+      argument switchValue.
+    [...]
+negative:
+  phase: runtime
+  type: ReferenceError
+---*/
+
+switch (0) { default: async function x() {} }
+x;
diff --git a/JSTests/test262/test/language/statements/switch/scope-lex-async-generator.js b/JSTests/test262/test/language/statements/switch/scope-lex-async-generator.js
new file mode 100644
index 0000000..e5c21e6
--- /dev/null
+++ b/JSTests/test262/test/language/statements/switch/scope-lex-async-generator.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-switch-statement-runtime-semantics-evaluation
+description: Creation of new lexical environment (into `default` clause)
+info: |
+    1. Let exprRef be the result of evaluating Expression.
+    2. Let switchValue be ? GetValue(exprRef).
+    3. Let oldEnv be the running execution context's LexicalEnvironment.
+    4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
+    5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
+    6. Set the running execution context's LexicalEnvironment to blockEnv.
+    7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
+      argument switchValue.
+    [...]
+negative:
+  phase: runtime
+  type: ReferenceError
+---*/
+
+switch (0) { default: async function * x() {} }
+x;
diff --git a/JSTests/test262/test/language/statements/switch/scope-lex-class.js b/JSTests/test262/test/language/statements/switch/scope-lex-class.js
new file mode 100644
index 0000000..9be8cdc
--- /dev/null
+++ b/JSTests/test262/test/language/statements/switch/scope-lex-class.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-switch-statement-runtime-semantics-evaluation
+description: Creation of new lexical environment (into `default` clause)
+info: |
+    1. Let exprRef be the result of evaluating Expression.
+    2. Let switchValue be ? GetValue(exprRef).
+    3. Let oldEnv be the running execution context's LexicalEnvironment.
+    4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
+    5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
+    6. Set the running execution context's LexicalEnvironment to blockEnv.
+    7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
+      argument switchValue.
+    [...]
+negative:
+  phase: runtime
+  type: ReferenceError
+---*/
+
+switch (0) { default: class x {} }
+x;
diff --git a/JSTests/test262/test/language/statements/switch/scope-lex-const.js b/JSTests/test262/test/language/statements/switch/scope-lex-const.js
new file mode 100644
index 0000000..c0746f0
--- /dev/null
+++ b/JSTests/test262/test/language/statements/switch/scope-lex-const.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-switch-statement-runtime-semantics-evaluation
+description: Creation of new lexical environment (into `default` clause)
+info: |
+    1. Let exprRef be the result of evaluating Expression.
+    2. Let switchValue be ? GetValue(exprRef).
+    3. Let oldEnv be the running execution context's LexicalEnvironment.
+    4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
+    5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
+    6. Set the running execution context's LexicalEnvironment to blockEnv.
+    7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
+      argument switchValue.
+    [...]
+negative:
+  phase: runtime
+  type: ReferenceError
+---*/
+
+switch (0) { default: const x = 1; }
+x;
diff --git a/JSTests/test262/test/language/statements/switch/scope-lex-generator.js b/JSTests/test262/test/language/statements/switch/scope-lex-generator.js
new file mode 100644
index 0000000..007ca9f
--- /dev/null
+++ b/JSTests/test262/test/language/statements/switch/scope-lex-generator.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-switch-statement-runtime-semantics-evaluation
+description: Creation of new lexical environment (into `default` clause)
+info: |
+    1. Let exprRef be the result of evaluating Expression.
+    2. Let switchValue be ? GetValue(exprRef).
+    3. Let oldEnv be the running execution context's LexicalEnvironment.
+    4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
+    5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
+    6. Set the running execution context's LexicalEnvironment to blockEnv.
+    7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
+      argument switchValue.
+    [...]
+negative:
+  phase: runtime
+  type: ReferenceError
+---*/
+
+switch (0) { default: function * x() {} }
+x;
diff --git a/JSTests/test262/test/language/statements/switch/scope-lex-let.js b/JSTests/test262/test/language/statements/switch/scope-lex-let.js
new file mode 100644
index 0000000..ac466d7
--- /dev/null
+++ b/JSTests/test262/test/language/statements/switch/scope-lex-let.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-switch-statement-runtime-semantics-evaluation
+description: Creation of new lexical environment (into `default` clause)
+info: |
+    1. Let exprRef be the result of evaluating Expression.
+    2. Let switchValue be ? GetValue(exprRef).
+    3. Let oldEnv be the running execution context's LexicalEnvironment.
+    4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
+    5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
+    6. Set the running execution context's LexicalEnvironment to blockEnv.
+    7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
+      argument switchValue.
+    [...]
+negative:
+  phase: runtime
+  type: ReferenceError
+---*/
+
+switch (0) { default: /*{ body }*/ }
+f;
diff --git a/JSTests/test262/test/language/statements/try/completion-values-fn-finally-abrupt.js b/JSTests/test262/test/language/statements/try/completion-values-fn-finally-abrupt.js
new file mode 100644
index 0000000..4b6b706
--- /dev/null
+++ b/JSTests/test262/test/language/statements/try/completion-values-fn-finally-abrupt.js
@@ -0,0 +1,79 @@
+// Copyright (C) 2020 Salesforce.com. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-try-statement-runtime-semantics-evaluation
+description: >
+  Returns the correct completion values of try-catch-finally(Abrupt) in functions
+info: |
+  TryStatement : try Block Catch Finally
+
+    Let B be the result of evaluating Block.
+    If B.[[Type]] is throw, let C be CatchClauseEvaluation of Catch with argument B.[[Value]].
+    Else, let C be B.
+    Let F be the result of evaluating Finally.
+    If F.[[Type]] is normal, set F to C.
+    Return Completion(UpdateEmpty(F, undefined)).
+---*/
+
+var fn, count = {};
+
+// 1: try Abrupt, catch Abrupt, finally Abrupt; Completion: finally
+count.catch = 0;
+count.finally = 0;
+fn = function() {
+  try {
+    throw 'try';
+  } catch(e) {
+    count.catch += 1;
+    throw 'catch';
+  } finally {
+    count.finally += 1;
+    throw new Test262Error('finally'); // If F.[[Type]] is normal, set F to C.
+  }
+  return 'wat';
+};
+
+assert.throws(Test262Error, fn, '1: try Abrupt, catch Abrupt, finally Abrupt; Completion: finally');
+assert.sameValue(count.catch, 1, '1: catch count');
+assert.sameValue(count.finally, 1, '1: finally count');
+
+// 2: try Abrupt, catch Return, finally Abrupt; Completion: finally
+count.catch = 0;
+count.finally = 0;
+fn = function() {
+  try {
+    throw 'try';
+  } catch(e) {
+    count.catch += 1;
+    return 'catch';
+  } finally {
+    count.finally += 1;
+    throw new Test262Error('finally'); // If F.[[Type]] is normal, set F to C.
+  }
+  return 'wat';
+};
+
+assert.throws(Test262Error, fn, '2: try Abrupt, catch Return, finally Abrupt; Completion: finally');
+assert.sameValue(count.catch, 1, '2: catch count');
+assert.sameValue(count.finally, 1, '2: fiinally count');
+
+// 3: try Return, catch Return, finally Abrupt; Completion: finally
+count.catch = 0;
+count.finally = 0;
+fn = function() {
+  try {
+    return 'try';
+  } catch(e) {
+    count.catch += 1;
+    return 'catch';
+  } finally {
+    count.finally += 1;
+    throw new Test262Error('finally'); // If F.[[Type]] is normal, set F to C.
+  }
+  return 'wat';
+};
+
+assert.throws(Test262Error, fn, '3: try Normal, catch Normal, finally Abrupt; Completion: finally');
+assert.sameValue(count.catch, 0, '3: catch count');
+assert.sameValue(count.finally, 1, '3: fiinally count');
diff --git a/JSTests/test262/test/language/statements/try/completion-values-fn-finally-normal.js b/JSTests/test262/test/language/statements/try/completion-values-fn-finally-normal.js
new file mode 100644
index 0000000..1de44fa
--- /dev/null
+++ b/JSTests/test262/test/language/statements/try/completion-values-fn-finally-normal.js
@@ -0,0 +1,80 @@
+// Copyright (C) 2020 Salesforce.com. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-try-statement-runtime-semantics-evaluation
+description: >
+  Returns the correct completion values of try-catch-finally(Normal) in functions
+info: |
+  TryStatement : try Block Catch Finally
+
+    Let B be the result of evaluating Block.
+    If B.[[Type]] is throw, let C be CatchClauseEvaluation of Catch with argument B.[[Value]].
+    Else, let C be B.
+    Let F be the result of evaluating Finally.
+    If F.[[Type]] is normal, set F to C.
+    Return Completion(UpdateEmpty(F, undefined)).
+---*/
+
+// 1: try Return, catch Return, finally Normal; Completion: try
+var count = {
+  catch: 0,
+  finally: 0
+};
+
+var fn = function() {
+  try {
+    return 'try';
+  } catch(e) {
+    count.catch += 1;
+    return 'catch';
+  } finally {
+    count.finally += 1;
+    'normal';
+  }
+  return 'wat';
+};
+
+assert.sameValue(fn(), 'try', '1: try Return, catch Return, finally Normal; Completion: try');
+assert.sameValue(count.catch, 0, '1');
+assert.sameValue(count.finally, 1, '1');
+
+// 2: try Abrupt, catch Return, finally Normal; Completion: catch
+count.catch = 0;
+count.finally = 0;
+fn = function() {
+  try {
+    throw 'try';
+  } catch(e) {
+    count.catch += 1;
+    return 'catch';
+  } finally {
+    count.finally += 1;
+    'finally';
+  }
+  return 'wat';
+};
+
+assert.sameValue(fn(), 'catch', '2: try Abrupt, catch Return, finally Normal; Completion: catch');
+assert.sameValue(count.catch, 1, '2: catch count');
+assert.sameValue(count.finally, 1, '2: fiinally count');
+
+// 3: try Abrupt, catch Abrupt, finally Normal; Completion: catch
+count.catch = 0;
+count.finally = 0;
+fn = function() {
+  try {
+    throw 'try';
+  } catch(e) {
+    count.catch += 1;
+    throw new Test262Error('catch');
+  } finally {
+    count.finally += 1;
+    'finally';
+  }
+  return 'wat';
+};
+
+assert.throws(Test262Error, fn, '3: try Abrupt, catch Abrupt, finally Normal; Completion: catch');
+assert.sameValue(count.catch, 1, '3: catch count');
+assert.sameValue(count.finally, 1, '3: fiinally count');
diff --git a/JSTests/test262/test/language/statements/try/completion-values-fn-finally-return.js b/JSTests/test262/test/language/statements/try/completion-values-fn-finally-return.js
new file mode 100644
index 0000000..5ef8039
--- /dev/null
+++ b/JSTests/test262/test/language/statements/try/completion-values-fn-finally-return.js
@@ -0,0 +1,80 @@
+// Copyright (C) 2020 Salesforce.com. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-try-statement-runtime-semantics-evaluation
+description: >
+  Returns the correct completion values of try-catch-finally(Return) in functions
+info: |
+  TryStatement : try Block Catch Finally
+
+    Let B be the result of evaluating Block.
+    If B.[[Type]] is throw, let C be CatchClauseEvaluation of Catch with argument B.[[Value]].
+    Else, let C be B.
+    Let F be the result of evaluating Finally.
+    If F.[[Type]] is normal, set F to C.
+    Return Completion(UpdateEmpty(F, undefined)).
+---*/
+
+// 1: try Return, catch Return, finally Return; Completion: finally
+var count = {
+  catch: 0,
+  finally: 0
+};
+
+var fn = function() {
+  try {
+    return 'try';
+  } catch(e) {
+    count.catch += 1;
+    return 'catch';
+  } finally {
+    count.finally += 1;
+    return 'finally';
+  }
+  return 'wat';
+};
+
+assert.sameValue(fn(), 'finally', '1: try Return, catch Return, finally Return; Completion: finally');
+assert.sameValue(count.catch, 0, '1');
+assert.sameValue(count.finally, 1, '1');
+
+// 2: try Abrupt, catch Return, finally Return; Completion: finally
+count.catch = 0;
+count.finally = 0;
+fn = function() {
+  try {
+    throw 'try';
+  } catch(e) {
+    count.catch += 1;
+    return 'catch';
+  } finally {
+    count.finally += 1;
+    return 'finally';
+  }
+  return 'wat';
+};
+
+assert.sameValue(fn(), 'finally', '2: try Abrupt, catch Return, finally Return; Completion: finally');
+assert.sameValue(count.catch, 1, '2: catch count');
+assert.sameValue(count.finally, 1, '2: fiinally count');
+
+// 3: try Abrupt, catch Abrupt, finally Normal; Completion: finally
+count.catch = 0;
+count.finally = 0;
+fn = function() {
+  try {
+    throw 'try';
+  } catch(e) {
+    count.catch += 1;
+    throw 'catch';
+  } finally {
+    count.finally += 1;
+    return 'finally';
+  }
+  return 'wat';
+};
+
+assert.sameValue(fn(), 'finally', fn, '3: try Abrupt, catch Abrupt, finally Normal; Completion: finally');
+assert.sameValue(count.catch, 1, '3: catch count');
+assert.sameValue(count.finally, 1, '3: fiinally count');
diff --git a/JSTests/test262/test/language/statements/try/completion-values.js b/JSTests/test262/test/language/statements/try/completion-values.js
new file mode 100644
index 0000000..d907478
--- /dev/null
+++ b/JSTests/test262/test/language/statements/try/completion-values.js
@@ -0,0 +1,65 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-try-statement-runtime-semantics-evaluation
+description: >
+  Direct eval try/catch/finally for completion value
+info: |
+  TryStatement : try Block Catch Finally
+
+    Let B be the result of evaluating Block.
+    If B.[[Type]] is throw, let C be CatchClauseEvaluation of Catch with argument B.[[Value]].
+    Else, let C be B.
+    Let F be the result of evaluating Finally.
+    If F.[[Type]] is normal, set F to C.
+    Return Completion(UpdateEmpty(F, undefined)).
+---*/
+
+assert.sameValue(
+  eval('99; do { -99; try { 39 } catch (e) { -1 } finally { 42; break; -2 }; } while (false);'),
+  42
+);
+assert.sameValue(
+  eval('99; do { -99; try { [].x.x } catch (e) { -1; } finally { 42; break; -3 }; } while (false);'),
+  42
+);
+assert.sameValue(
+  eval('99; do { -99; try { 39 } catch (e) { -1 } finally { break; -2 }; } while (false);'),
+  undefined
+);
+assert.sameValue(
+  eval('99; do { -99; try { [].x.x } catch (e) { -1; } finally { break; -3 }; } while (false);'),
+  undefined
+);
+assert.sameValue(
+  eval('99; do { -99; try { 39 } catch (e) { -1 } finally { 42; break; -3 }; -77 } while (false);'),
+  42
+);
+assert.sameValue(
+  eval('99; do { -99; try { [].x.x } catch (e) { -1; } finally { 42; break; -3 }; -77 } while (false);'),
+  42
+);
+assert.sameValue(
+  eval('99; do { -99; try { 39 } catch (e) { -1 } finally { break; -3 }; -77 } while (false);'),
+  undefined
+);
+assert.sameValue(
+  eval('99; do { -99; try { [].x.x } catch (e) { -1; } finally { break; -3 }; -77 } while (false);'),
+  undefined
+);
+assert.sameValue(
+  eval('99; do { -99; try { 39 } catch (e) { -1 } finally { 42; continue; -3 }; } while (false);'),
+  42
+);
+assert.sameValue(
+  eval('99; do { -99; try { [].x.x } catch (e) { -1; } finally { 42; continue; -3 }; } while (false);'),
+  42
+);
+assert.sameValue(
+  eval('99; do { -99; try { 39 } catch (e) { -1 } finally { 42; continue; -3 }; -77 } while (false);'),
+  42
+);
+assert.sameValue(
+  eval('99; do { -99; try { [].x.x } catch (e) { -1 } finally { 42; continue; -3 }; -77 } while (false);'),
+  42
+);
diff --git a/JSTests/test262/test262-Revision.txt b/JSTests/test262/test262-Revision.txt
index 59c59c1..5257a94 100644
--- a/JSTests/test262/test262-Revision.txt
+++ b/JSTests/test262/test262-Revision.txt
@@ -1,2 +1,2 @@
 test262 remote url: git@github.com:tc39/test262.git
-test262 revision: 323905b70e644d90faa957235f8ac59eac4ba8ba
+test262 revision: 333da4198a24a80044c5a2202c761162c5fb5aee