From 009bc546a89876c02167c9355f9c6b2d7614f2ea Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 21 Aug 2019 02:07:40 +0200 Subject: [PATCH] Promote warnings to errors in array_flip() --- ext/standard/array.c | 3 +- ext/standard/tests/array/array_flip.phpt | 47 ++++++++++++------- .../tests/array/array_flip_variation4.phpt | 39 ++++----------- 3 files changed, 42 insertions(+), 47 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index 70523d479ef4f..9b472e7968d7e 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4444,7 +4444,8 @@ PHP_FUNCTION(array_flip) } zend_symtable_update(Z_ARRVAL_P(return_value), Z_STR_P(entry), &data); } else { - php_error_docref(NULL, E_WARNING, "Can only flip STRING and INTEGER values!"); + zend_type_error("Can only flip STRING and INTEGER values!"); + return; } } ZEND_HASH_FOREACH_END(); } diff --git a/ext/standard/tests/array/array_flip.phpt b/ext/standard/tests/array/array_flip.phpt index ab8cf271b103d..06628285970b7 100644 --- a/ext/standard/tests/array/array_flip.phpt +++ b/ext/standard/tests/array/array_flip.phpt @@ -12,26 +12,39 @@ $trans = array("a" => 1, 0 => "G", 1 => "h", 2 => "i"); -$trans = array_flip($trans); + +try { + $trans = array_flip($trans); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} var_dump($trans); ?> ---EXPECTF-- -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d -array(6) { - [1]=> - string(1) "b" - [2]=> - string(1) "c" - [0]=> - string(1) "z" - ["G"]=> - int(0) - ["h"]=> +DONE +--EXPECT-- +Can only flip STRING and INTEGER values! +array(10) { + ["a"]=> int(1) - ["i"]=> + ["b"]=> + int(1) + ["c"]=> int(2) + ["z"]=> + int(0) + ["d"]=> + bool(true) + ["E"]=> + bool(false) + ["F"]=> + NULL + [0]=> + string(1) "G" + [1]=> + string(1) "h" + [2]=> + string(1) "i" } + +DONE diff --git a/ext/standard/tests/array/array_flip_variation4.phpt b/ext/standard/tests/array/array_flip_variation4.phpt index b8badb0caade3..d49862af697e9 100644 --- a/ext/standard/tests/array/array_flip_variation4.phpt +++ b/ext/standard/tests/array/array_flip_variation4.phpt @@ -52,39 +52,20 @@ $input = array( 'resource_value' => $fp, ); -var_dump( array_flip($input) ); +try { + var_dump( array_flip($input) ); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} // closing resource fclose($fp); -echo "Done" ?> ---EXPECTF-- -*** Testing array_flip() : different invalid values in 'input' array argument *** - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d - -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d +DONE +--EXPECT-- +*** Testing array_flip() : different invalid values in 'input' array argument *** +Can only flip STRING and INTEGER values! -Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d -array(0) { -} -Done +DONE