@@ -9296,22 +9296,6 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
92969296 zend_verify_abstract_class (ce );
92979297 }
92989298
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-
93159299 if (toplevel ) {
93169300 ce -> ce_flags |= ZEND_ACC_TOP_LEVEL ;
93179301 }
@@ -9332,7 +9316,7 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
93329316 && !zend_compile_ignore_class (parent_ce , ce -> info .user .filename )) {
93339317 if (zend_try_early_bind (ce , parent_ce , lcname , NULL )) {
93349318 zend_string_release (lcname );
9335- return ;
9319+ goto compile_inner_classes ;
93369320 }
93379321 }
93389322 } 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)
93419325 zend_inheritance_check_override (ce );
93429326 ce -> ce_flags |= ZEND_ACC_LINKED ;
93439327 zend_observer_class_linked_notify (ce , lcname );
9344- return ;
9328+ goto compile_inner_classes ;
93459329 } else {
93469330 goto link_unbound ;
93479331 }
@@ -9411,6 +9395,24 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
94119395 opline -> result .opline_num = -1 ;
94129396 }
94139397 }
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 );
94149416}
94159417/* }}} */
94169418
@@ -11681,10 +11683,6 @@ static void zend_compile_stmt(zend_ast *ast) /* {{{ */
1168111683 zend_compile_use_trait (ast );
1168211684 break ;
1168311685 case ZEND_AST_CLASS :
11684- if (CG (active_class_entry )) {
11685- zend_defer_class_decl (ast );
11686- break ;
11687- }
1168811686 zend_compile_class_decl (NULL , ast , 0 );
1168911687 break ;
1169011688 case ZEND_AST_GROUP_USE :
0 commit comments