diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index dbce5f41ef4..b6e68cb1dc3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6524,6 +6524,7 @@ namespace ts { let targetStack: Type[]; let depth = 0; let inferiority = 0; + const visited: Map = {}; inferFromTypes(source, target); function isInProcess(source: Type, target: Type) { @@ -6653,6 +6654,12 @@ namespace ts { return; } + const key = source.id + "," + target.id; + if (hasProperty(visited, key)) { + return; + } + visited[key] = true; + if (depth === 0) { sourceStack = []; targetStack = [];