@@ -9296,22 +9296,6 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
9296
9296
zend_verify_abstract_class (ce );
9297
9297
}
9298
9298
9299
- if (inner_class_queue == NULL ) {
9300
- CG (active_class_entry ) = original_ce ;
9301
- } else {
9302
- HashTable * queue = inner_class_queue ;
9303
- inner_class_queue = NULL ;
9304
-
9305
- ZEND_HASH_FOREACH_PTR (queue , ast ) {
9306
- zend_compile_class_decl (NULL , ast , 0 );
9307
- } ZEND_HASH_FOREACH_END ();
9308
-
9309
- CG (active_class_entry ) = original_ce ;
9310
-
9311
- zend_hash_destroy (queue );
9312
- FREE_HASHTABLE (queue );
9313
- }
9314
-
9315
9299
if (toplevel ) {
9316
9300
ce -> ce_flags |= ZEND_ACC_TOP_LEVEL ;
9317
9301
}
@@ -9332,7 +9316,7 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
9332
9316
&& !zend_compile_ignore_class (parent_ce , ce -> info .user .filename )) {
9333
9317
if (zend_try_early_bind (ce , parent_ce , lcname , NULL )) {
9334
9318
zend_string_release (lcname );
9335
- return ;
9319
+ goto compile_inner_classes ;
9336
9320
}
9337
9321
}
9338
9322
} else if (EXPECTED (zend_hash_add_ptr (CG (class_table ), lcname , ce ) != NULL )) {
@@ -9341,7 +9325,7 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
9341
9325
zend_inheritance_check_override (ce );
9342
9326
ce -> ce_flags |= ZEND_ACC_LINKED ;
9343
9327
zend_observer_class_linked_notify (ce , lcname );
9344
- return ;
9328
+ goto compile_inner_classes ;
9345
9329
} else {
9346
9330
goto link_unbound ;
9347
9331
}
@@ -9411,6 +9395,24 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
9411
9395
opline -> result .opline_num = -1 ;
9412
9396
}
9413
9397
}
9398
+ compile_inner_classes :
9399
+
9400
+ if (inner_class_queue == NULL ) {
9401
+ CG (active_class_entry ) = original_ce ;
9402
+ return ;
9403
+ }
9404
+
9405
+ HashTable * queue = inner_class_queue ;
9406
+ inner_class_queue = NULL ;
9407
+
9408
+ ZEND_HASH_FOREACH_PTR (queue , ast ) {
9409
+ zend_compile_class_decl (NULL , ast , 0 );
9410
+ } ZEND_HASH_FOREACH_END ();
9411
+
9412
+ CG (active_class_entry ) = original_ce ;
9413
+
9414
+ zend_hash_destroy (queue );
9415
+ FREE_HASHTABLE (queue );
9414
9416
}
9415
9417
/* }}} */
9416
9418
@@ -11681,10 +11683,6 @@ static void zend_compile_stmt(zend_ast *ast) /* {{{ */
11681
11683
zend_compile_use_trait (ast );
11682
11684
break ;
11683
11685
case ZEND_AST_CLASS :
11684
- if (CG (active_class_entry )) {
11685
- zend_defer_class_decl (ast );
11686
- break ;
11687
- }
11688
11686
zend_compile_class_decl (NULL , ast , 0 );
11689
11687
break ;
11690
11688
case ZEND_AST_GROUP_USE :
0 commit comments