Skip to content

Commit 2e2dfd4

Browse files
committed
Suppress ancestors of expensive statements to reduce noise
1 parent 8f5e138 commit 2e2dfd4

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/compiler/checker.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35685,9 +35685,21 @@ namespace ts {
3568535685
}
3568635686

3568735687
if (i < maxExpensiveStatementCount) {
35688-
expensiveStatements.splice(i, 0, record);
35689-
if (expensiveStatements.length > maxExpensiveStatementCount) {
35690-
expensiveStatements.pop();
35688+
let hasExpensiveDescendent = false;
35689+
// Search forward since descendants cannot be more expensive
35690+
for (let j = i; j < expensiveStatements.length; j++) {
35691+
const candidate = expensiveStatements[j];
35692+
if (isNodeDescendantOf(candidate.node, record.node)) {
35693+
// A node that isn't at least 50% more expensive than one of its descendants isn't interesting
35694+
hasExpensiveDescendent = (record.typeDelta / candidate.typeDelta) < 1.5;
35695+
break; // Stop looking since all subsequent nodes are less expensive
35696+
}
35697+
}
35698+
if (!hasExpensiveDescendent) {
35699+
expensiveStatements.splice(i, 0, record);
35700+
if (expensiveStatements.length > maxExpensiveStatementCount) {
35701+
expensiveStatements.pop();
35702+
}
3569135703
}
3569235704
}
3569335705
}

0 commit comments

Comments
 (0)