Skip to content

Commit da60f65

Browse files
DowngradeTo74: Fix rector rule if ReflectionClass is nullable (#201)
* Run rector * DowngradeTo74: Fix rector rule if ReflectionClass is nullable
1 parent 2d20783 commit da60f65

File tree

7 files changed

+52
-17
lines changed

7 files changed

+52
-17
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace Rector\Tests\DowngradePhp80\Rector\MethodCall\DowngradeReflectionGetAttributesRector\Fixture;
4+
5+
class SomeClass
6+
{
7+
public function run(?\ReflectionClass $reflectionClass)
8+
{
9+
if ($reflectionClass->getAttributes('SomeAttribute')[0] ?? null) {
10+
return true;
11+
}
12+
13+
return false;
14+
}
15+
}
16+
17+
?>
18+
-----
19+
<?php
20+
21+
namespace Rector\Tests\DowngradePhp80\Rector\MethodCall\DowngradeReflectionGetAttributesRector\Fixture;
22+
23+
class SomeClass
24+
{
25+
public function run(?\ReflectionClass $reflectionClass)
26+
{
27+
if ((method_exists($reflectionClass, 'getAttributes') ? $reflectionClass->getAttributes('SomeAttribute') : [])[0] ?? null) {
28+
return true;
29+
}
30+
31+
return false;
32+
}
33+
}
34+
35+
?>

rules/DowngradePhp73/Rector/List_/DowngradeListReferenceAssignmentRector.php

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -234,15 +234,12 @@ private function createAssignRefArrayFromListReferences(
234234
// Nested list. Combine with the nodes from the recursive call
235235
/** @var List_ $nestedList */
236236
$nestedList = $listItem->value;
237-
$listNestedArrayIndexes = array_merge($nestedArrayIndexes, [$key]);
238-
$newNodes = array_merge(
239-
$newNodes,
240-
$this->createAssignRefArrayFromListReferences(
241-
$nestedList->items,
242-
$exprVariable,
243-
$listNestedArrayIndexes
244-
)
245-
);
237+
$listNestedArrayIndexes = [...$nestedArrayIndexes, $key];
238+
$newNodes = [...$newNodes, ...$this->createAssignRefArrayFromListReferences(
239+
$nestedList->items,
240+
$exprVariable,
241+
$listNestedArrayIndexes
242+
)];
246243
}
247244

248245
return $newNodes;

rules/DowngradePhp74/Rector/ClassMethod/DowngradeContravariantArgumentTypeRector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ private function getDifferentParamTypeFromAncestorClass(Param $param, ClassMetho
173173

174174
// parent classes or implemented interfaces
175175
/** @var ClassReflection[] $parentClassReflections */
176-
$parentClassReflections = array_merge($classReflection->getParents(), $classReflection->getInterfaces());
176+
$parentClassReflections = [...$classReflection->getParents(), ...$classReflection->getInterfaces()];
177177

178178
foreach ($parentClassReflections as $parentClassReflection) {
179179
$parentReflectionMethod = $this->resolveParentReflectionMethod($parentClassReflection, $methodName);

rules/DowngradePhp74/Rector/ClassMethod/DowngradeCovariantReturnTypeRector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ private function resolveDifferentAncestorReturnType(
173173
$methodName = $this->getName($classMethod);
174174

175175
/** @var ClassReflection[] $parentClassesAndInterfaces */
176-
$parentClassesAndInterfaces = array_merge($classReflection->getParents(), $classReflection->getInterfaces());
176+
$parentClassesAndInterfaces = [...$classReflection->getParents(), ...$classReflection->getInterfaces()];
177177

178178
return $this->resolveMatchingReturnType($parentClassesAndInterfaces, $methodName, $classMethod, $returnType);
179179
}

rules/DowngradePhp74/Rector/Interface_/DowngradePreviouslyImplementedInterfaceRector.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ public function refactor(Node $node): ?Node
8989
continue;
9090
}
9191

92-
$collectInterfaces = array_merge(
93-
$collectInterfaces,
94-
$this->familyRelationsAnalyzer->getClassLikeAncestorNames($extend)
95-
);
92+
$collectInterfaces = [
93+
...$collectInterfaces,
94+
...$this->familyRelationsAnalyzer->getClassLikeAncestorNames($extend),
95+
];
9696
}
9797

9898
if (! $isCleaned) {

rules/DowngradePhp80/Rector/Class_/DowngradePropertyPromotionRector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ private function addPropertyAssignsToConstructorClassMethod(
193193

194194
/** @var ClassMethod $constructorClassMethod */
195195
$constructorClassMethod = $class->getMethod(MethodName::CONSTRUCT);
196-
$constructorClassMethod->stmts = array_merge($assigns, (array) $constructorClassMethod->stmts);
196+
$constructorClassMethod->stmts = [...$assigns, ...(array) $constructorClassMethod->stmts];
197197
}
198198

199199
/**

rules/DowngradePhp80/Rector/MethodCall/DowngradeReflectionGetAttributesRector.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,10 @@ public function refactor(Node $node): Ternary|null|int
8080
return null;
8181
}
8282

83-
if (! $this->isObjectType($node->var, new ObjectType('Reflector'))) {
83+
if (
84+
! $this->isObjectType($node->var, new ObjectType('Reflector'))
85+
&& ! $this->isObjectType($node->var, new ObjectType('ReflectionClass'))
86+
) {
8487
return null;
8588
}
8689

0 commit comments

Comments
 (0)