From 713f0dc1398a189ae545bd96f75f910f32922e7a Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 28 Sep 2025 15:50:33 +0700 Subject: [PATCH 1/2] [TypeDeclarationDocblocks] Handle false and true should change to bool on DocblockReturnArrayFromDirectArrayInstanceRector --- .../Fixture/false_and_true.php.inc | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc new file mode 100644 index 00000000000..f6d5f2acd50 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc @@ -0,0 +1,30 @@ + [true], + 'second' => [false], + ]; +} + +?> +----- + + */ +function FalseAndTrue() +{ + return [ + 'first' => [true], + 'second' => [false], + ]; +} + +?> From c3503e61083a9e7bd0bfa85f0c00d23f7f82eaae Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 28 Sep 2025 16:35:45 +0700 Subject: [PATCH 2/2] fix --- .../Fixture/false_and_true.php.inc | 6 +++++- src/NodeTypeResolver/PHPStan/TypeHasher.php | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc index f6d5f2acd50..c6728e3a9ea 100644 --- a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/false_and_true.php.inc @@ -7,6 +7,8 @@ function FalseAndTrue() return [ 'first' => [true], 'second' => [false], + 'third' => [true], + 'fourth' => [false], ]; } @@ -17,13 +19,15 @@ function FalseAndTrue() namespace Rector\Tests\TypeDeclarationDocblocks\Rector\ClassMethod\DocblockReturnArrayFromDirectArrayInstanceRector\Fixture; /** - * @return array + * @return array */ function FalseAndTrue() { return [ 'first' => [true], 'second' => [false], + 'third' => [true], + 'fourth' => [false], ]; } diff --git a/src/NodeTypeResolver/PHPStan/TypeHasher.php b/src/NodeTypeResolver/PHPStan/TypeHasher.php index 5ec869ad6b3..1caa97a9f3b 100644 --- a/src/NodeTypeResolver/PHPStan/TypeHasher.php +++ b/src/NodeTypeResolver/PHPStan/TypeHasher.php @@ -32,7 +32,7 @@ public function createTypeHash(Type $type): string if ($type instanceof ArrayType) { return $this->createTypeHash($type->getIterableValueType()) . $this->createTypeHash( $type->getIterableKeyType() - ) . '[]'; + ) . $type->getItemType()->describe(VerbosityLevel::precise()) . '[]'; } if ($type instanceof GenericObjectType) {