From 517d7d983fe04a2843fd64a57e289b1c2b013727 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 19 Feb 2016 22:05:17 -0800 Subject: [PATCH] do not make inferences with the same source\target pair multiple times --- src/compiler/checker.ts | 7 +++++++ 1 file changed, 7 insertions(+) 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 = [];