Skip to content

StaticCallOnNonStaticToInstanceCall: "Scope not available on "PhpParser\Node\Expr\StaticCall" #9608

@GromNaN

Description

@GromNaN

Hello,
I hit an error with the StaticCallOnNonStaticToInstanceCall rule.
In this file: BuilderEncoderTest.php:170

Here is the minimal code that produces the error in the context of the project:

Expression::filter(
    ...$limit,
    input: 'item',
)

Package versions:

  • rector/rector: 2.3.2
  • phpstan/phpstan: 2.1.34

When I run rectorphp/rector-src: main rectorphp/rector-src@38d1caf, on this code, I don't get this error.

[ERROR] Could not process                                                                           
         "/Users/jerome/Develop/mongo-php-library/tests/Builder/BuilderEncoderTest.php" file, due to:
         "System error: "Scope not available on "PhpParser\Node\Expr\StaticCall" node. Fix scope     
         refresh on changed nodes first"                                                             
                                                                                                     
         Stack trace:                                                                                
         #0                                                                                          
         vendor/rector/rector/rules/Php70/Rector/StaticCall/StaticCallOnNonStaticToInstanceCallRector
         .php(120): Rector\PHPStan\ScopeFetcher::fetch(Object(PhpParser\Node\Expr\StaticCall))       
         #1 vendor/rector/rector/src/Rector/AbstractRector.php(106):                                 
         Rector\Php70\Rector\StaticCall\StaticCallOnNonStaticToInstanceCallRector->refactor(Object(P 
         hpParser\Node\Expr\StaticCall))                                                             
         #2 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(152):           
         Rector\Rector\AbstractRector->enterNode(Object(PhpParser\Node\Expr\StaticCall))             
         #3 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Arg) 
         )                                                                                           
         #4 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(140):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #5 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(180):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Expr 
         \StaticCall))                                                                               
         #6 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Arg) 
         )                                                                                           
         #7 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(140):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #8 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(180):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Expr 
         \StaticCall))                                                                               
         #9 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Arg) 
         )                                                                                           
         #10 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(140):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #11 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(180):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Expr 
         \New_))                                                                                     
         #12 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(180):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Expr 
         \Assign))                                                                                   
         #13 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Stmt 
         \Expression))                                                                               
         #14 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(140):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #15 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Stmt 
         \ClassMethod))                                                                              
         #16 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(140):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #17 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Stmt 
         \Class_))                                                                                   
         #18 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(140):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #19 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(PhpParser\Node\Stmt 
         \Namespace_))                                                                               
         #20 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(140):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #21 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(236):          
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseNode(Object(Rector\PhpParser\No 
         de\FileNode))                                                                               
         #22 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(84):           
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverseArray(Array)                    
         #23 vendor/rector/rector/src/Application/FileProcessor.php(96):                             
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverse(Array)                         
         #24 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(178):                 
         Rector\Application\FileProcessor->processFile(Object(Rector\ValueObject\Application\File),  
         Object(Rector\ValueObject\Configuration))                                                   
         #25 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(152):                 
         Rector\Application\ApplicationFileProcessor->processFile(Object(Rector\ValueObject\Applicat 
         ion\File), Object(Rector\ValueObject\Configuration))                                        
         #26 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(128):                 
         Rector\Application\ApplicationFileProcessor->processFiles(Array,                            
         Object(Rector\ValueObject\Configuration), Object(Closure), Object(Closure))                 
         #27 vendor/rector/rector/src/Console/Command/ProcessCommand.php(182):                       
         Rector\Application\ApplicationFileProcessor->run(Object(Rector\ValueObject\Configuration),  
         Object(RectorPrefix202601\Symfony\Component\Console\Input\ArgvInput))                       
         #28 vendor/rector/rector/vendor/symfony/console/Command/Command.php(289):                   
         Rector\Console\Command\ProcessCommand->execute(Object(RectorPrefix202601\Symfony\Component\ 
         Console\Input\ArgvInput),                                                                   
         Object(RectorPrefix202601\Symfony\Component\Console\Output\ConsoleOutput))                  
         #29 vendor/rector/rector/vendor/symfony/console/Application.php(899):                       
         RectorPrefix202601\Symfony\Component\Console\Command\Command->run(Object(RectorPrefix202601 
         \Symfony\Component\Console\Input\ArgvInput),                                                
         Object(RectorPrefix202601\Symfony\Component\Console\Output\ConsoleOutput))                  
         #30 vendor/rector/rector/vendor/symfony/console/Application.php(279):                       
         RectorPrefix202601\Symfony\Component\Console\Application->doRunCommand(Object(Rector\Consol 
         e\Command\ProcessCommand),                                                                  
         Object(RectorPrefix202601\Symfony\Component\Console\Input\ArgvInput),                       
         Object(RectorPrefix202601\Symfony\Component\Console\Output\ConsoleOutput))                  
         #31 vendor/rector/rector/src/Console/ConsoleApplication.php(62):                            
         RectorPrefix202601\Symfony\Component\Console\Application->doRun(Object(RectorPrefix202601\S 
         ymfony\Component\Console\Input\ArgvInput),                                                  
         Object(RectorPrefix202601\Symfony\Component\Console\Output\ConsoleOutput))                  
         #32 vendor/rector/rector/vendor/symfony/console/Application.php(162):                       
         Rector\Console\ConsoleApplication->doRun(Object(RectorPrefix202601\Symfony\Component\Consol 
         e\Input\ArgvInput),                                                                         
         Object(RectorPrefix202601\Symfony\Component\Console\Output\ConsoleOutput))                  
         #33 vendor/rector/rector/bin/rector.php(130):                                               
         RectorPrefix202601\Symfony\Component\Console\Application->run()                             
         #34 vendor/rector/rector/bin/rector(5): require_once('/Users/jerome/D...')                  
         #35 vendor/bin/rector(119): include('/Users/jerome/D...')                                   
         #36 {main}". On line: 19                                                                    
                                         

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions