Skip to content

Commit cd5401f

Browse files
authored
Re-use ExpressionTypeHolder
1 parent 9b23185 commit cd5401f

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

src/Analyser/MutatingScope.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2435,12 +2435,12 @@ private function enterFunctionLike(
24352435

24362436
$holder = new ConditionalExpressionHolder([
24372437
$parameterType->getParameterName() => ExpressionTypeHolder::createYes(new Variable($targetParameterName), TypeCombinator::intersect($targetParameter->getType(), $parameterType->getTarget())),
2438-
], new ExpressionTypeHolder(new Variable($parameter->getName()), $ifType, TrinaryLogic::createYes()));
2438+
], ExpressionTypeHolder::createYes(new Variable($parameter->getName()), $ifType));
24392439
$conditionalTypes['$' . $parameter->getName()][$holder->getKey()] = $holder;
24402440

24412441
$holder = new ConditionalExpressionHolder([
24422442
$parameterType->getParameterName() => ExpressionTypeHolder::createYes(new Variable($targetParameterName), TypeCombinator::remove($targetParameter->getType(), $parameterType->getTarget())),
2443-
], new ExpressionTypeHolder(new Variable($parameter->getName()), $elseType, TrinaryLogic::createYes()));
2443+
], ExpressionTypeHolder::createYes(new Variable($parameter->getName()), $elseType));
24442444
$conditionalTypes['$' . $parameter->getName()][$holder->getKey()] = $holder;
24452445
}
24462446
}
@@ -4250,8 +4250,9 @@ public function processClosureScope(
42504250
}
42514251
}
42524252

4253-
$expressionTypes[$variableExprString] = ExpressionTypeHolder::createYes($use->var, $variableType);
4254-
$nativeExpressionTypes[$variableExprString] = ExpressionTypeHolder::createYes($use->var, $variableType);
4253+
$holder = ExpressionTypeHolder::createYes($use->var, $variableType);
4254+
$expressionTypes[$variableExprString] = $holder;
4255+
$nativeExpressionTypes[$variableExprString] = $holder;
42554256
}
42564257

42574258
return $this->scopeFactory->create(

src/Analyser/NodeScopeResolver.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6966,13 +6966,15 @@ private function enterForeach(MutatingScope $scope, ExpressionResultStorage $sto
69666966
$arrayDimFetchConditionalHolders = [];
69676967
foreach ($constantArrays[0]->getKeyTypes() as $i => $keyType) {
69686968
$valueType = $constantArrays[0]->getValueTypes()[$i];
6969+
$keyExpressionTypeHolder = ExpressionTypeHolder::createYes(new Variable($stmt->keyVar->name), $keyType);
6970+
69696971
$holder = new ConditionalExpressionHolder([
6970-
'$' . $stmt->keyVar->name => ExpressionTypeHolder::createYes(new Variable($stmt->keyVar->name), $keyType),
6971-
], new ExpressionTypeHolder($stmt->valueVar, $valueType, TrinaryLogic::createYes()));
6972+
'$' . $stmt->keyVar->name => $keyExpressionTypeHolder,
6973+
], ExpressionTypeHolder::createYes($stmt->valueVar, $valueType));
69726974
$valueConditionalHolders[$holder->getKey()] = $holder;
69736975
$arrayDimFetchHolder = new ConditionalExpressionHolder([
6974-
'$' . $stmt->keyVar->name => ExpressionTypeHolder::createYes(new Variable($stmt->keyVar->name), $keyType),
6975-
], new ExpressionTypeHolder(new ArrayDimFetch($stmt->expr, $stmt->keyVar), $valueType, TrinaryLogic::createYes()));
6976+
'$' . $stmt->keyVar->name => $keyExpressionTypeHolder,
6977+
], ExpressionTypeHolder::createYes(new ArrayDimFetch($stmt->expr, $stmt->keyVar), $valueType));
69766978
$arrayDimFetchConditionalHolders[$arrayDimFetchHolder->getKey()] = $arrayDimFetchHolder;
69776979
}
69786980

src/Analyser/TypeSpecifier.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1658,7 +1658,7 @@ private function processBooleanSureConditionalTypes(Scope $scope, SpecifiedTypes
16581658

16591659
$holder = new ConditionalExpressionHolder(
16601660
$conditions,
1661-
new ExpressionTypeHolder($expr, TypeCombinator::intersect($scope->getType($expr), $type), TrinaryLogic::createYes()),
1661+
ExpressionTypeHolder::createYes($expr, TypeCombinator::intersect($scope->getType($expr), $type)),
16621662
);
16631663
$holders[$exprString][$holder->getKey()] = $holder;
16641664
}
@@ -1725,7 +1725,7 @@ private function processBooleanNotSureConditionalTypes(Scope $scope, SpecifiedTy
17251725

17261726
$holder = new ConditionalExpressionHolder(
17271727
$conditions,
1728-
new ExpressionTypeHolder($expr, TypeCombinator::remove($scope->getType($expr), $type), TrinaryLogic::createYes()),
1728+
ExpressionTypeHolder::createYes($expr, TypeCombinator::remove($scope->getType($expr), $type)),
17291729
);
17301730
$holders[$exprString][$holder->getKey()] = $holder;
17311731
}

0 commit comments

Comments
 (0)