summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo Balter <leonardo.balter@gmail.com>2017-11-03 15:19:34 -0400
committerGitHub <noreply@github.com>2017-11-03 15:19:34 -0400
commit06091cb6fda8b840a7d8c53a94e19cee88100ef6 (patch)
tree47838188163612e907054e0651bfa8a827bcd969
parent8213224280e94ea4b7949c085cb9bf8e99bf0df6 (diff)
parenta9769d0854a52f07b80e8441d8b0a3c3046138bd (diff)
downloadqtdeclarative-testsuites-06091cb6fda8b840a7d8c53a94e19cee88100ef6.tar.gz
Merge pull request #1319 from bocoup/classfields-dupsdeletes
classfields: add tests duplicate private fields and deleting private fields
-rw-r--r--src/class-fields/call-expression-privatename.case18
-rw-r--r--src/class-fields/delete-error/cls-decl-field-delete-covered.template29
-rw-r--r--src/class-fields/delete-error/cls-decl-field-delete-twice-covered.template30
-rw-r--r--src/class-fields/delete-error/cls-decl-field-delete.template27
-rw-r--r--src/class-fields/delete-error/cls-decl-method-delete-covered.template33
-rw-r--r--src/class-fields/delete-error/cls-decl-method-delete-twice-covered.template33
-rw-r--r--src/class-fields/delete-error/cls-decl-method-delete.template31
-rw-r--r--src/class-fields/delete-error/cls-expr-field-delete-covered.template30
-rw-r--r--src/class-fields/delete-error/cls-expr-field-delete-twice-covered.template30
-rw-r--r--src/class-fields/delete-error/cls-expr-field-delete.template28
-rw-r--r--src/class-fields/delete-error/cls-expr-method-delete-covered.template33
-rw-r--r--src/class-fields/delete-error/cls-expr-method-delete-twice-covered.template33
-rw-r--r--src/class-fields/delete-error/cls-expr-method-delete.template31
-rw-r--r--src/class-fields/member-expression-privatename.case10
-rw-r--r--test/language/expressions/class/err-field-delete-call-expression-privatename.js32
-rw-r--r--test/language/expressions/class/err-field-delete-covered-call-expression-privatename.js34
-rw-r--r--test/language/expressions/class/err-field-delete-covered-member-expression-privatename.js32
-rw-r--r--test/language/expressions/class/err-field-delete-member-expression-privatename.js30
-rw-r--r--test/language/expressions/class/err-field-delete-twice-covered-call-expression-privatename.js34
-rw-r--r--test/language/expressions/class/err-field-delete-twice-covered-member-expression-privatename.js32
-rw-r--r--test/language/expressions/class/err-method-delete-call-expression-privatename.js35
-rw-r--r--test/language/expressions/class/err-method-delete-covered-call-expression-privatename.js37
-rw-r--r--test/language/expressions/class/err-method-delete-covered-member-expression-privatename.js35
-rw-r--r--test/language/expressions/class/err-method-delete-member-expression-privatename.js33
-rw-r--r--test/language/expressions/class/err-method-delete-twice-covered-call-expression-privatename.js37
-rw-r--r--test/language/expressions/class/err-method-delete-twice-covered-member-expression-privatename.js35
-rw-r--r--test/language/expressions/class/fields-duplicate-privatenames.js24
-rw-r--r--test/language/statements/class/err-field-delete-call-expression-privatename.js31
-rw-r--r--test/language/statements/class/err-field-delete-covered-call-expression-privatename.js33
-rw-r--r--test/language/statements/class/err-field-delete-covered-member-expression-privatename.js31
-rw-r--r--test/language/statements/class/err-field-delete-member-expression-privatename.js29
-rw-r--r--test/language/statements/class/err-field-delete-twice-covered-call-expression-privatename.js34
-rw-r--r--test/language/statements/class/err-field-delete-twice-covered-member-expression-privatename.js32
-rw-r--r--test/language/statements/class/err-method-delete-call-expression-privatename.js35
-rw-r--r--test/language/statements/class/err-method-delete-covered-call-expression-privatename.js37
-rw-r--r--test/language/statements/class/err-method-delete-covered-member-expression-privatename.js35
-rw-r--r--test/language/statements/class/err-method-delete-member-expression-privatename.js33
-rw-r--r--test/language/statements/class/err-method-delete-twice-covered-call-expression-privatename.js37
-rw-r--r--test/language/statements/class/err-method-delete-twice-covered-member-expression-privatename.js35
-rw-r--r--test/language/statements/class/fields-duplicate-privatenames.js24
40 files changed, 1252 insertions, 0 deletions
diff --git a/src/class-fields/call-expression-privatename.case b/src/class-fields/call-expression-privatename.case
new file mode 100644
index 000000000..a00e9616c
--- /dev/null
+++ b/src/class-fields/call-expression-privatename.case
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: Syntax error if you call delete on call expressions . privatename
+template: delete-error
+---*/
+
+//- infieldsetup
+g = this.f;
+//- infunctionsetup
+var g = this.f;
+//- expression
+g().#x
+//- functiondeclaration
+ f() {
+ return this;
+}
diff --git a/src/class-fields/delete-error/cls-decl-field-delete-covered.template b/src/class-fields/delete-error/cls-decl-field-delete-covered.template
new file mode 100644
index 000000000..0d5bec730
--- /dev/null
+++ b/src/class-fields/delete-error/cls-decl-field-delete-covered.template
@@ -0,0 +1,29 @@
+// 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/err-field-delete-covered-
+name: in field, covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+ /*{ infieldsetup }*/
+ x = delete (/*{ expression }*/);
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-decl-field-delete-twice-covered.template b/src/class-fields/delete-error/cls-decl-field-delete-twice-covered.template
new file mode 100644
index 000000000..917cd411a
--- /dev/null
+++ b/src/class-fields/delete-error/cls-decl-field-delete-twice-covered.template
@@ -0,0 +1,30 @@
+// 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/err-field-delete-twice-covered-
+name: in field, recursively covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+ /*{ infieldsetup }*/
+ x = delete ((/*{ expression }*/));
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-decl-field-delete.template b/src/class-fields/delete-error/cls-decl-field-delete.template
new file mode 100644
index 000000000..68cf7615b
--- /dev/null
+++ b/src/class-fields/delete-error/cls-decl-field-delete.template
@@ -0,0 +1,27 @@
+// 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/err-field-delete-
+name: in field
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+ /*{ infieldsetup }*/
+ x = delete /*{ expression }*/;
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-decl-method-delete-covered.template b/src/class-fields/delete-error/cls-decl-method-delete-covered.template
new file mode 100644
index 000000000..2b0200d2c
--- /dev/null
+++ b/src/class-fields/delete-error/cls-decl-method-delete-covered.template
@@ -0,0 +1,33 @@
+// 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/err-method-delete-covered-
+name: in method, covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+ /*{ infunctionsetup }*/
+ delete (/*{ expression }*/);
+ }
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-decl-method-delete-twice-covered.template b/src/class-fields/delete-error/cls-decl-method-delete-twice-covered.template
new file mode 100644
index 000000000..f39de82a4
--- /dev/null
+++ b/src/class-fields/delete-error/cls-decl-method-delete-twice-covered.template
@@ -0,0 +1,33 @@
+// 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/err-method-delete-twice-covered-
+name: in method, recursively covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+ /*{ infunctionsetup }*/
+ delete ((/*{ expression }*/));
+ }
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-decl-method-delete.template b/src/class-fields/delete-error/cls-decl-method-delete.template
new file mode 100644
index 000000000..1f267683f
--- /dev/null
+++ b/src/class-fields/delete-error/cls-decl-method-delete.template
@@ -0,0 +1,31 @@
+// 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/err-method-delete-
+name: in method
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+ /*{ infunctionsetup }*/
+ delete /*{ expression }*/;
+ }
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-expr-field-delete-covered.template b/src/class-fields/delete-error/cls-expr-field-delete-covered.template
new file mode 100644
index 000000000..bf3af2a6c
--- /dev/null
+++ b/src/class-fields/delete-error/cls-expr-field-delete-covered.template
@@ -0,0 +1,30 @@
+// 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/err-field-delete-covered-
+name: in field, covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+ /*{ infieldsetup }*/
+ x = delete (/*{ expression }*/);
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-expr-field-delete-twice-covered.template b/src/class-fields/delete-error/cls-expr-field-delete-twice-covered.template
new file mode 100644
index 000000000..595b706dc
--- /dev/null
+++ b/src/class-fields/delete-error/cls-expr-field-delete-twice-covered.template
@@ -0,0 +1,30 @@
+// 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/err-field-delete-twice-covered-
+name: in field, recursively covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+ /*{ infieldsetup }*/
+ x = delete ((/*{ expression }*/));
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-expr-field-delete.template b/src/class-fields/delete-error/cls-expr-field-delete.template
new file mode 100644
index 000000000..29eea4fcf
--- /dev/null
+++ b/src/class-fields/delete-error/cls-expr-field-delete.template
@@ -0,0 +1,28 @@
+// 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/err-field-delete-
+name: in field
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+ /*{ infieldsetup }*/
+ x = delete /*{ expression }*/;
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-expr-method-delete-covered.template b/src/class-fields/delete-error/cls-expr-method-delete-covered.template
new file mode 100644
index 000000000..41ebc0e3b
--- /dev/null
+++ b/src/class-fields/delete-error/cls-expr-method-delete-covered.template
@@ -0,0 +1,33 @@
+// 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/err-method-delete-covered-
+name: in method, covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+ /*{ infunctionsetup }*/
+ delete (/*{ expression }*/);
+ }
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-expr-method-delete-twice-covered.template b/src/class-fields/delete-error/cls-expr-method-delete-twice-covered.template
new file mode 100644
index 000000000..f456e7c7c
--- /dev/null
+++ b/src/class-fields/delete-error/cls-expr-method-delete-twice-covered.template
@@ -0,0 +1,33 @@
+// 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/err-method-delete-twice-covered-
+name: in method, recursively covered
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+ /*{ infunctionsetup }*/
+ delete ((/*{ expression }*/));
+ }
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/delete-error/cls-expr-method-delete.template b/src/class-fields/delete-error/cls-expr-method-delete.template
new file mode 100644
index 000000000..c80c0faa0
--- /dev/null
+++ b/src/class-fields/delete-error/cls-expr-method-delete.template
@@ -0,0 +1,31 @@
+// 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/err-method-delete-
+name: in method
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+features: [class-fields]
+negative:
+ type: SyntaxError
+ phase: early
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+ /*{ infunctionsetup }*/
+ delete /*{ expression }*/;
+ }
+
+ /*{ functiondeclaration }*/
+}
diff --git a/src/class-fields/member-expression-privatename.case b/src/class-fields/member-expression-privatename.case
new file mode 100644
index 000000000..595cdcea7
--- /dev/null
+++ b/src/class-fields/member-expression-privatename.case
@@ -0,0 +1,10 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: Syntax error if you call delete on member expressions . privatename
+template: delete-error
+---*/
+
+//- expression
+this.#x
diff --git a/test/language/expressions/class/err-field-delete-call-expression-privatename.js b/test/language/expressions/class/err-field-delete-call-expression-privatename.js
new file mode 100644
index 000000000..5941f1b87
--- /dev/null
+++ b/test/language/expressions/class/err-field-delete-call-expression-privatename.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-field-delete.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in field)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+ g = this.f;
+ x = delete g().#x;
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/expressions/class/err-field-delete-covered-call-expression-privatename.js b/test/language/expressions/class/err-field-delete-covered-call-expression-privatename.js
new file mode 100644
index 000000000..2709caa81
--- /dev/null
+++ b/test/language/expressions/class/err-field-delete-covered-call-expression-privatename.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-field-delete-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in field, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+ g = this.f;
+ x = delete (g().#x);
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/expressions/class/err-field-delete-covered-member-expression-privatename.js b/test/language/expressions/class/err-field-delete-covered-member-expression-privatename.js
new file mode 100644
index 000000000..84e557e62
--- /dev/null
+++ b/test/language/expressions/class/err-field-delete-covered-member-expression-privatename.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-field-delete-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in field, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x = delete (this.#x);
+
+
+}
diff --git a/test/language/expressions/class/err-field-delete-member-expression-privatename.js b/test/language/expressions/class/err-field-delete-member-expression-privatename.js
new file mode 100644
index 000000000..6e8381e22
--- /dev/null
+++ b/test/language/expressions/class/err-field-delete-member-expression-privatename.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-field-delete.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in field)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x = delete this.#x;
+
+
+}
diff --git a/test/language/expressions/class/err-field-delete-twice-covered-call-expression-privatename.js b/test/language/expressions/class/err-field-delete-twice-covered-call-expression-privatename.js
new file mode 100644
index 000000000..ccc0f4f17
--- /dev/null
+++ b/test/language/expressions/class/err-field-delete-twice-covered-call-expression-privatename.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-field-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in field, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+ g = this.f;
+ x = delete ((g().#x));
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/expressions/class/err-field-delete-twice-covered-member-expression-privatename.js b/test/language/expressions/class/err-field-delete-twice-covered-member-expression-privatename.js
new file mode 100644
index 000000000..c170745c4
--- /dev/null
+++ b/test/language/expressions/class/err-field-delete-twice-covered-member-expression-privatename.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-field-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in field, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x = delete ((this.#x));
+
+
+}
diff --git a/test/language/expressions/class/err-method-delete-call-expression-privatename.js b/test/language/expressions/class/err-method-delete-call-expression-privatename.js
new file mode 100644
index 000000000..ad7390815
--- /dev/null
+++ b/test/language/expressions/class/err-method-delete-call-expression-privatename.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-method-delete.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in method)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+ var g = this.f;
+ delete g().#x;
+ }
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/expressions/class/err-method-delete-covered-call-expression-privatename.js b/test/language/expressions/class/err-method-delete-covered-call-expression-privatename.js
new file mode 100644
index 000000000..3b85fdf5f
--- /dev/null
+++ b/test/language/expressions/class/err-method-delete-covered-call-expression-privatename.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-method-delete-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in method, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+ var g = this.f;
+ delete (g().#x);
+ }
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/expressions/class/err-method-delete-covered-member-expression-privatename.js b/test/language/expressions/class/err-method-delete-covered-member-expression-privatename.js
new file mode 100644
index 000000000..ae0ef4619
--- /dev/null
+++ b/test/language/expressions/class/err-method-delete-covered-member-expression-privatename.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-method-delete-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in method, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+
+ delete (this.#x);
+ }
+
+
+}
diff --git a/test/language/expressions/class/err-method-delete-member-expression-privatename.js b/test/language/expressions/class/err-method-delete-member-expression-privatename.js
new file mode 100644
index 000000000..5ac00be88
--- /dev/null
+++ b/test/language/expressions/class/err-method-delete-member-expression-privatename.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-method-delete.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in method)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+
+ delete this.#x;
+ }
+
+
+}
diff --git a/test/language/expressions/class/err-method-delete-twice-covered-call-expression-privatename.js b/test/language/expressions/class/err-method-delete-twice-covered-call-expression-privatename.js
new file mode 100644
index 000000000..02aa7e63d
--- /dev/null
+++ b/test/language/expressions/class/err-method-delete-twice-covered-call-expression-privatename.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-method-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in method, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+ var g = this.f;
+ delete ((g().#x));
+ }
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/expressions/class/err-method-delete-twice-covered-member-expression-privatename.js b/test/language/expressions/class/err-method-delete-twice-covered-member-expression-privatename.js
new file mode 100644
index 000000000..6ca6f29ab
--- /dev/null
+++ b/test/language/expressions/class/err-method-delete-twice-covered-member-expression-privatename.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-expr-method-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in method, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+
+ x() {
+
+ delete ((this.#x));
+ }
+
+
+}
diff --git a/test/language/expressions/class/fields-duplicate-privatenames.js b/test/language/expressions/class/fields-duplicate-privatenames.js
new file mode 100644
index 000000000..8d1d03da1
--- /dev/null
+++ b/test/language/expressions/class/fields-duplicate-privatenames.js
@@ -0,0 +1,24 @@
+// Copyright 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Syntax error if the same private field defined twice
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ ClassBody : ClassElementList
+ It is a Syntax Error if PrivateBoundNames of ClassBody contains any duplicate entries.
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+var C = class {
+ #x;
+ #x;
+}
diff --git a/test/language/statements/class/err-field-delete-call-expression-privatename.js b/test/language/statements/class/err-field-delete-call-expression-privatename.js
new file mode 100644
index 000000000..359c1a755
--- /dev/null
+++ b/test/language/statements/class/err-field-delete-call-expression-privatename.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-field-delete.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in field)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+ g = this.f;
+ x = delete g().#x;
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/statements/class/err-field-delete-covered-call-expression-privatename.js b/test/language/statements/class/err-field-delete-covered-call-expression-privatename.js
new file mode 100644
index 000000000..21afe2958
--- /dev/null
+++ b/test/language/statements/class/err-field-delete-covered-call-expression-privatename.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-field-delete-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in field, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+ g = this.f;
+ x = delete (g().#x);
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/statements/class/err-field-delete-covered-member-expression-privatename.js b/test/language/statements/class/err-field-delete-covered-member-expression-privatename.js
new file mode 100644
index 000000000..d1042e1a4
--- /dev/null
+++ b/test/language/statements/class/err-field-delete-covered-member-expression-privatename.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-field-delete-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in field, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x = delete (this.#x);
+
+}
diff --git a/test/language/statements/class/err-field-delete-member-expression-privatename.js b/test/language/statements/class/err-field-delete-member-expression-privatename.js
new file mode 100644
index 000000000..57dea8b7a
--- /dev/null
+++ b/test/language/statements/class/err-field-delete-member-expression-privatename.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-field-delete.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in field)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x = delete this.#x;
+
+}
diff --git a/test/language/statements/class/err-field-delete-twice-covered-call-expression-privatename.js b/test/language/statements/class/err-field-delete-twice-covered-call-expression-privatename.js
new file mode 100644
index 000000000..f142c1970
--- /dev/null
+++ b/test/language/statements/class/err-field-delete-twice-covered-call-expression-privatename.js
@@ -0,0 +1,34 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-field-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in field, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+ g = this.f;
+ x = delete ((g().#x));
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/statements/class/err-field-delete-twice-covered-member-expression-privatename.js b/test/language/statements/class/err-field-delete-twice-covered-member-expression-privatename.js
new file mode 100644
index 000000000..41fea77b4
--- /dev/null
+++ b/test/language/statements/class/err-field-delete-twice-covered-member-expression-privatename.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-field-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in field, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x = delete ((this.#x));
+
+
+}
diff --git a/test/language/statements/class/err-method-delete-call-expression-privatename.js b/test/language/statements/class/err-method-delete-call-expression-privatename.js
new file mode 100644
index 000000000..f55917d58
--- /dev/null
+++ b/test/language/statements/class/err-method-delete-call-expression-privatename.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-method-delete.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in method)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+ var g = this.f;
+ delete g().#x;
+ }
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/statements/class/err-method-delete-covered-call-expression-privatename.js b/test/language/statements/class/err-method-delete-covered-call-expression-privatename.js
new file mode 100644
index 000000000..b6e14a0c6
--- /dev/null
+++ b/test/language/statements/class/err-method-delete-covered-call-expression-privatename.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-method-delete-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in method, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+ var g = this.f;
+ delete (g().#x);
+ }
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/statements/class/err-method-delete-covered-member-expression-privatename.js b/test/language/statements/class/err-method-delete-covered-member-expression-privatename.js
new file mode 100644
index 000000000..71fc2c51f
--- /dev/null
+++ b/test/language/statements/class/err-method-delete-covered-member-expression-privatename.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-method-delete-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in method, covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+
+ delete (this.#x);
+ }
+
+
+}
diff --git a/test/language/statements/class/err-method-delete-member-expression-privatename.js b/test/language/statements/class/err-method-delete-member-expression-privatename.js
new file mode 100644
index 000000000..492410f3c
--- /dev/null
+++ b/test/language/statements/class/err-method-delete-member-expression-privatename.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-method-delete.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in method)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+
+ delete this.#x;
+ }
+
+
+}
diff --git a/test/language/statements/class/err-method-delete-twice-covered-call-expression-privatename.js b/test/language/statements/class/err-method-delete-twice-covered-call-expression-privatename.js
new file mode 100644
index 000000000..9781eb9a5
--- /dev/null
+++ b/test/language/statements/class/err-method-delete-twice-covered-call-expression-privatename.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/call-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-method-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on call expressions . privatename (in method, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+ var g = this.f;
+ delete ((g().#x));
+ }
+
+ f() {
+ return this;
+ }
+}
diff --git a/test/language/statements/class/err-method-delete-twice-covered-member-expression-privatename.js b/test/language/statements/class/err-method-delete-twice-covered-member-expression-privatename.js
new file mode 100644
index 000000000..fdc6b8c27
--- /dev/null
+++ b/test/language/statements/class/err-method-delete-twice-covered-member-expression-privatename.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/member-expression-privatename.case
+// - src/class-fields/delete-error/cls-decl-method-delete-twice-covered.template
+/*---
+description: Syntax error if you call delete on member expressions . privatename (in method, recursively covered)
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+flags: [generated]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ UnaryExpression : delete UnaryExpression
+
+ It is a Syntax Error if the UnaryExpression is contained in strict mode code and the derived UnaryExpression is PrimaryExpression : IdentifierReference , MemberExpression : MemberExpression.PrivateName , or CallExpression : CallExpression.PrivateName .
+
+ It is a Syntax Error if the derived UnaryExpression is PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList and CoverParenthesizedExpressionAndArrowParameterList ultimately derives a phrase that, if used in place of UnaryExpression, would produce a Syntax Error according to these rules. This rule is recursively applied.
+
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+
+ x() {
+
+ delete ((this.#x));
+ }
+
+
+}
diff --git a/test/language/statements/class/fields-duplicate-privatenames.js b/test/language/statements/class/fields-duplicate-privatenames.js
new file mode 100644
index 000000000..ee77d36ae
--- /dev/null
+++ b/test/language/statements/class/fields-duplicate-privatenames.js
@@ -0,0 +1,24 @@
+// Copyright 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Syntax error if the same private field defined twice
+esid: sec-class-definitions-static-semantics-early-errors
+features: [class-fields]
+negative:
+ phase: early
+ type: SyntaxError
+info: |
+ Static Semantics: Early Errors
+
+ ClassBody : ClassElementList
+ It is a Syntax Error if PrivateBoundNames of ClassBody contains any duplicate entries.
+---*/
+
+
+throw "Test262: This statement should not be evaluated.";
+
+class C {
+ #x;
+ #x;
+}