diff --git a/packages/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeForParameterMapper.php b/packages/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeForParameterMapper.php index aed82973735..4190e289190 100644 --- a/packages/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeForParameterMapper.php +++ b/packages/PHPStanStaticTypeMapper/TypeMapper/ConditionalTypeForParameterMapper.php @@ -4,6 +4,7 @@ namespace Rector\PHPStanStaticTypeMapper\TypeMapper; +use PHPStan\Type\TypeCombinator; use PhpParser\Node; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\ConditionalTypeForParameter; @@ -40,7 +41,8 @@ public function getNodeClass(): string */ public function mapToPHPStanPhpDocTypeNode(Type $type, string $typeKind): TypeNode { - return $this->phpStanStaticTypeMapper->mapToPHPStanPhpDocTypeNode($type->getTarget(), $typeKind); + $type = TypeCombinator::union($type->getIf(), $type->getElse()); + return $this->phpStanStaticTypeMapper->mapToPHPStanPhpDocTypeNode($type, $typeKind); } /** @@ -49,6 +51,7 @@ public function mapToPHPStanPhpDocTypeNode(Type $type, string $typeKind): TypeNo */ public function mapToPhpParserNode(Type $type, string $typeKind): ?Node { - return $this->phpStanStaticTypeMapper->mapToPhpParserNode($type->getTarget(), $typeKind); + $type = TypeCombinator::union($type->getIf(), $type->getElse()); + return $this->phpStanStaticTypeMapper->mapToPhpParserNode($type, $typeKind); } } diff --git a/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/conditional_type_for_parameter.php.inc b/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/conditional_type_for_parameter.php.inc new file mode 100644 index 00000000000..83ee1887411 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/conditional_type_for_parameter.php.inc @@ -0,0 +1,31 @@ + +----- + diff --git a/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/return_is_array.php.inc b/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/return_is_array.php.inc new file mode 100644 index 00000000000..ce9fe233dbe --- /dev/null +++ b/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/return_is_array.php.inc @@ -0,0 +1,27 @@ + +----- + diff --git a/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/skip_conditional_type_for_parameter.php.inc b/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/skip_conditional_type_for_parameter.php.inc deleted file mode 100644 index e49c3ad9936..00000000000 --- a/rules-tests/CodeQuality/Rector/ClassMethod/ReturnTypeFromStrictScalarReturnExprRector/Fixture/skip_conditional_type_for_parameter.php.inc +++ /dev/null @@ -1,13 +0,0 @@ -