diff options
author | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-08-16 21:49:20 +0200 |
---|---|---|
committer | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-09-09 10:47:43 +0200 |
commit | 9975986b7ef849c3a8e73a48748befbfdc50e416 (patch) | |
tree | b287480ec6e0d4853fa4e1f53d3627836b74d695 /Zend/zend_execute.c | |
parent | c5b42be40e98f1626e2404af069af16cb6510ef3 (diff) | |
download | php-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.c | 13 |
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( |