Skip to content

Commit bf3c9bb

Browse files
committed
Bring all throw expr detection logic back into FeatureCollector
1 parent ef6f9a8 commit bf3c9bb

File tree

3 files changed

+11
-29
lines changed

3 files changed

+11
-29
lines changed

src/FeatureCounter/Analyzer/FeatureCounterAnalyzer.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
use Symfony\Component\Finder\SplFileInfo;
1313
use TomasVotruba\Lines\Exception\ShouldNotHappenException;
1414
use TomasVotruba\Lines\FeatureCounter\NodeVisitor\FeatureCollectorNodeVisitor;
15-
use TomasVotruba\Lines\FeatureCounter\NodeVisitor\ThrowExpressionFlaggingNodeVisitor;
1615
use TomasVotruba\Lines\FeatureCounter\ValueObject\FeatureCollector;
1716

1817
/**
@@ -38,7 +37,7 @@ public function analyze(array $fileInfos): FeatureCollector
3837
$progressBar->start(count($fileInfos));
3938

4039
$featureCollectorNodeVisitor = new FeatureCollectorNodeVisitor($this->featureCollector);
41-
$nodeTraverser = new NodeTraverser(new ThrowExpressionFlaggingNodeVisitor(), $featureCollectorNodeVisitor);
40+
$nodeTraverser = new NodeTraverser($featureCollectorNodeVisitor);
4241

4342
foreach ($fileInfos as $fileInfo) {
4443
$stmts = $this->parser->parse($fileInfo->getContents());

src/FeatureCounter/NodeVisitor/ThrowExpressionFlaggingNodeVisitor.php

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/FeatureCounter/ValueObject/FeatureCollector.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use PhpParser\Node\Stmt\ClassConst;
2727
use PhpParser\Node\Stmt\Declare_;
2828
use PhpParser\Node\Stmt\Enum_;
29+
use PhpParser\Node\Stmt\Expression;
2930
use PhpParser\Node\Stmt\Property;
3031
use PhpParser\Node\UnionType;
3132
use TomasVotruba\Lines\FeatureCounter\Enum\PhpVersion;
@@ -211,7 +212,15 @@ function (Node $node): bool {
211212
$this->phpFeatures[] = new PhpFeature(
212213
PhpVersion::PHP_80,
213214
'Throw expression',
214-
fn (Node $node): bool => $node instanceof Throw_ && $node->getAttribute('is_throw_expression', false) === true,
215+
function (Node $node) {
216+
if ($node instanceof Expression && $node->expr instanceof Throw_) {
217+
$node->expr->setAttribute('is_throw_statement', true);
218+
219+
return false;
220+
}
221+
222+
return $node instanceof Throw_ && $node->getAttribute('is_throw_statement', false) === false;
223+
},
215224
);
216225

217226
// enums

0 commit comments

Comments
 (0)