summaryrefslogtreecommitdiff
path: root/deps/acorn-plugins/acorn-private-methods/index.js
blob: a2964251680565b09a332c415c18e6ba22baebd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"use strict"

const privateClassElements = require('internal/deps/acorn-plugins/acorn-private-class-elements/index')

module.exports = function(Parser) {
  const ExtendedParser = privateClassElements(Parser)

  return class extends ExtendedParser {
    // Parse private methods
    parseClassElement(_constructorAllowsSuper) {
      const oldInClassMemberName = this._inClassMemberName
      this._inClassMemberName = true
      const result = super.parseClassElement.apply(this, arguments)
      this._inClassMemberName = oldInClassMemberName
      return result
    }

    parsePropertyName(prop) {
      const isPrivate = this.options.ecmaVersion >= 8 && this._inClassMemberName && this.type == this.privateNameToken
      this._inClassMemberName = false
      if (!isPrivate) return super.parsePropertyName(prop)
      return this.parsePrivateClassElementName(prop)
    }
  }
}