Skip to content

Incorrect behavior of RenameClassRector #7417

@grandmaster44

Description

@grandmaster44

Bug Report

Subject Details
Rector version last dev-main
Installed as composer dependency

Minimal PHP Code Causing Issue

See https://getrector.org/demo/224e1a17-d4f4-4d71-bafe-f1d4cf129846

<?php

final class DemoFile extends Demo
{
    /**
     * @var int
     */
    private $test = 5;
    
    public function run()
    {
        $demo = new Demo();
        return 5;

        // we never get here
        return 10;
    }
}

final class Demo {
}

final class Demo2 {
}

Responsible rules

<?php

use Rector\Config\RectorConfig;
use Rector\Php74\Rector\Property\TypedPropertyRector;
use Rector\Set\ValueObject\SetList;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Rector\DeadCode\Rector\Stmt\RemoveUnreachableStatementRector;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->skip([
        TypedPropertyRector::class => ['/*'], 
        RenameClassRector::class => ['/*']
    ]);
    
    $rectorConfig->rule(TypedPropertyRector::class);
    $rectorConfig->rule(RemoveUnreachableStatementRector::class);
    $rectorConfig->ruleWithConfiguration(RenameClassRector::class, [
        Demo::class => Demo2::class,
    ]);
};

Expected Behavior

Rector should skip RenameClassRector rule (same as TypedPropertyRector was skipped)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions