Skip to content

[DeadCode] Skip constant compare from vendor/ on NarrowWideUnionReturnTypeRector#8056

Merged
TomasVotruba merged 5 commits into
mainfrom
skip-constant-compare
Jun 27, 2026
Merged

[DeadCode] Skip constant compare from vendor/ on NarrowWideUnionReturnTypeRector#8056
TomasVotruba merged 5 commits into
mainfrom
skip-constant-compare

Conversation

@samsonasik

Copy link
Copy Markdown
Member

When constant vendor can be different value, eg allow monolog v2 and v3:

"monolog/monolog": "^2.0 || ^3.0"

The Logger::API value are different. So this check is on purpose:

    public function createLogRecord(int $level): array|LogRecord
    {
        return Logger::API === 2
            ? ['level' => $level]
            : new LogRecord();
    }

and should be skipped.

@samsonasik samsonasik requested a review from TomasVotruba June 19, 2026 19:08
@samsonasik

Copy link
Copy Markdown
Member Author

@TomasVotruba ready 👍

@samsonasik samsonasik requested a review from TomasVotruba June 20, 2026 11:34
@samsonasik

Copy link
Copy Markdown
Member Author

@TomasVotruba ready 👍

@TomasVotruba

Copy link
Copy Markdown
Member

What is actually wrong with the provided snippet now? What does Rector do?
Not sure if worth parsing composer.json for this condition.

@samsonasik

Copy link
Copy Markdown
Member Author

The existing behaviour is change union return type:

-    public function createLogRecord(int $level): array|LogRecord
+    public function createLogRecord(int $level): array

due to Logger::API === 2 is always valid on specific installed version, but when it install another version major, it become invalid.

so if there is ternary return, and it compare constant fetch, it needs to lookup composer.json check, and verify the multiple major versions definition.

Comment thread src/Composer/ComposerJsonPackageVersionResolver.php
@samsonasik samsonasik requested a review from TomasVotruba June 20, 2026 14:56
@TomasVotruba

Copy link
Copy Markdown
Member

Looks good now, let's ship it

@TomasVotruba TomasVotruba merged commit 80f0676 into main Jun 27, 2026
66 checks passed
@TomasVotruba TomasVotruba deleted the skip-constant-compare branch June 27, 2026 12:42
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.

3 participants