Skip to content

Commit e502377

Browse files
committed
Remove TemplateTypePlaceholderPriority
1 parent 00c4b26 commit e502377

File tree

1 file changed

+16
-44
lines changed

1 file changed

+16
-44
lines changed

src/compiler/checker.ts

+16-44
Original file line numberDiff line numberDiff line change
@@ -263,20 +263,6 @@ namespace ts {
263263
VoidIsNonOptional = 1 << 1,
264264
}
265265

266-
const enum TemplateTypePlaceholderPriority {
267-
Never, // lowest
268-
KeywordLiterals, // true | false | null | undefined
269-
Boolean,
270-
BigIntLiterals,
271-
BigInt,
272-
NumberLiterals,
273-
Enums,
274-
Number,
275-
StringLiterals,
276-
TemplateLiterals,
277-
String, // highest
278-
}
279-
280266
const enum IntrinsicTypeKind {
281267
Uppercase,
282268
Lowercase,
@@ -22743,23 +22729,6 @@ namespace ts {
2274322729
}
2274422730
}
2274522731

22746-
function getTemplateTypePlaceholderPriority(type: Type) {
22747-
return type.flags & TypeFlags.String ? TemplateTypePlaceholderPriority.String :
22748-
type.flags & TypeFlags.TemplateLiteral ? TemplateTypePlaceholderPriority.TemplateLiterals :
22749-
type.flags & TypeFlags.StringMapping ? TemplateTypePlaceholderPriority.StringLiterals :
22750-
type.flags & TypeFlags.StringLiteral ? TemplateTypePlaceholderPriority.StringLiterals :
22751-
type.flags & TypeFlags.Number ? TemplateTypePlaceholderPriority.Number :
22752-
type.flags & TypeFlags.Enum ? TemplateTypePlaceholderPriority.Enums :
22753-
type.flags & TypeFlags.NumberLiteral ? TemplateTypePlaceholderPriority.NumberLiterals :
22754-
type.flags & TypeFlags.BigInt ? TemplateTypePlaceholderPriority.BigInt :
22755-
type.flags & TypeFlags.BigIntLiteral ? TemplateTypePlaceholderPriority.BigIntLiterals :
22756-
type.flags & TypeFlags.Boolean ? TemplateTypePlaceholderPriority.Boolean :
22757-
type.flags & TypeFlags.BooleanLiteral ? TemplateTypePlaceholderPriority.KeywordLiterals :
22758-
type.flags & TypeFlags.Undefined ? TemplateTypePlaceholderPriority.KeywordLiterals :
22759-
type.flags & TypeFlags.Null ? TemplateTypePlaceholderPriority.KeywordLiterals :
22760-
TemplateTypePlaceholderPriority.Never;
22761-
}
22762-
2276322732
function inferToTemplateLiteralType(source: Type, target: TemplateLiteralType) {
2276422733
const matches = inferTypesFromTemplateLiteralType(source, target);
2276522734
const types = target.types;
@@ -22797,19 +22766,22 @@ namespace ts {
2279722766
}
2279822767

2279922768
// for each type in the constraint, find the highest priority matching type
22800-
const matchingType = reduceType(constraint, (matchingType, t) =>
22801-
!(t.flags & allTypeFlags) || getTemplateTypePlaceholderPriority(t) <= getTemplateTypePlaceholderPriority(matchingType) ? matchingType :
22802-
t.flags & TypeFlags.String ? source :
22803-
t.flags & TypeFlags.TemplateLiteral && isTypeMatchedByTemplateLiteralType(source, t as TemplateLiteralType) ? source :
22804-
t.flags & TypeFlags.StringMapping && str === applyStringMapping(t.symbol, str) ? source :
22805-
t.flags & (TypeFlags.Number | TypeFlags.Enum) ? getNumberLiteralType(+str) : // if `str` was not a valid number, TypeFlags.Number and TypeFlags.Enum would have been excluded above.
22806-
t.flags & TypeFlags.BigInt ? parseBigIntLiteralType(str) : // if `str` was not a valid bigint, TypeFlags.BigInt would have been excluded above.
22807-
t.flags & TypeFlags.Boolean ? str === "true" ? trueType : falseType :
22808-
t.flags & TypeFlags.StringLiteral && (t as StringLiteralType).value === str ? t :
22809-
t.flags & TypeFlags.NumberLiteral && (t as NumberLiteralType).value === +str ? t :
22810-
t.flags & TypeFlags.BigIntLiteral && pseudoBigIntToString((t as BigIntLiteralType).value) === str ? t :
22811-
t.flags & (TypeFlags.BooleanLiteral | TypeFlags.Nullable) && (t as IntrinsicType).intrinsicName === str ? t :
22812-
matchingType,
22769+
const matchingType = reduceType(constraint, (left, right) =>
22770+
!(right.flags & allTypeFlags) ? left :
22771+
left.flags & TypeFlags.String ? left : right.flags & TypeFlags.String ? source :
22772+
left.flags & TypeFlags.TemplateLiteral ? left : right.flags & TypeFlags.TemplateLiteral && isTypeMatchedByTemplateLiteralType(source, right as TemplateLiteralType) ? source :
22773+
left.flags & TypeFlags.StringMapping ? left : right.flags & TypeFlags.StringMapping && str === applyStringMapping(right.symbol, str) ? source :
22774+
left.flags & TypeFlags.StringLiteral ? left : right.flags & TypeFlags.StringLiteral && (right as StringLiteralType).value === str ? right :
22775+
left.flags & TypeFlags.Number ? left : right.flags & TypeFlags.Number ? getNumberLiteralType(+str) :
22776+
left.flags & TypeFlags.Enum ? left : right.flags & TypeFlags.Enum ? getNumberLiteralType(+str) :
22777+
left.flags & TypeFlags.NumberLiteral ? left : right.flags & TypeFlags.NumberLiteral && (right as NumberLiteralType).value === +str ? right :
22778+
left.flags & TypeFlags.BigInt ? left : right.flags & TypeFlags.BigInt ? parseBigIntLiteralType(str) :
22779+
left.flags & TypeFlags.BigIntLiteral ? left : right.flags & TypeFlags.BigIntLiteral && pseudoBigIntToString((right as BigIntLiteralType).value) === str ? right :
22780+
left.flags & TypeFlags.Boolean ? left : right.flags & TypeFlags.Boolean ? str === "true" ? trueType : falseType :
22781+
left.flags & TypeFlags.BooleanLiteral ? left : right.flags & TypeFlags.BooleanLiteral && (right as IntrinsicType).intrinsicName === str ? right :
22782+
left.flags & TypeFlags.Undefined ? left : right.flags & TypeFlags.Undefined && (right as IntrinsicType).intrinsicName === str ? right :
22783+
left.flags & TypeFlags.Null ? left : right.flags & TypeFlags.Null && (right as IntrinsicType).intrinsicName === str ? right :
22784+
left,
2281322785
neverType as Type);
2281422786

2281522787
if (!(matchingType.flags & TypeFlags.Never)) {

0 commit comments

Comments
 (0)