From f528318a82e99793a0afab1f2f792524c3f1f48c Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 25 Oct 2021 07:36:17 -0700 Subject: [PATCH] Call isDeeplyNestedType only when something changed --- src/compiler/checker.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3168327c88..9f2ee97277 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -18714,13 +18714,13 @@ namespace ts { if (recursionFlags & RecursionFlags.Source) { (sourceStack || (sourceStack = []))[sourceDepth] = source; sourceDepth++; + if (!(expandingFlags & ExpandingFlags.Source) && isDeeplyNestedType(source, sourceStack, sourceDepth)) expandingFlags |= ExpandingFlags.Source; } if (recursionFlags & RecursionFlags.Target) { (targetStack || (targetStack = []))[targetDepth] = target; targetDepth++; + if (!(expandingFlags & ExpandingFlags.Target) && isDeeplyNestedType(target, targetStack, targetDepth)) expandingFlags |= ExpandingFlags.Target; } - if (!(expandingFlags & ExpandingFlags.Source) && isDeeplyNestedType(source, sourceStack, sourceDepth)) expandingFlags |= ExpandingFlags.Source; - if (!(expandingFlags & ExpandingFlags.Target) && isDeeplyNestedType(target, targetStack, targetDepth)) expandingFlags |= ExpandingFlags.Target; if (expandingFlags !== ExpandingFlags.Both) { tracing?.push(tracing.Phase.CheckTypes, "structuredTypeRelatedTo", { sourceId: source.id, targetId: target.id }); result = structuredTypeRelatedTo(source, target, reportErrors, intersectionState);