diff --git a/src/class-fields/call-expression-privatename.case b/src/class-fields/call-expression-privatename.case
new file mode 100644
index 0000000000000000000000000000000000000000..a00e9616c991080028edcb11ac1521f8bc2512d4
--- /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 0000000000000000000000000000000000000000..0d5bec7303f010847d92e6845c9106d61273d592
--- /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 0000000000000000000000000000000000000000..917cd411a7ee8efaf667c63f6d8bc091118c0953
--- /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 0000000000000000000000000000000000000000..68cf7615bd7af17b03cf354762cb4fa0783950ac
--- /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 0000000000000000000000000000000000000000..2b0200d2c6a5dde857790beec95f1193e9786508
--- /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 0000000000000000000000000000000000000000..f39de82a4136be860e4c12adaf74873a008b717c
--- /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 0000000000000000000000000000000000000000..1f267683f76abdd51de3858e5d90ae39f527e4b1
--- /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 0000000000000000000000000000000000000000..bf3af2a6cb5593da47d7c6810703de760a1526b7
--- /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 0000000000000000000000000000000000000000..595b706dcbc863d7be8fb6e01facbabd5c0fbe49
--- /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 0000000000000000000000000000000000000000..29eea4fcf39dc5fb6287800a0e9ef5083b696fa3
--- /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 0000000000000000000000000000000000000000..41ebc0e3bb3c29098387871c88144bc58be6aec2
--- /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 0000000000000000000000000000000000000000..f456e7c7ca02f321cae696627087aec69705f2f1
--- /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 0000000000000000000000000000000000000000..c80c0faa00225d06dd00f5bc4c673a797511bb0b
--- /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 0000000000000000000000000000000000000000..595cdcea750c8c8be80b4618fe00ec61e132d9b9
--- /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