File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2093,7 +2093,6 @@ static uint32_t assign_dim_result_type(
20932093 tmp |= MAY_BE_RC1 | MAY_BE_RCN ;
20942094 }
20952095 if (tmp & MAY_BE_ARRAY ) {
2096- tmp |= (value_type & MAY_BE_ANY ) << MAY_BE_ARRAY_SHIFT ;
20972096 if (value_type & MAY_BE_UNDEF ) {
20982097 tmp |= MAY_BE_ARRAY_OF_NULL ;
20992098 }
@@ -2114,6 +2113,11 @@ static uint32_t assign_dim_result_type(
21142113 tmp |= MAY_BE_ARRAY_KEY_STRING ;
21152114 }
21162115 }
2116+ /* Only add value type if we have a key type. It might be that the key type is illegal
2117+ * for arrays. */
2118+ if (tmp & MAY_BE_ARRAY_KEY_ANY ) {
2119+ tmp |= (value_type & MAY_BE_ANY ) << MAY_BE_ARRAY_SHIFT ;
2120+ }
21172121 }
21182122 return tmp ;
21192123}
Original file line number Diff line number Diff line change 1+ --TEST--
2+ Don't add array value type is key type is illegal
3+ --FILE--
4+ <?php
5+
6+ function test (\SplObjectStorage $ definitions = null ) {
7+ $ argument = new stdClass ;
8+ $ definitions [$ argument ] = 1 ;
9+ $ definitions [$ argument ] += 1 ;
10+ $ argument = [];
11+ $ definitions [$ argument ] = 1 ;
12+ $ definitions [$ argument ] += 1 ;
13+ }
14+
15+ ?>
16+ ===DONE===
17+ --EXPECT--
18+ ===DONE===
You can’t perform that action at this time.
0 commit comments