Skip to content

Commit 7898b0c

Browse files
committed
Drop usages buffer in collectors
1 parent d5ab39a commit 7898b0c

File tree

4 files changed

+14
-24
lines changed

4 files changed

+14
-24
lines changed

src/Collector/BufferedUsageCollector.php

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
namespace ShipMonk\PHPStan\DeadCode\Collector;
44

5-
use PhpParser\Node;
6-
use PHPStan\Analyser\Scope;
7-
use PHPStan\Node\ClassMethodsNode;
85
use ShipMonk\PHPStan\DeadCode\Graph\CollectedUsage;
96
use function array_map;
107

@@ -14,30 +11,23 @@ trait BufferedUsageCollector
1411
/**
1512
* @var list<CollectedUsage>
1613
*/
17-
private array $usageBuffer = [];
14+
private array $usages = [];
1815

1916
/**
2017
* @return non-empty-list<string>|null
2118
*/
22-
private function tryFlushBuffer(
23-
Node $node,
24-
Scope $scope
25-
): ?array
19+
private function emitUsages(): ?array
2620
{
27-
if (!$scope->isInClass() || $node instanceof ClassMethodsNode) { // @phpstan-ignore-line ignore BC promise
28-
$data = $this->usageBuffer;
29-
$this->usageBuffer = [];
30-
31-
// collect data once per class to save memory & resultCache size
32-
return $data === []
21+
try {
22+
return $this->usages === []
3323
? null
3424
: array_map(
35-
static fn (CollectedUsage $usage): string => $usage->serialize(),
36-
$data,
25+
static fn(CollectedUsage $usage): string => $usage->serialize(),
26+
$this->usages,
3727
);
28+
} finally {
29+
$this->usages = [];
3830
}
39-
40-
return null;
4131
}
4232

4333
}

src/Collector/ConstantFetchCollector.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function processNode(
8181
$this->registerFunctionCall($node, $scope);
8282
}
8383

84-
return $this->tryFlushBuffer($node, $scope);
84+
return $this->emitUsages();
8585
}
8686

8787
private function registerFunctionCall(FuncCall $node, Scope $scope): void
@@ -207,7 +207,7 @@ private function registerUsage(ClassConstantUsage $usage, Node $node, Scope $sco
207207
}
208208
}
209209

210-
$this->usageBuffer[] = new CollectedUsage($usage, $excluderName);
210+
$this->usages[] = new CollectedUsage($usage, $excluderName);
211211
}
212212

213213
}

src/Collector/MethodCallCollector.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public function processNode(
9999
$this->registerAttribute($node, $scope);
100100
}
101101

102-
return $this->tryFlushBuffer($node, $scope);
102+
return $this->emitUsages();
103103
}
104104

105105
/**
@@ -297,7 +297,7 @@ private function registerUsage(ClassMethodUsage $usage, Node $node, Scope $scope
297297
}
298298
}
299299

300-
$this->usageBuffer[] = new CollectedUsage($usage, $excluderName);
300+
$this->usages[] = new CollectedUsage($usage, $excluderName);
301301
}
302302

303303
}

src/Collector/ProvidedUsagesCollector.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ public function processNode(
6969
$collectedUsage = $this->resolveExclusion($newUsage, $node, $scope);
7070

7171
$this->validateUsage($newUsage, $memberUsageProvider, $node, $scope);
72-
$this->usageBuffer[] = $collectedUsage;
72+
$this->usages[] = $collectedUsage;
7373
}
7474
}
7575

76-
return $this->tryFlushBuffer($node, $scope);
76+
return $this->emitUsages();
7777
}
7878

7979
private function validateUsage(

0 commit comments

Comments
 (0)