Skip to content

Commit 5d96286

Browse files
zonuexestaabm
andcommitted
Avoid calling methods twice with variables
Co-authored-by: Markus Staab <[email protected]>
1 parent 0dd9a85 commit 5d96286

4 files changed

+11
-8
lines changed

src/Rules/Arrays/DuplicateKeysInLiteralArraysRule.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,13 @@ public function processNode(Node $node, Scope $scope): array
7878
}
7979
}
8080

81-
if (count($keyType->getConstantScalarValues()) === 0) {
81+
$keyValues = $keyType->getConstantScalarValues();
82+
if (count($keyValues) === 0) {
8283
$autoGeneratedIndex = false;
8384
continue;
8485
}
8586

86-
foreach ($keyType->getConstantScalarValues() as $value) {
87+
foreach ($keyValues as $value) {
8788
$printedValue = $key !== null
8889
? $this->exprPrinter->printExpr($key)
8990
: $value;

src/Rules/PhpDoc/RequireExtendsCheck.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ public function checkExtendsTags(Node $node, array $extendsTags): array
4343

4444
foreach ($extendsTags as $extendsTag) {
4545
$type = $extendsTag->getType();
46-
if (count($type->getObjectClassNames()) === 0) {
46+
$classNames = $type->getObjectClassNames();
47+
if (count($classNames) === 0) {
4748
$errors[] = RuleErrorBuilder::message(sprintf('PHPDoc tag @phpstan-require-extends contains non-object type %s.', $type->describe(VerbosityLevel::typeOnly())))
4849
->identifier('requireExtends.nonObject')
4950
->build();
5051
continue;
5152
}
5253

53-
$classNames = $type->getObjectClassNames();
5454
sort($classNames);
5555
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $type->getObjectClassReflections());
5656
$referencedClassReflectionsMap = array_column($referencedClassReflections, 0, 1);

src/Rules/PhpDoc/RequireImplementsDefinitionTraitRule.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ public function processNode(Node $node, Scope $scope): array
5151
$errors = [];
5252
foreach ($implementsTags as $implementsTag) {
5353
$type = $implementsTag->getType();
54-
if (count($type->getObjectClassNames()) === 0) {
54+
$classNames = $type->getObjectClassNames();
55+
if (count($classNames) === 0) {
5556
$errors[] = RuleErrorBuilder::message(sprintf('PHPDoc tag @phpstan-require-implements contains non-object type %s.', $type->describe(VerbosityLevel::typeOnly())))
5657
->identifier('requireImplements.nonObject')
5758
->build();
@@ -60,7 +61,7 @@ public function processNode(Node $node, Scope $scope): array
6061

6162
$referencedClassReflections = array_map(static fn ($reflection) => [$reflection, $reflection->getName()], $type->getObjectClassReflections());
6263
$referencedClassReflectionsMap = array_column($referencedClassReflections, 0, 1);
63-
foreach ($type->getObjectClassNames() as $class) {
64+
foreach ($classNames as $class) {
6465
$referencedClassReflection = $referencedClassReflectionsMap[$class] ?? null;
6566
if ($referencedClassReflection === null) {
6667
$errors[] = RuleErrorBuilder::message(sprintf('PHPDoc tag @phpstan-require-implements contains unknown class %s.', $class))

src/Rules/Variables/CompactVariablesRule.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,9 @@ public function processNode(Node $node, Scope $scope): array
7070
*/
7171
private function findConstantStrings(Type $type): array
7272
{
73-
if (count($type->getConstantStrings()) > 0) {
74-
return $type->getConstantStrings();
73+
$constantStrings = $type->getConstantStrings();
74+
if (count($constantStrings) > 0) {
75+
return $constantStrings;
7576
}
7677

7778
$result = [];

0 commit comments

Comments
 (0)