diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-10-17 16:12:46 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-10-17 16:12:46 +0300 |
commit | 9226695c221dc6e0a66ff03964f0bfae02477d69 (patch) | |
tree | 8f2e619f137ee13c5b6cafd65312f468f99bd3bf | |
parent | d57cd36e47b627dee5b825760163f8e62e23ab28 (diff) | |
download | php-git-9226695c221dc6e0a66ff03964f0bfae02477d69.tar.gz |
Mark "top-level" classes
-rw-r--r-- | Zend/zend_compile.c | 4 | ||||
-rw-r--r-- | Zend/zend_compile.h | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index c907594fad..39ee2a1063 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -6322,6 +6322,10 @@ void zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */ CG(active_class_entry) = original_ce; + if (toplevel) { + ce->ce_flags |= ZEND_ACC_TOP_LEVEL; + } + if (toplevel /* We currently don't early-bind classes that implement interfaces or use traits */ && !(ce->ce_flags & (ZEND_ACC_IMPLEMENT_INTERFACES|ZEND_ACC_IMPLEMENT_TRAITS))) { diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 4a597dd467..acc0d9cf6f 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -223,7 +223,7 @@ typedef struct _zend_oparray_context { /* Function has typed arguments / class has typed props | | | */ #define ZEND_ACC_HAS_TYPE_HINTS (1 << 8) /* ? | X | | */ /* | | | */ -/* Class Flags (unused: 15...) | | | */ +/* Class Flags (unused: 16...) | | | */ /* =========== | | | */ /* | | | */ /* Special class types | | | */ @@ -257,6 +257,9 @@ typedef struct _zend_oparray_context { /* User class has methods with static variables | | | */ #define ZEND_HAS_STATIC_IN_METHODS (1 << 14) /* X | | | */ /* | | | */ +/* Top-level class declaration | | | */ +#define ZEND_ACC_TOP_LEVEL (1 << 15) /* X | | | */ +/* | | | */ /* Function Flags (unused: 25...30) | | | */ /* ============== | | | */ /* | | | */ |