@@ -109,7 +109,7 @@ abstract class AbstractRector extends NodeVisitorAbstract implements RectorInter
109109 */
110110 private $ currentFileProvider ;
111111 /**
112- * @var array<string , Node[]>
112+ * @var array<int , Node[]>
113113 */
114114 private $ nodesToReturn = [];
115115 /**
@@ -121,9 +121,9 @@ abstract class AbstractRector extends NodeVisitorAbstract implements RectorInter
121121 */
122122 private $ rectorOutput ;
123123 /**
124- * @var string |null
124+ * @var int |null
125125 */
126- private $ toBeRemovedNodeHash ;
126+ private $ toBeRemovedNodeId ;
127127 public function autowire (NodeNameResolver $ nodeNameResolver , NodeTypeResolver $ nodeTypeResolver , SimpleCallableNodeTraverser $ simpleCallableNodeTraverser , NodeFactory $ nodeFactory , PhpDocInfoFactory $ phpDocInfoFactory , StaticTypeMapper $ staticTypeMapper , CurrentRectorProvider $ currentRectorProvider , CurrentNodeProvider $ currentNodeProvider , Skipper $ skipper , ValueResolver $ valueResolver , BetterNodeFinder $ betterNodeFinder , NodeComparator $ nodeComparator , CurrentFileProvider $ currentFileProvider , CreatedByRuleDecorator $ createdByRuleDecorator , ChangedNodeScopeRefresher $ changedNodeScopeRefresher , RectorOutput $ rectorOutput ) : void
128128 {
129129 $ this ->nodeNameResolver = $ nodeNameResolver ;
@@ -187,7 +187,7 @@ public final function enterNode(Node $node)
187187 }
188188 // @see NodeTraverser::* codes, e.g. removal of node of stopping the traversing
189189 if ($ refactoredNode === NodeTraverser::REMOVE_NODE ) {
190- $ this ->toBeRemovedNodeHash = \spl_object_hash ($ originalNode );
190+ $ this ->toBeRemovedNodeId = \spl_object_id ($ originalNode );
191191 // notify this rule changing code
192192 $ rectorWithLineChange = new RectorWithLineChange (static ::class, $ originalNode ->getLine ());
193193 $ this ->file ->addRectorClassWithLine ($ rectorWithLineChange );
@@ -224,12 +224,12 @@ public function leaveNode(Node $node)
224224 if ($ node ->hasAttribute (AttributeKey::ORIGINAL_NODE )) {
225225 return null ;
226226 }
227- $ objectHash = \spl_object_hash ($ node );
228- if ($ this ->toBeRemovedNodeHash === $ objectHash ) {
229- $ this ->toBeRemovedNodeHash = null ;
227+ $ objectId = \spl_object_id ($ node );
228+ if ($ this ->toBeRemovedNodeId === $ objectId ) {
229+ $ this ->toBeRemovedNodeId = null ;
230230 return NodeTraverser::REMOVE_NODE ;
231231 }
232- return $ this ->nodesToReturn [$ objectHash ] ?? $ node ;
232+ return $ this ->nodesToReturn [$ objectId ] ?? $ node ;
233233 }
234234 protected function isName (Node $ node , string $ name ) : bool
235235 {
@@ -313,9 +313,9 @@ private function postRefactorProcess(Node $originalNode, Node $node, $refactored
313313 $ this ->mirrorComments ($ firstNode , $ originalNode );
314314 $ this ->refreshScopeNodes ($ refactoredNode , $ filePath , $ currentScope );
315315 // search "infinite recursion" in https://github.com/nikic/PHP-Parser/blob/master/doc/component/Walking_the_AST.markdown
316- $ originalNodeHash = \spl_object_hash ($ originalNode );
316+ $ originalNodeId = \spl_object_id ($ originalNode );
317317 // will be replaced in leaveNode() the original node must be passed
318- $ this ->nodesToReturn [$ originalNodeHash ] = $ refactoredNode ;
318+ $ this ->nodesToReturn [$ originalNodeId ] = $ refactoredNode ;
319319 return $ originalNode ;
320320 }
321321 $ this ->refreshScopeNodes ($ refactoredNode , $ filePath , $ currentScope );
0 commit comments