From 889857ccb5ce8d4f75b8f94db1e08d192b0fd956 Mon Sep 17 00:00:00 2001
From: Valerie R Young <valerie@bocoup.com>
Date: Tue, 31 Oct 2017 14:19:30 -0400
Subject: [PATCH] Fixes for forbidden property names

---
 src/class-fields/propname-constructor.case    |  2 +-
 .../cls-decl-computed-name.template           |  2 +-
 .../cls-decl-literal-name.template            |  2 +-
 .../cls-decl-string-name.template             |  4 ++--
 .../cls-decl-variable-name.template           | 22 +++++++++++++++++++
 .../cls-expr-computed-name.template           |  2 +-
 .../cls-expr-literal-name.template            |  2 +-
 .../cls-expr-string-name.template             |  4 ++--
 .../cls-expr-variable-name.template           | 22 +++++++++++++++++++
 .../static-propname-constructor.case          |  2 +-
 .../static-propname-prototype.case            |  2 +-
 11 files changed, 55 insertions(+), 11 deletions(-)
 create mode 100644 src/class-fields/propname-error/cls-decl-variable-name.template
 create mode 100644 src/class-fields/propname-error/cls-expr-variable-name.template

diff --git a/src/class-fields/propname-constructor.case b/src/class-fields/propname-constructor.case
index a700e99119..3353606ddb 100644
--- a/src/class-fields/propname-constructor.case
+++ b/src/class-fields/propname-constructor.case
@@ -2,7 +2,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: Static class fields cannot have PropName 'constructor'
+desc: class fields forbid PropName 'constructor'
 info: |
 
   // This test file tests the following early error:
diff --git a/src/class-fields/propname-error/cls-decl-computed-name.template b/src/class-fields/propname-error/cls-decl-computed-name.template
index 72e252f808..406a209707 100644
--- a/src/class-fields/propname-error/cls-decl-computed-name.template
+++ b/src/class-fields/propname-error/cls-decl-computed-name.template
@@ -4,7 +4,7 @@
 /*---
 esid: sec-class-definitions-static-semantics-early-errors
 path: language/statements/class/fields-computed-name-
-name: computed
+name: no early error -- PropName of ComputedPropertyName not forbidden value
 info: |
   Static Semantics: PropName
   ...
diff --git a/src/class-fields/propname-error/cls-decl-literal-name.template b/src/class-fields/propname-error/cls-decl-literal-name.template
index b51b78ef20..3c4ce9e9e7 100644
--- a/src/class-fields/propname-error/cls-decl-literal-name.template
+++ b/src/class-fields/propname-error/cls-decl-literal-name.template
@@ -4,7 +4,7 @@
 /*---
 esid: sec-class-definitions-static-semantics-early-errors
 path: language/statements/class/fields-literal-name-
-name: literal name
+name: early error -- PropName of IdentifierName is forbidden value
 negative:
   type: SyntaxError
   phase: early
diff --git a/src/class-fields/propname-error/cls-decl-string-name.template b/src/class-fields/propname-error/cls-decl-string-name.template
index 173990f660..743f20f744 100644
--- a/src/class-fields/propname-error/cls-decl-string-name.template
+++ b/src/class-fields/propname-error/cls-decl-string-name.template
@@ -4,14 +4,14 @@
 /*---
 esid: sec-class-definitions-static-semantics-early-errors
 path: language/statements/class/fields-string-name-
-name: string name
+name: early error -- PropName of StringLiteral is forbidden value
 negative:
   type: SyntaxError
   phase: early
 info: |
   Static Semantics: PropName
   ...
-  LiteralPropertyName:StringLiteral
+  LiteralPropertyName : StringLiteral
     Return the String value whose code units are the SV of the StringLiteral.
 ---*/
 
diff --git a/src/class-fields/propname-error/cls-decl-variable-name.template b/src/class-fields/propname-error/cls-decl-variable-name.template
new file mode 100644
index 0000000000..cbda5b8319
--- /dev/null
+++ b/src/class-fields/propname-error/cls-decl-variable-name.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-class-definitions-static-semantics-early-errors
+path: language/statements/class/fields-computed-variable-name-
+name: no early error -- PropName of ComputedPropertyName not forbidden value
+info: |
+  Static Semantics: PropName
+  ...
+  ComputedPropertyName : [ AssignmentExpression ]
+    Return empty.
+---*/
+
+var /*{ propname }*/ = 'foo';
+class C {
+  /*{ static }*/ [/*{ propname }*/];
+}
+
+var c = new C();
+
+assert.sameValue(c.hasOwnProperty("foo"), true);
diff --git a/src/class-fields/propname-error/cls-expr-computed-name.template b/src/class-fields/propname-error/cls-expr-computed-name.template
index dc37681833..e509263eea 100644
--- a/src/class-fields/propname-error/cls-expr-computed-name.template
+++ b/src/class-fields/propname-error/cls-expr-computed-name.template
@@ -4,7 +4,7 @@
 /*---
 esid: sec-class-definitions-static-semantics-early-errors
 path: language/expressions/class/fields-computed-name-
-name: computed
+name: no early error -- PropName of ComputedPropertyName not forbidden value
 info: |
   Static Semantics: PropName
   ...
diff --git a/src/class-fields/propname-error/cls-expr-literal-name.template b/src/class-fields/propname-error/cls-expr-literal-name.template
index 84d8310abb..bd87b81d2a 100644
--- a/src/class-fields/propname-error/cls-expr-literal-name.template
+++ b/src/class-fields/propname-error/cls-expr-literal-name.template
@@ -4,7 +4,7 @@
 /*---
 esid: sec-class-definitions-static-semantics-early-errors
 path: language/expressions/class/fields-literal-name-
-name: literal name
+name: early error -- PropName of IdentifierName is forbidden
 negative:
   type: SyntaxError
   phase: early
diff --git a/src/class-fields/propname-error/cls-expr-string-name.template b/src/class-fields/propname-error/cls-expr-string-name.template
index b6a3af65c2..189a1bd80f 100644
--- a/src/class-fields/propname-error/cls-expr-string-name.template
+++ b/src/class-fields/propname-error/cls-expr-string-name.template
@@ -4,14 +4,14 @@
 /*---
 esid: sec-class-definitions-static-semantics-early-errors
 path: language/expressions/class/fields-string-name-
-name: string name
+name: early error -- PropName of StringLiteral is forbidden
 negative:
   type: SyntaxError
   phase: early
 info: |
   Static Semantics: PropName
   ...
-  LiteralPropertyName:StringLiteral
+  LiteralPropertyName : StringLiteral
     Return the String value whose code units are the SV of the StringLiteral.
 ---*/
 
diff --git a/src/class-fields/propname-error/cls-expr-variable-name.template b/src/class-fields/propname-error/cls-expr-variable-name.template
new file mode 100644
index 0000000000..50b255197f
--- /dev/null
+++ b/src/class-fields/propname-error/cls-expr-variable-name.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-class-definitions-static-semantics-early-errors
+path: language/expressions/class/fields-computed-variable-name-
+name: no early error -- PropName of ComputedPropertyName not forbidden value
+info: |
+  Static Semantics: PropName
+  ...
+  ComputedPropertyName : [ AssignmentExpression ]
+    Return empty.
+---*/
+
+var /*{ propname }*/ = 'foo';
+var C = class {
+  /*{ static }*/ [/*{ propname }*/];
+}
+
+var c = new C();
+
+assert.sameValue(c.hasOwnProperty("foo"), true);
diff --git a/src/class-fields/static-propname-constructor.case b/src/class-fields/static-propname-constructor.case
index ffa6754e20..ff3d00af6a 100644
--- a/src/class-fields/static-propname-constructor.case
+++ b/src/class-fields/static-propname-constructor.case
@@ -2,7 +2,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: Static class field cannot have PropName 'constructor'
+desc: static class field forbid PropName 'constructor'
 info: |
 
   // This test file tests the following early error:
diff --git a/src/class-fields/static-propname-prototype.case b/src/class-fields/static-propname-prototype.case
index 9b2e9ab331..99d85ff64a 100644
--- a/src/class-fields/static-propname-prototype.case
+++ b/src/class-fields/static-propname-prototype.case
@@ -2,7 +2,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: Static class fields cannot have PropName 'prototype'
+desc: static class fields forbid PropName 'prototype'
 info: |
 
   // This test file tests the following early error:
-- 
GitLab