Skip to content

BooleansInCondition doesn't respect checkExplicitMixed/checkImplicitMixed config #253

@VincentLanglet

Description

@VincentLanglet

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions