Skip to content

Commit d907c6d

Browse files
committed
Fix exception message and nullability of mixed
1 parent 0a877ad commit d907c6d

File tree

13 files changed

+68
-68
lines changed

13 files changed

+68
-68
lines changed

Zend/zend_builtin_functions_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ZEND_END_ARG_INFO()
66
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_func_num_args, 0, 0, IS_LONG, 0)
77
ZEND_END_ARG_INFO()
88

9-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_func_get_arg, 0, 1, IS_MIXED, 1)
9+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_func_get_arg, 0, 1, IS_MIXED, 0)
1010
ZEND_ARG_TYPE_INFO(0, arg_num, IS_LONG, 0)
1111
ZEND_END_ARG_INFO()
1212

Zend/zend_closures_arginfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_Closure_bindTo, 0, 1, Closu
1414
ZEND_ARG_INFO(0, newscope)
1515
ZEND_END_ARG_INFO()
1616

17-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Closure_call, 0, 1, IS_MIXED, 1)
17+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Closure_call, 0, 1, IS_MIXED, 0)
1818
ZEND_ARG_TYPE_INFO(0, newthis, IS_OBJECT, 0)
19-
ZEND_ARG_VARIADIC_TYPE_INFO(0, parameters, IS_MIXED, 1)
19+
ZEND_ARG_VARIADIC_TYPE_INFO(0, parameters, IS_MIXED, 0)
2020
ZEND_END_ARG_INFO()
2121

2222
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_Closure_fromCallable, 0, 1, Closure, 0)

Zend/zend_generators_arginfo.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ ZEND_END_ARG_INFO()
66
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Generator_valid, 0, 0, _IS_BOOL, 0)
77
ZEND_END_ARG_INFO()
88

9-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Generator_current, 0, 0, IS_MIXED, 1)
9+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Generator_current, 0, 0, IS_MIXED, 0)
1010
ZEND_END_ARG_INFO()
1111

1212
#define arginfo_class_Generator_key arginfo_class_Generator_current
1313

1414
#define arginfo_class_Generator_next arginfo_class_Generator_rewind
1515

16-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Generator_send, 0, 1, IS_MIXED, 1)
17-
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 1)
16+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Generator_send, 0, 1, IS_MIXED, 0)
17+
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
1818
ZEND_END_ARG_INFO()
1919

20-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Generator_throw, 0, 1, IS_MIXED, 1)
20+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Generator_throw, 0, 1, IS_MIXED, 0)
2121
ZEND_ARG_OBJ_INFO(0, exception, Throwable, 0)
2222
ZEND_END_ARG_INFO()
2323

build/gen_stub.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public static function fromNode(Node $node) {
169169

170170
public function isNullable(): bool {
171171
foreach ($this->types as $type) {
172-
if ($type->isNull() || $type->name === "mixed") {
172+
if ($type->isNull()) {
173173
return true;
174174
}
175175
}
@@ -645,8 +645,11 @@ function parseFunctionLike(
645645
$param->default->name->toLowerString() === "null" &&
646646
$type && !$type->isNullable()
647647
) {
648-
throw new Exception(
649-
"Parameter $varName of function $name has null default, but is not nullable");
648+
$simpleType = $type->tryToSimpleType();
649+
if ($simpleType === null || $simpleType->name !== "mixed") {
650+
throw new Exception(
651+
"Parameter $varName of function $name has null default, but is not nullable");
652+
}
650653
}
651654

652655
$foundVariadic = $param->variadic;

ext/filter/filter_arginfo.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_filter_has_var, 0, 2, _IS_BOOL,
55
ZEND_ARG_TYPE_INFO(0, variable_name, IS_STRING, 0)
66
ZEND_END_ARG_INFO()
77

8-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_filter_input, 0, 2, IS_MIXED, 1)
8+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_filter_input, 0, 2, IS_MIXED, 0)
99
ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
1010
ZEND_ARG_TYPE_INFO(0, variable_name, IS_STRING, 0)
1111
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, filter, IS_LONG, 0, "FILTER_DEFAULT")
1212
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, options, "null")
1313
ZEND_END_ARG_INFO()
1414

15-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_filter_var, 0, 1, IS_MIXED, 1)
16-
ZEND_ARG_TYPE_INFO(0, variable, IS_MIXED, 1)
15+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_filter_var, 0, 1, IS_MIXED, 0)
16+
ZEND_ARG_TYPE_INFO(0, variable, IS_MIXED, 0)
1717
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, filter, IS_LONG, 0, "FILTER_DEFAULT")
1818
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, options, "null")
1919
ZEND_END_ARG_INFO()

ext/gmp/gmp.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -336,13 +336,10 @@ static void shift_operator_helper(gmp_binary_ui_op_t op, zval *return_value, zva
336336
zend_long shift = zval_get_long(op2);
337337

338338
if (shift < 0) {
339-
if (strcmp(get_active_function_name(), "main")) {
340-
zend_argument_value_error(2, "must be greater than or equal to 0");
341-
} else {
342-
zend_throw_error(zend_ce_value_error, "%s must be greater than or equal to 0",
343-
opcode == ZEND_POW ? "Exponent" : "Shift"
344-
);
345-
}
339+
zend_throw_error(
340+
zend_ce_value_error, "%s must be greater than or equal to 0",
341+
opcode == ZEND_POW ? "Exponent" : "Shift"
342+
);
346343
return;
347344
} else {
348345
mpz_ptr gmpnum_op, gmpnum_result;

ext/gmp/tests/gmp_pow2.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ object(GMP)#%d (1) {
3131
["num"]=>
3232
string(4) "1024"
3333
}
34-
pow(): Argument #2 ($exp) must be greater than or equal to 0
34+
Exponent must be greater than or equal to 0
3535
Exponent must be greater than or equal to 0

ext/json/json_arginfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/* This is a generated file, edit the .stub.php file instead. */
22

33
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_json_encode, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
4-
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 1)
4+
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
55
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_LONG, 0, "0")
66
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, depth, IS_LONG, 0, "512")
77
ZEND_END_ARG_INFO()
88

9-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_json_decode, 0, 1, IS_MIXED, 1)
9+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_json_decode, 0, 1, IS_MIXED, 0)
1010
ZEND_ARG_TYPE_INFO(0, json, IS_STRING, 0)
1111
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, assoc, _IS_BOOL, 1, "null")
1212
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, depth, IS_LONG, 0, "512")

ext/mysqli/mysqli_arginfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ ZEND_END_ARG_INFO()
298298
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_stmt_bind_param, 0, 2, _IS_BOOL, 0)
299299
ZEND_ARG_OBJ_INFO(0, mysql_stmt, mysqli_stmt, 0)
300300
ZEND_ARG_TYPE_INFO(0, types, IS_STRING, 0)
301-
ZEND_ARG_VARIADIC_TYPE_INFO(1, vars, IS_MIXED, 1)
301+
ZEND_ARG_VARIADIC_TYPE_INFO(1, vars, IS_MIXED, 0)
302302
ZEND_END_ARG_INFO()
303303

304304
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_stmt_bind_result, 0, 1, _IS_BOOL, 0)
@@ -633,7 +633,7 @@ ZEND_END_ARG_INFO()
633633

634634
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_stmt_bind_param, 0, 0, 1)
635635
ZEND_ARG_TYPE_INFO(0, types, IS_STRING, 0)
636-
ZEND_ARG_VARIADIC_TYPE_INFO(1, vars, IS_MIXED, 1)
636+
ZEND_ARG_VARIADIC_TYPE_INFO(1, vars, IS_MIXED, 0)
637637
ZEND_END_ARG_INFO()
638638

639639
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_stmt_bind_result, 0, 0, 0)

ext/reflection/php_reflection_arginfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ ZEND_END_ARG_INFO()
6767
#define arginfo_class_ReflectionFunction_isDisabled arginfo_class_ReflectionFunctionAbstract___clone
6868

6969
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ReflectionFunction_invoke, 0, 0, 0)
70-
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 1)
70+
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
7171
ZEND_END_ARG_INFO()
7272

7373
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ReflectionFunction_invokeArgs, 0, 0, 1)
@@ -125,7 +125,7 @@ ZEND_END_ARG_INFO()
125125

126126
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ReflectionMethod_invoke, 0, 0, 0)
127127
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, object, IS_OBJECT, 1, "null")
128-
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 1)
128+
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
129129
ZEND_END_ARG_INFO()
130130

131131
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ReflectionMethod_invokeArgs, 0, 0, 2)

0 commit comments

Comments
 (0)