Skip to content

Commit 52264b1

Browse files
Rework
1 parent 9ff2ba1 commit 52264b1

File tree

6 files changed

+11
-50
lines changed

6 files changed

+11
-50
lines changed

src/Rules/PhpDoc/RequireExtendsCheck.php

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
use PHPStan\Rules\ClassNameUsageLocation;
1313
use PHPStan\Rules\IdentifierRuleError;
1414
use PHPStan\Rules\RuleErrorBuilder;
15-
use PHPStan\Type\UnionType;
1615
use PHPStan\Type\VerbosityLevel;
1716
use function array_column;
1817
use function array_map;
@@ -60,18 +59,8 @@ public function checkExtendsTags(Scope $scope, Node $node, array $extendsTags):
6059
continue;
6160
}
6261

63-
if ($type instanceof UnionType) {
64-
$classReflections = [];
65-
foreach ($type->getTypes() as $subType) {
66-
$classReflections[] = $subType->getObjectClassReflections();
67-
}
68-
$classReflections = array_merge(...$classReflections);
69-
} else {
70-
$classReflections = $type->getObjectClassReflections();
71-
}
72-
7362
sort($classNames);
74-
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $classReflections);
63+
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $type->getObjectClassReflections());
7564
$referencedClassReflectionsMap = array_column($referencedClassReflections, 0, 1);
7665
foreach ($classNames as $class) {
7766
$referencedClassReflection = $referencedClassReflectionsMap[$class] ?? null;

src/Rules/PhpDoc/RequireImplementsDefinitionTraitRule.php

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
use PHPStan\Rules\ClassNameUsageLocation;
1313
use PHPStan\Rules\Rule;
1414
use PHPStan\Rules\RuleErrorBuilder;
15-
use PHPStan\Type\UnionType;
1615
use PHPStan\Type\VerbosityLevel;
1716
use function array_column;
1817
use function array_map;
@@ -67,17 +66,7 @@ public function processNode(Node $node, Scope $scope): array
6766
continue;
6867
}
6968

70-
if ($type instanceof UnionType) {
71-
$classReflections = [];
72-
foreach ($type->getTypes() as $subType) {
73-
$classReflections[] = $subType->getObjectClassReflections();
74-
}
75-
$classReflections = array_merge(...$classReflections);
76-
} else {
77-
$classReflections = $type->getObjectClassReflections();
78-
}
79-
80-
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $classReflections);
69+
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $type->getObjectClassReflections());
8170
$referencedClassReflectionsMap = array_column($referencedClassReflections, 0, 1);
8271
foreach ($classNames as $class) {
8372
$referencedClassReflection = $referencedClassReflectionsMap[$class] ?? null;

src/Rules/PhpDoc/SealedDefinitionClassRule.php

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
use PHPStan\Rules\ClassNameUsageLocation;
1313
use PHPStan\Rules\Rule;
1414
use PHPStan\Rules\RuleErrorBuilder;
15-
use PHPStan\Type\UnionType;
1615
use PHPStan\Type\VerbosityLevel;
1716
use function array_column;
1817
use function array_map;
@@ -70,17 +69,7 @@ public function processNode(Node $node, Scope $scope): array
7069
continue;
7170
}
7271

73-
if ($type instanceof UnionType) {
74-
$classReflections = [];
75-
foreach ($type->getTypes() as $subType) {
76-
$classReflections[] = $subType->getObjectClassReflections();
77-
}
78-
$classReflections = array_merge(...$classReflections);
79-
} else {
80-
$classReflections = $type->getObjectClassReflections();
81-
}
82-
83-
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $classReflections);
72+
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $type->getObjectClassReflections());
8473
$referencedClassReflectionsMap = array_column($referencedClassReflections, 0, 1);
8574
foreach ($classNames as $class) {
8675
$referencedClassReflection = $referencedClassReflectionsMap[$class] ?? null;

src/Type/UnionType.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,14 @@ public function getObjectClassNames(): array
162162

163163
public function getObjectClassReflections(): array
164164
{
165-
return $this->pickFromTypes(
166-
static fn (Type $type) => $type->getObjectClassReflections(),
167-
static fn (Type $type) => $type->isObject()->yes(),
168-
);
165+
$reflections = [];
166+
foreach ($this->types as $type) {
167+
foreach ($type->getObjectClassReflections() as $reflection) {
168+
$reflections[] = $reflection;
169+
}
170+
}
171+
172+
return $reflections;
169173
}
170174

171175
public function getArrays(): array

tests/PHPStan/Rules/PhpDoc/RequireExtendsDefinitionClassRuleTest.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,6 @@ public function testRule(): void
8585
183,
8686
'Learn more at https://phpstan.org/user-guide/discovering-symbols',
8787
],
88-
[
89-
'PHPDoc tag @phpstan-require-extends contains unknown class IncompatibleRequireExtends\SomeClass.',
90-
183,
91-
'Learn more at https://phpstan.org/user-guide/discovering-symbols',
92-
],
9388
]);
9489
}
9590

tests/PHPStan/Rules/PhpDoc/RequireExtendsDefinitionTraitRuleTest.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,6 @@ public function testRule(): void
5555
192,
5656
'Learn more at https://phpstan.org/user-guide/discovering-symbols',
5757
],
58-
[
59-
'PHPDoc tag @phpstan-require-extends contains unknown class IncompatibleRequireExtends\SomeClass.',
60-
192,
61-
'Learn more at https://phpstan.org/user-guide/discovering-symbols',
62-
],
6358
]);
6459
}
6560

0 commit comments

Comments
 (0)