@@ -598,7 +598,7 @@ module ts {
598
598
if (moduleSymbol.flags & SymbolFlags.Variable) {
599
599
let typeAnnotation = (<VariableDeclaration>moduleSymbol.valueDeclaration).type;
600
600
if (typeAnnotation) {
601
- return getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement (typeAnnotation), name);
601
+ return getPropertyOfType(getTypeFromTypeNode (typeAnnotation), name);
602
602
}
603
603
}
604
604
}
@@ -647,7 +647,7 @@ module ts {
647
647
if (symbol.flags & SymbolFlags.Variable) {
648
648
var typeAnnotation = (<VariableDeclaration>symbol.valueDeclaration).type;
649
649
if (typeAnnotation) {
650
- return resolveSymbol(getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement (typeAnnotation), name));
650
+ return resolveSymbol(getPropertyOfType(getTypeFromTypeNode (typeAnnotation), name));
651
651
}
652
652
}
653
653
}
@@ -2128,7 +2128,7 @@ module ts {
2128
2128
}
2129
2129
// Use type from type annotation if one is present
2130
2130
if (declaration.type) {
2131
- return getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
2131
+ return getTypeFromTypeNode (declaration.type);
2132
2132
}
2133
2133
if (declaration.kind === SyntaxKind.Parameter) {
2134
2134
let func = <FunctionLikeDeclaration>declaration.parent;
@@ -2290,18 +2290,18 @@ module ts {
2290
2290
return links.type;
2291
2291
}
2292
2292
2293
- function getSetAccessorTypeAnnotationNode(accessor: AccessorDeclaration): TypeNode | LiteralExpression {
2293
+ function getSetAccessorTypeAnnotationNode(accessor: AccessorDeclaration): TypeNode {
2294
2294
return accessor && accessor.parameters.length > 0 && accessor.parameters[0].type;
2295
2295
}
2296
2296
2297
2297
function getAnnotatedAccessorType(accessor: AccessorDeclaration): Type {
2298
2298
if (accessor) {
2299
2299
if (accessor.kind === SyntaxKind.GetAccessor) {
2300
- return accessor.type && getTypeFromTypeNodeOrHeritageClauseElement (accessor.type);
2300
+ return accessor.type && getTypeFromTypeNode (accessor.type);
2301
2301
}
2302
2302
else {
2303
2303
let setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor);
2304
- return setterTypeAnnotation && getTypeFromTypeNodeOrHeritageClauseElement (setterTypeAnnotation);
2304
+ return setterTypeAnnotation && getTypeFromTypeNode (setterTypeAnnotation);
2305
2305
}
2306
2306
}
2307
2307
return undefined;
@@ -2542,7 +2542,7 @@ module ts {
2542
2542
if (!links.declaredType) {
2543
2543
links.declaredType = resolvingType;
2544
2544
let declaration = <TypeAliasDeclaration>getDeclarationOfKind(symbol, SyntaxKind.TypeAliasDeclaration);
2545
- let type = getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
2545
+ let type = getTypeFromTypeNode (declaration.type);
2546
2546
if (links.declaredType === resolvingType) {
2547
2547
links.declaredType = type;
2548
2548
}
@@ -3084,7 +3084,7 @@ module ts {
3084
3084
returnType = classType;
3085
3085
}
3086
3086
else if (declaration.type) {
3087
- returnType = getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
3087
+ returnType = getTypeFromTypeNode (declaration.type);
3088
3088
}
3089
3089
else {
3090
3090
// TypeScript 1.0 spec (April 2014):
@@ -3242,7 +3242,7 @@ module ts {
3242
3242
function getIndexTypeOfSymbol(symbol: Symbol, kind: IndexKind): Type {
3243
3243
let declaration = getIndexDeclarationOfSymbol(symbol, kind);
3244
3244
return declaration
3245
- ? declaration.type ? getTypeFromTypeNodeOrHeritageClauseElement (declaration.type) : anyType
3245
+ ? declaration.type ? getTypeFromTypeNode (declaration.type) : anyType
3246
3246
: undefined;
3247
3247
}
3248
3248
@@ -3253,7 +3253,7 @@ module ts {
3253
3253
type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType;
3254
3254
}
3255
3255
else {
3256
- type.constraint = getTypeFromTypeNodeOrHeritageClauseElement ((<TypeParameterDeclaration>getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint);
3256
+ type.constraint = getTypeFromTypeNode ((<TypeParameterDeclaration>getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint);
3257
3257
}
3258
3258
}
3259
3259
return type.constraint === noConstraintType ? undefined : type.constraint;
@@ -3384,7 +3384,7 @@ module ts {
3384
3384
if (type.flags & (TypeFlags.Class | TypeFlags.Interface) && type.flags & TypeFlags.Reference) {
3385
3385
let typeParameters = (<InterfaceType>type).typeParameters;
3386
3386
if (node.typeArguments && node.typeArguments.length === typeParameters.length) {
3387
- type = createTypeReference(<GenericType>type, map(node.typeArguments, getTypeFromTypeNodeOrHeritageClauseElement ));
3387
+ type = createTypeReference(<GenericType>type, map(node.typeArguments, getTypeFromTypeNode ));
3388
3388
}
3389
3389
else {
3390
3390
error(node, Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType), typeParameters.length);
@@ -3482,7 +3482,7 @@ module ts {
3482
3482
function getTypeFromArrayTypeNode(node: ArrayTypeNode): Type {
3483
3483
let links = getNodeLinks(node);
3484
3484
if (!links.resolvedType) {
3485
- links.resolvedType = createArrayType(getTypeFromTypeNodeOrHeritageClauseElement (node.elementType));
3485
+ links.resolvedType = createArrayType(getTypeFromTypeNode (node.elementType));
3486
3486
}
3487
3487
return links.resolvedType;
3488
3488
}
@@ -3500,7 +3500,7 @@ module ts {
3500
3500
function getTypeFromTupleTypeNode(node: TupleTypeNode): Type {
3501
3501
let links = getNodeLinks(node);
3502
3502
if (!links.resolvedType) {
3503
- links.resolvedType = createTupleType(map(node.elementTypes, getTypeFromTypeNodeOrHeritageClauseElement ));
3503
+ links.resolvedType = createTupleType(map(node.elementTypes, getTypeFromTypeNode ));
3504
3504
}
3505
3505
return links.resolvedType;
3506
3506
}
@@ -3609,7 +3609,7 @@ module ts {
3609
3609
function getTypeFromUnionTypeNode(node: UnionTypeNode): Type {
3610
3610
let links = getNodeLinks(node);
3611
3611
if (!links.resolvedType) {
3612
- links.resolvedType = getUnionType(map(node.types, getTypeFromTypeNodeOrHeritageClauseElement ), /*noSubtypeReduction*/ true);
3612
+ links.resolvedType = getUnionType(map(node.types, getTypeFromTypeNode ), /*noSubtypeReduction*/ true);
3613
3613
}
3614
3614
return links.resolvedType;
3615
3615
}
@@ -3623,7 +3623,7 @@ module ts {
3623
3623
return links.resolvedType;
3624
3624
}
3625
3625
3626
- function getStringLiteralType(node: LiteralExpression ): StringLiteralType {
3626
+ function getStringLiteralType(node: StringLiteral ): StringLiteralType {
3627
3627
if (hasProperty(stringLiteralTypes, node.text)) {
3628
3628
return stringLiteralTypes[node.text];
3629
3629
}
@@ -3633,15 +3633,15 @@ module ts {
3633
3633
return type;
3634
3634
}
3635
3635
3636
- function getTypeFromStringLiteral(node: LiteralExpression ): Type {
3636
+ function getTypeFromStringLiteral(node: StringLiteral ): Type {
3637
3637
let links = getNodeLinks(node);
3638
3638
if (!links.resolvedType) {
3639
3639
links.resolvedType = getStringLiteralType(node);
3640
3640
}
3641
3641
return links.resolvedType;
3642
3642
}
3643
3643
3644
- function getTypeFromTypeNodeOrHeritageClauseElement (node: TypeNode | LiteralExpression | HeritageClauseElement ): Type {
3644
+ function getTypeFromTypeNode (node: TypeNode): Type {
3645
3645
switch (node.kind) {
3646
3646
case SyntaxKind.AnyKeyword:
3647
3647
return anyType;
@@ -3656,7 +3656,7 @@ module ts {
3656
3656
case SyntaxKind.VoidKeyword:
3657
3657
return voidType;
3658
3658
case SyntaxKind.StringLiteral:
3659
- return getTypeFromStringLiteral(<LiteralExpression >node);
3659
+ return getTypeFromStringLiteral(<StringLiteral >node);
3660
3660
case SyntaxKind.TypeReference:
3661
3661
return getTypeFromTypeReference(<TypeReferenceNode>node);
3662
3662
case SyntaxKind.HeritageClauseElement:
@@ -3670,7 +3670,7 @@ module ts {
3670
3670
case SyntaxKind.UnionType:
3671
3671
return getTypeFromUnionTypeNode(<UnionTypeNode>node);
3672
3672
case SyntaxKind.ParenthesizedType:
3673
- return getTypeFromTypeNodeOrHeritageClauseElement ((<ParenthesizedTypeNode>node).type);
3673
+ return getTypeFromTypeNode ((<ParenthesizedTypeNode>node).type);
3674
3674
case SyntaxKind.FunctionType:
3675
3675
case SyntaxKind.ConstructorType:
3676
3676
case SyntaxKind.TypeLiteral:
@@ -5681,7 +5681,7 @@ module ts {
5681
5681
let declaration = <VariableLikeDeclaration>node.parent;
5682
5682
if (node === declaration.initializer) {
5683
5683
if (declaration.type) {
5684
- return getTypeFromTypeNodeOrHeritageClauseElement (declaration.type);
5684
+ return getTypeFromTypeNode (declaration.type);
5685
5685
}
5686
5686
if (declaration.kind === SyntaxKind.Parameter) {
5687
5687
let type = getContextuallyTypedParameterType(<ParameterDeclaration>declaration);
@@ -5884,7 +5884,7 @@ module ts {
5884
5884
case SyntaxKind.NewExpression:
5885
5885
return getContextualTypeForArgument(<CallExpression>parent, node);
5886
5886
case SyntaxKind.TypeAssertionExpression:
5887
- return getTypeFromTypeNodeOrHeritageClauseElement ((<TypeAssertion>parent).type);
5887
+ return getTypeFromTypeNode ((<TypeAssertion>parent).type);
5888
5888
case SyntaxKind.BinaryExpression:
5889
5889
return getContextualTypeForBinaryOperand(node);
5890
5890
case SyntaxKind.PropertyAssignment:
@@ -6706,7 +6706,7 @@ module ts {
6706
6706
let typeArgumentsAreAssignable = true;
6707
6707
for (let i = 0; i < typeParameters.length; i++) {
6708
6708
let typeArgNode = typeArguments[i];
6709
- let typeArgument = getTypeFromTypeNodeOrHeritageClauseElement (typeArgNode);
6709
+ let typeArgument = getTypeFromTypeNode (typeArgNode);
6710
6710
// Do not push on this array! It has a preallocated length
6711
6711
typeArgumentResultTypes[i] = typeArgument;
6712
6712
if (typeArgumentsAreAssignable /* so far */) {
@@ -6728,9 +6728,12 @@ module ts {
6728
6728
let paramType = getTypeAtPosition(signature, i);
6729
6729
// A tagged template expression provides a special first argument, and string literals get string literal types
6730
6730
// unless we're reporting errors
6731
- let argType = i === 0 && node.kind === SyntaxKind.TaggedTemplateExpression ? globalTemplateStringsArrayType :
6732
- arg.kind === SyntaxKind.StringLiteral && !reportErrors ? getStringLiteralType(<LiteralExpression>arg) :
6733
- checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined);
6731
+ let argType = i === 0 && node.kind === SyntaxKind.TaggedTemplateExpression
6732
+ ? globalTemplateStringsArrayType
6733
+ : arg.kind === SyntaxKind.StringLiteral && !reportErrors
6734
+ ? getStringLiteralType(<StringLiteral>arg)
6735
+ : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined);
6736
+
6734
6737
// Use argument expression as error location when reporting errors
6735
6738
if (!checkTypeRelatedTo(argType, paramType, relation, reportErrors ? arg : undefined,
6736
6739
Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1)) {
@@ -7188,7 +7191,7 @@ module ts {
7188
7191
7189
7192
function checkTypeAssertion(node: TypeAssertion): Type {
7190
7193
let exprType = checkExpression(node.expression);
7191
- let targetType = getTypeFromTypeNodeOrHeritageClauseElement (node.type);
7194
+ let targetType = getTypeFromTypeNode (node.type);
7192
7195
if (produceDiagnostics && targetType !== unknownType) {
7193
7196
let widenedType = getWidenedType(exprType);
7194
7197
if (!(isTypeAssignableTo(targetType, widenedType))) {
@@ -7362,7 +7365,7 @@ module ts {
7362
7365
function checkFunctionExpressionOrObjectLiteralMethodBody(node: FunctionExpression | MethodDeclaration) {
7363
7366
Debug.assert(node.kind !== SyntaxKind.MethodDeclaration || isObjectLiteralMethod(node));
7364
7367
if (node.type && !node.asteriskToken) {
7365
- checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement (node.type));
7368
+ checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode (node.type));
7366
7369
}
7367
7370
7368
7371
if (node.body) {
@@ -7372,7 +7375,7 @@ module ts {
7372
7375
else {
7373
7376
let exprType = checkExpression(<Expression>node.body);
7374
7377
if (node.type) {
7375
- checkTypeAssignableTo(exprType, getTypeFromTypeNodeOrHeritageClauseElement (node.type), node.body, /*headMessage*/ undefined);
7378
+ checkTypeAssignableTo(exprType, getTypeFromTypeNode (node.type), node.body, /*headMessage*/ undefined);
7376
7379
}
7377
7380
checkFunctionExpressionBodies(node.body);
7378
7381
}
@@ -8801,12 +8804,12 @@ module ts {
8801
8804
}
8802
8805
8803
8806
/** Checks a type reference node as an expression. */
8804
- function checkTypeNodeAsExpression(node: TypeNode | LiteralExpression ) {
8807
+ function checkTypeNodeAsExpression(node: TypeNode) {
8805
8808
// When we are emitting type metadata for decorators, we need to try to check the type
8806
8809
// as if it were an expression so that we can emit the type in a value position when we
8807
8810
// serialize the type metadata.
8808
8811
if (node && node.kind === SyntaxKind.TypeReference) {
8809
- let type = getTypeFromTypeNodeOrHeritageClauseElement (node);
8812
+ let type = getTypeFromTypeNode (node);
8810
8813
let shouldCheckIfUnknownType = type === unknownType && compilerOptions.separateCompilation;
8811
8814
if (!type || (!shouldCheckIfUnknownType && type.flags & (TypeFlags.Intrinsic | TypeFlags.NumberLike | TypeFlags.StringLike))) {
8812
8815
return;
@@ -8826,7 +8829,8 @@ module ts {
8826
8829
case SyntaxKind.PropertyDeclaration:
8827
8830
checkTypeNodeAsExpression((<PropertyDeclaration>node).type);
8828
8831
break;
8829
- case SyntaxKind.Parameter: checkTypeNodeAsExpression((<ParameterDeclaration>node).type);
8832
+ case SyntaxKind.Parameter:
8833
+ checkTypeNodeAsExpression((<ParameterDeclaration>node).type);
8830
8834
break;
8831
8835
case SyntaxKind.MethodDeclaration:
8832
8836
checkTypeNodeAsExpression((<MethodDeclaration>node).type);
@@ -8942,7 +8946,7 @@ module ts {
8942
8946
8943
8947
checkSourceElement(node.body);
8944
8948
if (node.type && !isAccessor(node.kind) && !node.asteriskToken) {
8945
- checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement (node.type));
8949
+ checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode (node.type));
8946
8950
}
8947
8951
8948
8952
// Report an implicit any error if there is no body, no explicit return type, and node is not a private method
@@ -10106,7 +10110,7 @@ module ts {
10106
10110
if (!tp1.constraint || !tp2.constraint) {
10107
10111
return false;
10108
10112
}
10109
- if (!isTypeIdenticalTo(getTypeFromTypeNodeOrHeritageClauseElement (tp1.constraint), getTypeFromTypeNodeOrHeritageClauseElement (tp2.constraint))) {
10113
+ if (!isTypeIdenticalTo(getTypeFromTypeNode (tp1.constraint), getTypeFromTypeNode (tp2.constraint))) {
10110
10114
return false;
10111
10115
}
10112
10116
}
@@ -11137,7 +11141,7 @@ module ts {
11137
11141
return node.parent && node.parent.kind === SyntaxKind.HeritageClauseElement;
11138
11142
}
11139
11143
11140
- function isTypeNodeOrHeritageClauseElement (node: Node): boolean {
11144
+ function isTypeNode (node: Node): boolean {
11141
11145
if (SyntaxKind.FirstTypeNode <= node.kind && node.kind <= SyntaxKind.LastTypeNode) {
11142
11146
return true;
11143
11147
}
@@ -11386,8 +11390,8 @@ module ts {
11386
11390
return unknownType;
11387
11391
}
11388
11392
11389
- if (isTypeNodeOrHeritageClauseElement (node)) {
11390
- return getTypeFromTypeNodeOrHeritageClauseElement (<TypeNode | HeritageClauseElement >node);
11393
+ if (isTypeNode (node)) {
11394
+ return getTypeFromTypeNode (<TypeNode>node);
11391
11395
}
11392
11396
11393
11397
if (isExpression(node)) {
0 commit comments