echo $e->getMessage(), "\n";
}
unset($$A);
-$$A **= $$B['a'] = &$$C;
-var_dump($$A);
+try {
+ $$A **= $$B['a'] = &$$C;
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+}
?>
--EXPECT--
Unsupported operand types
Unsupported operand types
Unsupported operand types
-int(0)
+Unsupported operand types
<?php
$x = [0];
-$x **= 1;
+try {
+ $x **= 1;
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+}
var_dump($x);
$x = [0];
-$x **= $x;
+try {
+ $x **= $x;
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+}
var_dump($x);
?>
--EXPECT--
-int(0)
-int(0)
+Unsupported operand types
+array(1) {
+ [0]=>
+ int(0)
+}
+Unsupported operand types
+array(1) {
+ [0]=>
+ int(0)
+}
} else if (!converted) {
ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_POW, pow_function);
- if (EXPECTED(op1 != op2)) {
- if (Z_TYPE_P(op1) == IS_ARRAY) {
- if (op1 == result) {
- zval_ptr_dtor(result);
- }
- ZVAL_LONG(result, 0);
- return SUCCESS;
- } else {
- op1 = zendi_convert_scalar_to_number(op1, &op1_copy, result, 0);
- }
- if (Z_TYPE_P(op2) == IS_ARRAY) {
- if (op1 == result) {
- zval_ptr_dtor(result);
- }
- ZVAL_LONG(result, 1L);
- return SUCCESS;
- } else {
- op2 = zendi_convert_scalar_to_number(op2, &op2_copy, result, 0);
+ if (Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY) {
+ if (result != op1) {
+ ZVAL_UNDEF(result);
}
+ zend_throw_error(NULL, "Unsupported operand types");
+ return FAILURE;
+ }
+
+ if (EXPECTED(op1 != op2)) {
+ op1 = zendi_convert_scalar_to_number(op1, &op1_copy, result, 0);
+ op2 = zendi_convert_scalar_to_number(op2, &op2_copy, result, 0);
} else {
- if (Z_TYPE_P(op1) == IS_ARRAY) {
- if (op1 == result) {
- zval_ptr_dtor(result);
- }
- ZVAL_LONG(result, 0);
- return SUCCESS;
- } else {
- op1 = zendi_convert_scalar_to_number(op1, &op1_copy, result, 0);
- }
+ op1 = zendi_convert_scalar_to_number(op1, &op1_copy, result, 0);
op2 = op1;
}
+
if (EG(exception)) {
if (result != op1) {
ZVAL_UNDEF(result);
// loop through each element of $inputs to check the behaviour of pow()
$iterator = 1;
foreach($inputs as $input) {
- echo "\n-- Iteration $iterator --\n";
- var_dump(pow($input, 3));
- $iterator++;
+ echo "\n-- Iteration $iterator --\n";
+ try {
+ var_dump(pow($input, 3));
+ } catch (Error $e) {
+ echo $e->getMessage(), "\n";
+ }
+ $iterator++;
};
fclose($fp);
?>
int(0)
-- Iteration 19 --
-int(0)
+Unsupported operand types
-- Iteration 20 --
// loop through each element of $inputs to check the behaviour of pow()
$iterator = 1;
foreach($inputs as $input) {
- echo "\n-- Iteration $iterator --\n";
- var_dump(pow($input, 3));
- $iterator++;
+ echo "\n-- Iteration $iterator --\n";
+ try {
+ var_dump(pow($input, 3));
+ } catch (Error $e) {
+ echo $e->getMessage(), "\n";
+ }
+ $iterator++;
};
fclose($fp);
?>
int(0)
-- Iteration 19 --
-int(0)
+Unsupported operand types
-- Iteration 20 --
// loop through each element of $inputs to check the behaviour of pow()
$iterator = 1;
foreach($inputs as $input) {
- echo "\n-- Iteration $iterator --\n";
- var_dump(pow(20.3, $input));
- $iterator++;
+ echo "\n-- Iteration $iterator --\n";
+ try {
+ var_dump(pow(20.3, $input));
+ } catch (Error $e) {
+ echo $e->getMessage(), "\n";
+ }
+ $iterator++;
};
fclose($fp);
?>
float(1)
-- Iteration 19 --
-int(1)
+Unsupported operand types
-- Iteration 20 --