diff options
Diffstat (limited to 'deps/acorn-plugins/acorn-private-methods/index.js')
-rw-r--r-- | deps/acorn-plugins/acorn-private-methods/index.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/deps/acorn-plugins/acorn-private-methods/index.js b/deps/acorn-plugins/acorn-private-methods/index.js new file mode 100644 index 0000000000..a296425168 --- /dev/null +++ b/deps/acorn-plugins/acorn-private-methods/index.js @@ -0,0 +1,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) + } + } +} |