Skip to content

Commit 742c701

Browse files
committed
Use emptyArray instead of [] for no base types.
1 parent 1651f18 commit 742c701

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

src/compiler/checker.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2867,7 +2867,7 @@ namespace ts {
28672867
}
28682868

28692869
function resolveBaseTypesOfClass(type: InterfaceType): void {
2870-
type.resolvedBaseTypes = type.resolvedBaseTypes || [];
2870+
type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray;
28712871
let baseContructorType = getBaseConstructorTypeOfClass(type);
28722872
if (!(baseContructorType.flags & TypeFlags.ObjectType)) {
28732873
return;
@@ -2903,19 +2903,29 @@ namespace ts {
29032903
typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType));
29042904
return;
29052905
}
2906-
type.resolvedBaseTypes.push(baseType);
2906+
if (type.resolvedBaseTypes === emptyArray) {
2907+
type.resolvedBaseTypes = [baseType];
2908+
}
2909+
else {
2910+
type.resolvedBaseTypes.push(baseType);
2911+
}
29072912
}
29082913

29092914
function resolveBaseTypesOfInterface(type: InterfaceType): void {
2910-
type.resolvedBaseTypes = type.resolvedBaseTypes || [];
2915+
type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray;
29112916
for (let declaration of type.symbol.declarations) {
29122917
if (declaration.kind === SyntaxKind.InterfaceDeclaration && getInterfaceBaseTypeNodes(<InterfaceDeclaration>declaration)) {
29132918
for (let node of getInterfaceBaseTypeNodes(<InterfaceDeclaration>declaration)) {
29142919
let baseType = getTypeFromTypeNode(node);
29152920
if (baseType !== unknownType) {
29162921
if (getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface)) {
29172922
if (type !== baseType && !hasBaseType(<InterfaceType>baseType, type)) {
2918-
type.resolvedBaseTypes.push(baseType);
2923+
if (type.resolvedBaseTypes === emptyArray) {
2924+
type.resolvedBaseTypes = [baseType];
2925+
}
2926+
else {
2927+
type.resolvedBaseTypes.push(baseType);
2928+
}
29192929
}
29202930
else {
29212931
error(declaration, Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType));

0 commit comments

Comments
 (0)