1414use PhpParser \Node \Expr \Empty_ ;
1515use PhpParser \Node \Expr \Instanceof_ ;
1616use PhpParser \Node \Expr \Isset_ ;
17- use PhpParser \Node \Name \FullyQualified ;
1817use PHPStan \Type \ObjectType ;
18+ use Rector \PhpParser \Node \NullableObjectToInstanceofFactory ;
1919use Rector \Rector \AbstractRector ;
2020use Rector \RuleDoc \CodeSample \CodeSample ;
2121use Rector \RuleDoc \RuleDefinition ;
@@ -28,6 +28,7 @@ final class BinaryOpNullableToInstanceofRector extends AbstractRector
2828{
2929 public function __construct (
3030 private readonly NullableTypeAnalyzer $ nullableTypeAnalyzer ,
31+ private readonly NullableObjectToInstanceofFactory $ nullableObjectToInstanceofFactory ,
3132 ) {
3233 }
3334
@@ -96,15 +97,15 @@ private function processNullableInstance(BooleanAnd|BooleanOr $node): null|Boole
9697
9798 $ hasChanged = false ;
9899 if ($ nullableObjectType instanceof ObjectType) {
99- $ node ->left = $ this ->createExprInstanceof ($ node ->left , $ nullableObjectType );
100+ $ node ->left = $ this ->nullableObjectToInstanceofFactory -> create ($ node ->left , $ nullableObjectType, false );
100101
101102 $ hasChanged = true ;
102103 }
103104
104105 $ nullableObjectType = $ this ->resolveNullableObjectType ($ node ->right );
105106
106107 if ($ nullableObjectType instanceof ObjectType) {
107- $ node ->right = $ this ->createExprInstanceof ($ node ->right , $ nullableObjectType );
108+ $ node ->right = $ this ->nullableObjectToInstanceofFactory -> create ($ node ->right , $ nullableObjectType, false );
108109
109110 $ hasChanged = true ;
110111 }
@@ -123,7 +124,7 @@ private function processNegationBooleanOr(BooleanOr $booleanOr): ?BooleanOr
123124 $ nullableObjectType = $ this ->resolveNullableObjectType ($ booleanOr ->left ->expr );
124125
125126 if ($ nullableObjectType instanceof ObjectType) {
126- $ booleanOr ->left ->expr = $ this ->createExprInstanceof ($ booleanOr ->left ->expr , $ nullableObjectType );
127+ $ booleanOr ->left ->expr = $ this ->nullableObjectToInstanceofFactory -> create ($ booleanOr ->left ->expr , $ nullableObjectType, false );
127128 $ hasChanged = true ;
128129 }
129130 }
@@ -132,7 +133,7 @@ private function processNegationBooleanOr(BooleanOr $booleanOr): ?BooleanOr
132133 $ nullableObjectType = $ this ->resolveNullableObjectType ($ booleanOr ->right ->expr );
133134
134135 if ($ nullableObjectType instanceof ObjectType) {
135- $ booleanOr ->right ->expr = $ this ->createExprInstanceof ($ booleanOr ->right ->expr , $ nullableObjectType );
136+ $ booleanOr ->right ->expr = $ this ->nullableObjectToInstanceofFactory -> create ($ booleanOr ->right ->expr , $ nullableObjectType, false );
136137
137138 $ hasChanged = true ;
138139 }
@@ -164,10 +165,4 @@ private function isNeverNullableObject(Expr $expr): bool
164165 || $ expr instanceof Empty_
165166 || $ expr instanceof Isset_;
166167 }
167-
168- private function createExprInstanceof (Expr $ expr , ObjectType $ objectType ): Instanceof_
169- {
170- $ fullyQualified = new FullyQualified ($ objectType ->getClassName ());
171- return new Instanceof_ ($ expr , $ fullyQualified );
172- }
173168}
0 commit comments