Skip to content

Commit d7c630f

Browse files
author
Andy
authored
Merge pull request #14443 from Microsoft/specific_types
Use more specific types in a few cases
2 parents 46587c8 + b8aa84e commit d7c630f

File tree

3 files changed

+13
-15
lines changed

3 files changed

+13
-15
lines changed

src/compiler/factory.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1486,7 +1486,7 @@ namespace ts {
14861486

14871487
// Clauses
14881488

1489-
export function createHeritageClause(token: SyntaxKind, types: ExpressionWithTypeArguments[]) {
1489+
export function createHeritageClause(token: HeritageClause["token"], types: ExpressionWithTypeArguments[]) {
14901490
const node = <HeritageClause>createSynthesizedNode(SyntaxKind.HeritageClause);
14911491
node.token = token;
14921492
node.types = createNodeArray(types);

src/compiler/parser.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5437,9 +5437,10 @@ namespace ts {
54375437
}
54385438

54395439
function parseHeritageClause(): HeritageClause | undefined {
5440-
if (token() === SyntaxKind.ExtendsKeyword || token() === SyntaxKind.ImplementsKeyword) {
5440+
const tok = token();
5441+
if (tok === SyntaxKind.ExtendsKeyword || tok === SyntaxKind.ImplementsKeyword) {
54415442
const node = <HeritageClause>createNode(SyntaxKind.HeritageClause);
5442-
node.token = token();
5443+
node.token = tok;
54435444
nextToken();
54445445
node.types = parseDelimitedList(ParsingContext.HeritageClauseElement, parseExpressionWithTypeArguments);
54455446
return finishNode(node);

src/compiler/types.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -863,15 +863,13 @@ namespace ts {
863863
kind: SyntaxKind.ThisType;
864864
}
865865

866-
export interface FunctionOrConstructorTypeNode extends TypeNode, SignatureDeclaration {
867-
kind: SyntaxKind.FunctionType | SyntaxKind.ConstructorType;
868-
}
866+
export type FunctionOrConstructorTypeNode = FunctionTypeNode | ConstructorTypeNode;
869867

870-
export interface FunctionTypeNode extends FunctionOrConstructorTypeNode {
868+
export interface FunctionTypeNode extends TypeNode, SignatureDeclaration {
871869
kind: SyntaxKind.FunctionType;
872870
}
873871

874-
export interface ConstructorTypeNode extends FunctionOrConstructorTypeNode {
872+
export interface ConstructorTypeNode extends TypeNode, SignatureDeclaration {
875873
kind: SyntaxKind.ConstructorType;
876874
}
877875

@@ -908,17 +906,16 @@ namespace ts {
908906
elementTypes: NodeArray<TypeNode>;
909907
}
910908

911-
export interface UnionOrIntersectionTypeNode extends TypeNode {
912-
kind: SyntaxKind.UnionType | SyntaxKind.IntersectionType;
913-
types: NodeArray<TypeNode>;
914-
}
909+
export type UnionOrIntersectionTypeNode = UnionTypeNode | IntersectionTypeNode;
915910

916-
export interface UnionTypeNode extends UnionOrIntersectionTypeNode {
911+
export interface UnionTypeNode extends TypeNode {
917912
kind: SyntaxKind.UnionType;
913+
types: NodeArray<TypeNode>;
918914
}
919915

920-
export interface IntersectionTypeNode extends UnionOrIntersectionTypeNode {
916+
export interface IntersectionTypeNode extends TypeNode {
921917
kind: SyntaxKind.IntersectionType;
918+
types: NodeArray<TypeNode>;
922919
}
923920

924921
export interface ParenthesizedTypeNode extends TypeNode {
@@ -1779,7 +1776,7 @@ namespace ts {
17791776
export interface HeritageClause extends Node {
17801777
kind: SyntaxKind.HeritageClause;
17811778
parent?: InterfaceDeclaration | ClassDeclaration | ClassExpression;
1782-
token: SyntaxKind;
1779+
token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword;
17831780
types?: NodeArray<ExpressionWithTypeArguments>;
17841781
}
17851782

0 commit comments

Comments
 (0)