return ce;
}
- zend_do_inheritance(ce, parent_ce TSRMLS_CC);
+ zend_do_inheritance(ce, parent_ce);
ce->refcount++;
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 {
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]);
}
%type <ast> extends_from parameter optional_type argument expr_without_variable global_var
%type <ast> static_var class_statement trait_adaptation trait_precedence trait_alias
%type <ast> absolute_trait_method_reference trait_method_reference property echo_expr
-%type <ast> new_expr anonymous_class class_name class_name_reference simple_variable internal_functions_in_yacc
+%type <ast> new_expr anonymous_class class_name class_name_reference simple_variable
+%type <ast> internal_functions_in_yacc
%type <ast> exit_expr scalar backticks_expr lexical_var function_call member_name
%type <ast> variable_class_name dereferencable_scalar class_name_scalar constant dereferencable
%type <ast> callable_expr callable_variable static_member new_variable
;
anonymous_class:
- T_CLASS ctor_arguments {
- $<num>$ = 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,
- $<num>3, $6, $4, $4, $5, $8, NULL);
- $$ = zend_ast_create(ZEND_AST_NEW, decl, $2);
- }
+ T_CLASS { $<num>$ = 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, $<num>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: