From 537d8785f3fc245223ded20181071c804de21b24 Mon Sep 17 00:00:00 2001 From: Jason Freeman Date: Wed, 13 Aug 2014 15:04:45 -0700 Subject: [PATCH] Change getTypeOfNode to take an apparentType flag --- src/compiler/checker.ts | 9 +++++---- src/compiler/types.ts | 2 +- src/services/services.ts | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 86623b61711..56546f12432 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6820,9 +6820,9 @@ module ts { return undefined; } - function getTypeOfNode(node: Node): Type { + function getTypeOfNode(node: Node, apparentType: boolean): Type { if (isExpression(node)) { - return getTypeOfExpression(node); + return getTypeOfExpression(node, apparentType); } if (isTypeNode(node)) { if (node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName) { @@ -6863,11 +6863,12 @@ module ts { Debug.fail("Unhandled case in getTypeOfNode"); } - function getTypeOfExpression(expr: Expression): Type { + function getTypeOfExpression(expr: Expression, apparentType: boolean): Type { if (isRightSideOfQualifiedNameOrPropertyAccess(expr)) { expr = expr.parent; } - return getApparentType(checkExpression(expr)); + var type = checkExpression(expr); + return apparentType ? getApparentType(type) : type; } function getAugmentedPropertiesOfApparentType(type: Type): Symbol[]{ diff --git a/src/compiler/types.ts b/src/compiler/types.ts index bebd79fe58b..4b881c9f8d6 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -604,7 +604,7 @@ module ts { getReturnTypeOfSignature(signature: Signature): Type; getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; getSymbolInfo(node: Node): Symbol; - getTypeOfNode(node: Node): Type; + getTypeOfNode(node: Node, apparentType: boolean): Type; typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string; symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): string; getAugmentedPropertiesOfApparentType(type: Type): Symbol[]; diff --git a/src/services/services.ts b/src/services/services.ts index 51ab48a9251..f63cb5c7ed0 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1693,7 +1693,7 @@ module ts { // Right of dot member completion list if (isRightOfDot) { - var type: Type = typeInfoResolver.getTypeOfNode(mappedNode); + var type: Type = typeInfoResolver.getTypeOfNode(mappedNode, /*apparentType*/ true); if (!type) { return undefined; }