From bc3d95c0a41c833802d0939ecda081a167565b02 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 27 Oct 2015 17:17:31 -0700 Subject: [PATCH] JS class members as methods --- src/compiler/binder.ts | 2 +- src/compiler/checker.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index bfef27a9102..85882c495b6 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1063,7 +1063,7 @@ namespace ts { // Get 'y', the property name, and add it to the type of the class let propertyName = (node.left).name; let prototypeSymbol = declareSymbol(funcSymbol.members, funcSymbol, (node.left).expression, SymbolFlags.HasMembers, SymbolFlags.None); - declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method | SymbolFlags.Property, SymbolFlags.None); + declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method, SymbolFlags.None); } function bindCallExpression(node: CallExpression) { diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 24da884a330..f0bdd48afa7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3843,6 +3843,11 @@ namespace ts { } } result.push(getSignatureFromDeclaration(node)); + break; + + case SyntaxKind.PropertyAccessExpression: + // Class inference from ClassName.prototype.methodName = expr + return getSignaturesOfType(checkExpressionCached((node.parent).right), SignatureKind.Call); } } return result;