From 90e8859cddadde9ca94dceeb289768c4384b67be Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 30 Jul 2018 17:15:03 -0400
Subject: [PATCH] Class Fields: Updating frontmatter

---
 .../class/privatefieldadd-typeerror.js        |  5 +--
 .../class/privatefieldget-success-1.js        | 12 +++----
 .../class/privatefieldget-success-2.js        | 12 +++----
 .../class/privatefieldget-success-3.js        | 12 +++----
 .../class/privatefieldget-success-4.js        | 12 +++----
 .../class/privatefieldget-success-5.js        | 12 +++----
 .../class/privatefieldget-typeerror-1.js      | 12 +++----
 .../class/privatefieldget-typeerror-2.js      | 12 +++----
 .../class/privatefieldget-typeerror-3.js      | 12 +++----
 .../class/privatefieldset-typeerror-1.js      |  2 +-
 .../class/privatefieldset-typeerror-2.js      |  2 +-
 .../class/privatefieldset-typeerror-3.js      |  2 +-
 .../class/privatefieldset-typeerror-4.js      |  2 +-
 .../class/privatefieldset-typeerror-5.js      |  2 +-
 ...privatename-not-valid-earlyerr-script-1.js |  8 ++---
 ...privatename-not-valid-earlyerr-script-2.js |  8 ++---
 ...privatename-not-valid-earlyerr-script-3.js |  8 ++---
 ...privatename-not-valid-earlyerr-script-4.js |  8 ++---
 ...privatename-not-valid-earlyerr-script-5.js |  8 ++---
 ...privatename-not-valid-earlyerr-script-6.js |  8 ++---
 ...privatename-not-valid-earlyerr-script-7.js |  8 ++---
 ...privatename-not-valid-earlyerr-script-8.js |  8 ++---
 .../privatename-not-valid-eval-earlyerr-1.js  | 13 +++----
 .../privatename-not-valid-eval-earlyerr-2.js  | 13 +++----
 .../privatename-not-valid-eval-earlyerr-3.js  | 13 +++----
 .../privatename-not-valid-eval-earlyerr-4.js  | 13 +++----
 .../privatename-not-valid-eval-earlyerr-5.js  | 13 +++----
 .../privatename-not-valid-eval-earlyerr-6.js  | 13 +++----
 .../privatename-not-valid-eval-earlyerr-7.js  |  7 ++--
 .../privatename-not-valid-eval-earlyerr-8.js  |  7 ++--
 .../class/privatename-valid-no-earlyerr.js    | 13 +++----
 ...atic-classelementname-abrupt-completion.js | 25 +++++--------
 ...efinition-initializer-abrupt-completion.js | 35 +++++++------------
 33 files changed, 145 insertions(+), 195 deletions(-)

diff --git a/test/language/statements/class/privatefieldadd-typeerror.js b/test/language/statements/class/privatefieldadd-typeerror.js
index a22d0536c7..e127521932 100644
--- a/test/language/statements/class/privatefieldadd-typeerror.js
+++ b/test/language/statements/class/privatefieldadd-typeerror.js
@@ -19,8 +19,8 @@ info: |
     2. Assert: Assert constructor is an ECMAScript function object.
     3. Let fieldRecords be the value of constructor's [[Fields]] internal slot.
     4. For each item fieldRecord in order from fieldRecords,
-      a. If fieldRecord.[[static]] is false, then
-        i. Perform ? DefineField(O, fieldRecord).
+      a. Perform ? DefineField(O, fieldRecord).
+    5. Return.
 
   DefineField(receiver, fieldRecord)
     ...
@@ -32,6 +32,7 @@ info: |
     2. If O is not an object, throw a TypeError exception.
     3. Let entry be PrivateFieldFind(P, O).
     4. If entry is not empty, throw a TypeError exception.
+    ...
 
 features: [class, class-fields-private]
 ---*/
diff --git a/test/language/statements/class/privatefieldget-success-1.js b/test/language/statements/class/privatefieldget-success-1.js
index 834d6c876a..385ff09c9f 100644
--- a/test/language/statements/class/privatefieldget-success-1.js
+++ b/test/language/statements/class/privatefieldget-success-1.js
@@ -8,12 +8,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldget-success-2.js b/test/language/statements/class/privatefieldget-success-2.js
index a404985e22..d5e091012c 100644
--- a/test/language/statements/class/privatefieldget-success-2.js
+++ b/test/language/statements/class/privatefieldget-success-2.js
@@ -8,12 +8,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldget-success-3.js b/test/language/statements/class/privatefieldget-success-3.js
index 9b6104eabc..0dd43e38a9 100644
--- a/test/language/statements/class/privatefieldget-success-3.js
+++ b/test/language/statements/class/privatefieldget-success-3.js
@@ -8,12 +8,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldget-success-4.js b/test/language/statements/class/privatefieldget-success-4.js
index b6c296afb3..7466fb4db2 100644
--- a/test/language/statements/class/privatefieldget-success-4.js
+++ b/test/language/statements/class/privatefieldget-success-4.js
@@ -8,12 +8,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldget-success-5.js b/test/language/statements/class/privatefieldget-success-5.js
index 64c0ad5511..1dc9700e8e 100644
--- a/test/language/statements/class/privatefieldget-success-5.js
+++ b/test/language/statements/class/privatefieldget-success-5.js
@@ -8,12 +8,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldget-typeerror-1.js b/test/language/statements/class/privatefieldget-typeerror-1.js
index d90c45efae..9cc17bf3d5 100644
--- a/test/language/statements/class/privatefieldget-typeerror-1.js
+++ b/test/language/statements/class/privatefieldget-typeerror-1.js
@@ -8,12 +8,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldget-typeerror-2.js b/test/language/statements/class/privatefieldget-typeerror-2.js
index 3594f41021..a06439748b 100644
--- a/test/language/statements/class/privatefieldget-typeerror-2.js
+++ b/test/language/statements/class/privatefieldget-typeerror-2.js
@@ -8,12 +8,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldget-typeerror-3.js b/test/language/statements/class/privatefieldget-typeerror-3.js
index f9669a6610..542e38097c 100644
--- a/test/language/statements/class/privatefieldget-typeerror-3.js
+++ b/test/language/statements/class/privatefieldget-typeerror-3.js
@@ -9,12 +9,12 @@ info: |
   GetValue ( V )
     ...
     5. If IsPropertyReference(V), then
-        ...
-        b. If IsPrivateReference(V), then
-            i. Let env be the running execution context's PrivateNameEnvironment.
-            ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
-            iii. Assert: field is a Private Name.
-            iv. Return ? PrivateFieldGet(field, base).
+      ...
+      b. If IsPrivateReference(V), then
+        i. Let env be the running execution context's PrivateNameEnvironment.
+        ii. Let field be ? ResolveBinding(GetReferencedName(V), env).
+        iii. Assert: field is a Private Name.
+        iv. Return ? PrivateFieldGet(field, base).
 
   PrivateFieldGet (P, O )
     1. Assert: P is a Private Name value.
diff --git a/test/language/statements/class/privatefieldset-typeerror-1.js b/test/language/statements/class/privatefieldset-typeerror-1.js
index 8ad4492c06..01fc83c2db 100644
--- a/test/language/statements/class/privatefieldset-typeerror-1.js
+++ b/test/language/statements/class/privatefieldset-typeerror-1.js
@@ -7,7 +7,7 @@ esid: sec-putvalue
 info: |
   PutValue ( V, W )
     ...
-    5. Else if IsPropertyReference(V), then
+    6. Else if IsPropertyReference(V), then
       ...
       b. If IsPrivateReference(V), then
         i. Let env be the running execution context's PrivateNameEnvironment.
diff --git a/test/language/statements/class/privatefieldset-typeerror-2.js b/test/language/statements/class/privatefieldset-typeerror-2.js
index a4054aaf68..e64451445b 100644
--- a/test/language/statements/class/privatefieldset-typeerror-2.js
+++ b/test/language/statements/class/privatefieldset-typeerror-2.js
@@ -7,7 +7,7 @@ esid: sec-putvalue
 info: |
   PutValue ( V, W )
     ...
-    5. Else if IsPropertyReference(V), then
+    6. Else if IsPropertyReference(V), then
       ...
       b. If IsPrivateReference(V), then
         i. Let env be the running execution context's PrivateNameEnvironment.
diff --git a/test/language/statements/class/privatefieldset-typeerror-3.js b/test/language/statements/class/privatefieldset-typeerror-3.js
index 3f64d3eb74..656e8e3490 100644
--- a/test/language/statements/class/privatefieldset-typeerror-3.js
+++ b/test/language/statements/class/privatefieldset-typeerror-3.js
@@ -8,7 +8,7 @@ esid: sec-putvalue
 info: |
   PutValue ( V, W )
     ...
-    5. Else if IsPropertyReference(V), then
+    6. Else if IsPropertyReference(V), then
       ...
       b. If IsPrivateReference(V), then
         i. Let env be the running execution context's PrivateNameEnvironment.
diff --git a/test/language/statements/class/privatefieldset-typeerror-4.js b/test/language/statements/class/privatefieldset-typeerror-4.js
index 0520bff461..20eff276e5 100644
--- a/test/language/statements/class/privatefieldset-typeerror-4.js
+++ b/test/language/statements/class/privatefieldset-typeerror-4.js
@@ -7,7 +7,7 @@ esid: sec-putvalue
 info: |
   PutValue ( V, W )
     ...
-    5. Else if IsPropertyReference(V), then
+    6. Else if IsPropertyReference(V), then
       ...
       b. If IsPrivateReference(V), then
         i. Let env be the running execution context's PrivateNameEnvironment.
diff --git a/test/language/statements/class/privatefieldset-typeerror-5.js b/test/language/statements/class/privatefieldset-typeerror-5.js
index 5cc2402896..e8703f5c69 100644
--- a/test/language/statements/class/privatefieldset-typeerror-5.js
+++ b/test/language/statements/class/privatefieldset-typeerror-5.js
@@ -7,7 +7,7 @@ esid: sec-putvalue
 info: |
   PutValue ( V, W )
     ...
-    5. Else if IsPropertyReference(V), then
+    6. Else if IsPropertyReference(V), then
       ...
       b. If IsPrivateReference(V), then
         i. Let env be the running execution context's PrivateNameEnvironment.
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js
index a617f44b9e..f1cb3d47c6 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-1.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename in constructor without being declared in class fields
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js
index a2583a3987..5a4b1c125f 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-2.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename in function in class without declaring in field
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js
index 18e0feaa41..67f7aaf50e 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-3.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename that has not been declared in class.
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private, class-fields-public]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js
index 728b669ae0..1c7553efa3 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-4.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename that has not been declared in class.
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js
index e5ed92bcee..f9a9bd414c 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-5.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename outside of class
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js
index 5901158cfa..f1a4f8ca86 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-6.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename outside of class.
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js
index 185ddb54df..58c14e57dc 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-7.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename on object, outside of class.
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class-fields-private]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js b/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js
index 6b6e963748..c134b47409 100644
--- a/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js
+++ b/test/language/statements/class/privatename-not-valid-earlyerr-script-8.js
@@ -5,10 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename on object, outside of class.
 info: |
   Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class-fields-private]
 negative:
   phase: parse
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js
index 44a3f94835..0da3536a98 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-1.js
@@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename in constructor without being declared in class fields
 info: |
   Static Semantics: Early Errors
-  Script : ScriptBody
-    1. Let names be an empty List.
-    2. If Script is parsed directly from PerformEval,
-        a. Let env be the running execution context's PrivateNameEnvironment.
-        b. Repeat while env is not null,
-            i. For each binding named N in env,
-                1. If names does not contain N, append N to names.
-            ii. Let env be env's outer environment reference.
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 ---*/
 
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js
index 69ea3b5432..434e1345c4 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-2.js
@@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename in function in class without declaring in field
 info: |
   Static Semantics: Early Errors
-  Script : ScriptBody
-    1. Let names be an empty List.
-    2. If Script is parsed directly from PerformEval,
-        a. Let env be the running execution context's PrivateNameEnvironment.
-        b. Repeat while env is not null,
-            i. For each binding named N in env,
-                1. If names does not contain N, append N to names.
-            ii. Let env be env's outer environment reference.
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 ---*/
 
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js
index be2283ccb2..dbfeef0d3a 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-3.js
@@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename that has not been declared in class.
 info: |
   Static Semantics: Early Errors
-  Script : ScriptBody
-    1. Let names be an empty List.
-    2. If Script is parsed directly from PerformEval,
-        a. Let env be the running execution context's PrivateNameEnvironment.
-        b. Repeat while env is not null,
-            i. For each binding named N in env,
-                1. If names does not contain N, append N to names.
-            ii. Let env be env's outer environment reference.
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private, class-fields-public]
 ---*/
 
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js
index 78395d58da..513999ebc3 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-4.js
@@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename that has not been declared in class.
 info: |
   Static Semantics: Early Errors
-  Script : ScriptBody
-    1. Let names be an empty List.
-    2. If Script is parsed directly from PerformEval,
-        a. Let env be the running execution context's PrivateNameEnvironment.
-        b. Repeat while env is not null,
-            i. For each binding named N in env,
-                1. If names does not contain N, append N to names.
-            ii. Let env be env's outer environment reference.
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 ---*/
 
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js
index 5572340e67..b3a7bf5a17 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-5.js
@@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename outside of class
 info: |
   Static Semantics: Early Errors
-  Script : ScriptBody
-    1. Let names be an empty List.
-    2. If Script is parsed directly from PerformEval,
-        a. Let env be the running execution context's PrivateNameEnvironment.
-        b. Repeat while env is not null,
-            i. For each binding named N in env,
-                1. If names does not contain N, append N to names.
-            ii. Let env be env's outer environment reference.
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 ---*/
 
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js
index cb50fa1912..1026d9271d 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-6.js
@@ -5,15 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename outside of class.
 info: |
   Static Semantics: Early Errors
-  Script : ScriptBody
-    1. Let names be an empty List.
-    2. If Script is parsed directly from PerformEval,
-        a. Let env be the running execution context's PrivateNameEnvironment.
-        b. Repeat while env is not null,
-            i. For each binding named N in env,
-                1. If names does not contain N, append N to names.
-            ii. Let env be env's outer environment reference.
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class, class-fields-private]
 ---*/
 
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js
index 972a395c8e..a5dee6c068 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-7.js
@@ -5,9 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename on object, outside of class.
 info: |
   Static Semantics: Early Errors
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class-fields-private]
 ---*/
 
diff --git a/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js b/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js
index b433d6a6d3..fc1ca835e2 100644
--- a/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js
+++ b/test/language/statements/class/privatename-not-valid-eval-earlyerr-8.js
@@ -5,9 +5,10 @@ esid: sec-scripts-static-semantics-early-errors
 description: Early error when referencing privatename on object, outside of class.
 info: |
   Static Semantics: Early Errors
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
+    ScriptBody : StatementList
+
+    It is a Syntax Error if AllPrivateNamesValid of StatementList with an empty List as an argument is false unless the source code is eval code that is being processed by a direct eval.
+
 features: [class-fields-private]
 ---*/
 
diff --git a/test/language/statements/class/privatename-valid-no-earlyerr.js b/test/language/statements/class/privatename-valid-no-earlyerr.js
index 85efc04213..7d3f1f52b7 100644
--- a/test/language/statements/class/privatename-valid-no-earlyerr.js
+++ b/test/language/statements/class/privatename-valid-no-earlyerr.js
@@ -1,16 +1,11 @@
 // Copyright (C) 2017 Valerie Young. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-scripts-static-semantics-early-errors
+esid: sec-all-private-names-valid
 description: Referencing privatename in class within class does not error.
 info: |
-  Static Semantics: Early Errors
-    Script : ScriptBody
-    1. Let names be an empty List.
-      ...
-    3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
-
   Static Semantics: AllPrivateNamesValid
+
   AllPrivateNamesValid is an abstract operation which takes names as an argument.
 
     MemberExpression : MemberExpression . PrivateName
@@ -21,9 +16,9 @@ info: |
       1. If StringValue of PrivateName is in names, return true.
       2. Return false.
 
-    ClassBody:ClassElementList
+    ClassBody : ClassElementList
       1. Let newNames be the concatenation of names with PrivateBoundNames of ClassBody.
-      2.Return AllPrivateNamesValid of ClassElementList with the argument newNames.
+      2. Return AllPrivateNamesValid of ClassElementList with the argument newNames.
 
     For all other grammatical productions, recurse on subexpressions/substatements, passing in the names of the caller. If all pieces return true, then return true. If any returns false, return false.
 
diff --git a/test/language/statements/class/static-classelementname-abrupt-completion.js b/test/language/statements/class/static-classelementname-abrupt-completion.js
index d86d1f30d8..e173f44330 100644
--- a/test/language/statements/class/static-classelementname-abrupt-completion.js
+++ b/test/language/statements/class/static-classelementname-abrupt-completion.js
@@ -9,26 +9,17 @@ info: |
   ...
   27. For each ClassElement e in order from elements
     a. If IsStatic of e is false, then
-        i. Let fields be the result of performing ClassElementEvaluation for e with arguments proto and false.
+      i. Let fields be the result of performing ClassElementEvaluation
+          for e with arguments proto and false.
     b. Else,
-        i. Let fields be the result of performing ClassElementEvaluation for e with arguments F and false.
+      i. Let fields be the result of performing ClassElementEvaluation
+          for e with arguments F and false.
     c. If fields is an abrupt completion, then
-        i. Set the running execution context's LexicalEnvironment to lex.
-        ii. Set the running execution context's PrivateNameEnvironment to outerPrivateEnvironment.
-        iii. Return Completion(status).
+      i. Set the running execution context's LexicalEnvironment to lex.
+      ii. Set the running execution context's PrivateNameEnvironment to outerPrivateEnvironment.
+      iii. Return Completion(status).
 
-  Runtime Semantics: ClassElementEvaluation
-  ...
-    ClassElement : static FieldDefinition ;
-      1. Return ClassFieldDefinitionEvaluation of FieldDefinition with parameter true and object.
-
-  Runtime Semantics: ClassFieldDefinitionEvaluation
-  With parameters isStatic and homeObject.
-    FieldDefinition : ClassElementNameInitializer
-      1. Let fieldName be the result of evaluating ClassElementName.
-      2. ReturnIfAbrupt(fieldName).
-
-features: [class-fields]
+features: [class-static-fields-public]
 ---*/
 
 function f() {
diff --git a/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js b/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js
index 226586d8b7..616acd38c2 100644
--- a/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js
+++ b/test/language/statements/class/static-fielddefinition-initializer-abrupt-completion.js
@@ -7,28 +7,19 @@ esid: runtime-semantics-class-definition-evaluation
 info: |
   Runtime Semantics: ClassDefinitionEvaluation
   ...
-  33. Let result be InitializeStaticFields(F).
-  34. If result is an abrupt completion, then
-    a. Set the running execution context's LexicalEnvironment to lex.
-    b. Return Completion(result).
+  27. For each ClassElement e in order from elements
+    a. If IsStatic of e is false, then
+      i. Let fields be the result of performing ClassElementEvaluation
+          for e with arguments proto and false.
+    b. Else,
+      i. Let fields be the result of performing ClassElementEvaluation
+          for e with arguments F and false.
+    c. If fields is an abrupt completion, then
+      i. Set the running execution context's LexicalEnvironment to lex.
+      ii. Set the running execution context's PrivateNameEnvironment to outerPrivateEnvironment.
+      iii. Return Completion(status).
 
-  InitializeStaticFields(F)
-    1. Assert: Type(F) is Object.
-    2. Assert: F is an ECMAScript function object.
-    3. Let fieldRecords be the value of F's [[Fields]] internal slot.
-    4. For each item fieldRecord in order from fieldRecords,
-      a. If fieldRecord.[[static]] is true, then
-        i. Perform ? DefineField(F, fieldRecord).
-
-  DefineField(receiver, fieldRecord)
-    1. Assert: Type(receiver) is Object.
-    2. Assert: fieldRecord is a Record as created by ClassFieldDefinitionEvaluation.
-    3. Let fieldName be fieldRecord.[[Name]].
-    4. Let initializer be fieldRecord.[[Initializer]].
-    5. If initializer is not empty, then
-        a. Let initValue be ? Call(initializer, receiver).
-
-features: [class-fields]
+features: [class-static-fields-public]
 ---*/
 
 function f() {
@@ -39,4 +30,4 @@ assert.throws(Test262Error, function() {
   class C {
     static x = f();
   }
-})
+});
-- 
GitLab