Skip to content

Commit f68525a

Browse files
authored
Remove optimization of collector emits (#166)
1 parent 63d47a6 commit f68525a

File tree

4 files changed

+13
-22
lines changed

4 files changed

+13
-22
lines changed

src/Collector/BufferedUsageCollector.php

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
namespace ShipMonk\PHPStan\DeadCode\Collector;
44

5-
use PhpParser\Node;
65
use PHPStan\Analyser\Scope;
7-
use PHPStan\Node\ClassMethodsNode;
86
use ShipMonk\PHPStan\DeadCode\Graph\CollectedUsage;
97
use function array_map;
108

@@ -14,30 +12,23 @@ trait BufferedUsageCollector
1412
/**
1513
* @var list<CollectedUsage>
1614
*/
17-
private array $usageBuffer = [];
15+
private array $usages = [];
1816

1917
/**
2018
* @return non-empty-list<string>|null
2119
*/
22-
private function tryFlushBuffer(
23-
Node $node,
24-
Scope $scope
25-
): ?array
20+
private function emitUsages(Scope $scope): ?array
2621
{
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 === []
22+
try {
23+
return $this->usages === []
3324
? null
3425
: array_map(
3526
static fn (CollectedUsage $usage): string => $usage->serialize($scope->getFile()),
36-
$data,
27+
$this->usages,
3728
);
29+
} finally {
30+
$this->usages = [];
3831
}
39-
40-
return null;
4132
}
4233

4334
}

src/Collector/ConstantFetchCollector.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public function processNode(
7373
$this->registerFunctionCall($node, $scope);
7474
}
7575

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

7979
private function registerFunctionCall(FuncCall $node, Scope $scope): void
@@ -199,7 +199,7 @@ private function registerUsage(ClassConstantUsage $usage, Node $node, Scope $sco
199199
}
200200
}
201201

202-
$this->usageBuffer[] = new CollectedUsage($usage, $excluderName);
202+
$this->usages[] = new CollectedUsage($usage, $excluderName);
203203
}
204204

205205
}

src/Collector/MethodCallCollector.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public function processNode(
9191
$this->registerAttribute($node, $scope);
9292
}
9393

94-
return $this->tryFlushBuffer($node, $scope);
94+
return $this->emitUsages($scope);
9595
}
9696

9797
/**
@@ -287,7 +287,7 @@ private function registerUsage(ClassMethodUsage $usage, Node $node, Scope $scope
287287
}
288288
}
289289

290-
$this->usageBuffer[] = new CollectedUsage($usage, $excluderName);
290+
$this->usages[] = new CollectedUsage($usage, $excluderName);
291291
}
292292

293293
}

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($scope);
7777
}
7878

7979
private function validateUsage(

0 commit comments

Comments
 (0)