From 214e9969d5d1cb8c019f40d56bb877d28740e0a7 Mon Sep 17 00:00:00 2001
From: Valerie R Young <valerie@bocoup.com>
Date: Mon, 30 Oct 2017 00:34:05 -0400
Subject: [PATCH] class fields: added tests for privatename production

---
 ...ls-decl-after-same-line-async-gen.template |  1 +
 ...decl-after-same-line-async-method.template |  1 +
 .../cls-decl-after-same-line-gen.template     |  1 +
 .../cls-decl-after-same-line-method.template  |  1 +
 ...-after-same-line-static-async-gen.template |  1 +
 ...ter-same-line-static-async-method.template |  1 +
 ...s-decl-after-same-line-static-gen.template |  1 +
 ...ecl-after-same-line-static-method.template |  1 +
 .../cls-decl-multiple-definitions.template    |  1 +
 ...decl-multiple-stacked-definitions.template |  1 +
 .../cls-decl-new-no-sc-line-method.template   |  1 +
 .../cls-decl-new-sc-line-generator.template   |  1 +
 .../cls-decl-new-sc-line-method.template      |  1 +
 .../cls-decl-regular-definitions.template     |  1 +
 .../cls-decl-same-line-generator.template     |  1 +
 .../cls-decl-same-line-method.template        |  1 +
 .../default/cls-decl-wrapped-in-sc.template   |  1 +
 ...ls-expr-after-same-line-async-gen.template |  1 +
 ...expr-after-same-line-async-method.template |  1 +
 .../cls-expr-after-same-line-gen.template     |  1 +
 .../cls-expr-after-same-line-method.template  |  1 +
 ...-after-same-line-static-async-gen.template |  1 +
 ...ter-same-line-static-async-method.template |  1 +
 ...s-expr-after-same-line-static-gen.template |  1 +
 ...xpr-after-same-line-static-method.template |  1 +
 .../cls-expr-multiple-definitions.template    |  1 +
 ...expr-multiple-stacked-definitions.template |  1 +
 .../cls-expr-new-no-sc-line-method.template   |  1 +
 .../cls-expr-new-sc-line-generator.template   |  1 +
 .../cls-expr-new-sc-line-method.template      |  1 +
 .../cls-expr-regular-definitions.template     |  1 +
 .../cls-expr-same-line-generator.template     |  1 +
 .../cls-expr-same-line-method.template        |  1 +
 .../default/cls-expr-wrapped-in-sc.template   |  1 +
 src/class-fields/private-names.case           | 50 +++++++++++++++++++
 src/class-fields/static-private-names.case    | 50 +++++++++++++++++++
 36 files changed, 134 insertions(+)
 create mode 100644 src/class-fields/private-names.case
 create mode 100644 src/class-fields/static-private-names.case

diff --git a/src/class-fields/default/cls-decl-after-same-line-async-gen.template b/src/class-fields/default/cls-decl-after-same-line-async-gen.template
index 0e8b27edce..2b7019564c 100644
--- a/src/class-fields/default/cls-decl-after-same-line-async-gen.template
+++ b/src/class-fields/default/cls-decl-after-same-line-async-gen.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 class C {
   async *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-after-same-line-async-method.template b/src/class-fields/default/cls-decl-after-same-line-async-method.template
index 531c7f835b..4834b53fc5 100644
--- a/src/class-fields/default/cls-decl-after-same-line-async-method.template
+++ b/src/class-fields/default/cls-decl-after-same-line-async-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 class C {
   async m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-after-same-line-gen.template b/src/class-fields/default/cls-decl-after-same-line-gen.template
index 876e0d8c5a..635294c5df 100644
--- a/src/class-fields/default/cls-decl-after-same-line-gen.template
+++ b/src/class-fields/default/cls-decl-after-same-line-gen.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 class C {
   *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-after-same-line-method.template b/src/class-fields/default/cls-decl-after-same-line-method.template
index 5e8dffcbd2..3ad70efd6f 100644
--- a/src/class-fields/default/cls-decl-after-same-line-method.template
+++ b/src/class-fields/default/cls-decl-after-same-line-method.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 class C {
   m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template b/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template
index 223bfd3455..60176379ae 100644
--- a/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template
+++ b/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 class C {
   static async *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-after-same-line-static-async-method.template b/src/class-fields/default/cls-decl-after-same-line-static-async-method.template
index 70e6085c1d..360df4a7f9 100644
--- a/src/class-fields/default/cls-decl-after-same-line-static-async-method.template
+++ b/src/class-fields/default/cls-decl-after-same-line-static-async-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 class C {
   static async m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-after-same-line-static-gen.template b/src/class-fields/default/cls-decl-after-same-line-static-gen.template
index d89d9975a2..2a9fdff3a0 100644
--- a/src/class-fields/default/cls-decl-after-same-line-static-gen.template
+++ b/src/class-fields/default/cls-decl-after-same-line-static-gen.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 class C {
   static *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-after-same-line-static-method.template b/src/class-fields/default/cls-decl-after-same-line-static-method.template
index 0f412da85b..568b3c5647 100644
--- a/src/class-fields/default/cls-decl-after-same-line-static-method.template
+++ b/src/class-fields/default/cls-decl-after-same-line-static-method.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 class C {
   static m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-multiple-definitions.template b/src/class-fields/default/cls-decl-multiple-definitions.template
index e481f94dda..5671a0b6c4 100644
--- a/src/class-fields/default/cls-decl-multiple-definitions.template
+++ b/src/class-fields/default/cls-decl-multiple-definitions.template
@@ -14,6 +14,7 @@ class C {
   /*{ fields }*/
   m2() { return 39 }
   bar = "barbaz";
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-multiple-stacked-definitions.template b/src/class-fields/default/cls-decl-multiple-stacked-definitions.template
index 6a16f68f96..36515109ea 100644
--- a/src/class-fields/default/cls-decl-multiple-stacked-definitions.template
+++ b/src/class-fields/default/cls-decl-multiple-stacked-definitions.template
@@ -12,6 +12,7 @@ class C {
   /*{ fields }*/
   foo = "foobar"
   bar = "barbaz";
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-new-no-sc-line-method.template b/src/class-fields/default/cls-decl-new-no-sc-line-method.template
index d87e9152e9..56037a513a 100644
--- a/src/class-fields/default/cls-decl-new-no-sc-line-method.template
+++ b/src/class-fields/default/cls-decl-new-no-sc-line-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 class C {
   /*{ fields }*/
   m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-new-sc-line-generator.template b/src/class-fields/default/cls-decl-new-sc-line-generator.template
index 3be29af985..40098a7810 100644
--- a/src/class-fields/default/cls-decl-new-sc-line-generator.template
+++ b/src/class-fields/default/cls-decl-new-sc-line-generator.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 class C {
   /*{ fields }*/;
   *m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-new-sc-line-method.template b/src/class-fields/default/cls-decl-new-sc-line-method.template
index 640244370a..6f56356466 100644
--- a/src/class-fields/default/cls-decl-new-sc-line-method.template
+++ b/src/class-fields/default/cls-decl-new-sc-line-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 class C {
   /*{ fields }*/;
   m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-regular-definitions.template b/src/class-fields/default/cls-decl-regular-definitions.template
index 9d1ee0c283..4ccdd76f7f 100644
--- a/src/class-fields/default/cls-decl-regular-definitions.template
+++ b/src/class-fields/default/cls-decl-regular-definitions.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 class C {
   /*{ fields }*/
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-same-line-generator.template b/src/class-fields/default/cls-decl-same-line-generator.template
index 1c4fa07d71..182d9df50d 100644
--- a/src/class-fields/default/cls-decl-same-line-generator.template
+++ b/src/class-fields/default/cls-decl-same-line-generator.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 class C {
   /*{ fields }*/; *m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-same-line-method.template b/src/class-fields/default/cls-decl-same-line-method.template
index 2a825bee8b..c94c864bdd 100644
--- a/src/class-fields/default/cls-decl-same-line-method.template
+++ b/src/class-fields/default/cls-decl-same-line-method.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 class C {
   /*{ fields }*/; m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-decl-wrapped-in-sc.template b/src/class-fields/default/cls-decl-wrapped-in-sc.template
index 5d04a5622e..b76403262a 100644
--- a/src/class-fields/default/cls-decl-wrapped-in-sc.template
+++ b/src/class-fields/default/cls-decl-wrapped-in-sc.template
@@ -12,6 +12,7 @@ class C {
   ;;;;
   ;;;;;;/*{ fields }*/;;;;;;;
   ;;;;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-async-gen.template b/src/class-fields/default/cls-expr-after-same-line-async-gen.template
index cb27c785c8..3a1a6f4630 100644
--- a/src/class-fields/default/cls-expr-after-same-line-async-gen.template
+++ b/src/class-fields/default/cls-expr-after-same-line-async-gen.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   async *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-async-method.template b/src/class-fields/default/cls-expr-after-same-line-async-method.template
index eafc614d7b..87c137ce2d 100644
--- a/src/class-fields/default/cls-expr-after-same-line-async-method.template
+++ b/src/class-fields/default/cls-expr-after-same-line-async-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   async m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-gen.template b/src/class-fields/default/cls-expr-after-same-line-gen.template
index 07e7a485d6..58aa427d3a 100644
--- a/src/class-fields/default/cls-expr-after-same-line-gen.template
+++ b/src/class-fields/default/cls-expr-after-same-line-gen.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-method.template b/src/class-fields/default/cls-expr-after-same-line-method.template
index 70fca8fe22..d9e6703d6a 100644
--- a/src/class-fields/default/cls-expr-after-same-line-method.template
+++ b/src/class-fields/default/cls-expr-after-same-line-method.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template b/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template
index 1f34b5cf87..f19896d7af 100644
--- a/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template
+++ b/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   static async *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-static-async-method.template b/src/class-fields/default/cls-expr-after-same-line-static-async-method.template
index e4a9657d77..0b0ae19ec4 100644
--- a/src/class-fields/default/cls-expr-after-same-line-static-async-method.template
+++ b/src/class-fields/default/cls-expr-after-same-line-static-async-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   static async m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-static-gen.template b/src/class-fields/default/cls-expr-after-same-line-static-gen.template
index c64467527d..1eff6019a1 100644
--- a/src/class-fields/default/cls-expr-after-same-line-static-gen.template
+++ b/src/class-fields/default/cls-expr-after-same-line-static-gen.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   static *m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-after-same-line-static-method.template b/src/class-fields/default/cls-expr-after-same-line-static-method.template
index 56f677a9bf..1621379473 100644
--- a/src/class-fields/default/cls-expr-after-same-line-static-method.template
+++ b/src/class-fields/default/cls-expr-after-same-line-static-method.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   static m() { return 42; } /*{ fields }*/;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-multiple-definitions.template b/src/class-fields/default/cls-expr-multiple-definitions.template
index 543b9f2b0f..8a786bf9e5 100644
--- a/src/class-fields/default/cls-expr-multiple-definitions.template
+++ b/src/class-fields/default/cls-expr-multiple-definitions.template
@@ -14,6 +14,7 @@ var C = class {
   /*{ fields }*/
   m2() { return 39 }
   bar = "barbaz";
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-multiple-stacked-definitions.template b/src/class-fields/default/cls-expr-multiple-stacked-definitions.template
index 6bf9a746f5..a1c53aee19 100644
--- a/src/class-fields/default/cls-expr-multiple-stacked-definitions.template
+++ b/src/class-fields/default/cls-expr-multiple-stacked-definitions.template
@@ -12,6 +12,7 @@ var C = class {
   /*{ fields }*/
   foo = "foobar"
   bar = "barbaz";
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-new-no-sc-line-method.template b/src/class-fields/default/cls-expr-new-no-sc-line-method.template
index 88045824da..50e6762ada 100644
--- a/src/class-fields/default/cls-expr-new-no-sc-line-method.template
+++ b/src/class-fields/default/cls-expr-new-no-sc-line-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 var C = class {
   /*{ fields }*/
   m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-new-sc-line-generator.template b/src/class-fields/default/cls-expr-new-sc-line-generator.template
index 022c5b8ffa..1433173685 100644
--- a/src/class-fields/default/cls-expr-new-sc-line-generator.template
+++ b/src/class-fields/default/cls-expr-new-sc-line-generator.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 var C = class {
   /*{ fields }*/;
   *m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-new-sc-line-method.template b/src/class-fields/default/cls-expr-new-sc-line-method.template
index 04cc5d7f1b..3e7291ad66 100644
--- a/src/class-fields/default/cls-expr-new-sc-line-method.template
+++ b/src/class-fields/default/cls-expr-new-sc-line-method.template
@@ -11,6 +11,7 @@ esid: prod-FieldDefinition
 var C = class {
   /*{ fields }*/;
   m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-regular-definitions.template b/src/class-fields/default/cls-expr-regular-definitions.template
index 65cea698c7..630c04f41c 100644
--- a/src/class-fields/default/cls-expr-regular-definitions.template
+++ b/src/class-fields/default/cls-expr-regular-definitions.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   /*{ fields }*/
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-same-line-generator.template b/src/class-fields/default/cls-expr-same-line-generator.template
index b85431604a..c6ee64851f 100644
--- a/src/class-fields/default/cls-expr-same-line-generator.template
+++ b/src/class-fields/default/cls-expr-same-line-generator.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   /*{ fields }*/; *m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-same-line-method.template b/src/class-fields/default/cls-expr-same-line-method.template
index 2b06fe7329..4c9602cafc 100644
--- a/src/class-fields/default/cls-expr-same-line-method.template
+++ b/src/class-fields/default/cls-expr-same-line-method.template
@@ -10,6 +10,7 @@ esid: prod-FieldDefinition
 
 var C = class {
   /*{ fields }*/; m() { return 42; }
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/default/cls-expr-wrapped-in-sc.template b/src/class-fields/default/cls-expr-wrapped-in-sc.template
index 6646d1b4c1..4f7397057f 100644
--- a/src/class-fields/default/cls-expr-wrapped-in-sc.template
+++ b/src/class-fields/default/cls-expr-wrapped-in-sc.template
@@ -12,6 +12,7 @@ var C = class {
   ;;;;
   ;;;;;;/*{ fields }*/;;;;;;;
   ;;;;
+/*{ privateinspectionfunctions }*/
 }
 
 var c = new C();
diff --git a/src/class-fields/private-names.case b/src/class-fields/private-names.case
new file mode 100644
index 0000000000..6987bcd7b2
--- /dev/null
+++ b/src/class-fields/private-names.case
@@ -0,0 +1,50 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: static literal private names
+info: |
+  ClassElement:
+    ...
+    FieldDefinition ;
+
+  FieldDefinition:
+    ClassElementName Initializer_opt
+
+  ClassElementName:
+    PrivateName
+
+  PrivateName:
+    #IdentifierName
+template: default
+---*/
+
+//- fields
+#x; #y
+//- privateinspectionfunctions
+  x() {
+    this.#x = 42;
+    return this.#x;
+  }
+  y() {
+    this.#y = 43;
+    return this.#y;
+  }
+//- assertions
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#x"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#x"), false, "test 2");
+assert.sameValue(Object.hasOwnProperty.call(c, "#x"), false, "test 3");
+
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#y"), false, "test 4");
+assert.sameValue(Object.hasOwnProperty.call(C, "#y"), false, "test 5");
+assert.sameValue(Object.hasOwnProperty.call(c, "#y"), 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, "#x"), false, "test 9");
+assert.sameValue(Object.hasOwnProperty.call(c, "#y"), false, "test 10");
diff --git a/src/class-fields/static-private-names.case b/src/class-fields/static-private-names.case
new file mode 100644
index 0000000000..464b53a9e9
--- /dev/null
+++ b/src/class-fields/static-private-names.case
@@ -0,0 +1,50 @@
+// 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
+---*/
+
+//- fields
+static #x; static #y
+//- privateinspectionfunctions
+  static x() {
+    this.#x = 42;
+    return this.#x;
+  }
+  static y() {
+    this.#y = 43;
+    return this.#y;
+  }
+//- assertions
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#x"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#x"), false, "test 2");
+assert.sameValue(Object.hasOwnProperty.call(c, "#x"), false, "test 3");
+
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#y"), false, "test 4");
+assert.sameValue(Object.hasOwnProperty.call(C, "#y"), false, "test 5");
+assert.sameValue(Object.hasOwnProperty.call(c, "#y"), 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, "#x"), false, "test 9");
+assert.sameValue(Object.hasOwnProperty.call(C, "#y"), false, "test 10");
-- 
GitLab