@@ -8138,10 +8138,9 @@ static uint32_t zend_add_dynamic_func_def(zend_op_array *def) {
8138
8138
return def_offset ;
8139
8139
}
8140
8140
8141
- static zend_string * zend_begin_func_decl (znode * result , zend_op_array * op_array , zend_ast_decl * decl , bool toplevel ) /* {{{ */
8141
+ static zend_string * zend_begin_func_decl (zend_op_array * op_array , zend_ast_decl * decl ) /* {{{ */
8142
8142
{
8143
8143
zend_string * unqualified_name , * name , * lcname ;
8144
- zend_op * opline ;
8145
8144
8146
8145
if (op_array -> fn_flags & ZEND_ACC_CLOSURE ) {
8147
8146
zend_string * filename = op_array -> filename ;
@@ -8208,19 +8207,7 @@ static zend_string *zend_begin_func_decl(znode *result, zend_op_array *op_array,
8208
8207
}
8209
8208
8210
8209
zend_register_seen_symbol (lcname , ZEND_SYMBOL_FUNCTION );
8211
- if (!toplevel ) {
8212
- uint32_t func_ref = zend_add_dynamic_func_def (op_array );
8213
- if (op_array -> fn_flags & ZEND_ACC_CLOSURE ) {
8214
- opline = zend_emit_op_tmp (result , ZEND_DECLARE_LAMBDA_FUNCTION , NULL , NULL );
8215
- opline -> op2 .num = func_ref ;
8216
- } else {
8217
- opline = get_next_op ();
8218
- opline -> opcode = ZEND_DECLARE_FUNCTION ;
8219
- opline -> op1_type = IS_CONST ;
8220
- LITERAL_STR (opline -> op1 , zend_string_copy (lcname ));
8221
- opline -> op2 .num = func_ref ;
8222
- }
8223
- }
8210
+
8224
8211
return lcname ;
8225
8212
}
8226
8213
/* }}} */
@@ -8269,10 +8256,29 @@ static zend_op_array *zend_compile_func_decl_ex(
8269
8256
op_array -> scope = ce ;
8270
8257
op_array -> function_name = zend_string_copy (decl -> name );
8271
8258
} else if (is_method ) {
8259
+ ZEND_ASSERT (!toplevel );
8272
8260
bool has_body = stmt_ast != NULL ;
8273
8261
lcname = zend_begin_method_decl (op_array , decl -> name , has_body );
8274
8262
} else {
8275
- lcname = zend_begin_func_decl (result , op_array , decl , toplevel );
8263
+ lcname = zend_begin_func_decl (op_array , decl );
8264
+ if (toplevel ) {
8265
+ op_array -> fn_flags |= ZEND_ACC_TOP_LEVEL ;
8266
+ } else {
8267
+ zend_op * opline ;
8268
+
8269
+ uint32_t func_ref = zend_add_dynamic_func_def (op_array );
8270
+ if (op_array -> fn_flags & ZEND_ACC_CLOSURE ) {
8271
+ opline = zend_emit_op_tmp (result , ZEND_DECLARE_LAMBDA_FUNCTION , NULL , NULL );
8272
+ opline -> op2 .num = func_ref ;
8273
+ } else {
8274
+ opline = get_next_op ();
8275
+ opline -> opcode = ZEND_DECLARE_FUNCTION ;
8276
+ opline -> op1_type = IS_CONST ;
8277
+ LITERAL_STR (opline -> op1 , zend_string_copy (lcname ));
8278
+ opline -> op2 .num = func_ref ;
8279
+ }
8280
+ }
8281
+
8276
8282
if (decl -> kind == ZEND_AST_ARROW_FUNC ) {
8277
8283
find_implicit_binds (& info , params_ast , stmt_ast );
8278
8284
compile_implicit_lexical_binds (& info , result , op_array );
@@ -8320,10 +8326,6 @@ static zend_op_array *zend_compile_func_decl_ex(
8320
8326
CG (active_class_entry ) = NULL ;
8321
8327
}
8322
8328
8323
- if (toplevel ) {
8324
- op_array -> fn_flags |= ZEND_ACC_TOP_LEVEL ;
8325
- }
8326
-
8327
8329
zend_oparray_context_begin (& orig_oparray_context , op_array );
8328
8330
CG (context ).active_property_info = property_info ;
8329
8331
CG (context ).active_property_hook_kind = hook_kind ;
0 commit comments