Fix class/interface merging issue + lint error

This commit is contained in:
Anders Hejlsberg 2016-08-22 11:21:06 -07:00
parent 4e56fc0d27
commit 201305859f

View file

@ -3564,11 +3564,13 @@ namespace ts {
if (type.flags & TypeFlags.Tuple) { if (type.flags & TypeFlags.Tuple) {
type.resolvedBaseTypes = [createArrayType(getUnionType(type.typeParameters))]; type.resolvedBaseTypes = [createArrayType(getUnionType(type.typeParameters))];
} }
else if (type.symbol.flags & SymbolFlags.Class) { else if (type.symbol.flags & (SymbolFlags.Class | SymbolFlags.Interface)) {
resolveBaseTypesOfClass(type); if (type.symbol.flags & SymbolFlags.Class) {
} resolveBaseTypesOfClass(type);
else if (type.symbol.flags & SymbolFlags.Interface) { }
resolveBaseTypesOfInterface(type); if (type.symbol.flags & SymbolFlags.Interface) {
resolveBaseTypesOfInterface(type);
}
} }
else { else {
Debug.fail("type must be class or interface"); Debug.fail("type must be class or interface");
@ -4972,7 +4974,7 @@ namespace ts {
} }
function cloneTypeReference(source: TypeReference): TypeReference { function cloneTypeReference(source: TypeReference): TypeReference {
let type = <TypeReference>createObjectType(source.flags, source.symbol); const type = <TypeReference>createObjectType(source.flags, source.symbol);
type.target = source.target; type.target = source.target;
type.typeArguments = source.typeArguments; type.typeArguments = source.typeArguments;
return type; return type;