summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.h
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-03-24 13:18:28 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-06-05 15:15:51 +0200
commit064b4644484d38e9dce40aef7e8e0e8190e9d863 (patch)
treeceb34fd4bc375ea0accdf3f8b1b15c389c7e103a /Zend/zend_compile.h
parent91f283a0bfc6792d84fb9a6361e21f6f33769c4d (diff)
downloadphp-git-064b4644484d38e9dce40aef7e8e0e8190e9d863.tar.gz
Implement "Constructor Promotion" RFC
RFC: https://wiki.php.net/rfc/constructor_promotion Closes GH-5291.
Diffstat (limited to 'Zend/zend_compile.h')
-rw-r--r--Zend/zend_compile.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 1a53f92e9e..9a1e5adaaf 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -209,6 +209,9 @@ typedef struct _zend_oparray_context {
/* Static method or property | | | */
#define ZEND_ACC_STATIC (1 << 4) /* | X | X | */
/* | | | */
+/* Promoted property / parameter | | | */
+#define ZEND_ACC_PROMOTED (1 << 5) /* | | X | X */
+/* | | | */
/* Final class or method | | | */
#define ZEND_ACC_FINAL (1 << 5) /* X | X | | */
/* | | | */
@@ -873,8 +876,9 @@ ZEND_API zend_string *zend_type_to_string(zend_type type);
#define ZEND_FETCH_CLASS_ALLOW_UNLINKED 0x0400
#define ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED 0x0800
-#define ZEND_PARAM_REF (1<<0)
-#define ZEND_PARAM_VARIADIC (1<<1)
+/* These should not clash with ZEND_ACC_(PUBLIC|PROTECTED|PRIVATE) */
+#define ZEND_PARAM_REF (1<<3)
+#define ZEND_PARAM_VARIADIC (1<<4)
#define ZEND_NAME_FQ 0
#define ZEND_NAME_NOT_FQ 1
@@ -937,10 +941,13 @@ ZEND_API zend_string *zend_type_to_string(zend_type type);
/* The send mode and is_variadic flag are stored as part of zend_type */
#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
+#define _ZEND_IS_PROMOTED_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 3))
#define ZEND_ARG_SEND_MODE(arg_info) \
((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
#define ZEND_ARG_IS_VARIADIC(arg_info) \
((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
+#define ZEND_ARG_IS_PROMOTED(arg_info) \
+ ((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_PROMOTED_BIT) != 0)
#define ZEND_DIM_IS (1 << 0) /* isset fetch needed for null coalesce */
#define ZEND_DIM_ALTERNATIVE_SYNTAX (1 << 1) /* deprecated curly brace usage */