@@ -947,11 +947,11 @@ private function produceArrayDimFetchAssignValueToWrite(array $dimFetchStack, ar
947947 $ originalValueToWrite = $ valueToWrite ;
948948
949949 $ offsetValueTypeStack = [$ offsetValueType ];
950- $ overwritesExistingOffset = $ offsetTypes [array_key_last ($ offsetTypes )][0 ] !== null ;
950+ $ generalizeOnWrite = $ offsetTypes [array_key_last ($ offsetTypes )][0 ] !== null ;
951951 foreach (array_slice ($ offsetTypes , 0 , -1 ) as [$ offsetType , $ dimFetch ]) {
952952 if ($ offsetType === null ) {
953953 $ offsetValueType = new ConstantArrayType ([], []);
954- $ overwritesExistingOffset = false ;
954+ $ generalizeOnWrite = false ;
955955 } else {
956956 $ has = $ offsetValueType ->hasOffsetValueType ($ offsetType );
957957 if ($ has ->yes ()) {
@@ -960,11 +960,11 @@ private function produceArrayDimFetchAssignValueToWrite(array $dimFetchStack, ar
960960 if (!$ scope ->hasExpressionType ($ dimFetch )->yes ()) {
961961 $ offsetValueType = TypeCombinator::union ($ offsetValueType ->getOffsetValueType ($ offsetType ), new ConstantArrayType ([], []));
962962 } else {
963- $ overwritesExistingOffset = false ;
963+ $ generalizeOnWrite = false ;
964964 $ offsetValueType = $ offsetValueType ->getOffsetValueType ($ offsetType );
965965 }
966966 } else {
967- $ overwritesExistingOffset = false ;
967+ $ generalizeOnWrite = false ;
968968 $ offsetValueType = new ConstantArrayType ([], []);
969969 }
970970 }
@@ -1017,7 +1017,7 @@ private function produceArrayDimFetchAssignValueToWrite(array $dimFetchStack, ar
10171017 if ($ i === 0 ) {
10181018 $ unionValues = true ;
10191019 } elseif (
1020- $ overwritesExistingOffset === true
1020+ $ generalizeOnWrite
10211021 && $ i === count ($ offsetTypes ) - 1
10221022 &&
10231023 (
0 commit comments