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 https://github.com/phpstan/phpstan-strict-rules/blob/a4a6a08bd4a461e516b9c3b8fdbf0f1883b34158/src/Rules/BooleansInConditions/BooleanRuleHelper.php#L25-L27 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
Activity
ondrejmirtes commentedon Dec 11, 2024
Option 3 makes most sense to me. Doesn't change anything until level 9, but will report implicit mixed on level 10.