@@ -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,13 @@ 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 ();
5958 $ hasParentExpressionType = $ originalScope ->hasExpressionType ($ parentExpr );
60- if (!$ hasParentExpressionType ->no ()) {
61- $ parentCertainty = $ hasParentExpressionType ;
62- }
59+
6360 $ specifiedExpressions [] = new EnsuredNonNullabilityResultExpression (
6461 $ parentExpr ,
6562 $ scope ->getType ($ parentExpr ),
6663 $ scope ->getNativeType ($ parentExpr ),
67- $ parentCertainty ,
64+ $ hasParentExpressionType ,
6865 );
6966 }
7067
@@ -104,6 +101,10 @@ public function ensureNonNullability(MutatingScope $scope, Expr $expr): EnsuredN
104101 public function revertNonNullability (MutatingScope $ scope , array $ specifiedExpressions ): MutatingScope
105102 {
106103 foreach ($ specifiedExpressions as $ specifiedExpressionResult ) {
104+ if ($ specifiedExpressionResult ->getCertainty ()->no ()) {
105+ $ scope = $ scope ->invalidateExpression ($ specifiedExpressionResult ->getExpression ());
106+ continue ;
107+ }
107108 $ scope = $ scope ->specifyExpressionType (
108109 $ specifiedExpressionResult ->getExpression (),
109110 $ specifiedExpressionResult ->getOriginalType (),
0 commit comments