From 517d7d983fe04a2843fd64a57e289b1c2b013727 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 19 Feb 2016 22:05:17 -0800 Subject: [PATCH 1/2] 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 = []; From 26336cd54b5b9a17c1a719de717354e003216102 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 19 Feb 2016 22:32:05 -0800 Subject: [PATCH 2/2] fix linter issues --- src/server/protocol.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index 3a669753323..c50f211a21f 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -469,7 +469,7 @@ declare namespace ts.server.protocol { placeOpenBraceOnNewLineForControlBlocks?: boolean; /** Index operator */ - [key: string] : string | number | boolean; + [key: string]: string | number | boolean; } /**