Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

php upgrade to version 8.1 from 7.3 crashes when it hits property #7710

Closed
jadelbe418 opened this issue Jan 11, 2023 · 2 comments
Closed

php upgrade to version 8.1 from 7.3 crashes when it hits property #7710

jadelbe418 opened this issue Jan 11, 2023 · 2 comments

Comments

@jadelbe418
Copy link

Been using rector to update a php application to version 8.1 from 7.3, using:

LevelSetList::UP_TO_PHP_81

It keeps crashing when it hits certain object properties, like:

private $_locationTypesRepository;

I know this, because it runs fine when I pull that piece of code out.

The error trace from debug mode is posted here:

`[ERROR] Could not process "src/Controller/LocationTypesController.php" file, due to:
System error: "preg_match(): Argument #2 ($subject) must be of type string, array given

     Stack trace:                                                                                                   
     #0                                                                                                             
     phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php(4
     40): preg_match()                                                                                              
     #1                                                                                                             
     phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php(4
     16): Symfony\Polyfill\Mbstring\Mbstring::mb_detect_encoding()                                                  
     #2 vendor/rector/rector/vendor/symfony/polyfill-mbstring/bootstrap80.php(59):                                  
     Symfony\Polyfill\Mbstring\Mbstring::mb_check_encoding()                                                        
     #3                                                                                                             
     phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Type/Php/StrCaseFunctionsReturnTypeExtensio
     n.php(66): mb_check_encoding()                                                                                 
     #4 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1468):       
     PHPStan\Type\Php\StrCaseFunctionsReturnTypeExtension->getTypeFromFunctionCall()                                
     #5 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(557):        
     PHPStan\Analyser\MutatingScope->resolveType()                                                                  
     #6 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(786):        
     PHPStan\Analyser\MutatingScope->getType()                                                                      
     #7                                                                                                             
     phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/InitializerExprTypeResolver.php(
     356): PHPStan\Analyser\MutatingScope->PHPStan\Analyser\{closure}()                                             
     #8 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(787):        
     PHPStan\Reflection\InitializerExprTypeResolver->getConcatType()                                                
     #9 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(557):        
     PHPStan\Analyser\MutatingScope->resolveType()                                                                  
     #10 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(777):       
     PHPStan\Analyser\MutatingScope->getType()                                                                      
     #11 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(557):       
     PHPStan\Analyser\MutatingScope->resolveType()                                                                  
     #12 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(1446):  
     PHPStan\Analyser\MutatingScope->getType()                                                                      
     #13 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(557):   
     PHPStan\Analyser\NodeScopeResolver->findEarlyTerminatingExpr()                                                 
     #14 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(360):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNode()                                                          
     #15 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(646):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNodes()                                                         
     #16 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(360):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNode()                                                          
     #17 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(723):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNodes()                                                         
     #18 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(360):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNode()                                                          
     #19 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(521):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNodes()                                                         
     #20 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(327):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNode()                                                          
     #21 vendor/rector/rector/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php(195):            
     PHPStan\Analyser\NodeScopeResolver->processNodes()                                                             
     #22 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(415):   
     Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver->Rector\NodeTypeResolver\PHPStan\Scope\{closure 
     }()                                                                                                            
     #23 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(360):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNode()                                                          
     #24 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(571):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNodes()                                                         
     #25 phar://vendor/rector/rector/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(327):   
     PHPStan\Analyser\NodeScopeResolver->processStmtNode()                                                          
     #26 vendor/rector/rector/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php(306):            
     PHPStan\Analyser\NodeScopeResolver->processNodes()                                                             
     #27 vendor/rector/rector/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php(212):            
     Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver->processNodesWithDependentFiles()               
     #28 vendor/rector/rector/packages/NodeTypeResolver/NodeScopeAndMetadataDecorator.php(48):                      
     Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver->processNodes()                                 
     #29 vendor/rector/rector/src/PhpParser/AstResolver.php(319):                                                   
     Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator->decorateNodesFromFile()                                 
     #30 vendor/rector/rector/src/PhpParser/AstResolver.php(254):                                                   
     Rector\Core\PhpParser\AstResolver->parseFileNameToDecoratedNodes()                                             
     #31 vendor/rector/rector/src/PhpParser/NodeFinder/PropertyFetchFinder.php(77):                                 
     Rector\Core\PhpParser\AstResolver->parseClassReflectionTraits()                                                
     #32 vendor/rector/rector/src/NodeManipulator/PropertyManipulator.php(202):                                     
     Rector\Core\PhpParser\NodeFinder\PropertyFetchFinder->findPrivatePropertyFetches()                             
     #33 vendor/rector/rector/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php(130):                          
     Rector\Core\NodeManipulator\PropertyManipulator->isPropertyChangeableExceptConstructor()                       
     #34 vendor/rector/rector/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php(110):                          
     Rector\Php81\Rector\Property\ReadOnlyPropertyRector->refactorProperty()                                        
     #35 vendor/rector/rector/src/Rector/AbstractRector.php(216):                                                   
     Rector\Php81\Rector\Property\ReadOnlyPropertyRector->refactor()                                                
     #36 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(176):                         
     Rector\Core\Rector\AbstractRector->enterNode()                                                                 
     #37 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(105):                         
     PhpParser\NodeTraverser->traverseArray()                                                                       
     #38 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(196):                         
     PhpParser\NodeTraverser->traverseNode()                                                                        
     #39 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(105):                         
     PhpParser\NodeTraverser->traverseArray()                                                                       
     #40 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(196):                         
     PhpParser\NodeTraverser->traverseNode()                                                                        
     #41 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(85):                          
     PhpParser\NodeTraverser->traverseArray()                                                                       
     #42 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(42):                              
     PhpParser\NodeTraverser->traverse()                                                                            
     #43 vendor/rector/rector/src/Application/FileProcessor.php(60):                                                
     Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser->traverse()                                            
     #44 vendor/rector/rector/src/Application/FileProcessor/PhpFileProcessor.php(100):                              
     Rector\Core\Application\FileProcessor->refactor()                                                              
     #45 vendor/rector/rector/packages/Parallel/WorkerRunner.php(135):                                              
     Rector\Core\Application\FileProcessor\PhpFileProcessor->process()                                              
     #46 vendor/rector/rector/packages/Parallel/WorkerRunner.php(106): Rector\Parallel\WorkerRunner->processFiles() 
     #47 vendor/rector/rector/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):                   
     Rector\Parallel\WorkerRunner->Rector\Parallel\{closure}()                                                      
     #48 vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php(117):                                        
     RectorPrefix202301\Evenement\EventEmitter->emit()                                                              
     #49 vendor/rector/rector/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):                   
     RectorPrefix202301\Clue\React\NDJson\Decoder->handleData()                                                     
     #50 vendor/rector/rector/vendor/react/stream/src/Util.php(62):                                                 
     RectorPrefix202301\Evenement\EventEmitter->emit()                                                              
     #51 vendor/rector/rector/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):                   
     RectorPrefix202301\React\Stream\Util::RectorPrefix202301\React\Stream\{closure}()                              
     #52 vendor/rector/rector/vendor/react/stream/src/DuplexResourceStream.php(154):                                
     RectorPrefix202301\Evenement\EventEmitter->emit()                                                              
     #53 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(201):                                
     RectorPrefix202301\React\Stream\DuplexResourceStream->handleData()                                             
     #54 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(173):                                
     RectorPrefix202301\React\EventLoop\StreamSelectLoop->waitForStreamActivity()                                   
     #55 vendor/rector/rector/src/Console/Command/WorkerCommand.php(63):                                            
     RectorPrefix202301\React\EventLoop\StreamSelectLoop->run()                                                     
     #56 vendor/rector/rector/vendor/symfony/console/Command/Command.php(311):                                      
     Rector\Core\Console\Command\WorkerCommand->execute()                                                           
     #57 vendor/rector/rector/vendor/symfony/console/Application.php(899):                                          
     RectorPrefix202301\Symfony\Component\Console\Command\Command->run()                                            
     #58 vendor/rector/rector/vendor/symfony/console/Application.php(320):                                          
     RectorPrefix202301\Symfony\Component\Console\Application->doRunCommand()                                       
     #59 vendor/rector/rector/src/Console/ConsoleApplication.php(49):                                               
     RectorPrefix202301\Symfony\Component\Console\Application->doRun()                                              
     #60 vendor/rector/rector/vendor/symfony/console/Application.php(206):                                          
     Rector\Core\Console\ConsoleApplication->doRun()                                                                
     #61 vendor/rector/rector/bin/rector.php(128): RectorPrefix202301\Symfony\Component\Console\Application->run()  
     #62 vendor/rector/rector/bin/rector(5): require_once('...')                                                    
     #63 {main}". On line: 440                                                 `
@TomasVotruba
Copy link
Member

Thank you for your report!

We'll need an isolated failing demo link from: http://getrector.org/demo,
that way we can reproduce the bug.

@samsonasik
Copy link
Member

I am closing it, feel free to open new issue when you can invest time to reproducible code and config with:

  • minimal lines
  • single or two rules that cause it.
  • expected output.

You need to invest time to narrow down rules half by half until it found the minimal rule(s) that cause it,
and the expected output

https://tomasvotruba.com/blog/2021/02/01/effective-debug-tricks-narrow-scoping/

I am closing it as it won't go anywere unless it has above requirement provided. Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants