From: Nikita Popov Date: Sun, 26 Apr 2015 13:54:30 +0000 (+0200) Subject: More cleanup (mainly retab) X-Git-Tag: PRE_PHP7_NSAPI_REMOVAL~149^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f2f890a256d6605448db5bf4604da6f63fbd6fea;p=php More cleanup (mainly retab) --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index f4f8e77f48..eaf6978401 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1119,7 +1119,7 @@ ZEND_API zend_class_entry *do_bind_inherited_class(const zend_op_array *op_array return ce; } - zend_do_inheritance(ce, parent_ce TSRMLS_CC); + zend_do_inheritance(ce, parent_ce); ce->refcount++; @@ -3257,7 +3257,7 @@ void zend_compile_new(znode *result, zend_ast *ast) /* {{{ */ class_node.op_type = IS_CONST; ZVAL_STR(&class_node.u.constant, zend_resolve_class_name_ast(class_ast)); } else if (class_ast->kind == ZEND_AST_CLASS) { - zend_class_entry *ce = zend_compile_class_decl(class_ast TSRMLS_CC); + zend_class_entry *ce = zend_compile_class_decl(class_ast); class_node.op_type = IS_CONST; ZVAL_STR_COPY(&class_node.u.constant, ce->name); } else { @@ -4906,6 +4906,7 @@ void zend_compile_implements(znode *class_node, zend_ast *ast) /* {{{ */ static zend_string *zend_generate_anon_class_name() /* {{{ */ { + // TODO The opline pointer may be reused, this is not safe! uint32_t next = get_next_op_number(CG(active_op_array)); return zend_strpprintf(0, "class@%p", &CG(active_op_array)->opcodes[next-1]); } diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index b197bde991..2541c9f571 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -241,7 +241,8 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %type extends_from parameter optional_type argument expr_without_variable global_var %type static_var class_statement trait_adaptation trait_precedence trait_alias %type absolute_trait_method_reference trait_method_reference property echo_expr -%type new_expr anonymous_class class_name class_name_reference simple_variable internal_functions_in_yacc +%type new_expr anonymous_class class_name class_name_reference simple_variable +%type internal_functions_in_yacc %type exit_expr scalar backticks_expr lexical_var function_call member_name %type variable_class_name dereferencable_scalar class_name_scalar constant dereferencable %type callable_expr callable_variable static_member new_variable @@ -799,22 +800,20 @@ non_empty_for_exprs: ; anonymous_class: - T_CLASS ctor_arguments { - $$ = CG(zend_lineno); - } extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - zend_ast *decl = zend_ast_create_decl( - ZEND_AST_CLASS, - ZEND_ACC_ANON_CLASS, - $3, $6, $4, $4, $5, $8, NULL); - $$ = zend_ast_create(ZEND_AST_NEW, decl, $2); - } + T_CLASS { $$ = CG(zend_lineno); } ctor_arguments + extends_from implements_list backup_doc_comment '{' class_statement_list '}' { + zend_ast *decl = zend_ast_create_decl( + ZEND_AST_CLASS, ZEND_ACC_ANON_CLASS, $2, $6, NULL, + $4, $5, $8, NULL); + $$ = zend_ast_create(ZEND_AST_NEW, decl, $3); + } ; new_expr: T_NEW class_name_reference ctor_arguments { $$ = zend_ast_create(ZEND_AST_NEW, $2, $3); } - | T_NEW anonymous_class - { $$ = $2; } + | T_NEW anonymous_class + { $$ = $2; } ; expr_without_variable: