Skip to content

Upgrade to 2.3.0 breaks #9573

@DerManoMann

Description

@DerManoMann

Bug Report

Subject Details
Rector version e.g. v2.3.0 (invoke vendor/bin/rector --version)

After upgrading from 2.2.14 to 2.3.0 the following error occurs:

 [ERROR] Could not process "swagger-php/src/Attributes/Attachable.php" file, due to:                 
         "System error: "This parameter does not have a default value available"                                        
         Run Rector with "--debug" option and post the report here: https://github.com/rectorphp/rector/issues/new". On line: 172

Minimal PHP Code Causing Issue

The file in question is quite simple and there are more like it that pass processing without issue:

<?php declare(strict_types=1);

/**
 * @license Apache 2.0
 */

namespace OpenApi\Attributes;

use OpenApi\Annotations as OA;

#[\Attribute(\Attribute::TARGET_ALL | \Attribute::IS_REPEATABLE)]
class Attachable extends OA\Attachable
{
    public function __construct(array $properties = [])
    {
        parent::__construct($properties);
    }
}

Removing the parent::__construct($properties); line fixes the issue...

Expected Behaviour

The file should be processed as before.

Debug output

 [ERROR] Could not process "/Users/martin/mano/swagger-php/src/Attributes/Attachable.php" file, due to:                 
         "System error: "This parameter does not have a default value available"                                        
                                                                                                                        
         Stack trace:                                                                                                   
         #0                                                                                                             
         phar://vendor/phpstan/phpstan/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/Reflection/ReflectionParam
         eter.php(257): PHPStan\BetterReflection\Reflection\ReflectionParameter->getCompiledDefaultValue()              
         #1                                                                                                             
         phar://vendor/phpstan/phpstan/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/Reflection/Adapter/Reflect
         ionParameter.php(178): PHPStan\BetterReflection\Reflection\ReflectionParameter->getDefaultValue()              
         #2 vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveParentDelegatingConstructorRector.php(218):    
         PHPStan\BetterReflection\Reflection\Adapter\ReflectionParameter->getDefaultValue()                             
         #3 vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveParentDelegatingConstructorRector.php(201):    
         Rector\DeadCode\Rector\ClassMethod\RemoveParentDelegatingConstructorRector->isDifferentDefaultValue(Object(Php 
         Parser\Node\Expr\Array_), Object(PHPStan\Reflection\Php\PhpMethodReflection), 0)                               
         #4 vendor/rector/rector/rules/DeadCode/Rector/ClassMethod/RemoveParentDelegatingConstructorRector.php(109):    
         Rector\DeadCode\Rector\ClassMethod\RemoveParentDelegatingConstructorRector->areConstructorAndParentParameterTy 
         pesMatching(Object(PhpParser\Node\Stmt\ClassMethod), Object(PHPStan\Reflection\Php\PhpMethodReflection))       
         #5 vendor/rector/rector/src/Rector/AbstractRector.php(112):                                                    
         Rector\DeadCode\Rector\ClassMethod\RemoveParentDelegatingConstructorRector->refactor(Object(PhpParser\Node\Stm 
         t\ClassMethod))                                                                                                
         #6 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(165):                   
         Rector\Rector\AbstractRector->enterNode(Object(PhpParser\Node\Stmt\ClassMethod))                               
         #7 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(78):                    
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverseArray(Array)                            
         #8 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(197):                   
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Class_) 
         )                                                                                                              
         #9 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(78):                    
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverseArray(Array)                            
         #10 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(197):                  
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Namespa 
         ce_))                                                                                                          
         #11 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(78):                   
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverseArray(Array)                            
         #12 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(197):                  
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverseNode(Object(Rector\PhpParser\Node\FileN 
         ode))                                                                                                          
         #13 vendor/rector/rector/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php(60):                   
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverseArray(Array)                            
         #14 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(53):                              
         Rector\PhpParser\NodeTraverser\AbstractImmutableNodeTraverser->traverse(Array)                                 
         #15 vendor/rector/rector/src/Application/FileProcessor.php(96):                                                
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverse(Array)                                            
         #16 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(178):                                    
         Rector\Application\FileProcessor->processFile(Object(Rector\ValueObject\Application\File),                     
         Object(Rector\ValueObject\Configuration))                                                                      
         #17 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(152):                                    
         Rector\Application\ApplicationFileProcessor->processFile(Object(Rector\ValueObject\Application\File),          
         Object(Rector\ValueObject\Configuration))                                                                      
         #18 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(128):                                    
         Rector\Application\ApplicationFileProcessor->processFiles(Array, Object(Rector\ValueObject\Configuration),     
         Object(Closure), Object(Closure))                                                                              
         #19 vendor/rector/rector/src/Console/Command/ProcessCommand.php(182):                                          
         Rector\Application\ApplicationFileProcessor->run(Object(Rector\ValueObject\Configuration),                     
         Object(RectorPrefix202512\Symfony\Component\Console\Input\ArgvInput))                                          
         #20 vendor/rector/rector/vendor/symfony/console/Command/Command.php(289):                                      
         Rector\Console\Command\ProcessCommand->execute(Object(RectorPrefix202512\Symfony\Component\Console\Input\ArgvI 
         nput), Object(RectorPrefix202512\Symfony\Component\Console\Output\ConsoleOutput))                              
         #21 vendor/rector/rector/vendor/symfony/console/Application.php(899):                                          
         RectorPrefix202512\Symfony\Component\Console\Command\Command->run(Object(RectorPrefix202512\Symfony\Component\ 
         Console\Input\ArgvInput), Object(RectorPrefix202512\Symfony\Component\Console\Output\ConsoleOutput))           
         #22 vendor/rector/rector/vendor/symfony/console/Application.php(279):                                          
         RectorPrefix202512\Symfony\Component\Console\Application->doRunCommand(Object(Rector\Console\Command\ProcessCo 
         mmand), Object(RectorPrefix202512\Symfony\Component\Console\Input\ArgvInput),                                  
         Object(RectorPrefix202512\Symfony\Component\Console\Output\ConsoleOutput))                                     
         #23 vendor/rector/rector/src/Console/ConsoleApplication.php(60):                                               
         RectorPrefix202512\Symfony\Component\Console\Application->doRun(Object(RectorPrefix202512\Symfony\Component\Co 
         nsole\Input\ArgvInput), Object(RectorPrefix202512\Symfony\Component\Console\Output\ConsoleOutput))             
         #24 vendor/rector/rector/vendor/symfony/console/Application.php(162):                                          
         Rector\Console\ConsoleApplication->doRun(Object(RectorPrefix202512\Symfony\Component\Console\Input\ArgvInput), 
         Object(RectorPrefix202512\Symfony\Component\Console\Output\ConsoleOutput))                                     
         #25 vendor/rector/rector/bin/rector.php(130): RectorPrefix202512\Symfony\Component\Console\Application->run()  
         #26 vendor/rector/rector/bin/rector(5): require_once('/Users/martin/m...')                                     
         #27 bin/rector(119): include('/Users/martin/m...')                                                             
         #28 {main}". On line: 172            

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions