@@ -6018,15 +6018,16 @@ private function processAssignVar(
60186018 }
60196019
60206020 $ truthySpecifiedTypes = $ this ->typeSpecifier ->specifyTypesInCondition ($ scope , $ assignedExpr , TypeSpecifierContext::createTruthy ());
6021- $ falseySpecifiedTypes = $ this ->typeSpecifier ->specifyTypesInCondition ($ scope , $ assignedExpr , TypeSpecifierContext::createFalsey ());
6022-
60236021 $ truthyType = TypeCombinator::removeFalsey ($ type );
6024- $ falseyType = TypeCombinator::intersect ($ type , StaticTypeFactory::falsey ());
6025-
60266022 $ conditionalExpressions = $ this ->processSureTypesForConditionalExpressionsAfterAssign ($ scope , $ var ->name , $ conditionalExpressions , $ truthySpecifiedTypes , $ truthyType );
60276023 $ conditionalExpressions = $ this ->processSureNotTypesForConditionalExpressionsAfterAssign ($ scope , $ var ->name , $ conditionalExpressions , $ truthySpecifiedTypes , $ truthyType );
6028- $ conditionalExpressions = $ this ->processSureTypesForConditionalExpressionsAfterAssign ($ scope , $ var ->name , $ conditionalExpressions , $ falseySpecifiedTypes , $ falseyType );
6029- $ conditionalExpressions = $ this ->processSureNotTypesForConditionalExpressionsAfterAssign ($ scope , $ var ->name , $ conditionalExpressions , $ falseySpecifiedTypes , $ falseyType );
6024+
6025+ if ($ truthyType !== $ type ) {
6026+ $ falseySpecifiedTypes = $ this ->typeSpecifier ->specifyTypesInCondition ($ scope , $ assignedExpr , TypeSpecifierContext::createFalsey ());
6027+ $ falseyType = TypeCombinator::intersect ($ type , StaticTypeFactory::falsey ());
6028+ $ conditionalExpressions = $ this ->processSureTypesForConditionalExpressionsAfterAssign ($ scope , $ var ->name , $ conditionalExpressions , $ falseySpecifiedTypes , $ falseyType );
6029+ $ conditionalExpressions = $ this ->processSureNotTypesForConditionalExpressionsAfterAssign ($ scope , $ var ->name , $ conditionalExpressions , $ falseySpecifiedTypes , $ falseyType );
6030+ }
60306031
60316032 $ this ->callNodeCallback ($ nodeCallback , new VariableAssignNode ($ var , $ assignedExpr ), $ scopeBeforeAssignEval , $ storage );
60326033 $ scope = $ scope ->assignVariable ($ var ->name , $ type , $ scope ->getNativeType ($ assignedExpr ), TrinaryLogic::createYes ());
0 commit comments