119119use function array_map ;
120120use function array_merge ;
121121use function array_pop ;
122- use function array_reverse ;
123122use function array_slice ;
124123use function count ;
125124use function explode ;
@@ -3735,7 +3734,7 @@ public function filterBySpecifiedTypes(SpecifiedTypes $specifiedTypes): self
37353734 }
37363735
37373736 foreach ($ scope ->conditionalExpressions as $ conditionalExprString => $ conditionalExpressions ) {
3738- foreach (array_reverse ( $ conditionalExpressions) as $ conditionalExpression ) {
3737+ foreach ($ conditionalExpressions as $ conditionalExpression ) {
37393738 foreach ($ conditionalExpression ->getConditionExpressionTypeHolders () as $ holderExprString => $ conditionalTypeHolder ) {
37403739 if (!array_key_exists ($ holderExprString , $ specifiedExpressions ) || !$ specifiedExpressions [$ holderExprString ]->equals ($ conditionalTypeHolder )) {
37413740 continue 2 ;
@@ -3745,10 +3744,15 @@ public function filterBySpecifiedTypes(SpecifiedTypes $specifiedTypes): self
37453744 if ($ conditionalExpression ->getTypeHolder ()->getCertainty ()->no ()) {
37463745 unset($ scope ->expressionTypes [$ conditionalExprString ]);
37473746 } else {
3748- $ scope ->expressionTypes [$ conditionalExprString ] = $ conditionalExpression ->getTypeHolder ();
3747+ $ scope ->expressionTypes [$ conditionalExprString ] = array_key_exists ($ conditionalExprString , $ scope ->expressionTypes )
3748+ ? new ExpressionTypeHolder (
3749+ $ scope ->expressionTypes [$ conditionalExprString ]->getExpr (),
3750+ TypeCombinator::intersect ($ scope ->expressionTypes [$ conditionalExprString ]->getType (), $ conditionalExpression ->getTypeHolder ()->getType ()),
3751+ TrinaryLogic::maxMin ($ scope ->expressionTypes [$ conditionalExprString ]->getCertainty (), $ conditionalExpression ->getTypeHolder ()->getCertainty ()),
3752+ )
3753+ : $ conditionalExpression ->getTypeHolder ();
37493754 $ specifiedExpressions [$ conditionalExprString ] = $ conditionalExpression ->getTypeHolder ();
37503755 }
3751- continue 2 ;
37523756 }
37533757 }
37543758
0 commit comments