Skip to content
Snippets Groups Projects
cls-decl-method-delete-twice-covered.template 1.37 KiB
// 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/fields/syntax/early-errors/delete/method-delete-twice-covered-
name: in method, recursively covered
info: |
  This file must never use the onlyStrict flag as the strict mode should always
  be observed inside class bodies.

  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, class-fields-private]
negative:
  type: SyntaxError
  phase: parse
---*/

$DONOTEVALUATE();

class C {
  #x;

  x() {
    /*{ infunctionsetup }*/
    delete ((/*{ expression }*/));
  }

  /*{ functiondeclaration }*/
}