From 22d6cc7c8c9485f90ab8356d1f51caa20de1c088 Mon Sep 17 00:00:00 2001 From: =?utf8?q?M=C3=A1rcio=20Almada?= Date: Sat, 7 Mar 2015 17:59:20 -0300 Subject: [PATCH] fix compilation warnings, rename batch_use to group_use --- Zend/tests/ns_088.phpt | 2 +- Zend/tests/ns_089.phpt | 2 +- Zend/tests/ns_090.phpt | 2 +- Zend/tests/ns_091.phpt | 2 +- Zend/tests/ns_092.phpt | 2 +- Zend/tests/ns_093.phpt | 2 +- Zend/tests/ns_094.phpt | 16 +++++++++++++ Zend/zend_ast.h | 2 +- Zend/zend_compile.c | 45 +++++++++++++++++++------------------ Zend/zend_language_parser.y | 33 ++++++++++++++------------- 10 files changed, 63 insertions(+), 45 deletions(-) create mode 100644 Zend/tests/ns_094.phpt diff --git a/Zend/tests/ns_088.phpt b/Zend/tests/ns_088.phpt index 484fae38df..7af8dcc8d3 100644 --- a/Zend/tests/ns_088.phpt +++ b/Zend/tests/ns_088.phpt @@ -1,5 +1,5 @@ --TEST-- -Nested batch use statements syntax error +Nested group use statements syntax error --FILE-- child[0]); - zend_ast_list *list = zend_ast_get_list(ast->child[1]); - uint32_t i; - - for (i = 0; i < list->children; i++) { - zend_ast *use = list->child[i]; - zval *name_zval = zend_ast_get_zval(use->child[0]); - zend_string *name = Z_STR_P(name_zval); - zend_string *compound_ns = zend_concat_names(ns->val, ns->len, name->val, name->len); - zend_string_release(name); - ZVAL_STR(name_zval, compound_ns); - zend_ast_list *inline_use = zend_ast_create_list(1, ZEND_AST_USE, use); - inline_use->attr = ast->attr ? ast->attr : use->attr; - zend_compile_use(inline_use); - } -} -/* }}} */ - void zend_compile_use(zend_ast *ast) /* {{{ */ { zend_ast_list *list = zend_ast_get_list(ast); @@ -5064,6 +5044,27 @@ void zend_compile_use(zend_ast *ast) /* {{{ */ } /* }}} */ +void zend_compile_group_use(zend_ast *ast) /* {{{ */ +{ + zend_string *ns = zend_ast_get_str(ast->child[0]); + zend_ast_list *list = zend_ast_get_list(ast->child[1]); + uint32_t i; + + for (i = 0; i < list->children; i++) { + zend_ast *use = list->child[i]; + zval *name_zval = zend_ast_get_zval(use->child[0]); + zend_string *name = Z_STR_P(name_zval); + zend_string *compound_ns = zend_concat_names(ns->val, ns->len, name->val, name->len); + zend_string_release(name); + ZVAL_STR(name_zval, compound_ns); + zend_ast *inline_use = zend_ast_create_list(1, ZEND_AST_USE, use); + inline_use->attr = ast->attr ? ast->attr : use->attr; + zend_compile_use(inline_use); + } +} +/* }}} */ + + void zend_compile_const_decl(zend_ast *ast) /* {{{ */ { zend_ast_list *list = zend_ast_get_list(ast); @@ -6459,8 +6460,8 @@ void zend_compile_stmt(zend_ast *ast) /* {{{ */ case ZEND_AST_CLASS: zend_compile_class_decl(ast); break; - case ZEND_AST_BATCH_USE: - zend_compile_batch_use(ast); + case ZEND_AST_GROUP_USE: + zend_compile_group_use(ast); break; case ZEND_AST_USE: zend_compile_use(ast); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index a9a93b86a6..69544ecf04 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -229,8 +229,8 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %type top_statement namespace_name name statement function_declaration_statement %type class_declaration_statement trait_declaration_statement %type interface_declaration_statement interface_extends_list -%type batch_use_declarations inline_use_declarations inline_use_declaration -%type mixed_batch_use_declarations use_declaration const_decl inner_statement +%type group_use_declaration inline_use_declarations inline_use_declaration +%type mixed_group_use_declaration use_declaration const_decl inner_statement %type expr optional_expr while_statement for_statement foreach_variable %type foreach_statement declare_statement finally_statement unset_variable variable %type extends_from parameter optional_type argument expr_without_variable global_var @@ -253,7 +253,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %type returns_ref function is_reference is_variadic variable_modifiers %type method_modifiers trait_modifiers non_empty_member_modifiers member_modifier -%type class_modifiers class_modifier +%type class_modifiers class_modifier use_type %type backup_doc_comment @@ -298,23 +298,29 @@ top_statement: | T_NAMESPACE { RESET_DOC_COMMENT(); } '{' top_statement_list '}' { $$ = zend_ast_create(ZEND_AST_NAMESPACE, NULL, $4); } - | T_USE mixed_batch_use_declarations ';' { $$ = $2; } - | T_USE T_FUNCTION batch_use_declarations ';' { $$ = $3; $3->attr = T_FUNCTION; } - | T_USE T_CONST batch_use_declarations ';' { $$ = $3; $3->attr = T_CONST; } + | T_USE mixed_group_use_declaration ';' { $$ = $2; } + | T_USE T_FUNCTION group_use_declaration ';' { $$ = $3; $$->attr = T_FUNCTION; } + | T_USE T_CONST group_use_declaration ';' { $$ = $3; $$->attr = T_CONST; } | T_USE use_declarations ';' { $$ = $2; $$->attr = T_CLASS; } | T_USE T_FUNCTION use_declarations ';' { $$ = $3; $$->attr = T_FUNCTION; } | T_USE T_CONST use_declarations ';' { $$ = $3; $$->attr = T_CONST; } | T_CONST const_list ';' { $$ = $2; } ; -batch_use_declarations: +use_type: + /* empty */ { $$ = T_CLASS; } + | T_FUNCTION { $$ = T_FUNCTION; } + | T_CONST { $$ = T_CONST; } +; + +group_use_declaration: namespace_name T_NS_SEPARATOR '{' use_declarations '}' - {$$ = zend_ast_create(ZEND_AST_BATCH_USE, $1, $4); } + {$$ = zend_ast_create(ZEND_AST_GROUP_USE, $1, $4); } ; -mixed_batch_use_declarations: +mixed_group_use_declaration: namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}' - {$$ = zend_ast_create(ZEND_AST_BATCH_USE, $1, $4);} + {$$ = zend_ast_create(ZEND_AST_GROUP_USE, $1, $4);} ; inline_use_declarations: @@ -325,12 +331,7 @@ inline_use_declarations: ; inline_use_declaration: - use_declaration - { $$ = $1; $$->attr = T_CLASS; } - | T_FUNCTION use_declaration - { $$ = $2; $$->attr = T_FUNCTION; } - | T_CONST use_declaration - { $$ = $2; $$->attr = T_CONST; } + use_type use_declaration { $$ = $2; $$->attr = $1; } ; use_declarations: -- 2.40.0