diff --git a/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/float_assigns.php.inc b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/float_assigns.php.inc new file mode 100644 index 00000000000..5024f967cc7 --- /dev/null +++ b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/float_assigns.php.inc @@ -0,0 +1,36 @@ + +----- + diff --git a/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/nested_assign.php.inc b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/nested_assign.php.inc new file mode 100644 index 00000000000..e36bcf3e13c --- /dev/null +++ b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/nested_assign.php.inc @@ -0,0 +1,58 @@ + +----- + diff --git a/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/simple_array_assigns.php.inc b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/simple_array_assigns.php.inc index 2e1609081e2..593db6322ba 100644 --- a/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/simple_array_assigns.php.inc +++ b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector/Fixture/simple_array_assigns.php.inc @@ -28,14 +28,6 @@ class SomeClass $numbers[] = 3; return $numbers; } - - public function getFloatItems() - { - $floats = []; - $floats[] = 1.5; - $floats[] = 2.5; - return $floats; - } } function withNativeArrayType(): array @@ -98,17 +90,6 @@ class SomeClass $numbers[] = 3; return $numbers; } - - /** - * @return float[] - */ - public function getFloatItems() - { - $floats = []; - $floats[] = 1.5; - $floats[] = 2.5; - return $floats; - } } /** diff --git a/rules/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector.php b/rules/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector.php index 8e4a05e1fc2..8185bd43396 100644 --- a/rules/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector.php +++ b/rules/TypeDeclaration/Rector/ClassMethod/AddReturnDocblockForScalarArrayFromAssignsRector.php @@ -135,6 +135,7 @@ public function refactor(Node $node): ?Node $scalarArrayTypes = []; foreach ($returnedVariableNames as $returnedVariableName) { $scalarType = $this->resolveScalarArrayTypeForVariable($node, $returnedVariableName); + if ($scalarType instanceof Type) { $scalarArrayTypes[] = $scalarType; } else { @@ -219,6 +220,7 @@ private function resolveScalarArrayTypeForVariable(ClassMethod|Function_ $node, $arrayHasDimAssigns = true; $scalarType = $this->resolveScalarType($assign->expr); + if ($scalarType instanceof Type) { $scalarTypes[] = $scalarType; } else { @@ -258,6 +260,11 @@ private function resolveScalarType(Expr $expr): ?Type return new FloatType(); } + $exprType = $this->nodeTypeResolver->getNativeType($expr); + if ($exprType->isScalar()->yes()) { + return $exprType; + } + return null; } }