Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Unreachable statement - code above always terminates." with switch/break/return statements #4076

Closed
klausi opened this issue Nov 11, 2020 · 4 comments

Comments

@klausi
Copy link

klausi commented Nov 11, 2020

Bug report

When using switch cases with if, return and break statements then PHPStan gets confused.

Code snippet that reproduces the problem

<?php declare(strict_types = 1);

function test(int $x, int $y): int {
	switch($x) {
		case 0:
			return 0;
		case 1:
			if ($y == 2) {
				// continue after the switch().
				break;
			}
			// else fall through to default clause
		default:
			return 99;
	}
	
	return -1;
}

https://phpstan.org/r/06e8ebd7-6062-4b53-8ad5-fd71b242fd8b

Expected output

no output because no error

@ondrejmirtes
Copy link
Member

Fixed: phpstan/phpstan-src@46c39e8

@klausi
Copy link
Author

klausi commented Nov 11, 2020

Whoa, that was a quick fix! Thanks a lot Ondrej 🐎

@ondrejmirtes
Copy link
Member

You're welcome! Be sure to check out PHPStan Pro if you want to support PHPStan's development :)

typhonius added a commit to typhonius/acquia-php-sdk-v2 that referenced this issue Nov 23, 2020
typhonius added a commit to typhonius/acquia-php-sdk-v2 that referenced this issue Nov 24, 2020
@github-actions
Copy link

github-actions bot commented May 8, 2021

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants