Skip to content
Snippets Groups Projects
cls-private-expr-inst.template 1.65 KiB
// Copyright (C) 2018 Katie Broida. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/expressions/class/private-accessor-name/inst-
name: Class expression, instance private method
esid: #prod-MethodDefinition
info: |
  ClassElement :
    MethodDefinition
    static MethodDefinition
    FieldDefinition ;
    ;

  FieldDefinition :
    ClassElementName Initializer _opt

  ClassElementName :
    PropertyName
    PrivateName

  PrivateName ::
    # IdentifierName

  Initializer :
    = AssignmentExpression

  IdentifierName ::
    IdentifierStart
    IdentifierName IdentifierPart

  IdentifierStart ::
    UnicodeIDStart
    $
    _
    \ UnicodeEscapeSequence

  IdentifierPart::
    UnicodeIDContinue
    $
    \ UnicodeEscapeSequence
    <ZWNJ> <ZWJ>

  UnicodeIDStart::
    any Unicode code point with the Unicode property "ID_Start"

  UnicodeIDContinue::
    any Unicode code point with the Unicode property "ID_Continue"


  NOTE 3
  The sets of code points with Unicode properties "ID_Start" and
  "ID_Continue" include, respectively, the code points with Unicode
  properties "Other_ID_Start" and "Other_ID_Continue".
features: [class-methods-private]
---*/

var stringSet;

var C = class {
  get #/*{ declareWith }*/() { return 'get string'; }
  set #/*{ declareWith }*/(param) { stringSet = param; }

  getPrivateReference() {
    return this.#/*{ referenceWith }*/;
  }

  setPrivateReference(value) {
    this.#/*{ referenceWith }*/ = value;
  }
};

var inst = new C();

assert.sameValue(inst.getPrivateReference(), 'get string');

inst.setPrivateReference('set string');
assert.sameValue(stringSet, 'set string');