From ad9fd16bd1368524f24a1c8fb27e283393058efc Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Tue, 31 Jul 2018 14:09:08 -0400
Subject: [PATCH] Class Fields: convert .js file to .case

---
 ...name-toprimitive-returns-noncallable.case} |  0
 ...d-name-toprimitive-returns-nonobject.case} |  0
 .../class/fields-static-private-fields.js     | 45 +++++++++++++++++++
 .../class/fields-static-private-methods.js    | 45 +++++++++++++++++++
 4 files changed, 90 insertions(+)
 rename src/class-fields/{computed-name-toprimitive-returns-noncallable.js => computed-name-toprimitive-returns-noncallable.case} (100%)
 rename src/class-fields/{computed-name-toprimitive-returns-nonobject.js => computed-name-toprimitive-returns-nonobject.case} (100%)
 create mode 100644 test/language/statements/class/fields-static-private-fields.js
 create mode 100644 test/language/statements/class/fields-static-private-methods.js

diff --git a/src/class-fields/computed-name-toprimitive-returns-noncallable.js b/src/class-fields/computed-name-toprimitive-returns-noncallable.case
similarity index 100%
rename from src/class-fields/computed-name-toprimitive-returns-noncallable.js
rename to src/class-fields/computed-name-toprimitive-returns-noncallable.case
diff --git a/src/class-fields/computed-name-toprimitive-returns-nonobject.js b/src/class-fields/computed-name-toprimitive-returns-nonobject.case
similarity index 100%
rename from src/class-fields/computed-name-toprimitive-returns-nonobject.js
rename to src/class-fields/computed-name-toprimitive-returns-nonobject.case
diff --git a/test/language/statements/class/fields-static-private-fields.js b/test/language/statements/class/fields-static-private-fields.js
new file mode 100644
index 0000000000..a9b0611ee4
--- /dev/null
+++ b/test/language/statements/class/fields-static-private-fields.js
@@ -0,0 +1,45 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/static-private-fields.case
+// - src/class-fields/default/cls-decl.template
+/*---
+description: literal private names (field definitions in a class declaration)
+esid: prod-FieldDefinition
+features: [class, class-fields-public]
+flags: [generated]
+info: |
+    ClassElement:
+      ...
+      static FieldDefinition ;
+
+    FieldDefinition:
+      ClassElementName Initializer_opt
+
+    ClassElementName:
+      PrivateName
+
+    PrivateName:
+      # IdentifierName
+
+---*/
+
+
+class C {
+  static #x; static #y
+}
+
+// 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/test/language/statements/class/fields-static-private-methods.js b/test/language/statements/class/fields-static-private-methods.js
new file mode 100644
index 0000000000..3bf11c26da
--- /dev/null
+++ b/test/language/statements/class/fields-static-private-methods.js
@@ -0,0 +1,45 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/static-private-methods.case
+// - src/class-fields/default/cls-decl.template
+/*---
+description: literal private names (field definitions in a class declaration)
+esid: prod-FieldDefinition
+features: [class-static-methods-private, class, class-fields-public]
+flags: [generated]
+info: |
+    ClassElement:
+      ...
+      static FieldDefinition ;
+
+    FieldDefinition:
+      ClassElementName Initializer_opt
+
+    ClassElementName:
+      PrivateName
+
+    PrivateName:
+      # IdentifierName
+
+---*/
+
+
+class C {
+  static #xVal; static #yVal
+}
+
+// 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