mirror of
https://github.com/danog/psalm.git
synced 2024-11-26 20:34:47 +01:00
Only complain about redundant conditions if there’s one negated clause
This commit is contained in:
parent
4ff26cdd8f
commit
4b0cee6142
@ -216,18 +216,9 @@ class AlgebraChecker
|
||||
) {
|
||||
$negated_formula2 = self::negateFormula($formula2);
|
||||
|
||||
$is_reconcilable = true;
|
||||
|
||||
foreach ($formula2 as $clause) {
|
||||
if (!$clause->reconcilable) {
|
||||
$is_reconcilable = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// remove impossible types
|
||||
foreach ($negated_formula2 as $clause_a) {
|
||||
if ($is_reconcilable) {
|
||||
if (count($negated_formula2) === 1) {
|
||||
foreach ($clause_a->possibilities as $key => $values) {
|
||||
if (count($values) > 1
|
||||
&& count(array_unique($values)) < count($values)
|
||||
|
@ -548,24 +548,9 @@ class TypeAlgebraTest extends TestCase
|
||||
function takesA(A $a) : void {}
|
||||
|
||||
function foo(?A $a) : void {
|
||||
$c = rand(0, 1);
|
||||
if (($a instanceof B || $a instanceof C)
|
||||
&& ($a instanceof B || rand(0, 1))
|
||||
) {
|
||||
takesA($a);
|
||||
}
|
||||
}',
|
||||
],
|
||||
'instanceofInCNFOrFlippedOrder' => [
|
||||
'<?php
|
||||
class A {}
|
||||
class B extends A {}
|
||||
class C extends A {}
|
||||
|
||||
function takesA(A $a) : void {}
|
||||
|
||||
function foo(?A $a) : void {
|
||||
if (($a instanceof B || rand(0, 1))
|
||||
&& ($a instanceof B || $a instanceof C)
|
||||
&& ($a instanceof B || $c)
|
||||
) {
|
||||
takesA($a);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user