From f07241b9f87ae45193968a8fa734cd005ce0c0e4 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 12 Sep 2025 22:22:31 +0700 Subject: [PATCH 1/3] [TypeDeclarationDocblocks] Avoid array on complex array structure with all string key on DocblockReturnArrayFromDirectArrayInstanceRector --- .../Fixture/complex_array.php.inc | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc new file mode 100644 index 00000000000..30e685b22c5 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc @@ -0,0 +1,54 @@ + new \stdClass(), + 'context' => [ + 'id' => 1, + 'data' => [ + 'foo' => 'bar', + 'baz' => 'qux', + ], + ], + 'values' => [ + 'name' => '111', + ], + ]; + } +} + +?> +----- + + */ + public function getServiceOrderWithIncident(): array + { + return [ + 'id' => new \stdClass(), + 'context' => [ + 'id' => 1, + 'data' => [ + 'foo' => 'bar', + 'baz' => 'qux', + ], + ], + 'values' => [ + 'name' => '111', + ], + ]; + } +} + +?> \ No newline at end of file From 929febeace652cea4dffbbb5a86e7a4a83276fbe Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 12 Sep 2025 22:24:21 +0700 Subject: [PATCH 2/3] rename function --- .../Fixture/complex_array.php.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc index 30e685b22c5..8bb555a1f1d 100644 --- a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/complex_array.php.inc @@ -4,7 +4,7 @@ namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockRetur class ComplexArray { - public function getServiceOrderWithIncident(): array + public function run(): array { return [ 'id' => new \stdClass(), @@ -33,7 +33,7 @@ class ComplexArray /** * @return array */ - public function getServiceOrderWithIncident(): array + public function run(): array { return [ 'id' => new \stdClass(), From e7d67899aabed898fe5c3fdd379b22cf8bcf8118 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 12 Sep 2025 22:25:41 +0700 Subject: [PATCH 3/3] Fix --- .../DocblockReturnArrayFromDirectArrayInstanceRector.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php index 937599308d6..f621c68b5c4 100644 --- a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php @@ -128,19 +128,19 @@ public function refactor(Node $node): ?Node */ private function constantToGenericType(Type $type): Type { - if ($type instanceof StringType) { + if ($type->isString()->yes()) { return new StringType(); } - if ($type instanceof IntegerType) { + if ($type->isInteger()->yes()) { return new IntegerType(); } - if ($type instanceof BooleanType) { + if ($type->isBoolean()->yes()) { return new BooleanType(); } - if ($type instanceof FloatType) { + if ($type->isFloat()->yes()) { return new FloatType(); }