Skip to content

[EarlyReturn] Handle multiple statements in else in ChangeIfElseValueAssignToEarlyReturnRector#4580

Merged
TomasVotruba merged 1 commit intorectorphp:mainfrom
dorrogeray:fix-change-if-else-value-assign-to-early-return-rector
Jul 22, 2023
Merged

[EarlyReturn] Handle multiple statements in else in ChangeIfElseValueAssignToEarlyReturnRector#4580
TomasVotruba merged 1 commit intorectorphp:mainfrom
dorrogeray:fix-change-if-else-value-assign-to-early-return-rector

Conversation

@dorrogeray
Copy link
Copy Markdown
Contributor

Added test case + updated ChangeIfElseValueAssignToEarlyReturnRector to handle situations like this:

public function generateNumber(int $bonus, int $multiplier): int
{
    if (mt_rand(0, 1) === 1) {
        $number = 10;
    } else {
        $bonus *= $multiplier;
        $number = 20 + $bonus;
    }

    return $number;
}

Without this fix, it gets dropped:

public function generateNumber(int $bonus, int $multiplier): int
{
    if (mt_rand(0, 1) === 1) {
        return 10;
    }

    return 20 + $bonus;
}

With this fix, it is preserved:

public function generateNumber(int $bonus, int $multiplier): int
{
    if (mt_rand(0, 1) === 1) {
        return 10;
    }
    $bonus *= $multiplier;

    return 20 + $bonus;
}

@dorrogeray dorrogeray requested a review from TomasVotruba as a code owner July 22, 2023 13:03
@TomasVotruba
Copy link
Copy Markdown
Member

Thank you for the fix 👏

@TomasVotruba TomasVotruba merged commit a7cd7ed into rectorphp:main Jul 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants