@@ -589,7 +589,7 @@ module ts {
589589 if (moduleSymbol.flags & SymbolFlags.Variable) {
590590 let typeAnnotation = (<VariableDeclaration>moduleSymbol.valueDeclaration).type;
591591 if (typeAnnotation) {
592- return getPropertyOfType(getTypeFromNode (typeAnnotation), name);
592+ return getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement (typeAnnotation), name);
593593 }
594594 }
595595 }
@@ -638,7 +638,7 @@ module ts {
638638 if (symbol.flags & SymbolFlags.Variable) {
639639 var typeAnnotation = (<VariableDeclaration>symbol.valueDeclaration).type;
640640 if (typeAnnotation) {
641- return resolveSymbol(getPropertyOfType(getTypeFromNode (typeAnnotation), name));
641+ return resolveSymbol(getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement (typeAnnotation), name));
642642 }
643643 }
644644 }
@@ -2106,7 +2106,7 @@ module ts {
21062106 }
21072107 // Use type from type annotation if one is present
21082108 if (declaration.type) {
2109- return getTypeFromNode (declaration.type);
2109+ return getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
21102110 }
21112111 if (declaration.kind === SyntaxKind.Parameter) {
21122112 let func = <FunctionLikeDeclaration>declaration.parent;
@@ -2243,7 +2243,7 @@ module ts {
22432243 return links.type = checkExpression(exportAssignment.expression);
22442244 }
22452245 else if (exportAssignment.type) {
2246- return links.type = getTypeFromNode (exportAssignment.type);
2246+ return links.type = getTypeFromTypeNodeOrHeritageClauseElement (exportAssignment.type);
22472247 }
22482248 else {
22492249 return links.type = anyType;
@@ -2275,11 +2275,11 @@ module ts {
22752275 function getAnnotatedAccessorType(accessor: AccessorDeclaration): Type {
22762276 if (accessor) {
22772277 if (accessor.kind === SyntaxKind.GetAccessor) {
2278- return accessor.type && getTypeFromNode (accessor.type);
2278+ return accessor.type && getTypeFromTypeNodeOrHeritageClauseElement (accessor.type);
22792279 }
22802280 else {
22812281 let setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor);
2282- return setterTypeAnnotation && getTypeFromNode (setterTypeAnnotation);
2282+ return setterTypeAnnotation && getTypeFromTypeNodeOrHeritageClauseElement (setterTypeAnnotation);
22832283 }
22842284 }
22852285 return undefined;
@@ -2520,7 +2520,7 @@ module ts {
25202520 if (!links.declaredType) {
25212521 links.declaredType = resolvingType;
25222522 let declaration = <TypeAliasDeclaration>getDeclarationOfKind(symbol, SyntaxKind.TypeAliasDeclaration);
2523- let type = getTypeFromNode (declaration.type);
2523+ let type = getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
25242524 if (links.declaredType === resolvingType) {
25252525 links.declaredType = type;
25262526 }
@@ -3062,7 +3062,7 @@ module ts {
30623062 returnType = classType;
30633063 }
30643064 else if (declaration.type) {
3065- returnType = getTypeFromNode (declaration.type);
3065+ returnType = getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
30663066 }
30673067 else {
30683068 // TypeScript 1.0 spec (April 2014):
@@ -3220,7 +3220,7 @@ module ts {
32203220 function getIndexTypeOfSymbol(symbol: Symbol, kind: IndexKind): Type {
32213221 let declaration = getIndexDeclarationOfSymbol(symbol, kind);
32223222 return declaration
3223- ? declaration.type ? getTypeFromNode (declaration.type) : anyType
3223+ ? declaration.type ? getTypeFromTypeNodeOrHeritageClauseElement (declaration.type) : anyType
32243224 : undefined;
32253225 }
32263226
@@ -3231,7 +3231,7 @@ module ts {
32313231 type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType;
32323232 }
32333233 else {
3234- type.constraint = getTypeFromNode ((<TypeParameterDeclaration>getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint);
3234+ type.constraint = getTypeFromTypeNodeOrHeritageClauseElement ((<TypeParameterDeclaration>getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint);
32353235 }
32363236 }
32373237 return type.constraint === noConstraintType ? undefined : type.constraint;
@@ -3362,7 +3362,7 @@ module ts {
33623362 if (type.flags & (TypeFlags.Class | TypeFlags.Interface) && type.flags & TypeFlags.Reference) {
33633363 let typeParameters = (<InterfaceType>type).typeParameters;
33643364 if (node.typeArguments && node.typeArguments.length === typeParameters.length) {
3365- type = createTypeReference(<GenericType>type, map(node.typeArguments, getTypeFromNode ));
3365+ type = createTypeReference(<GenericType>type, map(node.typeArguments, getTypeFromTypeNodeOrHeritageClauseElement ));
33663366 }
33673367 else {
33683368 error(node, Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType), typeParameters.length);
@@ -3456,7 +3456,7 @@ module ts {
34563456 function getTypeFromArrayTypeNode(node: ArrayTypeNode): Type {
34573457 let links = getNodeLinks(node);
34583458 if (!links.resolvedType) {
3459- links.resolvedType = createArrayType(getTypeFromNode (node.elementType));
3459+ links.resolvedType = createArrayType(getTypeFromTypeNodeOrHeritageClauseElement (node.elementType));
34603460 }
34613461 return links.resolvedType;
34623462 }
@@ -3474,7 +3474,7 @@ module ts {
34743474 function getTypeFromTupleTypeNode(node: TupleTypeNode): Type {
34753475 let links = getNodeLinks(node);
34763476 if (!links.resolvedType) {
3477- links.resolvedType = createTupleType(map(node.elementTypes, getTypeFromNode ));
3477+ links.resolvedType = createTupleType(map(node.elementTypes, getTypeFromTypeNodeOrHeritageClauseElement ));
34783478 }
34793479 return links.resolvedType;
34803480 }
@@ -3570,7 +3570,7 @@ module ts {
35703570 function getTypeFromUnionTypeNode(node: UnionTypeNode): Type {
35713571 let links = getNodeLinks(node);
35723572 if (!links.resolvedType) {
3573- links.resolvedType = getUnionType(map(node.types, getTypeFromNode ), /*noSubtypeReduction*/ true);
3573+ links.resolvedType = getUnionType(map(node.types, getTypeFromTypeNodeOrHeritageClauseElement ), /*noSubtypeReduction*/ true);
35743574 }
35753575 return links.resolvedType;
35763576 }
@@ -3602,7 +3602,7 @@ module ts {
36023602 return links.resolvedType;
36033603 }
36043604
3605- function getTypeFromNode (node: TypeNode | LiteralExpression | HeritageClauseElement): Type {
3605+ function getTypeFromTypeNodeOrHeritageClauseElement (node: TypeNode | LiteralExpression | HeritageClauseElement): Type {
36063606 switch (node.kind) {
36073607 case SyntaxKind.AnyKeyword:
36083608 return anyType;
@@ -3631,7 +3631,7 @@ module ts {
36313631 case SyntaxKind.UnionType:
36323632 return getTypeFromUnionTypeNode(<UnionTypeNode>node);
36333633 case SyntaxKind.ParenthesizedType:
3634- return getTypeFromNode ((<ParenthesizedTypeNode>node).type);
3634+ return getTypeFromTypeNodeOrHeritageClauseElement ((<ParenthesizedTypeNode>node).type);
36353635 case SyntaxKind.FunctionType:
36363636 case SyntaxKind.ConstructorType:
36373637 case SyntaxKind.TypeLiteral:
@@ -5632,7 +5632,7 @@ module ts {
56325632 let declaration = <VariableLikeDeclaration>node.parent;
56335633 if (node === declaration.initializer) {
56345634 if (declaration.type) {
5635- return getTypeFromNode (declaration.type);
5635+ return getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
56365636 }
56375637 if (declaration.kind === SyntaxKind.Parameter) {
56385638 let type = getContextuallyTypedParameterType(<ParameterDeclaration>declaration);
@@ -5835,7 +5835,7 @@ module ts {
58355835 case SyntaxKind.NewExpression:
58365836 return getContextualTypeForArgument(<CallExpression>parent, node);
58375837 case SyntaxKind.TypeAssertionExpression:
5838- return getTypeFromNode ((<TypeAssertion>parent).type);
5838+ return getTypeFromTypeNodeOrHeritageClauseElement ((<TypeAssertion>parent).type);
58395839 case SyntaxKind.BinaryExpression:
58405840 return getContextualTypeForBinaryOperand(node);
58415841 case SyntaxKind.PropertyAssignment:
@@ -6636,7 +6636,7 @@ module ts {
66366636 let typeArgumentsAreAssignable = true;
66376637 for (let i = 0; i < typeParameters.length; i++) {
66386638 let typeArgNode = typeArguments[i];
6639- let typeArgument = getTypeFromNode (typeArgNode);
6639+ let typeArgument = getTypeFromTypeNodeOrHeritageClauseElement (typeArgNode);
66406640 // Do not push on this array! It has a preallocated length
66416641 typeArgumentResultTypes[i] = typeArgument;
66426642 if (typeArgumentsAreAssignable /* so far */) {
@@ -7118,7 +7118,7 @@ module ts {
71187118
71197119 function checkTypeAssertion(node: TypeAssertion): Type {
71207120 let exprType = checkExpression(node.expression);
7121- let targetType = getTypeFromNode (node.type);
7121+ let targetType = getTypeFromTypeNodeOrHeritageClauseElement (node.type);
71227122 if (produceDiagnostics && targetType !== unknownType) {
71237123 let widenedType = getWidenedType(exprType);
71247124 if (!(isTypeAssignableTo(targetType, widenedType))) {
@@ -7297,7 +7297,7 @@ module ts {
72977297 function checkFunctionExpressionOrObjectLiteralMethodBody(node: FunctionExpression | MethodDeclaration) {
72987298 Debug.assert(node.kind !== SyntaxKind.MethodDeclaration || isObjectLiteralMethod(node));
72997299 if (node.type) {
7300- checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromNode (node.type));
7300+ checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement (node.type));
73017301 }
73027302
73037303 if (node.body) {
@@ -7307,7 +7307,7 @@ module ts {
73077307 else {
73087308 let exprType = checkExpression(<Expression>node.body);
73097309 if (node.type) {
7310- checkTypeAssignableTo(exprType, getTypeFromNode (node.type), node.body, /*headMessage*/ undefined);
7310+ checkTypeAssignableTo(exprType, getTypeFromTypeNodeOrHeritageClauseElement (node.type), node.body, /*headMessage*/ undefined);
73117311 }
73127312 checkFunctionExpressionBodies(node.body);
73137313 }
@@ -8816,7 +8816,7 @@ module ts {
88168816
88178817 checkSourceElement(node.body);
88188818 if (node.type && !isAccessor(node.kind)) {
8819- checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromNode (node.type));
8819+ checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement (node.type));
88208820 }
88218821
88228822 // Report an implicit any error if there is no body, no explicit return type, and node is not a private method
@@ -9949,7 +9949,7 @@ module ts {
99499949 if (!tp1.constraint || !tp2.constraint) {
99509950 return false;
99519951 }
9952- if (!isTypeIdenticalTo(getTypeFromNode (tp1.constraint), getTypeFromNode (tp2.constraint))) {
9952+ if (!isTypeIdenticalTo(getTypeFromTypeNodeOrHeritageClauseElement (tp1.constraint), getTypeFromTypeNodeOrHeritageClauseElement (tp2.constraint))) {
99539953 return false;
99549954 }
99559955 }
@@ -10959,7 +10959,7 @@ module ts {
1095910959 return node.parent && node.parent.kind === SyntaxKind.HeritageClauseElement;
1096010960 }
1096110961
10962- function isTypeNodeOrStringLiteralTypeOrHeritageClauseElement (node: Node): boolean {
10962+ function isTypeNodeOrHeritageClauseElement (node: Node): boolean {
1096310963 if (SyntaxKind.FirstTypeNode <= node.kind && node.kind <= SyntaxKind.LastTypeNode) {
1096410964 return true;
1096510965 }
@@ -11208,8 +11208,8 @@ module ts {
1120811208 return unknownType;
1120911209 }
1121011210
11211- if (isTypeNodeOrStringLiteralTypeOrHeritageClauseElement (node)) {
11212- return getTypeFromNode (<TypeNode>node);
11211+ if (isTypeNodeOrHeritageClauseElement (node)) {
11212+ return getTypeFromTypeNodeOrHeritageClauseElement (<TypeNode | HeritageClauseElement >node);
1121311213 }
1121411214
1121511215 if (isExpression(node)) {
0 commit comments