@@ -333,7 +333,7 @@ namespace ts {
333
333
const keyofStringsOnly = !!compilerOptions.keyofStringsOnly;
334
334
const freshObjectLiteralFlag = compilerOptions.suppressExcessPropertyErrors ? 0 : ObjectFlags.FreshLiteral;
335
335
336
- let ignoreExpensiveStatement = true ;
336
+ let checkingDtsFile: boolean ;
337
337
const maxExpensiveStatementCount = compilerOptions.expensiveStatements ?? 0;
338
338
const expensiveStatements: ExpensiveStatement[] = [];
339
339
@@ -35630,12 +35630,9 @@ namespace ts {
35630
35630
35631
35631
checkSourceElementWorker(node);
35632
35632
35633
- if (node.kind >= SyntaxKind.FirstStatement && node.kind <= SyntaxKind.LastStatement) {
35634
- if (ignoreExpensiveStatement) {
35635
- // The first statement is unfairly blamed for a lot of lib types
35636
- ignoreExpensiveStatement = false;
35637
- }
35638
- else {
35633
+ // Never report expensive statements in .d.ts files
35634
+ if (!checkingDtsFile) {
35635
+ if (node.kind >= SyntaxKind.FirstStatement && node.kind <= SyntaxKind.LastStatement) {
35639
35636
const typeDelta = typeCount - oldTypeCount;
35640
35637
const symbolDelta = symbolCount - oldSymbolCount;
35641
35638
const record = { node, typeDelta, symbolDelta };
@@ -35974,10 +35971,12 @@ namespace ts {
35974
35971
}
35975
35972
35976
35973
function checkSourceFile(node: SourceFile) {
35974
+ checkingDtsFile = fileExtensionIs(node.path, Extension.Dts);
35977
35975
performance.mark("beforeCheck");
35978
35976
checkSourceFileWorker(node);
35979
35977
performance.mark("afterCheck");
35980
35978
performance.measure("Check", "beforeCheck", "afterCheck");
35979
+ checkingDtsFile = false;
35981
35980
}
35982
35981
35983
35982
function unusedIsError(kind: UnusedKind, isAmbient: boolean): boolean {
0 commit comments