@@ -42,7 +42,7 @@ public function ensureShallowNonNullability(MutatingScope $scope, Scope $origina
4242 $ originalNativeType = $ originalScope ->getNativeType ($ exprToSpecify );
4343
4444 return new EnsuredNonNullabilityResult ($ scope , [
45- new EnsuredNonNullabilityResultExpression ($ exprToSpecify , $ originalExprType , $ originalNativeType , $ certainty ),
45+ new EnsuredNonNullabilityResultExpression ($ exprToSpecify , $ originalExprType , $ originalNativeType , $ hasExpressionType ),
4646 ]);
4747 }
4848 return new EnsuredNonNullabilityResult ($ scope , []);
@@ -55,16 +55,11 @@ public function ensureShallowNonNullability(MutatingScope $scope, Scope $origina
5555 // To properly revert this, we must also save and restore the parent expression's type.
5656 if ($ exprToSpecify instanceof Expr \ArrayDimFetch && $ exprToSpecify ->dim !== null ) {
5757 $ parentExpr = $ exprToSpecify ->var ;
58- $ parentCertainty = TrinaryLogic::createYes ();
59- $ hasParentExpressionType = $ originalScope ->hasExpressionType ($ parentExpr );
60- if (!$ hasParentExpressionType ->no ()) {
61- $ parentCertainty = $ hasParentExpressionType ;
62- }
6358 $ specifiedExpressions [] = new EnsuredNonNullabilityResultExpression (
6459 $ parentExpr ,
6560 $ scope ->getType ($ parentExpr ),
6661 $ scope ->getNativeType ($ parentExpr ),
67- $ parentCertainty ,
62+ $ originalScope -> hasExpressionType ( $ parentExpr ) ,
6863 );
6964 }
7065
@@ -104,6 +99,10 @@ public function ensureNonNullability(MutatingScope $scope, Expr $expr): EnsuredN
10499 public function revertNonNullability (MutatingScope $ scope , array $ specifiedExpressions ): MutatingScope
105100 {
106101 foreach ($ specifiedExpressions as $ specifiedExpressionResult ) {
102+ if ($ specifiedExpressionResult ->getCertainty ()->no ()) {
103+ $ scope = $ scope ->invalidateExpression ($ specifiedExpressionResult ->getExpression ());
104+ continue ;
105+ }
107106 $ scope = $ scope ->specifyExpressionType (
108107 $ specifiedExpressionResult ->getExpression (),
109108 $ specifiedExpressionResult ->getOriginalType (),
0 commit comments