}
/* }}} */
++/* May convert value from int to float. */
+static zend_bool zend_is_valid_default_value(zend_type type, zval *value)
+{
+ ZEND_ASSERT(ZEND_TYPE_IS_SET(type));
+ if (Z_TYPE_P(value) == IS_NULL && ZEND_TYPE_ALLOW_NULL(type)) {
+ return 1;
+ }
+
+ if (ZEND_TYPE_IS_CLASS(type)) {
+ return 0;
+ }
+ if (ZEND_TYPE_CONTAINS_CODE(type, Z_TYPE_P(value))) {
+ return 1;
+ }
+ if ((ZEND_TYPE_MASK(type) & MAY_BE_DOUBLE) && Z_TYPE_P(value) == IS_LONG) {
+ /* Integers are allowed as initializers for floating-point values. */
++ convert_to_double(value);
+ return 1;
+ }
+ if ((ZEND_TYPE_MASK(type) & MAY_BE_ITERABLE) && Z_TYPE_P(value) == IS_ARRAY) {
+ return 1;
+ }
+ return 0;
+}
+
void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast) /* {{{ */
{
zend_ast_list *list = zend_ast_get_list(ast);