Skip to content

Fix misleading pass by reference error message #10639

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Zend/tests/bug72038.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ function test(&$param) {

?>
--EXPECT--
test(): Argument #1 ($param) cannot be passed by reference
test(): Argument #1 ($param) cannot be passed by reference
test(): Argument #1 ($param) could not be passed by reference
test(): Argument #1 ($param) could not be passed by reference
int(1)
2 changes: 1 addition & 1 deletion Zend/tests/bug73663_2.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ change(list($val) = $array);
var_dump($array);
?>
--EXPECTF--
Fatal error: Uncaught Error: change(): Argument #1 ($ref) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: change(): Argument #1 ($ref) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
4 changes: 2 additions & 2 deletions Zend/tests/bug78154.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ namespace Foo {

?>
--EXPECT--
Exception: similar_text(): Argument #3 ($percent) cannot be passed by reference
Exception: similar_text(): Argument #3 ($percent) cannot be passed by reference
Exception: similar_text(): Argument #3 ($percent) could not be passed by reference
Exception: similar_text(): Argument #3 ($percent) could not be passed by reference
2 changes: 1 addition & 1 deletion Zend/tests/bug79783.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Bug #79783: Segfault in php_str_replace_common
str_replace("a", "b", "c", strlen("d"));
?>
--EXPECTF--
Fatal error: Uncaught Error: str_replace(): Argument #4 ($count) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: str_replace(): Argument #4 ($count) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
2 changes: 1 addition & 1 deletion Zend/tests/closure_019.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ int(9)
Notice: Only variable references should be returned by reference in %sclosure_019.php on line 4
int(81)

Fatal error: Uncaught Error: {closure}(): Argument #1 ($x) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: {closure}(): Argument #1 ($x) could not be passed by reference in %s:%d
Stack trace:
#0 %s(%d): test()
#1 {main}
Expand Down
2 changes: 1 addition & 1 deletion Zend/tests/errmsg_022.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ foo(1);
echo "Done\n";
?>
--EXPECTF--
Fatal error: Uncaught Error: foo(): Argument #1 ($var) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: foo(): Argument #1 ($var) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
2 changes: 1 addition & 1 deletion Zend/tests/match/027.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ main();
usesValue 0
i is 0

Fatal error: Uncaught Error: Test::usesRef(): Argument #1 ($x) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: Test::usesRef(): Argument #1 ($x) could not be passed by reference in %s:%d
Stack trace:
#0 %s(%d): main()
#1 {main}
Expand Down
2 changes: 1 addition & 1 deletion Zend/tests/match/028.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ try {
usesValue 42
usesValue 42
int(42)
Caught Test::usesRef(): Argument #1 ($x) cannot be passed by reference
Caught Test::usesRef(): Argument #1 ($x) could not be passed by reference
2 changes: 1 addition & 1 deletion Zend/tests/named_params/cannot_pass_by_ref.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ try {
}
?>
--EXPECT--
test(): Argument #2 ($e) cannot be passed by reference
test(): Argument #2 ($e) could not be passed by reference
8 changes: 4 additions & 4 deletions Zend/tests/nullsafe_operator/016.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ test(new Foo());

?>
--EXPECT--
set(): Argument #1 ($ref) cannot be passed by reference
set(): Argument #1 ($ref) cannot be passed by reference
set(): Argument #1 ($ref) cannot be passed by reference
set(): Argument #1 ($ref) cannot be passed by reference
set(): Argument #1 ($ref) could not be passed by reference
set(): Argument #1 ($ref) could not be passed by reference
set(): Argument #1 ($ref) could not be passed by reference
set(): Argument #1 ($ref) could not be passed by reference
6 changes: 3 additions & 3 deletions Zend/tests/restrict_globals/invalid_pass_by_ref.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
--TEST--
$GLOBALS cannot be passed by reference (runtime error)
$GLOBALS must be passed by reference (runtime error)
--FILE--
<?php

Expand All @@ -19,5 +19,5 @@ function by_ref2(&$ref) {}

?>
--EXPECT--
by_ref(): Argument #1 ($ref) cannot be passed by reference
by_ref2(): Argument #1 ($ref) cannot be passed by reference
by_ref(): Argument #1 ($ref) could not be passed by reference
by_ref2(): Argument #1 ($ref) could not be passed by reference
2 changes: 1 addition & 1 deletion Zend/tests/variadic/by_ref_error.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ test(1);

?>
--EXPECTF--
Fatal error: Uncaught Error: test(): Argument #1 cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: test(): Argument #1 could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
2 changes: 1 addition & 1 deletion Zend/zend_execute.c
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_pass_by_reference(uint32_t arg
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",
zend_throw_error(NULL, "%s(): Argument #%d%s%s%s could not be passed by reference",
ZSTR_VAL(func_name), arg_num, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : ""
);

Expand Down
2 changes: 1 addition & 1 deletion ext/opcache/tests/optimize_func_calls.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ Array
string(7) "changed"
string(7) "changed"

Fatal error: Uncaught Error: ref(): Argument #1 ($b) cannot be passed by reference in %soptimize_func_calls.php:%d
Fatal error: Uncaught Error: ref(): Argument #1 ($b) could not be passed by reference in %soptimize_func_calls.php:%d
Stack trace:
#0 {main}
thrown in %soptimize_func_calls.php on line %d
2 changes: 1 addition & 1 deletion ext/pcre/tests/preg_match_all_error3.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ echo "Done";
--EXPECTF--
*** Testing preg_match_all() : error conditions ***

Fatal error: Uncaught Error: preg_match_all(): Argument #3 ($matches) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: preg_match_all(): Argument #3 ($matches) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
2 changes: 1 addition & 1 deletion ext/pdo_mysql/tests/bug_37445.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ $stmt = $db->prepare("SELECT 1");
$stmt->bindParam(':a', 'b');
?>
--EXPECTF--
Fatal error: Uncaught Error: PDOStatement::bindParam(): Argument #2 ($var) cannot be passed by reference in %sbug_37445.php:%d
Fatal error: Uncaught Error: PDOStatement::bindParam(): Argument #2 ($var) could not be passed by reference in %sbug_37445.php:%d
Stack trace:
#0 {main}
thrown in %sbug_37445.php on line %d
2 changes: 1 addition & 1 deletion ext/standard/tests/array/array_next_error2.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function f() {
var_dump(next(array(1, 2)));
?>
--EXPECTF--
Fatal error: Uncaught Error: next(): Argument #1 ($array) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: next(): Argument #1 ($array) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
2 changes: 1 addition & 1 deletion ext/standard/tests/array/bug31158.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ __();
echo "ok\n";
?>
--EXPECTF--
Fatal error: Uncaught Error: array_splice(): Argument #1 ($array) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: array_splice(): Argument #1 ($array) could not be passed by reference in %s:%d
Stack trace:
#0 %s(%d): __()
#1 {main}
Expand Down
2 changes: 1 addition & 1 deletion ext/standard/tests/array/prev_error3.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ prev - ensure we cannot pass a temporary
var_dump(prev(array(1, 2)));
?>
--EXPECTF--
Fatal error: Uncaught Error: prev(): Argument #1 ($array) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: prev(): Argument #1 ($array) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
2 changes: 1 addition & 1 deletion tests/classes/constants_error_003.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Basic class support - attempting to pass a class constant by reference.
var_dump(aclass::myConst);
?>
--EXPECTF--
Fatal error: Uncaught Error: f(): Argument #1 ($a) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: f(): Argument #1 ($a) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
2 changes: 1 addition & 1 deletion tests/lang/passByReference_002.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ f(2);

?>
--EXPECTF--
Fatal error: Uncaught Error: f(): Argument #1 ($arg1) cannot be passed by reference in %s:%d
Fatal error: Uncaught Error: f(): Argument #1 ($arg1) could not be passed by reference in %s:%d
Stack trace:
#0 {main}
thrown in %s on line %d
6 changes: 3 additions & 3 deletions tests/lang/passByReference_010.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ try {
?>
--EXPECT--
---> Pass constant assignment by reference:
Exception: f(): Argument #1 ($a) cannot be passed by reference
Exception: f(): Argument #1 ($a) could not be passed by reference


---> Pass variable assignment by reference:
Exception: f(): Argument #1 ($a) cannot be passed by reference
Exception: f(): Argument #1 ($a) could not be passed by reference


---> Pass reference assignment by reference:
Expand All @@ -63,4 +63,4 @@ string(9) "a.changed"


---> Pass concat assignment by reference:
Exception: f(): Argument #1 ($a) cannot be passed by reference
Exception: f(): Argument #1 ($a) could not be passed by reference