@@ -438,7 +438,7 @@ void zend_init_compiler_data_structures(void) /* {{{ */
438438}
439439/* }}} */
440440
441- static void zend_generic_scope_push (zend_generic_parameter_list * params , uint8_t origin ) /* {{{ */
441+ static void zend_generic_scope_push (zend_generic_parameter_list * params , zend_generic_origin origin ) /* {{{ */
442442{
443443 zend_generic_scope_entry * entry = emalloc (sizeof (zend_generic_scope_entry ));
444444 entry -> params = params ;
@@ -466,7 +466,7 @@ static void zend_generic_scope_pop(void) /* {{{ */
466466/* }}} */
467467
468468static zend_generic_parameter * zend_generic_lookup_full (
469- zend_string * name , uint8_t * origin_out , uint32_t * index_out ) /* {{{ */
469+ zend_string * name , zend_generic_origin * origin_out , uint32_t * index_out ) /* {{{ */
470470{
471471 zend_string * lc_name = zend_string_tolower (name );
472472 for (zend_generic_scope_entry * e = CG (generic_scope ); e ; e = e -> outer ) {
@@ -497,7 +497,9 @@ static zend_generic_parameter *zend_generic_lookup_full(
497497static int zend_generic_lookup_forward (const zend_string * name ) /* {{{ */
498498{
499499 zend_generic_scope_entry * e = CG (generic_scope );
500- if (!e ) return -1 ;
500+ if (!e ) {
501+ return -1 ;
502+ }
501503 zend_generic_parameter_list * params = e -> params ;
502504 for (uint32_t i = e -> visible_count ; i < params -> count ; i ++ ) {
503505 if (zend_string_equals (params -> parameters [i ].name , name )) {
@@ -566,12 +568,12 @@ static zend_generic_parameter_list *zend_compile_generic_type_parameter_list(zen
566568 }
567569
568570 params -> parameters [i ].name = zend_string_copy (name );
569- params -> parameters [i ].variance = (uint8_t ) param_ast -> attr ;
571+ params -> parameters [i ].variance = (zend_generic_variance ) param_ast -> attr ;
570572 }
571573
572574 params -> count = list -> children ;
573575
574- zend_generic_scope_push (params , /* origin */ 0 );
576+ zend_generic_scope_push (params , ZEND_GENERIC_ORIGIN_CLASS_LIKE );
575577 CG (generic_scope )-> visible_count = 0 ;
576578
577579 for (uint32_t i = 0 ; i < list -> children ; i ++ ) {
@@ -607,7 +609,9 @@ static zend_generic_parameter_list *zend_compile_generic_type_parameter_list(zen
607609 * reference or a named type with type arguments) that need pre-erasure capture. */
608610static bool zend_type_ast_has_generic_content (zend_ast * ast )
609611{
610- if (!ast ) return false;
612+ if (!ast ) {
613+ return false;
614+ }
611615 zend_ast_attr orig = ast -> attr ;
612616 ast -> attr &= ~ZEND_TYPE_NULLABLE ;
613617 bool result = false;
@@ -666,8 +670,12 @@ static zend_type zend_compile_pre_erasure_typename(zend_ast *ast)
666670 if (name_ast -> kind == ZEND_AST_TYPE ) {
667671 const char * cname ;
668672 switch (name_ast -> attr ) {
669- case IS_ARRAY : cname = "array" ; break ;
670- case IS_STATIC : cname = "static" ; break ;
673+ case IS_ARRAY :
674+ cname = "array" ;
675+ break ;
676+ case IS_STATIC :
677+ cname = "static" ;
678+ break ;
671679 default :
672680 ZEND_UNREACHABLE ();
673681 }
@@ -690,7 +698,7 @@ static zend_type zend_compile_pre_erasure_typename(zend_ast *ast)
690698 /* Builtin pseudo-type: same as erased. */
691699 result = (zend_type ) ZEND_TYPE_INIT_CODE (ast -> attr , 0 , 0 );
692700 } else if (ast -> kind == ZEND_AST_ZVAL ) {
693- uint8_t origin ;
701+ zend_generic_origin origin ;
694702 uint32_t index ;
695703 zend_generic_parameter * param = NULL ;
696704 if ((ast -> attr & ZEND_NAME_NOT_FQ ) == ZEND_NAME_NOT_FQ ) {
@@ -743,7 +751,7 @@ static zend_type zend_compile_pre_erasure_typename(zend_ast *ast)
743751 return result ;
744752}
745753
746- /* Ensure op_array->generic_types or ce->generic_types is allocated. */
754+ /* Ensure op_array->generic_types is allocated, then return it . */
747755static zend_generic_type_table * zend_generic_get_or_create_op_array_table (zend_op_array * op_array )
748756{
749757 if (!op_array -> generic_types ) {
@@ -752,6 +760,7 @@ static zend_generic_type_table *zend_generic_get_or_create_op_array_table(zend_o
752760 return op_array -> generic_types ;
753761}
754762
763+ /* Ensure ce->generic_types is allocated, then return it. */
755764static zend_generic_type_table * zend_generic_get_or_create_class_table (zend_class_entry * ce )
756765{
757766 if (!ce -> generic_types ) {
@@ -9302,7 +9311,7 @@ static zend_op_array *zend_compile_func_decl_ex(
93029311 * See GENERICS.md §6.9. */
93039312 if (generic_params_ast ) {
93049313 op_array -> generic_parameters = zend_compile_generic_type_parameter_list (generic_params_ast );
9305- zend_generic_scope_push (op_array -> generic_parameters , /* origin */ 1 );
9314+ zend_generic_scope_push (op_array -> generic_parameters , ZEND_GENERIC_ORIGIN_FUNCTION_LIKE );
93069315 generic_scope_pushed = true;
93079316 }
93089317
@@ -10120,7 +10129,7 @@ static void zend_compile_class_decl(znode *result, const zend_ast *ast, bool top
1012010129 if (decl -> child [5 ]) {
1012110130 ZEND_ASSERT (!(decl -> flags & ZEND_ACC_ANON_CLASS ));
1012210131 ce -> generic_parameters = zend_compile_generic_type_parameter_list (decl -> child [5 ]);
10123- zend_generic_scope_push (ce -> generic_parameters , /* origin */ 0 );
10132+ zend_generic_scope_push (ce -> generic_parameters , ZEND_GENERIC_ORIGIN_CLASS_LIKE );
1012410133 }
1012510134
1012610135 if (extends_ast ) {
0 commit comments