diff options
Diffstat (limited to 'Zend/zend_compile.c')
| -rw-r--r-- | Zend/zend_compile.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index b7ed0980b3..55be6176bf 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3834,8 +3834,7 @@ void zend_compile_params(zend_ast *ast TSRMLS_DC) /* {{{ */ zend_bool has_null_default = default_ast && (Z_TYPE(default_node.u.constant) == IS_NULL || (Z_TYPE(default_node.u.constant) == IS_CONSTANT - && strcasecmp(Z_STRVAL(default_node.u.constant), "NULL") == 0) - || Z_TYPE(default_node.u.constant) == IS_CONSTANT_AST); // ??? + && strcasecmp(Z_STRVAL(default_node.u.constant), "NULL") == 0)); op_array->fn_flags |= ZEND_ACC_HAS_TYPE_HINTS; arg_info->allow_null = has_null_default; @@ -3845,12 +3844,13 @@ void zend_compile_params(zend_ast *ast TSRMLS_DC) /* {{{ */ if (arg_info->type_hint == IS_ARRAY) { if (default_ast && !has_null_default && Z_TYPE(default_node.u.constant) != IS_ARRAY + && !Z_CONSTANT(default_node.u.constant) ) { zend_error_noreturn(E_COMPILE_ERROR, "Default value for parameters " "with array type hint can only be an array or NULL"); } } else if (arg_info->type_hint == IS_CALLABLE && default_ast) { - if (!has_null_default) { + if (!has_null_default && !Z_CONSTANT(default_node.u.constant)) { zend_error_noreturn(E_COMPILE_ERROR, "Default value for parameters " "with callable type hint can only be NULL"); } @@ -3870,7 +3870,7 @@ void zend_compile_params(zend_ast *ast TSRMLS_DC) /* {{{ */ zend_string_release(class_name); - if (default_ast && !has_null_default) { + if (default_ast && !has_null_default && !Z_CONSTANT(default_node.u.constant)) { zend_error_noreturn(E_COMPILE_ERROR, "Default value for parameters " "with a class type hint can only be NULL"); } |
