Fix duplicate definition error in private class methods (#9453)

This commit is contained in:
gverni 2019-02-04 15:19:04 +00:00 committed by Brian Ng
parent d37c958637
commit 65cbbc1ef8
3 changed files with 31 additions and 4 deletions

View File

@ -0,0 +1,17 @@
class Foo {
#privateMethodA() {
const i = 40;
return i;
}
#privateMethodB() {
const i = 2;
return i;
}
publicMethod() {
return this.#privateMethodA() + this.#privateMethodB();
}
}
expect((new Foo).publicMethod()).toEqual(42);

View File

@ -168,7 +168,14 @@ defineType("ClassPrivateMethod", {
"returnType",
"typeParameters",
],
aliases: ["Method", "Private", "Function"],
aliases: [
"Function",
"Scopable",
"BlockParent",
"FunctionParent",
"Method",
"Private",
],
fields: {
...classMethodOrDeclareMethodCommon,
key: {

View File

@ -3283,7 +3283,8 @@ export function isScopable(node: Object, opts?: Object): boolean {
"ClassDeclaration" === nodeType ||
"ClassExpression" === nodeType ||
"ForOfStatement" === nodeType ||
"ClassMethod" === nodeType
"ClassMethod" === nodeType ||
"ClassPrivateMethod" === nodeType
) {
if (typeof opts === "undefined") {
return true;
@ -3313,7 +3314,8 @@ export function isBlockParent(node: Object, opts?: Object): boolean {
"WhileStatement" === nodeType ||
"ArrowFunctionExpression" === nodeType ||
"ForOfStatement" === nodeType ||
"ClassMethod" === nodeType
"ClassMethod" === nodeType ||
"ClassPrivateMethod" === nodeType
) {
if (typeof opts === "undefined") {
return true;
@ -3591,7 +3593,8 @@ export function isFunctionParent(node: Object, opts?: Object): boolean {
"FunctionExpression" === nodeType ||
"ObjectMethod" === nodeType ||
"ArrowFunctionExpression" === nodeType ||
"ClassMethod" === nodeType
"ClassMethod" === nodeType ||
"ClassPrivateMethod" === nodeType
) {
if (typeof opts === "undefined") {
return true;