summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-10-17 16:12:46 +0300
committerDmitry Stogov <dmitry@zend.com>2018-10-17 16:12:46 +0300
commit9226695c221dc6e0a66ff03964f0bfae02477d69 (patch)
tree8f2e619f137ee13c5b6cafd65312f468f99bd3bf
parentd57cd36e47b627dee5b825760163f8e62e23ab28 (diff)
downloadphp-git-9226695c221dc6e0a66ff03964f0bfae02477d69.tar.gz
Mark "top-level" classes
-rw-r--r--Zend/zend_compile.c4
-rw-r--r--Zend/zend_compile.h5
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) | | | */
/* ============== | | | */
/* | | | */