@@ -252,6 +252,11 @@ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
252252 continue ;
253253 }
254254
255+ $ byRefIndex = $ tokens ->getPrevMeaningfulToken ($ variableIndex );
256+ if ($ tokens [$ byRefIndex ]->equals ('& ' )) {
257+ $ variableIndex = $ byRefIndex ;
258+ }
259+
255260 if (!('( ' === $ tokens [$ variableIndex - 1 ]->getContent ()) && $ this ->hasParamTypeHint ($ tokens , $ variableIndex - 2 )) {
256261 continue ;
257262 }
@@ -374,44 +379,32 @@ private function fixFunctionDefinition(
374379 $ hasCallable ,
375380 $ hasObject
376381 ) {
377- if (true === $ hasNull ) {
378- $ newTokens [] = new Token ([CT ::T_NULLABLE_TYPE , '? ' ]);
379- }
382+ $ newTokens = [];
380383
381384 if (true === $ hasVoid ) {
382385 $ newTokens [] = new Token ('void ' );
383- }
384-
385- if (true === $ hasIterable && true === $ hasArray ) {
386+ } elseif (true === $ hasIterable && true === $ hasArray ) {
386387 $ newTokens [] = new Token ([CT ::T_ARRAY_TYPEHINT , 'array ' ]);
387388 } elseif (true === $ hasIterable ) {
388389 $ newTokens [] = new Token ([T_STRING , 'iterable ' ]);
389390 } elseif (true === $ hasArray ) {
390391 $ newTokens [] = new Token ([CT ::T_ARRAY_TYPEHINT , 'array ' ]);
391- }
392-
393- if (true === $ hasString ) {
392+ } elseif (true === $ hasString ) {
394393 $ newTokens [] = new Token ([T_STRING , 'string ' ]);
395- }
396-
397- if (true === $ hasInt ) {
394+ } elseif (true === $ hasInt ) {
398395 $ newTokens [] = new Token ([T_STRING , 'int ' ]);
399- }
400-
401- if (true === $ hasFloat ) {
396+ } elseif (true === $ hasFloat ) {
402397 $ newTokens [] = new Token ([T_STRING , 'float ' ]);
403- }
404-
405- if (true === $ hasBool ) {
398+ } elseif (true === $ hasBool ) {
406399 $ newTokens [] = new Token ([T_STRING , 'bool ' ]);
407- }
408-
409- if (true === $ hasCallable ) {
400+ } elseif (true === $ hasCallable ) {
410401 $ newTokens [] = new Token ([T_CALLABLE , 'callable ' ]);
402+ } elseif (true === $ hasObject ) {
403+ $ newTokens [] = new Token ([T_STRING , 'object ' ]);
411404 }
412405
413- if (true === $ hasObject ) {
414- $ newTokens [] = new Token ([ T_STRING , ' object ' ]) ;
406+ if ('' !== $ paramType && [] !== $ newTokens ) {
407+ return ;
415408 }
416409
417410 foreach (explode ('\\' , $ paramType ) as $ nsIndex => $ value ) {
@@ -425,6 +418,10 @@ private function fixFunctionDefinition(
425418 $ newTokens [] = new Token ([T_STRING , $ value ]);
426419 }
427420
421+ if (true === $ hasNull ) {
422+ array_unshift ($ newTokens , new Token ([CT ::T_NULLABLE_TYPE , '? ' ]));
423+ }
424+
428425 $ newTokens [] = new Token ([T_WHITESPACE , ' ' ]);
429426 $ tokens ->insertAt ($ index , $ newTokens );
430427 }
0 commit comments