@@ -267,7 +267,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
267267%type <ast> echo_expr_list unset_variables catch_name_list catch_list optional_variable parameter_list class_statement_list
268268%type <ast> implements_list case_list if_stmt_without_else
269269%type <ast> non_empty_parameter_list argument_list non_empty_argument_list property_list
270- %type <ast> class_const_list first_class_const_decl class_const_decl class_name_list trait_adaptations method_body non_empty_for_exprs
270+ %type <ast> class_const_list class_const_decl class_name_list trait_adaptations method_body non_empty_for_exprs
271271%type <ast> ctor_arguments alt_if_stmt_without_else trait_adaptation_list lexical_vars
272272%type <ast> lexical_var_list encaps_list
273273%type <ast> array_pair non_empty_array_pair_list array_pair_list possible_array_pair
@@ -940,7 +940,10 @@ attributed_class_statement:
940940 { $$ = zend_ast_create(ZEND_AST_PROP_GROUP, $2 , $3 , NULL );
941941 $$ ->attr = $1 ; }
942942 | class_const_modifiers T_CONST class_const_list ' ;'
943- { $$ = zend_ast_create(ZEND_AST_CLASS_CONST_GROUP, $3 , NULL );
943+ { $$ = zend_ast_create(ZEND_AST_CLASS_CONST_GROUP, $3 , NULL , NULL );
944+ $$ ->attr = $1 ; }
945+ | class_const_modifiers T_CONST type_expr class_const_list ' ;'
946+ { $$ = zend_ast_create(ZEND_AST_CLASS_CONST_GROUP, $4 , NULL , $3 );
944947 $$ ->attr = $1 ; }
945948 | method_modifiers function returns_ref identifier backup_doc_comment ' (' parameter_list ' )'
946949 return_type backup_fn_flags method_body backup_fn_flags
@@ -1076,21 +1079,20 @@ property:
10761079
10771080class_const_list :
10781081 class_const_list ' ,' class_const_decl { $$ = zend_ast_list_add($1 , $3 ); }
1079- | first_class_const_decl { $$ = zend_ast_create_list(1 , ZEND_AST_CLASS_CONST_DECL, $1 ); }
1080- ;
1081-
1082- first_class_const_decl :
1083- T_STRING ' =' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1 , $3 , ($4 ? zend_ast_create_zval_from_str($4 ) : NULL ), NULL ); }
1084- | semi_reserved ' =' expr backup_doc_comment { zval zv; if (zend_lex_tstring(&zv, $1 ) == FAILURE) { YYABORT ; } $$ = zend_ast_create(ZEND_AST_CONST_ELEM, zend_ast_create_zval(&zv), $3 , ($4 ? zend_ast_create_zval_from_str($4 ) : NULL ), NULL ); }
1085- | type_expr identifier ' =' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $2 , $4 , ($5 ? zend_ast_create_zval_from_str($5 ) : NULL ), $1 ); }
1082+ | class_const_decl { $$ = zend_ast_create_list(1 , ZEND_AST_CLASS_CONST_DECL, $1 ); }
10861083;
10871084
10881085class_const_decl :
1089- identifier ' =' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1 , $3 , ($4 ? zend_ast_create_zval_from_str($4 ) : NULL ), NULL ); }
1086+ T_STRING ' =' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1 , $3 , ($4 ? zend_ast_create_zval_from_str($4 ) : NULL )); }
1087+ | semi_reserved ' =' expr backup_doc_comment {
1088+ zval zv;
1089+ if (zend_lex_tstring(&zv, $1 ) == FAILURE) { YYABORT ; }
1090+ $$ = zend_ast_create(ZEND_AST_CONST_ELEM, zend_ast_create_zval(&zv), $3 , ($4 ? zend_ast_create_zval_from_str($4 ) : NULL ));
1091+ }
10901092;
10911093
10921094const_decl :
1093- T_STRING ' =' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1 , $3 , ($4 ? zend_ast_create_zval_from_str($4 ) : NULL ), NULL ); }
1095+ T_STRING ' =' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1 , $3 , ($4 ? zend_ast_create_zval_from_str($4 ) : NULL )); }
10941096;
10951097
10961098echo_expr_list :
0 commit comments