diff --git a/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..27551d328be9e9373422f860d7e264e466293634
--- /dev/null
+++ b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+class C {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..6a77ba9f22fa9377e035dc4d2d4625d22ce33a85
--- /dev/null
+++ b/src/class-fields/initializer-eval-arguments/cls-decl-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+class C {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..656a7c81a0d2c38ddbdf7c0f2595072994bce4fc
--- /dev/null
+++ b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var C = class {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..4127bd1a86a0633856f420b78b75013517bbd016
--- /dev/null
+++ b/src/class-fields/initializer-eval-arguments/cls-expr-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var C = class {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..14cdf6b266348cacec8f227062916be4a25ef187
--- /dev/null
+++ b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-eval.template
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+class C {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x, undefined);
diff --git a/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..bb7eb64337576a3f72bf78a5d832d28fdbf0b01c
--- /dev/null
+++ b/src/class-fields/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+class C {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..3efe9eb6ee5281f1ac693d5107b0b65a0df46690
--- /dev/null
+++ b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-eval.template
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var C = class {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+var c = new C();
+
+assert.sameValue(executed, true);
+assert.sameValue(c.x, undefined);
diff --git a/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..032852f7b3d2c432663fb229e579539a7077b1b5
--- /dev/null
+++ b/src/class-fields/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var C = class {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..2b52bf407e43bc25a98b5ee7ab0e0cdb9d5a659a
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-derived-cls-direct-
+name: direct eval
+---*/
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..20c2d861568222c8c5efa624f0a346c619aaa219
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-derived-cls-indirect-
+name: indirect eval
+---*/
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..d1953958ec98e8b9d5972d56877e2687a0601c40
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-derived-cls-direct-
+name: direct eval
+---*/
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..fef18bb5f1362af75bcef266ed0153edeeaf0542
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-derived-cls-indirect-
+name: indirect eval
+---*/
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..250b36d4c1fe3ae7e9e3bc16b7f9f8c658d321cf
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-derived-cls-direct-
+name: direct eval
+---*/
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..20c2d861568222c8c5efa624f0a346c619aaa219
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-derived-cls-indirect-
+name: indirect eval
+---*/
+
+var executed = false;
+class A {}
+class C extends A {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..b11847616d9d84efcbd346d43366f9b588dcfd16
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-derived-cls-direct-
+name: direct eval
+---*/
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; /*{ initializer }*/;');
+};
+
+new C();
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..9a0aec624febf94820ca31d5289effa0b628bdbd
--- /dev/null
+++ b/src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-derived-cls-indirect-
+name: indirect eval
+---*/
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+};
+
+assert.throws(SyntaxError, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval-super/cls-decl-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..f536ad4266107110b13499106ef0e27cebcd8a10
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-decl-private-fields-eval.template
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-derived-cls-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+class A = {}
+class C extends A {
+  #x = eval('executed = true; /*{ initializer }*/;';
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super/cls-decl-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..1b4adf525cc4e3f3162218e59e308c1034bd3815
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-decl-private-fields-indirect-eval.template
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-derived-cls-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+class A = {}
+
+var executed = false;
+class C extends A {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;';
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval-super/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval-super/cls-expr-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..c55f04ad2ed05c1a6741bac54b931461be581a7f
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-expr-private-fields-eval.template
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-derived-cls-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = eval('executed = true; /*{ initializer }*/;';
+};
+
+assert.throws(/*{ earlyerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval-super/cls-expr-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..5f22b7ac6fe044f14b00a0c19c4ae30637830cb9
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-expr-private-fields-indirect-eval.template
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-derived-cls-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var A = class {}
+var C = class extends A {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;';
+};
+
+assert.throws(/*{ executionerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval/cls-decl-private-fields-eval.template b/src/class-fields/initializer-eval/cls-decl-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..27551d328be9e9373422f860d7e264e466293634
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-decl-private-fields-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+class C {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval/cls-decl-private-fields-indirect-eval.template b/src/class-fields/initializer-eval/cls-decl-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..6a77ba9f22fa9377e035dc4d2d4625d22ce33a85
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-decl-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-private-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+class C {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval/cls-expr-private-fields-eval.template b/src/class-fields/initializer-eval/cls-expr-private-fields-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..656a7c81a0d2c38ddbdf7c0f2595072994bce4fc
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-expr-private-fields-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-direct-
+name: direct eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var C = class {
+  #x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval/cls-expr-private-fields-indirect-eval.template b/src/class-fields/initializer-eval/cls-expr-private-fields-indirect-eval.template
new file mode 100644
index 0000000000000000000000000000000000000000..ade5a5749137d9009182705b8c7fc6a8aa9bd2b5
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-expr-private-fields-indirect-eval.template
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-private-indirect-
+name: indirect eval
+features: [class, class-fields-private]
+---*/
+
+var executed = false;
+var C = class {
+  #x = (0, eval)('executed = true; /*{ initializer }*/;');
+};
+
+assert.throws(/*{ executionerror }*/, function() {
+  new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/static-private-names.case b/src/class-fields/static-private-fields.case
similarity index 100%
rename from src/class-fields/static-private-names.case
rename to src/class-fields/static-private-fields.case
diff --git a/src/class-fields/static-private-methods.case b/src/class-fields/static-private-methods.case
new file mode 100644
index 0000000000000000000000000000000000000000..9675c9d8afa20feaacfffcd6827b11eef21e6f78
--- /dev/null
+++ b/src/class-fields/static-private-methods.case
@@ -0,0 +1,59 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: literal private names
+info: |
+  ClassElement:
+    ...
+    static FieldDefinition ;
+
+  FieldDefinition:
+    ClassElementName Initializer_opt
+
+  ClassElementName:
+    PrivateName
+
+  PrivateName:
+    # IdentifierName
+
+template: default
+features: [class-static-methods-private]
+---*/
+
+//- fields
+static #xVal; static #yVal
+//- privateinspectionfunctions
+  static #x(value) {
+    this.#xVal = value;
+    return this.#xVal;
+  }
+  static #y(value) {
+    this.#y = value;
+    return this.#yVal;
+  }
+  static x() {
+    return this.#x(42);
+  }
+  static y() {
+    return this.#y(43);
+  }
+
+//- assertions
+
+// Test the private methods do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#xVal"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#xVal"), false, "test 2");
+assert.sameValue(Object.hasOwnProperty.call(c, "#xVal"), false, "test 3");
+
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#yVal"), false, "test 4");
+assert.sameValue(Object.hasOwnProperty.call(C, "#yVal"), false, "test 5");
+assert.sameValue(Object.hasOwnProperty.call(c, "#yVal"), false, "test 6");
+
+// Test if private fields can be sucessfully accessed and set to value
+assert.sameValue(C.x(), 42, "test 7");
+assert.sameValue(C.y(), 43, "test 8");
+
+// Test the private fields do not appear as properties before after set to value
+assert.sameValue(Object.hasOwnProperty.call(C, "#xVal"), false, "test 9");
+assert.sameValue(Object.hasOwnProperty.call(C, "#yVal"), false, "test 10");