From 0575d4d7a80dcadff2971a358c2a6ab8033fd81e Mon Sep 17 00:00:00 2001
From: Leo Balter <leonardo.balter@gmail.com>
Date: Wed, 7 Nov 2018 18:13:15 -0500
Subject: [PATCH] Add cases for early error deleting private names

---
 ...xpression-private-method-accessor-get.case | 22 +++++++++++++++++++
 ...xpression-private-method-accessor-set.case | 22 +++++++++++++++++++
 ...l-expression-private-method-async-gen.case |  6 +++--
 ...-call-expression-private-method-async.case |  6 +++--
 ...te-call-expression-private-method-gen.case |  6 +++--
 ...delete-call-expression-private-method.case |  6 +++--
 ...-call-expression-private-no-reference.case | 20 +++++++++++++++++
 ...rr-delete-call-expression-privatename.case |  5 +++--
 ...xpression-private-method-accessor-get.case | 16 ++++++++++++++
 ...xpression-private-method-accessor-set.case | 16 ++++++++++++++
 ...r-expression-private-method-async-gen.case |  8 ++++---
 ...ember-expression-private-method-async.case |  8 ++++---
 ...-member-expression-private-method-gen.case |  8 ++++---
 ...lete-member-expression-private-method.case |  4 +++-
 ...ember-expression-private-no-reference.case | 12 ++++++++++
 ...-delete-member-expression-privatename.case |  5 +++--
 16 files changed, 148 insertions(+), 22 deletions(-)
 create mode 100644 src/class-elements/err-delete-call-expression-private-method-accessor-get.case
 create mode 100644 src/class-elements/err-delete-call-expression-private-method-accessor-set.case
 create mode 100644 src/class-elements/err-delete-call-expression-private-no-reference.case
 create mode 100644 src/class-elements/err-delete-member-expression-private-method-accessor-get.case
 create mode 100644 src/class-elements/err-delete-member-expression-private-method-accessor-set.case
 create mode 100644 src/class-elements/err-delete-member-expression-private-no-reference.case

diff --git a/src/class-elements/err-delete-call-expression-private-method-accessor-get.case b/src/class-elements/err-delete-call-expression-private-method-accessor-get.case
new file mode 100644
index 0000000000..04c72122a4
--- /dev/null
+++ b/src/class-elements/err-delete-call-expression-private-method-accessor-get.case
@@ -0,0 +1,22 @@
+// Copyright (C) 2018 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  accessor get method
+template: delete-error
+features: [class-methods-private, class-fields-public]
+---*/
+
+//- infieldsetup
+g = this.f;
+//- infunctionsetup
+var g = this.f;
+//- expression
+g().#m
+//- functiondeclaration
+f() {
+return this;
+}
+get #m() {}
\ No newline at end of file
diff --git a/src/class-elements/err-delete-call-expression-private-method-accessor-set.case b/src/class-elements/err-delete-call-expression-private-method-accessor-set.case
new file mode 100644
index 0000000000..ea6458151e
--- /dev/null
+++ b/src/class-elements/err-delete-call-expression-private-method-accessor-set.case
@@ -0,0 +1,22 @@
+// Copyright (C) 2018 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  accessor set method
+template: delete-error
+features: [class, class-fields-private, class-methods-private, class-fields-public]
+---*/
+
+//- infieldsetup
+g = this.f;
+//- infunctionsetup
+var g = this.f;
+//- expression
+g().#m
+//- functiondeclaration
+f() {
+return this;
+}
+set #m(arg) {}
\ No newline at end of file
diff --git a/src/class-elements/err-delete-call-expression-private-method-async-gen.case b/src/class-elements/err-delete-call-expression-private-method-async-gen.case
index 76ca4b50ab..74eed5f647 100644
--- a/src/class-elements/err-delete-call-expression-private-method-async-gen.case
+++ b/src/class-elements/err-delete-call-expression-private-method-async-gen.case
@@ -2,9 +2,11 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  async generator
 template: delete-error
-features: [class, class-fields-private, class-methods-private, class-fields-public]
+features: [class-methods-private, async-iteration]
 ---*/
 
 //- infieldsetup
diff --git a/src/class-elements/err-delete-call-expression-private-method-async.case b/src/class-elements/err-delete-call-expression-private-method-async.case
index 43a93be491..af2d7ca56f 100644
--- a/src/class-elements/err-delete-call-expression-private-method-async.case
+++ b/src/class-elements/err-delete-call-expression-private-method-async.case
@@ -2,9 +2,11 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  async method
 template: delete-error
-features: [class, class-fields-private, class-methods-private, class-fields-public]
+features: [class-methods-private, async-functions]
 ---*/
 
 //- infieldsetup
diff --git a/src/class-elements/err-delete-call-expression-private-method-gen.case b/src/class-elements/err-delete-call-expression-private-method-gen.case
index 28d878c593..b264571e8c 100644
--- a/src/class-elements/err-delete-call-expression-private-method-gen.case
+++ b/src/class-elements/err-delete-call-expression-private-method-gen.case
@@ -2,9 +2,11 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  generator
 template: delete-error
-features: [class, class-fields-private, class-methods-private, class-fields-public]
+features: [class-methods-private, generators]
 ---*/
 
 //- infieldsetup
diff --git a/src/class-elements/err-delete-call-expression-private-method.case b/src/class-elements/err-delete-call-expression-private-method.case
index e542575dd0..7a70217282 100644
--- a/src/class-elements/err-delete-call-expression-private-method.case
+++ b/src/class-elements/err-delete-call-expression-private-method.case
@@ -2,9 +2,11 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  private ordinary method
 template: delete-error
-features: [class, class-fields-private, class-methods-private, class-fields-public]
+features: [class-methods-private]
 ---*/
 
 //- infieldsetup
diff --git a/src/class-elements/err-delete-call-expression-private-no-reference.case b/src/class-elements/err-delete-call-expression-private-no-reference.case
new file mode 100644
index 0000000000..6ae6b52c5b
--- /dev/null
+++ b/src/class-elements/err-delete-call-expression-private-no-reference.case
@@ -0,0 +1,20 @@
+// Copyright (C) 2018 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  no referencing class element
+template: delete-error
+---*/
+
+//- infieldsetup
+g = this.f;
+//- infunctionsetup
+var g = this.f;
+//- expression
+g().#m
+//- functiondeclaration
+f() {
+return this;
+}
diff --git a/src/class-elements/err-delete-call-expression-privatename.case b/src/class-elements/err-delete-call-expression-privatename.case
index 22918e62df..25e1339120 100644
--- a/src/class-elements/err-delete-call-expression-privatename.case
+++ b/src/class-elements/err-delete-call-expression-privatename.case
@@ -2,9 +2,10 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to CallExpression.PrivateName
+  private field
 template: delete-error
-features: [class, class-fields-private, class-fields-public]
 ---*/
 
 //- infieldsetup
diff --git a/src/class-elements/err-delete-member-expression-private-method-accessor-get.case b/src/class-elements/err-delete-member-expression-private-method-accessor-get.case
new file mode 100644
index 0000000000..925f160ad5
--- /dev/null
+++ b/src/class-elements/err-delete-member-expression-private-method-accessor-get.case
@@ -0,0 +1,16 @@
+// Copyright (C) 2018 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+    accessor get method
+template: delete-error
+features: [class-methods-private]
+---*/
+
+//- expression
+this.#m
+
+//- functiondeclaration
+get #m() {}
\ No newline at end of file
diff --git a/src/class-elements/err-delete-member-expression-private-method-accessor-set.case b/src/class-elements/err-delete-member-expression-private-method-accessor-set.case
new file mode 100644
index 0000000000..e6cbd4760a
--- /dev/null
+++ b/src/class-elements/err-delete-member-expression-private-method-accessor-set.case
@@ -0,0 +1,16 @@
+// Copyright (C) 2018 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+    It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+    accessor set method
+template: delete-error
+features: [class-methods-private]
+---*/
+
+//- expression
+this.#m
+
+//- functiondeclaration
+set #m(arg) {}
\ No newline at end of file
diff --git a/src/class-elements/err-delete-member-expression-private-method-async-gen.case b/src/class-elements/err-delete-member-expression-private-method-async-gen.case
index 3f8763f3ec..e45c88d826 100644
--- a/src/class-elements/err-delete-member-expression-private-method-async-gen.case
+++ b/src/class-elements/err-delete-member-expression-private-method-async-gen.case
@@ -2,13 +2,15 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+  async generator
 template: delete-error
-features: [class-methods-private]
+features: [class-methods-private, async-iteration]
 ---*/
 
 //- expression
 this.#m
 
 //- functiondeclaration
-async *#m() {}
\ No newline at end of file
+async *#m() {}
diff --git a/src/class-elements/err-delete-member-expression-private-method-async.case b/src/class-elements/err-delete-member-expression-private-method-async.case
index e42336f700..05f5689515 100644
--- a/src/class-elements/err-delete-member-expression-private-method-async.case
+++ b/src/class-elements/err-delete-member-expression-private-method-async.case
@@ -2,13 +2,15 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+  async method
 template: delete-error
-features: [class-methods-private]
+features: [class-methods-private, async-functions]
 ---*/
 
 //- expression
 this.#m
 
 //- functiondeclaration
-async #m() {}
\ No newline at end of file
+async #m() {}
diff --git a/src/class-elements/err-delete-member-expression-private-method-gen.case b/src/class-elements/err-delete-member-expression-private-method-gen.case
index 7eb0fafe87..4209e1efd1 100644
--- a/src/class-elements/err-delete-member-expression-private-method-gen.case
+++ b/src/class-elements/err-delete-member-expression-private-method-gen.case
@@ -2,13 +2,15 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+  generator
 template: delete-error
-features: [class-methods-private]
+features: [class-methods-private, generators]
 ---*/
 
 //- expression
 this.#m
 
 //- functiondeclaration
-*#m() {}
\ No newline at end of file
+*#m() {}
diff --git a/src/class-elements/err-delete-member-expression-private-method.case b/src/class-elements/err-delete-member-expression-private-method.case
index b7dbe03f0a..9b13b6288b 100644
--- a/src/class-elements/err-delete-member-expression-private-method.case
+++ b/src/class-elements/err-delete-member-expression-private-method.case
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+  private ordinary method
 template: delete-error
 features: [class-methods-private]
 ---*/
diff --git a/src/class-elements/err-delete-member-expression-private-no-reference.case b/src/class-elements/err-delete-member-expression-private-no-reference.case
new file mode 100644
index 0000000000..d22678b02e
--- /dev/null
+++ b/src/class-elements/err-delete-member-expression-private-no-reference.case
@@ -0,0 +1,12 @@
+// Copyright (C) 2018 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: >
+  It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+  no referencing class element
+template: delete-error
+---*/
+
+//- expression
+this.#m
diff --git a/src/class-elements/err-delete-member-expression-privatename.case b/src/class-elements/err-delete-member-expression-privatename.case
index 6b6a0e0963..0bc0bbd16e 100644
--- a/src/class-elements/err-delete-member-expression-privatename.case
+++ b/src/class-elements/err-delete-member-expression-privatename.case
@@ -2,9 +2,10 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-desc: It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+desc: >
+  It's a SyntaxError if delete operator is applied to MemberExpression.PrivateName
+  private field
 template: delete-error
-features: [class-fields-private]
 ---*/
 
 //- expression
-- 
GitLab