@@ -281,7 +281,6 @@ namespace ts {
281281 const literalTypes = createMap<LiteralType>();
282282 const indexedAccessTypes = createMap<IndexedAccessType>();
283283 const conditionalTypes = createMap<ConditionalType>();
284- const extendsTypes = createMap<ExtendsType>();
285284 const evolvingArrayTypes: EvolvingArrayType[] = [];
286285 const undefinedProperties = createMap<Symbol>() as UnderscoreEscapedMap<Symbol>;
287286
@@ -2649,11 +2648,6 @@ namespace ts {
26492648 const falseTypeNode = typeToTypeNodeHelper((<ConditionalType>type).falseType, context);
26502649 return createConditionalTypeNode(checkTypeNode, extendsTypeNode, trueTypeNode, falseTypeNode);
26512650 }
2652- if (type.flags & TypeFlags.Extends) {
2653- const leftTypeNode = typeToTypeNodeHelper((<ExtendsType>type).checkType, context);
2654- const rightTypeNode = typeToTypeNodeHelper((<ExtendsType>type).extendsType, context);
2655- return createBinaryTypeNode(leftTypeNode, SyntaxKind.ExtendsKeyword, rightTypeNode);
2656- }
26572651
26582652 Debug.fail("Should be unreachable.");
26592653
@@ -3437,13 +3431,6 @@ namespace ts {
34373431 writeSpace(writer);
34383432 writeType((<ConditionalType>type).falseType, TypeFormatFlags.InElementType);
34393433 }
3440- else if (type.flags & TypeFlags.Extends) {
3441- writeType((<ExtendsType>type).checkType, TypeFormatFlags.InElementType);
3442- writeSpace(writer);
3443- writer.writeKeyword("extends");
3444- writeSpace(writer);
3445- writeType((<ExtendsType>type).extendsType, TypeFormatFlags.InElementType);
3446- }
34473434 else {
34483435 // Should never get here
34493436 // { ... }
@@ -6425,9 +6412,6 @@ namespace ts {
64256412 else if (type.flags & TypeFlags.Index) {
64266413 return stringType;
64276414 }
6428- else if (type.flags & TypeFlags.Extends) {
6429- return booleanType;
6430- }
64316415 return undefined;
64326416 }
64336417
@@ -6496,9 +6480,6 @@ namespace ts {
64966480 if (t.flags & TypeFlags.Conditional) {
64976481 return getBaseConstraint(getConstraintOfConditionalType(<ConditionalType>t));
64986482 }
6499- if (t.flags & TypeFlags.Extends) {
6500- return booleanType;
6501- }
65026483 if (isGenericMappedType(t)) {
65036484 return emptyObjectType;
65046485 }
@@ -8435,47 +8416,6 @@ namespace ts {
84358416 return links.resolvedType;
84368417 }
84378418
8438- function createExtendsType(checkType: Type, extendsType: Type) {
8439- const type = <ExtendsType>createType(TypeFlags.Extends);
8440- type.checkType = checkType;
8441- type.extendsType = extendsType;
8442- return type;
8443- }
8444-
8445- function getExtendsType(checkType: Type, extendsType: Type): Type {
8446- // sys.write(`getExtendsType(${typeToString(checkType)}, ${typeToString(extendsType)})\n`);
8447- if (checkType.flags & TypeFlags.Union) {
8448- return getUnionType(map((<UnionType>checkType).types, t => getExtendsType(t, extendsType)));
8449- }
8450- if (checkType.flags & TypeFlags.Any) {
8451- return booleanType;
8452- }
8453- // Return trueType if type is definitely assignable
8454- if (isTypeAssignableTo(checkType, extendsType)) {
8455- return trueType;
8456- }
8457- // Return falseType is type is definitely not assignable
8458- if (!isTypeAssignableTo(instantiateType(checkType, anyMapper), instantiateType(extendsType, constraintMapper))) {
8459- // Type is definitely not assignable
8460- return falseType;
8461- }
8462- // Type is possibly assignable, defer the check
8463- const id = checkType.id + "," + extendsType.id;
8464- let type = extendsTypes.get(id);
8465- if (!type) {
8466- extendsTypes.set(id, type = createExtendsType(checkType, extendsType));
8467- }
8468- return type;
8469- }
8470-
8471- function getTypeFromBinaryTypeNode(node: BinaryTypeNode): Type {
8472- const links = getNodeLinks(node);
8473- if (!links.resolvedType) {
8474- links.resolvedType = getExtendsType(getTypeFromTypeNode(node.left), getTypeFromTypeNode(node.right));
8475- }
8476- return links.resolvedType;
8477- }
8478-
84798419 function getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node: TypeNode): Type {
84808420 const links = getNodeLinks(node);
84818421 if (!links.resolvedType) {
@@ -8766,8 +8706,6 @@ namespace ts {
87668706 return getTypeFromMappedTypeNode(<MappedTypeNode>node);
87678707 case SyntaxKind.ConditionalType:
87688708 return getTypeFromConditionalTypeNode(<ConditionalTypeNode>node);
8769- case SyntaxKind.BinaryType:
8770- return getTypeFromBinaryTypeNode(<BinaryTypeNode>node);
87718709 // This function assumes that an identifier or qualified name is a type expression
87728710 // Callers should first ensure this by calling isTypeNode
87738711 case SyntaxKind.Identifier:
@@ -9096,9 +9034,6 @@ namespace ts {
90969034 if (type.flags & TypeFlags.Conditional) {
90979035 return getConditionalTypeInstantiation(<ConditionalType>type, mapper);
90989036 }
9099- if (type.flags & TypeFlags.Extends) {
9100- return getExtendsType(instantiateType((<ExtendsType>type).checkType, mapper), instantiateType((<ExtendsType>type).extendsType, mapper));
9101- }
91029037 }
91039038 return type;
91049039 }
@@ -11652,10 +11587,6 @@ namespace ts {
1165211587 inferFromTypes((<ConditionalType>source).trueType, (<ConditionalType>target).trueType);
1165311588 inferFromTypes((<ConditionalType>source).falseType, (<ConditionalType>target).falseType);
1165411589 }
11655- else if (source.flags & TypeFlags.Extends && target.flags & TypeFlags.Extends) {
11656- inferFromTypes((<ExtendsType>source).checkType, (<ExtendsType>target).checkType);
11657- inferFromTypes((<ExtendsType>source).extendsType, (<ExtendsType>target).extendsType);
11658- }
1165911590 else if (target.flags & TypeFlags.UnionOrIntersection) {
1166011591 const targetTypes = (<UnionOrIntersectionType>target).types;
1166111592 let typeVariableCount = 0;
@@ -24015,9 +23946,6 @@ namespace ts {
2401523946 return checkTypeOperator(<TypeOperatorNode>node);
2401623947 case SyntaxKind.ConditionalType:
2401723948 return checkConditionalType(<ConditionalTypeNode>node);
24018- case SyntaxKind.BinaryType:
24019- forEachChild(node, checkSourceElement);
24020- return;
2402123949 case SyntaxKind.JSDocAugmentsTag:
2402223950 return checkJSDocAugmentsTag(node as JSDocAugmentsTag);
2402323951 case SyntaxKind.JSDocTypedefTag:
0 commit comments