From 442c3539a31ad4b1bfc23d3aaf6e9c440424c6a6 Mon Sep 17 00:00:00 2001
From: Caio Lima <ticaiolima@gmail.com>
Date: Wed, 6 Feb 2019 17:18:13 -0200
Subject: [PATCH] Added generated tests

---
 .../private-field-as-arrow-function.js        | 33 +++++++++++++
 .../private-field-as-async-arrow-function.js  | 39 ++++++++++++++++
 .../private-field-as-async-function.js        | 39 ++++++++++++++++
 .../elements/private-field-as-function.js     | 33 +++++++++++++
 .../private-field-super-access-throws.js      | 46 +++++++++++++++++++
 .../private-field-as-arrow-function.js        | 33 +++++++++++++
 .../private-field-as-async-arrow-function.js  | 39 ++++++++++++++++
 .../private-field-as-async-function.js        | 39 ++++++++++++++++
 .../elements/private-field-as-function.js     | 33 +++++++++++++
 .../private-field-super-access-throws.js      | 46 +++++++++++++++++++
 10 files changed, 380 insertions(+)
 create mode 100644 test/language/expressions/class/elements/private-field-as-arrow-function.js
 create mode 100644 test/language/expressions/class/elements/private-field-as-async-arrow-function.js
 create mode 100644 test/language/expressions/class/elements/private-field-as-async-function.js
 create mode 100644 test/language/expressions/class/elements/private-field-as-function.js
 create mode 100644 test/language/expressions/class/elements/private-field-super-access-throws.js
 create mode 100644 test/language/statements/class/elements/private-field-as-arrow-function.js
 create mode 100644 test/language/statements/class/elements/private-field-as-async-arrow-function.js
 create mode 100644 test/language/statements/class/elements/private-field-as-async-function.js
 create mode 100644 test/language/statements/class/elements/private-field-as-function.js
 create mode 100644 test/language/statements/class/elements/private-field-super-access-throws.js

diff --git a/test/language/expressions/class/elements/private-field-as-arrow-function.js b/test/language/expressions/class/elements/private-field-as-arrow-function.js
new file mode 100644
index 0000000000..d36b256849
--- /dev/null
+++ b/test/language/expressions/class/elements/private-field-as-arrow-function.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-arrow-function.case
+// - src/class-elements/default/cls-expr.template
+/*---
+description: Calling arrow function returned from private field access (field definitions in a class expression)
+esid: prod-FieldDefinition
+features: [class-fields-private, arrow-function, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+var C = class {
+  #m = () => 'test262';
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+assert.sameValue(c.method(), 'test262');
diff --git a/test/language/expressions/class/elements/private-field-as-async-arrow-function.js b/test/language/expressions/class/elements/private-field-as-async-arrow-function.js
new file mode 100644
index 0000000000..3033aec4c5
--- /dev/null
+++ b/test/language/expressions/class/elements/private-field-as-async-arrow-function.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-async-arrow-function.case
+// - src/class-elements/default/cls-expr.template
+/*---
+description: Calling async arrow function returned from private field access (field definitions in a class expression)
+esid: prod-FieldDefinition
+features: [class-fields-private, async-functions, arrow-function, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+var C = class {
+  #m = async () => 'test262';
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+
+async function asyncRun() {
+    assert.sameValue(await c.method(), 'test262');
+}
+
+asyncRun();
+
diff --git a/test/language/expressions/class/elements/private-field-as-async-function.js b/test/language/expressions/class/elements/private-field-as-async-function.js
new file mode 100644
index 0000000000..6aea0dc10c
--- /dev/null
+++ b/test/language/expressions/class/elements/private-field-as-async-function.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-async-function.case
+// - src/class-elements/default/cls-expr.template
+/*---
+description: Calling async function returned from private field access (field definitions in a class expression)
+esid: prod-FieldDefinition
+features: [class-fields-private, async-functions, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+var C = class {
+  #m = async function() { return 'test262'; };
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+
+async function asyncRun() {
+    assert.sameValue(await c.method(), 'test262');
+}
+
+asyncRun();
+
diff --git a/test/language/expressions/class/elements/private-field-as-function.js b/test/language/expressions/class/elements/private-field-as-function.js
new file mode 100644
index 0000000000..851c33349a
--- /dev/null
+++ b/test/language/expressions/class/elements/private-field-as-function.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-function.case
+// - src/class-elements/default/cls-expr.template
+/*---
+description: Calling result returned from private field access (field definitions in a class expression)
+esid: prod-FieldDefinition
+features: [class-fields-private, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+var C = class {
+  #m = function () { return 'test262'; };
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+assert.sameValue(c.method(), 'test262');
diff --git a/test/language/expressions/class/elements/private-field-super-access-throws.js b/test/language/expressions/class/elements/private-field-super-access-throws.js
new file mode 100644
index 0000000000..fc566d93d5
--- /dev/null
+++ b/test/language/expressions/class/elements/private-field-super-access-throws.js
@@ -0,0 +1,46 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-super-access-throws.case
+// - src/class-elements/default/cls-expr.template
+/*---
+description: Acessing private field from super shoudl throw an error (field definitions in a class expression)
+esid: prod-FieldDefinition
+features: [class-fields-private, class-fields-public, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+var C = class {
+  #m = function() { return 'test262'; };
+
+  Child = class extends C {
+    access() {
+      return super.#m;
+    }
+
+    method() {
+      return super.#m();
+    }
+  }
+
+}
+
+assert.throws(TypeError, function() {
+  (new (new C()).Child).method();
+}, 'super.#m() throws TypeError');
+
+assert.throws(TypeError, function() {
+  (new (new C()).Child).access();
+}, 'super.#m throws TypeError');
+
diff --git a/test/language/statements/class/elements/private-field-as-arrow-function.js b/test/language/statements/class/elements/private-field-as-arrow-function.js
new file mode 100644
index 0000000000..c78e102bd4
--- /dev/null
+++ b/test/language/statements/class/elements/private-field-as-arrow-function.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-arrow-function.case
+// - src/class-elements/default/cls-decl.template
+/*---
+description: Calling arrow function returned from private field access (field definitions in a class declaration)
+esid: prod-FieldDefinition
+features: [class-fields-private, arrow-function, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+class C {
+  #m = () => 'test262';
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+assert.sameValue(c.method(), 'test262');
diff --git a/test/language/statements/class/elements/private-field-as-async-arrow-function.js b/test/language/statements/class/elements/private-field-as-async-arrow-function.js
new file mode 100644
index 0000000000..665b50817a
--- /dev/null
+++ b/test/language/statements/class/elements/private-field-as-async-arrow-function.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-async-arrow-function.case
+// - src/class-elements/default/cls-decl.template
+/*---
+description: Calling async arrow function returned from private field access (field definitions in a class declaration)
+esid: prod-FieldDefinition
+features: [class-fields-private, async-functions, arrow-function, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+class C {
+  #m = async () => 'test262';
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+
+async function asyncRun() {
+    assert.sameValue(await c.method(), 'test262');
+}
+
+asyncRun();
+
diff --git a/test/language/statements/class/elements/private-field-as-async-function.js b/test/language/statements/class/elements/private-field-as-async-function.js
new file mode 100644
index 0000000000..2ef5910b3c
--- /dev/null
+++ b/test/language/statements/class/elements/private-field-as-async-function.js
@@ -0,0 +1,39 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-async-function.case
+// - src/class-elements/default/cls-decl.template
+/*---
+description: Calling async function returned from private field access (field definitions in a class declaration)
+esid: prod-FieldDefinition
+features: [class-fields-private, async-functions, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+class C {
+  #m = async function() { return 'test262'; };
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+
+async function asyncRun() {
+    assert.sameValue(await c.method(), 'test262');
+}
+
+asyncRun();
+
diff --git a/test/language/statements/class/elements/private-field-as-function.js b/test/language/statements/class/elements/private-field-as-function.js
new file mode 100644
index 0000000000..30fd31a068
--- /dev/null
+++ b/test/language/statements/class/elements/private-field-as-function.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-as-function.case
+// - src/class-elements/default/cls-decl.template
+/*---
+description: Calling result returned from private field access (field definitions in a class declaration)
+esid: prod-FieldDefinition
+features: [class-fields-private, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+class C {
+  #m = function () { return 'test262'; };
+
+  method() {
+    return this.#m();
+  }
+}
+
+let c = new C();
+assert.sameValue(c.method(), 'test262');
diff --git a/test/language/statements/class/elements/private-field-super-access-throws.js b/test/language/statements/class/elements/private-field-super-access-throws.js
new file mode 100644
index 0000000000..62029afd53
--- /dev/null
+++ b/test/language/statements/class/elements/private-field-super-access-throws.js
@@ -0,0 +1,46 @@
+// This file was procedurally generated from the following sources:
+// - src/class-elements/private-field-super-access-throws.case
+// - src/class-elements/default/cls-decl.template
+/*---
+description: Acessing private field from super shoudl throw an error (field definitions in a class declaration)
+esid: prod-FieldDefinition
+features: [class-fields-private, class-fields-public, class]
+flags: [generated]
+info: |
+    Updated Productions
+
+    CallExpression[Yield, Await]:
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
+      SuperCall[?Yield, ?Await]
+      CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
+      CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
+      CallExpression[?Yield, ?Await].IdentifierName
+      CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
+      CallExpression[?Yield, ?Await].PrivateName
+
+---*/
+
+
+class C {
+  #m = function() { return 'test262'; };
+
+  Child = class extends C {
+    access() {
+      return super.#m;
+    }
+
+    method() {
+      return super.#m();
+    }
+  }
+
+}
+
+assert.throws(TypeError, function() {
+  (new (new C()).Child).method();
+}, 'super.#m() throws TypeError');
+
+assert.throws(TypeError, function() {
+  (new (new C()).Child).access();
+}, 'super.#m throws TypeError');
+
-- 
GitLab