@@ -2473,7 +2473,7 @@ module ts {
2473
2473
let declaration = <ClassDeclaration>getDeclarationOfKind(type.symbol, SyntaxKind.ClassDeclaration);
2474
2474
let baseTypeNode = getClassExtendsHeritageClauseElement(declaration);
2475
2475
if (baseTypeNode) {
2476
- let baseType = getTypeFromHeritageClauseElement (baseTypeNode);
2476
+ let baseType = getTypeFromExpressionWithTypeArguments (baseTypeNode);
2477
2477
if (baseType !== unknownType) {
2478
2478
if (getTargetType(baseType).flags & TypeFlags.Class) {
2479
2479
if (type !== baseType && !hasBaseType(<InterfaceType>baseType, type)) {
@@ -2495,7 +2495,7 @@ module ts {
2495
2495
for (let declaration of type.symbol.declarations) {
2496
2496
if (declaration.kind === SyntaxKind.InterfaceDeclaration && getInterfaceBaseTypeNodes(<InterfaceDeclaration>declaration)) {
2497
2497
for (let node of getInterfaceBaseTypeNodes(<InterfaceDeclaration>declaration)) {
2498
- let baseType = getTypeFromHeritageClauseElement (node);
2498
+ let baseType = getTypeFromExpressionWithTypeArguments (node);
2499
2499
2500
2500
if (baseType !== unknownType) {
2501
2501
if (getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface)) {
@@ -3310,7 +3310,7 @@ module ts {
3310
3310
return type;
3311
3311
}
3312
3312
3313
- function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode: TypeReferenceNode | HeritageClauseElement , typeParameterSymbol: Symbol): boolean {
3313
+ function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode: TypeReferenceNode | ExpressionWithTypeArguments , typeParameterSymbol: Symbol): boolean {
3314
3314
let links = getNodeLinks(typeReferenceNode);
3315
3315
if (links.isIllegalTypeReferenceInConstraint !== undefined) {
3316
3316
return links.isIllegalTypeReferenceInConstraint;
@@ -3360,24 +3360,24 @@ module ts {
3360
3360
}
3361
3361
3362
3362
function getTypeFromTypeReference(node: TypeReferenceNode): Type {
3363
- return getTypeFromTypeReferenceOrHeritageClauseElement (node);
3363
+ return getTypeFromTypeReferenceOrExpressionWithTypeArguments (node);
3364
3364
}
3365
3365
3366
- function getTypeFromHeritageClauseElement (node: HeritageClauseElement ): Type {
3367
- return getTypeFromTypeReferenceOrHeritageClauseElement (node);
3366
+ function getTypeFromExpressionWithTypeArguments (node: ExpressionWithTypeArguments ): Type {
3367
+ return getTypeFromTypeReferenceOrExpressionWithTypeArguments (node);
3368
3368
}
3369
3369
3370
- function getTypeFromTypeReferenceOrHeritageClauseElement (node: TypeReferenceNode | HeritageClauseElement ): Type {
3370
+ function getTypeFromTypeReferenceOrExpressionWithTypeArguments (node: TypeReferenceNode | ExpressionWithTypeArguments ): Type {
3371
3371
let links = getNodeLinks(node);
3372
3372
if (!links.resolvedType) {
3373
3373
let type: Type;
3374
3374
3375
3375
// We don't currently support heritage clauses with complex expressions in them.
3376
3376
// For these cases, we just set the type to be the unknownType.
3377
- if (node.kind !== SyntaxKind.HeritageClauseElement || isSupportedHeritageClauseElement(<HeritageClauseElement >node)) {
3377
+ if (node.kind !== SyntaxKind.ExpressionWithTypeArguments || isSupportedExpressionWithTypeArguments(<ExpressionWithTypeArguments >node)) {
3378
3378
let typeNameOrExpression = node.kind === SyntaxKind.TypeReference
3379
3379
? (<TypeReferenceNode>node).typeName
3380
- : (<HeritageClauseElement >node).expression;
3380
+ : (<ExpressionWithTypeArguments >node).expression;
3381
3381
3382
3382
let symbol = resolveEntityName(typeNameOrExpression, SymbolFlags.Type);
3383
3383
if (symbol) {
@@ -3668,8 +3668,8 @@ module ts {
3668
3668
return getTypeFromStringLiteral(<StringLiteral>node);
3669
3669
case SyntaxKind.TypeReference:
3670
3670
return getTypeFromTypeReference(<TypeReferenceNode>node);
3671
- case SyntaxKind.HeritageClauseElement :
3672
- return getTypeFromHeritageClauseElement(<HeritageClauseElement >node);
3671
+ case SyntaxKind.ExpressionWithTypeArguments :
3672
+ return getTypeFromExpressionWithTypeArguments(<ExpressionWithTypeArguments >node);
3673
3673
case SyntaxKind.TypeQuery:
3674
3674
return getTypeFromTypeQueryNode(<TypeQueryNode>node);
3675
3675
case SyntaxKind.ArrayType:
@@ -8380,20 +8380,20 @@ module ts {
8380
8380
8381
8381
function checkTypeReferenceNode(node: TypeReferenceNode) {
8382
8382
checkGrammarTypeReferenceInStrictMode(node.typeName);
8383
- return checkTypeReferenceOrHeritageClauseElement (node);
8383
+ return checkTypeReferenceOrExpressionWithTypeArguments (node);
8384
8384
}
8385
8385
8386
- function checkHeritageClauseElement (node: HeritageClauseElement ) {
8387
- checkGrammarHeritageClauseElementInStrictMode (<PropertyAccessExpression>node.expression);
8386
+ function checkExpressionWithTypeArguments (node: ExpressionWithTypeArguments ) {
8387
+ checkGrammarExpressionWithTypeArgumentsInStrictMode (<PropertyAccessExpression>node.expression);
8388
8388
8389
- return checkTypeReferenceOrHeritageClauseElement (node);
8389
+ return checkTypeReferenceOrExpressionWithTypeArguments (node);
8390
8390
}
8391
8391
8392
- function checkTypeReferenceOrHeritageClauseElement (node: TypeReferenceNode | HeritageClauseElement ) {
8392
+ function checkTypeReferenceOrExpressionWithTypeArguments (node: TypeReferenceNode | ExpressionWithTypeArguments ) {
8393
8393
// Grammar checking
8394
8394
checkGrammarTypeArguments(node, node.typeArguments);
8395
8395
8396
- let type = getTypeFromTypeReferenceOrHeritageClauseElement (node);
8396
+ let type = getTypeFromTypeReferenceOrExpressionWithTypeArguments (node);
8397
8397
if (type !== unknownType && node.typeArguments) {
8398
8398
// Do type argument local checks only if referenced type is successfully resolved
8399
8399
let len = node.typeArguments.length;
@@ -9959,12 +9959,12 @@ module ts {
9959
9959
let staticType = <ObjectType>getTypeOfSymbol(symbol);
9960
9960
let baseTypeNode = getClassExtendsHeritageClauseElement(node);
9961
9961
if (baseTypeNode) {
9962
- if (!isSupportedHeritageClauseElement (baseTypeNode)) {
9962
+ if (!isSupportedExpressionWithTypeArguments (baseTypeNode)) {
9963
9963
error(baseTypeNode.expression, Diagnostics.Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses);
9964
9964
}
9965
9965
9966
9966
emitExtends = emitExtends || !isInAmbientContext(node);
9967
- checkHeritageClauseElement (baseTypeNode);
9967
+ checkExpressionWithTypeArguments (baseTypeNode);
9968
9968
}
9969
9969
let baseTypes = getBaseTypes(type);
9970
9970
if (baseTypes.length) {
@@ -9991,13 +9991,13 @@ module ts {
9991
9991
let implementedTypeNodes = getClassImplementsHeritageClauseElements(node);
9992
9992
if (implementedTypeNodes) {
9993
9993
forEach(implementedTypeNodes, typeRefNode => {
9994
- if (!isSupportedHeritageClauseElement (typeRefNode)) {
9994
+ if (!isSupportedExpressionWithTypeArguments (typeRefNode)) {
9995
9995
error(typeRefNode.expression, Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments);
9996
9996
}
9997
9997
9998
- checkHeritageClauseElement (typeRefNode);
9998
+ checkExpressionWithTypeArguments (typeRefNode);
9999
9999
if (produceDiagnostics) {
10000
- let t = getTypeFromHeritageClauseElement (typeRefNode);
10000
+ let t = getTypeFromExpressionWithTypeArguments (typeRefNode);
10001
10001
if (t !== unknownType) {
10002
10002
let declaredType = (t.flags & TypeFlags.Reference) ? (<TypeReference>t).target : t;
10003
10003
if (declaredType.flags & (TypeFlags.Class | TypeFlags.Interface)) {
@@ -10192,11 +10192,11 @@ module ts {
10192
10192
}
10193
10193
}
10194
10194
forEach(getInterfaceBaseTypeNodes(node), heritageElement => {
10195
- if (!isSupportedHeritageClauseElement (heritageElement)) {
10195
+ if (!isSupportedExpressionWithTypeArguments (heritageElement)) {
10196
10196
error(heritageElement.expression, Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments);
10197
10197
}
10198
10198
10199
- checkHeritageClauseElement (heritageElement);
10199
+ checkExpressionWithTypeArguments (heritageElement);
10200
10200
});
10201
10201
forEach(node.members, checkSourceElement);
10202
10202
@@ -11154,7 +11154,7 @@ module ts {
11154
11154
node = node.parent;
11155
11155
}
11156
11156
11157
- return node.parent && node.parent.kind === SyntaxKind.HeritageClauseElement ;
11157
+ return node.parent && node.parent.kind === SyntaxKind.ExpressionWithTypeArguments ;
11158
11158
}
11159
11159
11160
11160
function isTypeNode(node: Node): boolean {
@@ -11174,7 +11174,7 @@ module ts {
11174
11174
case SyntaxKind.StringLiteral:
11175
11175
// Specialized signatures can have string literals as their parameters' type names
11176
11176
return node.parent.kind === SyntaxKind.Parameter;
11177
- case SyntaxKind.HeritageClauseElement :
11177
+ case SyntaxKind.ExpressionWithTypeArguments :
11178
11178
return true;
11179
11179
11180
11180
// Identifiers and qualified names may be type nodes, depending on their context. Climb
@@ -11208,7 +11208,7 @@ module ts {
11208
11208
return true;
11209
11209
}
11210
11210
switch (parent.kind) {
11211
- case SyntaxKind.HeritageClauseElement :
11211
+ case SyntaxKind.ExpressionWithTypeArguments :
11212
11212
return true;
11213
11213
case SyntaxKind.TypeParameter:
11214
11214
return node === (<TypeParameterDeclaration>parent).constraint;
@@ -11286,7 +11286,7 @@ module ts {
11286
11286
}
11287
11287
11288
11288
if (isHeritageClauseElementIdentifier(<EntityName>entityName)) {
11289
- let meaning = entityName.parent.kind === SyntaxKind.HeritageClauseElement ? SymbolFlags.Type : SymbolFlags.Namespace;
11289
+ let meaning = entityName.parent.kind === SyntaxKind.ExpressionWithTypeArguments ? SymbolFlags.Type : SymbolFlags.Namespace;
11290
11290
meaning |= SymbolFlags.Alias;
11291
11291
return resolveEntityName(<EntityName>entityName, meaning);
11292
11292
}
@@ -12117,7 +12117,7 @@ module ts {
12117
12117
// public // error at public
12118
12118
// public.private.package // error at public
12119
12119
// B.private.B // no error
12120
- function checkGrammarHeritageClauseElementInStrictMode (expression: Expression) {
12120
+ function checkGrammarExpressionWithTypeArgumentsInStrictMode (expression: Expression) {
12121
12121
// Example:
12122
12122
// class C extends public // error at public
12123
12123
if (expression && expression.kind === SyntaxKind.Identifier) {
@@ -12128,7 +12128,7 @@ module ts {
12128
12128
// in PropertyAccessExpression. According to grammar production of MemberExpression,
12129
12129
// the left component expression is a PrimaryExpression (i.e. Identifier) while the other
12130
12130
// component after dots can be IdentifierName.
12131
- checkGrammarHeritageClauseElementInStrictMode ((<PropertyAccessExpression>expression).expression);
12131
+ checkGrammarExpressionWithTypeArgumentsInStrictMode ((<PropertyAccessExpression>expression).expression);
12132
12132
}
12133
12133
12134
12134
}
0 commit comments