diff --git a/packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php index ee806e841e4d..a130e7d8e95c 100644 --- a/packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php @@ -6,6 +6,7 @@ use PhpParser\Node; use PhpParser\Node\Expr\ArrayDimFetch; +use PHPStan\Type\ArrayType; use PHPStan\Type\Type; use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\NodeTypeResolver; @@ -38,6 +39,12 @@ public function getNodeClasses(): array */ public function resolve(Node $node): Type { - return $this->nodeTypeResolver->resolve($node->var); + $arrayDimFetchType = $this->nodeTypeResolver->resolve($node->var); + + if ($arrayDimFetchType instanceof ArrayType) { + return $arrayDimFetchType->getItemType(); + } + + return $arrayDimFetchType; } } diff --git a/rules/code-quality/tests/Rector/If_/ExplicitBoolCompareRector/Fixture/skip_nested_array_mixed.php.inc b/rules/code-quality/tests/Rector/If_/ExplicitBoolCompareRector/Fixture/skip_nested_array_mixed.php.inc new file mode 100644 index 000000000000..5e45dba22648 --- /dev/null +++ b/rules/code-quality/tests/Rector/If_/ExplicitBoolCompareRector/Fixture/skip_nested_array_mixed.php.inc @@ -0,0 +1,17 @@ +provider(); + $this->value = $data['key'] ? 1 : 2; + } +}