From d4128ee767492288e30b0e5c2b98cb8d6be9a7da Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 27 Sep 2025 01:42:44 +0700 Subject: [PATCH 1/2] [TypeDeclarationDocblocks] Skip mixed[] array from getter on ClassMethodArrayDocblockParamFromLocalCallsRector --- .../skip_mixed_array_from_getter.php.inc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed_array_from_getter.php.inc diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed_array_from_getter.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed_array_from_getter.php.inc new file mode 100644 index 00000000000..c0b64f17bb0 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed_array_from_getter.php.inc @@ -0,0 +1,19 @@ +run($this->getter()); + } + + private function run(array $p) + { + } +} \ No newline at end of file From 4d6d0c9ef12cbec0b134ae219dcac19b0f8085fe Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 27 Sep 2025 01:47:16 +0700 Subject: [PATCH 2/2] Fix --- rules/TypeDeclaration/NodeAnalyzer/CallTypesResolver.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rules/TypeDeclaration/NodeAnalyzer/CallTypesResolver.php b/rules/TypeDeclaration/NodeAnalyzer/CallTypesResolver.php index fef791d7368..8e71843aafb 100644 --- a/rules/TypeDeclaration/NodeAnalyzer/CallTypesResolver.php +++ b/rules/TypeDeclaration/NodeAnalyzer/CallTypesResolver.php @@ -228,6 +228,14 @@ private function isEmptyArray(Expr $expr): bool private function isArrayMixedMixedType(Type $type): bool { if (! $type instanceof ArrayType) { + if ($type instanceof UnionType) { + foreach ($type->getTypes() as $subType) { + if ($subType instanceof ArrayType && $this->isArrayMixedMixedType($subType)) { + return true; + } + } + } + return false; }