str_efree(lowercase_name);
break;
}
+
+ /* If types of arguments have to be checked */
+ if (reg_function->common.arg_info && reg_function->common.num_args) {
+ int i;
+ for (i = 0; i < reg_function->common.num_args; i++) {
+ if (reg_function->common.arg_info[i].class_name ||
+ reg_function->common.arg_info[i].type_hint) {
+ reg_function->common.fn_flags |= ZEND_ACC_HAS_TYPE_HINTS;
+ break;
+ }
+ }
+ }
+
if (scope) {
/* Look for ctor, dtor, clone
* If it's an old-style constructor, store it only if we don't have
#define ZEND_ACC_RETURN_REFERENCE 0x4000000
#define ZEND_ACC_DONE_PASS_TWO 0x8000000
+/* function has arguments with type hinting */
+#define ZEND_ACC_HAS_TYPE_HINTS 0x10000000
+
char *zend_visibility_string(zend_uint fn_flags);
LOAD_OPLINE();
if (fbc->type == ZEND_INTERNAL_FUNCTION) {
- if (fbc->common.arg_info) {
+ if (fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) {
zend_uint i=0;
zval **p = (zval**)EX(function_state).arguments;
ulong arg_count = opline->extended_value;
LOAD_OPLINE();
if (fbc->type == ZEND_INTERNAL_FUNCTION) {
- if (fbc->common.arg_info) {
+ if (fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) {
zend_uint i=0;
zval **p = (zval**)EX(function_state).arguments;
ulong arg_count = opline->extended_value;