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

BooleansInCondition doesn't respect checkExplicitMixed/checkImplicitMixed config #253

Open
VincentLanglet opened this issue Dec 11, 2024 · 1 comment

Comments

@VincentLanglet
Copy link
Contributor

Booleans in condition report explicitMixed in level 7
https://phpstan.org/r/954e86c5-1a77-43e9-a4c7-c96f9c66b1fe

But doesn't report implicitMixed in level 10
https://phpstan.org/r/865a7467-a5f4-46c3-a95f-b592db7e2f9e

This is because BooleanRuleHelper has a custom behavior for mixed

if ($type instanceof MixedType) {
return !$type->isExplicitMixed();
}

I think it should rely on explicitMixed/implicitMixed config instead.

Option 1:
Chaning nothing

Option2:
Using both checkExplicitMixed/checkImplicitMixed config

if ($type instanceof MixedType) {
     if ($type->isExplicitMixed()) {
           return !$this->checkExplicitMixed;
     } else {
           return !$this->checkImplicitMixed;
     }
}

Option3:
Keeping the behavior for explicitMixed but allow to report implicitMixed.

if ($type instanceof MixedType) {
     return !$type->isExplicitMixed() && !$this->checkImplicitMixed;
}

I would go with option 2, but it's your call @ondrejmirtes

@ondrejmirtes
Copy link
Member

Option 3 makes most sense to me. Doesn't change anything until level 9, but will report implicit mixed on level 10.

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

No branches or pull requests

2 participants