Skip to content

Commit fbc0ccc

Browse files
committed
Ignore template literal types which contain intersections in removeStringLiteralsMatchedByTemplateLiterals
1 parent b168b24 commit fbc0ccc

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16339,7 +16339,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1633916339
}
1634016340

1634116341
function removeStringLiteralsMatchedByTemplateLiterals(types: Type[]) {
16342-
const templates = filter(types, t => !!(t.flags & TypeFlags.TemplateLiteral) && isPatternLiteralType(t)) as TemplateLiteralType[];
16342+
// Skip TemplateLiteralTypes which contain intersections; plain string literals can never match these.
16343+
const templates = filter(types, t => !!(t.flags & TypeFlags.TemplateLiteral) && isPatternLiteralType(t) && !some((t as TemplateLiteralType).types, t2 => !!(t2.flags & TypeFlags.Intersection))) as TemplateLiteralType[];
1634316344
if (templates.length) {
1634416345
let i = types.length;
1634516346
while (i > 0) {

0 commit comments

Comments
 (0)