Skip to content

[DeadCode] Add RemoveDeadInstanceOfAssertRector#8202

Merged
TomasVotruba merged 2 commits into
mainfrom
add-remove-dead-instanceof-assert-rector
Jul 22, 2026
Merged

[DeadCode] Add RemoveDeadInstanceOfAssertRector#8202
TomasVotruba merged 2 commits into
mainfrom
add-remove-dead-instanceof-assert-rector

Conversation

@TomasVotruba

Copy link
Copy Markdown
Member

Adds a new dead-code rule that removes redundant assert($value instanceof X) statements when the value's type is already known to be X (or a subtype).

Covers property fetches and variables.

 final class SomeClass
 {
     public function __construct(
         private UserRepository $userRepository
     ) {
     }

     public function run(): void
     {
-        assert($this->userRepository instanceof UserRepository);
     }
 }

Kept (not changed):

// nullable property - instanceof is not always true
assert($this->userRepository instanceof UserRepository); // ?UserRepository

// untyped property - type unknown
assert($this->userRepository instanceof UserRepository); // private $userRepository

// carries a description message - preserved
assert($this->userRepository instanceof UserRepository, 'must be set');

Registered in DeadCodeLevel.

@TomasVotruba
TomasVotruba enabled auto-merge (squash) July 22, 2026 20:22
@TomasVotruba
TomasVotruba merged commit 696058c into main Jul 22, 2026
66 checks passed
@TomasVotruba
TomasVotruba deleted the add-remove-dead-instanceof-assert-rector branch July 22, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants