diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/Nesting/complex_array.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/Nesting/complex_array.php.inc index 6fa70b2cf4e..3fa83eabde8 100644 --- a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/Nesting/complex_array.php.inc +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/Nesting/complex_array.php.inc @@ -8,6 +8,7 @@ class ComplexArray { return [ 'id' => new \stdClass(), + 'other' => false, 'context' => [ 'id' => 1, 'data' => [ @@ -17,6 +18,11 @@ class ComplexArray ], 'values' => [ 'name' => '111', + 'age' => 1, + ], + 'values_other' => [ + 'name' => '111', + 'age' => 1, ], ]; } @@ -37,6 +43,7 @@ class ComplexArray { return [ 'id' => new \stdClass(), + 'other' => false, 'context' => [ 'id' => 1, 'data' => [ @@ -46,6 +53,11 @@ class ComplexArray ], 'values' => [ 'name' => '111', + 'age' => 1, + ], + 'values_other' => [ + 'name' => '111', + 'age' => 1, ], ]; } diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector/Fixture/multi_objects.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector/Fixture/multi_objects.php.inc new file mode 100644 index 00000000000..8143dbd0569 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector/Fixture/multi_objects.php.inc @@ -0,0 +1,52 @@ + +----- +>> + */ + public static function provideData(): iterable + { + yield [[new DateTime(), 'format']]; + yield [[new DateTimeImmutable(), 'format']]; + } +} + +?> diff --git a/rules/Privatization/TypeManipulator/TypeNormalizer.php b/rules/Privatization/TypeManipulator/TypeNormalizer.php index ab33a99bf4e..f46bdfe70ff 100644 --- a/rules/Privatization/TypeManipulator/TypeNormalizer.php +++ b/rules/Privatization/TypeManipulator/TypeNormalizer.php @@ -27,7 +27,7 @@ /** * @var int */ - private const MAX_PRINTED_UNION_DOC_LENGHT = 60; + private const MAX_PRINTED_UNION_DOC_LENGHT = 77; public function __construct( private TypeFactory $typeFactory, diff --git a/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php b/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php index 5889ff42534..67f344fa8cb 100644 --- a/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php +++ b/src/NodeTypeResolver/PHPStan/Type/TypeFactory.php @@ -205,6 +205,16 @@ private function unwrapConstantArrayTypes(ConstantArrayType $constantArrayType): $nestedFlattenKeyType = new MixedType(); } + if ($nestedFlattenItemType instanceof ConstantArrayType) { + $innerArrayTypes = $this->unwrapConstantArrayTypes($nestedFlattenItemType); + foreach ($innerArrayTypes as $innerArrayType) { + // preserve outer array -> inner array structure: array + $unwrappedTypes[] = new ArrayType($nestedFlattenKeyType, $innerArrayType); + } + + continue; + } + $unwrappedTypes[] = new ArrayType($nestedFlattenKeyType, $nestedFlattenItemType); }