@@ -1247,7 +1247,7 @@ zend_string *zend_type_to_string_resolved(zend_type type, zend_class_entry *scop
1247
1247
name = called_scope -> name ;
1248
1248
}
1249
1249
}
1250
- str = add_type_string (str , name , ZEND_TYPE_IS_INTERSECTION ( type ) );
1250
+ str = add_type_string (str , name , /* is_intersection */ false );
1251
1251
}
1252
1252
if (type_mask & MAY_BE_CALLABLE ) {
1253
1253
str = add_type_string (str , ZSTR_KNOWN (ZEND_STR_CALLABLE ), /* is_intersection */ false);
@@ -6301,9 +6301,8 @@ static zend_type zend_compile_typename(
6301
6301
} else if (ast -> kind == ZEND_AST_TYPE_INTERSECTION ) {
6302
6302
zend_ast_list * list = zend_ast_get_list (ast );
6303
6303
zend_type_list * type_list ;
6304
- unsigned int has_static = 0 ;
6305
6304
6306
- // TODO static means that one slot may be unused
6305
+ // TODO Is this still true if self/parent are accepted?
6307
6306
/* Allocate the type list directly on the arena as it must be a type
6308
6307
* list of the same number of elements as the AST list has children */
6309
6308
type_list = zend_arena_alloc (& CG (arena ), ZEND_TYPE_LIST_SIZE (list -> children ));
@@ -6316,27 +6315,13 @@ static zend_type zend_compile_typename(
6316
6315
zend_type single_type = zend_compile_single_typename (type_ast );
6317
6316
6318
6317
/* An intersection of standard types cannot exist so invalidate it */
6319
- /* Treat "static" as a class type. */
6320
- if (ZEND_TYPE_IS_ONLY_MASK (single_type ) && !(ZEND_TYPE_FULL_MASK (single_type ) & MAY_BE_STATIC )) {
6318
+ if (ZEND_TYPE_IS_ONLY_MASK (single_type )) {
6321
6319
zend_string * standard_type_str = zend_type_to_string (single_type );
6322
6320
zend_error_noreturn (E_COMPILE_ERROR ,
6323
6321
"Type %s cannot be part of an intersection type" , ZSTR_VAL (standard_type_str ));
6324
6322
zend_string_release_ex (standard_type_str , false);
6325
6323
}
6326
6324
6327
- /* If the type is static */
6328
- if (UNEXPECTED (!ZEND_TYPE_IS_COMPLEX (single_type ))) {
6329
- /* Check that static doesn't overlap */
6330
- uint32_t type_mask_overlap = ZEND_TYPE_PURE_MASK (type ) & MAY_BE_STATIC ;
6331
- if (type_mask_overlap ) {
6332
- zend_error_noreturn (E_COMPILE_ERROR , "Duplicate type static is redundant" );
6333
- }
6334
- ZEND_TYPE_FULL_MASK (type ) |= MAY_BE_STATIC ;
6335
- ZEND_TYPE_FULL_MASK (single_type ) &= ~_ZEND_TYPE_MAY_BE_MASK ;
6336
- has_static = 1 ;
6337
- continue ;
6338
- }
6339
-
6340
6325
/* Add type to the type list */
6341
6326
type_list -> types [type_list -> num_types ++ ] = single_type ;
6342
6327
@@ -6351,7 +6336,7 @@ static zend_type zend_compile_typename(
6351
6336
}
6352
6337
}
6353
6338
6354
- ZEND_ASSERT (( list -> children - has_static ) == type_list -> num_types );
6339
+ ZEND_ASSERT (list -> children == type_list -> num_types );
6355
6340
6356
6341
ZEND_TYPE_SET_LIST (type , type_list );
6357
6342
ZEND_TYPE_FULL_MASK (type ) |= _ZEND_TYPE_ARENA_BIT ;
0 commit comments