From a9837df144794980a427a0185f4fea3def52608a Mon Sep 17 00:00:00 2001
From: Leo Balter <leonardo.balter@gmail.com>
Date: Wed, 5 Sep 2018 18:32:24 -0400
Subject: [PATCH] Generate tests

---
 .../grammar-static-private-ctor-meth-valid.js | 26 ++++++++++++++++
 ...grammar-static-ctor-accessor-meth-valid.js | 30 +++++++++++++++++++
 ...rammar-static-ctor-async-gen-meth-valid.js | 29 ++++++++++++++++++
 .../grammar-static-ctor-async-meth-valid.js   | 29 ++++++++++++++++++
 .../grammar-static-ctor-gen-meth-valid.js     | 29 ++++++++++++++++++
 .../valid/grammar-static-ctor-meth-valid.js   | 29 ++++++++++++++++++
 ...static-private-async-gen-meth-prototype.js |  2 +-
 ...mar-static-private-async-meth-prototype.js |  2 +-
 ...ammar-static-private-gen-meth-prototype.js |  2 +-
 .../grammar-static-private-meth-prototype.js  |  2 +-
 .../grammar-static-private-ctor-meth-valid.js | 26 ++++++++++++++++
 ...grammar-static-ctor-accessor-meth-valid.js | 30 +++++++++++++++++++
 ...rammar-static-ctor-async-gen-meth-valid.js | 29 ++++++++++++++++++
 .../grammar-static-ctor-async-meth-valid.js   | 29 ++++++++++++++++++
 .../grammar-static-ctor-gen-meth-valid.js     | 29 ++++++++++++++++++
 .../valid/grammar-static-ctor-meth-valid.js   | 29 ++++++++++++++++++
 ...static-private-async-gen-meth-prototype.js |  2 +-
 ...mar-static-private-async-meth-prototype.js |  2 +-
 ...ammar-static-private-gen-meth-prototype.js |  2 +-
 .../grammar-static-private-meth-prototype.js  |  2 +-
 20 files changed, 352 insertions(+), 8 deletions(-)
 create mode 100644 test/language/expressions/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js
 create mode 100644 test/language/expressions/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js
 create mode 100644 test/language/expressions/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js
 create mode 100644 test/language/expressions/class/syntax/valid/grammar-static-ctor-async-meth-valid.js
 create mode 100644 test/language/expressions/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js
 create mode 100644 test/language/expressions/class/syntax/valid/grammar-static-ctor-meth-valid.js
 create mode 100644 test/language/statements/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js
 create mode 100644 test/language/statements/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js
 create mode 100644 test/language/statements/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js
 create mode 100644 test/language/statements/class/syntax/valid/grammar-static-ctor-async-meth-valid.js
 create mode 100644 test/language/statements/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js
 create mode 100644 test/language/statements/class/syntax/valid/grammar-static-ctor-meth-valid.js

diff --git a/test/language/expressions/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js b/test/language/expressions/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js
new file mode 100644
index 0000000000..1b5f2e7eab
--- /dev/null
+++ b/test/language/expressions/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-private-ctor-meth-valid.case
+// - src/class-elements/syntax/invalid/cls-expr-elements-invalid-syntax.template
+/*---
+description: Static Methods can be named constructor (class expression)
+esid: prod-ClassElement
+features: [class]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is "prototype"
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+  static constructor() {}
+  constructor() {} // stacks with a valid constructor
+};
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js b/test/language/expressions/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js
new file mode 100644
index 0000000000..86f0bb41fe
--- /dev/null
+++ b/test/language/expressions/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-accessor-meth-valid.case
+// - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
+/*---
+description: Static Accessor Methods can be named constructor (class expression)
+esid: prod-ClassElement
+features: [class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+var C = class {
+  static get constructor() {}
+  static set constructor() {}
+  constructor() {} // stacks with a valid constructor
+};
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js b/test/language/expressions/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js
new file mode 100644
index 0000000000..3723ba9f2f
--- /dev/null
+++ b/test/language/expressions/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-async-gen-meth-valid.case
+// - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
+/*---
+description: Static Async Generator Methods can be named constructor (class expression)
+esid: prod-ClassElement
+features: [async-iteration, class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+var C = class {
+  static async * constructor() {}
+  constructor() {} // stacks with a valid constructor
+};
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-ctor-async-meth-valid.js b/test/language/expressions/class/syntax/valid/grammar-static-ctor-async-meth-valid.js
new file mode 100644
index 0000000000..c61bfbee99
--- /dev/null
+++ b/test/language/expressions/class/syntax/valid/grammar-static-ctor-async-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-async-meth-valid.case
+// - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
+/*---
+description: Static Methods can be named constructor (class expression)
+esid: prod-ClassElement
+features: [async-functions, class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+var C = class {
+  static async constructor() {}
+  constructor() {} // stacks with a valid constructor
+};
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js b/test/language/expressions/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js
new file mode 100644
index 0000000000..8423f2e79e
--- /dev/null
+++ b/test/language/expressions/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-gen-meth-valid.case
+// - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
+/*---
+description: Static Generator Methods can be named constructor (class expression)
+esid: prod-ClassElement
+features: [generators, class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+var C = class {
+  static * constructor() {}
+  constructor() {} // stacks with a valid constructor
+};
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-ctor-meth-valid.js b/test/language/expressions/class/syntax/valid/grammar-static-ctor-meth-valid.js
new file mode 100644
index 0000000000..b0eff3a115
--- /dev/null
+++ b/test/language/expressions/class/syntax/valid/grammar-static-ctor-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-meth-valid.case
+// - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
+/*---
+description: Static Methods can be named constructor (class expression)
+esid: prod-ClassElement
+features: [class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+var C = class {
+  static constructor() {}
+  constructor() {} // stacks with a valid constructor
+};
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js b/test/language/expressions/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js
index 1f19d0ef4b..3abadc4a59 100644
--- a/test/language/expressions/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js
+++ b/test/language/expressions/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-async-gen-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
 /*---
-description: Static Async Generator Private Methods can be named prototype (class expression)
+description: Static Async Generator Private Methods can be named "#prototype" (class expression)
 esid: prod-ClassElement
 features: [async-iteration, class-static-methods-private, class]
 flags: [generated]
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-private-async-meth-prototype.js b/test/language/expressions/class/syntax/valid/grammar-static-private-async-meth-prototype.js
index d8a3023b95..a1aa052469 100644
--- a/test/language/expressions/class/syntax/valid/grammar-static-private-async-meth-prototype.js
+++ b/test/language/expressions/class/syntax/valid/grammar-static-private-async-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-async-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
 /*---
-description: Static Async Private Methods can be named prototype (class expression)
+description: Static Async Private Methods can be named "#prototype" (class expression)
 esid: prod-ClassElement
 features: [async-functions, class-static-methods-private, class]
 flags: [generated]
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-private-gen-meth-prototype.js b/test/language/expressions/class/syntax/valid/grammar-static-private-gen-meth-prototype.js
index 22e6f62cdb..eebf4a8239 100644
--- a/test/language/expressions/class/syntax/valid/grammar-static-private-gen-meth-prototype.js
+++ b/test/language/expressions/class/syntax/valid/grammar-static-private-gen-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-gen-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
 /*---
-description: Static Generator Private Methods can be named prototype (class expression)
+description: Static Generator Private Methods can be named "#prototype" (class expression)
 esid: prod-ClassElement
 features: [generators, class-static-methods-private, class]
 flags: [generated]
diff --git a/test/language/expressions/class/syntax/valid/grammar-static-private-meth-prototype.js b/test/language/expressions/class/syntax/valid/grammar-static-private-meth-prototype.js
index 186104cf2b..e5d16b8f6a 100644
--- a/test/language/expressions/class/syntax/valid/grammar-static-private-meth-prototype.js
+++ b/test/language/expressions/class/syntax/valid/grammar-static-private-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-expr-elements-valid-syntax.template
 /*---
-description: Static Private Methods can be named prototype (class expression)
+description: Static Private Methods can be named "#prototype" (class expression)
 esid: prod-ClassElement
 features: [class-static-methods-private, class]
 flags: [generated]
diff --git a/test/language/statements/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js b/test/language/statements/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js
new file mode 100644
index 0000000000..2ec596b364
--- /dev/null
+++ b/test/language/statements/class/syntax/early-errors/grammar-static-private-ctor-meth-valid.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-private-ctor-meth-valid.case
+// - src/class-elements/syntax/invalid/cls-decl-elements-invalid-syntax.template
+/*---
+description: Static Methods can be named constructor (class declaration)
+esid: prod-ClassElement
+features: [class]
+flags: [generated]
+negative:
+  phase: parse
+  type: SyntaxError
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is "prototype"
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+  static constructor() {}
+  constructor() {} // stacks with a valid constructor
+}
diff --git a/test/language/statements/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js b/test/language/statements/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js
new file mode 100644
index 0000000000..6ff13c7427
--- /dev/null
+++ b/test/language/statements/class/syntax/valid/grammar-static-ctor-accessor-meth-valid.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-accessor-meth-valid.case
+// - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
+/*---
+description: Static Accessor Methods can be named constructor (class declaration)
+esid: prod-ClassElement
+features: [class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+class C {
+  static get constructor() {}
+  static set constructor() {}
+  constructor() {} // stacks with a valid constructor
+}
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/statements/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js b/test/language/statements/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js
new file mode 100644
index 0000000000..6f7d1c3491
--- /dev/null
+++ b/test/language/statements/class/syntax/valid/grammar-static-ctor-async-gen-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-async-gen-meth-valid.case
+// - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
+/*---
+description: Static Async Generator Methods can be named constructor (class declaration)
+esid: prod-ClassElement
+features: [async-iteration, class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+class C {
+  static async * constructor() {}
+  constructor() {} // stacks with a valid constructor
+}
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/statements/class/syntax/valid/grammar-static-ctor-async-meth-valid.js b/test/language/statements/class/syntax/valid/grammar-static-ctor-async-meth-valid.js
new file mode 100644
index 0000000000..142e6fcd44
--- /dev/null
+++ b/test/language/statements/class/syntax/valid/grammar-static-ctor-async-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-async-meth-valid.case
+// - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
+/*---
+description: Static Methods can be named constructor (class declaration)
+esid: prod-ClassElement
+features: [async-functions, class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+class C {
+  static async constructor() {}
+  constructor() {} // stacks with a valid constructor
+}
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/statements/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js b/test/language/statements/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js
new file mode 100644
index 0000000000..29953a5d81
--- /dev/null
+++ b/test/language/statements/class/syntax/valid/grammar-static-ctor-gen-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-gen-meth-valid.case
+// - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
+/*---
+description: Static Generator Methods can be named constructor (class declaration)
+esid: prod-ClassElement
+features: [generators, class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+class C {
+  static * constructor() {}
+  constructor() {} // stacks with a valid constructor
+}
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/statements/class/syntax/valid/grammar-static-ctor-meth-valid.js b/test/language/statements/class/syntax/valid/grammar-static-ctor-meth-valid.js
new file mode 100644
index 0000000000..45cb903e01
--- /dev/null
+++ b/test/language/statements/class/syntax/valid/grammar-static-ctor-meth-valid.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/grammar-static-ctor-meth-valid.case
+// - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
+/*---
+description: Static Methods can be named constructor (class declaration)
+esid: prod-ClassElement
+features: [class]
+flags: [generated]
+info: |
+    Class Definitions / Static Semantics: Early Errors
+
+    ClassElement : MethodDefinition
+        It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "constructor" and SpecialMethod of MethodDefinition is true.
+    ClassElement : static MethodDefinition
+        It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+        It is a Syntax Error if PropName of MethodDefinition is "prototype".
+
+---*/
+
+
+class C {
+  static constructor() {}
+  constructor() {} // stacks with a valid constructor
+}
+
+assert(C.hasOwnProperty('constructor'));
+assert(C.prototype.hasOwnProperty('constructor'));
+assert.notSameValue(C.prototype.constructor, C.constructor);
diff --git a/test/language/statements/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js b/test/language/statements/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js
index 06b509c97b..818be05590 100644
--- a/test/language/statements/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js
+++ b/test/language/statements/class/syntax/valid/grammar-static-private-async-gen-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-async-gen-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
 /*---
-description: Static Async Generator Private Methods can be named prototype (class declaration)
+description: Static Async Generator Private Methods can be named "#prototype" (class declaration)
 esid: prod-ClassElement
 features: [async-iteration, class-static-methods-private, class]
 flags: [generated]
diff --git a/test/language/statements/class/syntax/valid/grammar-static-private-async-meth-prototype.js b/test/language/statements/class/syntax/valid/grammar-static-private-async-meth-prototype.js
index 376df2d768..58811c3ac4 100644
--- a/test/language/statements/class/syntax/valid/grammar-static-private-async-meth-prototype.js
+++ b/test/language/statements/class/syntax/valid/grammar-static-private-async-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-async-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
 /*---
-description: Static Async Private Methods can be named prototype (class declaration)
+description: Static Async Private Methods can be named "#prototype" (class declaration)
 esid: prod-ClassElement
 features: [async-functions, class-static-methods-private, class]
 flags: [generated]
diff --git a/test/language/statements/class/syntax/valid/grammar-static-private-gen-meth-prototype.js b/test/language/statements/class/syntax/valid/grammar-static-private-gen-meth-prototype.js
index 56bb3105ce..2d5c0ef139 100644
--- a/test/language/statements/class/syntax/valid/grammar-static-private-gen-meth-prototype.js
+++ b/test/language/statements/class/syntax/valid/grammar-static-private-gen-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-gen-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
 /*---
-description: Static Generator Private Methods can be named prototype (class declaration)
+description: Static Generator Private Methods can be named "#prototype" (class declaration)
 esid: prod-ClassElement
 features: [generators, class-static-methods-private, class]
 flags: [generated]
diff --git a/test/language/statements/class/syntax/valid/grammar-static-private-meth-prototype.js b/test/language/statements/class/syntax/valid/grammar-static-private-meth-prototype.js
index 111315c043..f53b7cb727 100644
--- a/test/language/statements/class/syntax/valid/grammar-static-private-meth-prototype.js
+++ b/test/language/statements/class/syntax/valid/grammar-static-private-meth-prototype.js
@@ -2,7 +2,7 @@
 // - src/class-elements/grammar-static-private-meth-prototype.case
 // - src/class-elements/syntax/valid/cls-decl-elements-valid-syntax.template
 /*---
-description: Static Private Methods can be named prototype (class declaration)
+description: Static Private Methods can be named "#prototype" (class declaration)
 esid: prod-ClassElement
 features: [class-static-methods-private, class]
 flags: [generated]
-- 
GitLab