summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorMáté Kocsis <kocsismate@woohoolabs.com>2020-08-16 21:49:20 +0200
committerMáté Kocsis <kocsismate@woohoolabs.com>2020-09-09 10:47:43 +0200
commit9975986b7ef849c3a8e73a48748befbfdc50e416 (patch)
treeb287480ec6e0d4853fa4e1f53d3627836b74d695 /Zend/zend_execute.c
parentc5b42be40e98f1626e2404af069af16cb6510ef3 (diff)
downloadphp-git-9975986b7ef849c3a8e73a48748befbfdc50e416.tar.gz
Improve error messages mentioning parameters instead of arguments
Closes GH-5999
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 4c63db6bd2..18655fbe23 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -583,6 +583,19 @@ static zend_never_inline ZEND_COLD bool zend_wrong_assign_to_variable_reference(
return 1;
}
+ZEND_API ZEND_COLD void zend_cannot_pass_by_reference(uint32_t arg_num)
+{
+ const zend_execute_data *execute_data = EG(current_execute_data);
+ zend_string *func_name = get_function_or_method_name(EX(call)->func);
+ const char *param_name = get_function_arg_name(EX(call)->func, arg_num);
+
+ zend_throw_error(NULL, "%s(): Argument #%d%s%s%s cannot be passed by reference",
+ ZSTR_VAL(func_name), arg_num, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : ""
+ );
+
+ zend_string_release(func_name);
+}
+
static zend_never_inline ZEND_COLD void zend_throw_auto_init_in_prop_error(zend_property_info *prop, const char *type) {
zend_string *type_str = zend_type_to_string(prop->type);
zend_type_error(