From 94722e12cf4ba9a16f8a9f009d60b2e3f0f80e12 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Thu, 2 Jul 2015 20:47:44 +0200 Subject: [PATCH] Introduce ArithmeticError --- Zend/zend_exceptions.c | 7 +- Zend/zend_exceptions.h | 1 + Zend/zend_operators.c | 6 +- ext/standard/math.c | 2 +- .../bitwiseShiftLeft_basiclong_64bit.phpt | 4 +- .../bitwiseShiftLeft_variationStr_64bit.phpt | 788 +++++++++--------- .../bitwiseShiftRight_basiclong_64bit.phpt | 4 +- .../bitwiseShiftRight_variationStr.phpt | 2 +- 8 files changed, 410 insertions(+), 404 deletions(-) diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index 9f5b2448d1..8c44b31d8c 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -31,6 +31,7 @@ #include "zend_smart_str.h" ZEND_API zend_class_entry *zend_ce_throwable; +ZEND_API zend_class_entry *zend_ce_arithmetic_error; ZEND_API zend_class_entry *zend_ce_division_by_zero_error; static zend_class_entry *default_exception_ce; @@ -855,8 +856,12 @@ void zend_register_default_exception(void) /* {{{ */ type_error_ce = zend_register_internal_class_ex(&ce, error_ce); type_error_ce->create_object = zend_default_exception_new; + INIT_CLASS_ENTRY(ce, "ArithmeticError", NULL); + zend_ce_arithmetic_error = zend_register_internal_class_ex(&ce, error_ce); + zend_ce_arithmetic_error->create_object = zend_default_exception_new; + INIT_CLASS_ENTRY(ce, "DivisionByZeroError", NULL); - zend_ce_division_by_zero_error = zend_register_internal_class_ex(&ce, error_ce); + zend_ce_division_by_zero_error = zend_register_internal_class_ex(&ce, zend_ce_arithmetic_error); zend_ce_division_by_zero_error->create_object = zend_default_exception_new; } /* }}} */ diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h index f07bc78b88..8b5deed15c 100644 --- a/Zend/zend_exceptions.h +++ b/Zend/zend_exceptions.h @@ -27,6 +27,7 @@ BEGIN_EXTERN_C() extern ZEND_API zend_class_entry *zend_ce_throwable; +extern ZEND_API zend_class_entry *zend_ce_arithmetic_error; extern ZEND_API zend_class_entry *zend_ce_division_by_zero_error; ZEND_API void zend_exception_set_previous(zend_object *exception, zend_object *add_previous); diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 5ad1a14791..5e7a2911a1 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1167,7 +1167,7 @@ ZEND_API int ZEND_FASTCALL mod_function(zval *result, zval *op1, zval *op2) /* { if (EG(current_execute_data) && !CG(in_compilation)) { zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero"); } else { - zend_error_noreturn(E_ERROR, "Division by zero"); + zend_error_noreturn(E_ERROR, "Modulo by zero"); } ZVAL_UNDEF(result); return FAILURE; @@ -1518,7 +1518,7 @@ ZEND_API int ZEND_FASTCALL shift_left_function(zval *result, zval *op1, zval *op return SUCCESS; } else { if (EG(current_execute_data) && !CG(in_compilation)) { - zend_throw_exception_ex(NULL, 0, "Bit shift by negative number"); + zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Bit shift by negative number"); } else { zend_error_noreturn(E_ERROR, "Bit shift by negative number"); } @@ -1549,7 +1549,7 @@ ZEND_API int ZEND_FASTCALL shift_right_function(zval *result, zval *op1, zval *o return SUCCESS; } else { if (EG(current_execute_data) && !CG(in_compilation)) { - zend_throw_exception_ex(NULL, 0, "Bit shift by negative number"); + zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Bit shift by negative number"); } else { zend_error_noreturn(E_ERROR, "Bit shift by negative number"); } diff --git a/ext/standard/math.c b/ext/standard/math.c index cdfb486c4f..9ab457b41d 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -1472,7 +1472,7 @@ PHP_FUNCTION(intdiv) } else if (divisor == -1 && numerator == ZEND_LONG_MIN) { /* Prevent overflow error/crash ... really should not happen: We don't return a float here as that violates function contract */ - zend_error(E_ERROR | E_EXCEPTION, "Division of PHP_INT_MIN by -1 is not an integer"); + zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Division of PHP_INT_MIN by -1 is not an integer"); return; } diff --git a/tests/lang/operators/bitwiseShiftLeft_basiclong_64bit.phpt b/tests/lang/operators/bitwiseShiftLeft_basiclong_64bit.phpt index 556d8e3444..380beca219 100644 --- a/tests/lang/operators/bitwiseShiftLeft_basiclong_64bit.phpt +++ b/tests/lang/operators/bitwiseShiftLeft_basiclong_64bit.phpt @@ -27,7 +27,7 @@ foreach ($longVals as $longVal) { echo "--- testing: $longVal << $otherVal ---\n"; try { var_dump($longVal<<$otherVal); - } catch (Exception $e) { + } catch (Throwable $e) { echo "Exception: " . $e->getMessage() . "\n"; } } @@ -38,7 +38,7 @@ foreach ($otherVals as $otherVal) { echo "--- testing: $otherVal << $longVal ---\n"; try { var_dump($otherVal<<$longVal); - } catch (Exception $e) { + } catch (Throwable $e) { echo "Exception: " . $e->getMessage() . "\n"; } } diff --git a/tests/lang/operators/bitwiseShiftLeft_variationStr_64bit.phpt b/tests/lang/operators/bitwiseShiftLeft_variationStr_64bit.phpt index 1ae091461f..174d947445 100644 --- a/tests/lang/operators/bitwiseShiftLeft_variationStr_64bit.phpt +++ b/tests/lang/operators/bitwiseShiftLeft_variationStr_64bit.phpt @@ -19,7 +19,7 @@ foreach ($strVals as $strVal) { echo "--- testing: '$strVal' << '$otherVal' ---\n"; try { var_dump($strVal<<$otherVal); - } catch (Exception $e) { + } catch (Throwable $e) { echo "Exception: " . $e->getMessage() . "\n"; } } @@ -29,396 +29,396 @@ foreach ($strVals as $strVal) { ?> ===DONE=== --EXPECT-- ---- testing: '0' << '0' --- -int(0) ---- testing: '0' << '65' --- -int(0) ---- testing: '0' << '-44' --- -Exception: Bit shift by negative number ---- testing: '0' << '1.2' --- -int(0) ---- testing: '0' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '0' << 'abc' --- -int(0) ---- testing: '0' << '123abc' --- -int(0) ---- testing: '0' << '123e5' --- -int(0) ---- testing: '0' << '123e5xyz' --- -int(0) ---- testing: '0' << ' 123abc' --- -int(0) ---- testing: '0' << '123 abc' --- -int(0) ---- testing: '0' << '123abc ' --- -int(0) ---- testing: '0' << '3.4a' --- -int(0) ---- testing: '0' << 'a5.9' --- -int(0) ---- testing: '65' << '0' --- -int(65) ---- testing: '65' << '65' --- -int(0) ---- testing: '65' << '-44' --- -Exception: Bit shift by negative number ---- testing: '65' << '1.2' --- -int(130) ---- testing: '65' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '65' << 'abc' --- -int(65) ---- testing: '65' << '123abc' --- -int(0) ---- testing: '65' << '123e5' --- -int(0) ---- testing: '65' << '123e5xyz' --- -int(0) ---- testing: '65' << ' 123abc' --- -int(0) ---- testing: '65' << '123 abc' --- -int(0) ---- testing: '65' << '123abc ' --- -int(0) ---- testing: '65' << '3.4a' --- -int(520) ---- testing: '65' << 'a5.9' --- -int(65) ---- testing: '-44' << '0' --- -int(-44) ---- testing: '-44' << '65' --- -int(0) ---- testing: '-44' << '-44' --- -Exception: Bit shift by negative number ---- testing: '-44' << '1.2' --- -int(-88) ---- testing: '-44' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '-44' << 'abc' --- -int(-44) ---- testing: '-44' << '123abc' --- -int(0) ---- testing: '-44' << '123e5' --- -int(0) ---- testing: '-44' << '123e5xyz' --- -int(0) ---- testing: '-44' << ' 123abc' --- -int(0) ---- testing: '-44' << '123 abc' --- -int(0) ---- testing: '-44' << '123abc ' --- -int(0) ---- testing: '-44' << '3.4a' --- -int(-352) ---- testing: '-44' << 'a5.9' --- -int(-44) ---- testing: '1.2' << '0' --- -int(1) ---- testing: '1.2' << '65' --- -int(0) ---- testing: '1.2' << '-44' --- -Exception: Bit shift by negative number ---- testing: '1.2' << '1.2' --- -int(2) ---- testing: '1.2' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '1.2' << 'abc' --- -int(1) ---- testing: '1.2' << '123abc' --- -int(0) ---- testing: '1.2' << '123e5' --- -int(0) ---- testing: '1.2' << '123e5xyz' --- -int(0) ---- testing: '1.2' << ' 123abc' --- -int(0) ---- testing: '1.2' << '123 abc' --- -int(0) ---- testing: '1.2' << '123abc ' --- -int(0) ---- testing: '1.2' << '3.4a' --- -int(8) ---- testing: '1.2' << 'a5.9' --- -int(1) ---- testing: '-7.7' << '0' --- -int(-7) ---- testing: '-7.7' << '65' --- -int(0) ---- testing: '-7.7' << '-44' --- -Exception: Bit shift by negative number ---- testing: '-7.7' << '1.2' --- -int(-14) ---- testing: '-7.7' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '-7.7' << 'abc' --- -int(-7) ---- testing: '-7.7' << '123abc' --- -int(0) ---- testing: '-7.7' << '123e5' --- -int(0) ---- testing: '-7.7' << '123e5xyz' --- -int(0) ---- testing: '-7.7' << ' 123abc' --- -int(0) ---- testing: '-7.7' << '123 abc' --- -int(0) ---- testing: '-7.7' << '123abc ' --- -int(0) ---- testing: '-7.7' << '3.4a' --- -int(-56) ---- testing: '-7.7' << 'a5.9' --- -int(-7) ---- testing: 'abc' << '0' --- -int(0) ---- testing: 'abc' << '65' --- -int(0) ---- testing: 'abc' << '-44' --- -Exception: Bit shift by negative number ---- testing: 'abc' << '1.2' --- -int(0) ---- testing: 'abc' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: 'abc' << 'abc' --- -int(0) ---- testing: 'abc' << '123abc' --- -int(0) ---- testing: 'abc' << '123e5' --- -int(0) ---- testing: 'abc' << '123e5xyz' --- -int(0) ---- testing: 'abc' << ' 123abc' --- -int(0) ---- testing: 'abc' << '123 abc' --- -int(0) ---- testing: 'abc' << '123abc ' --- -int(0) ---- testing: 'abc' << '3.4a' --- -int(0) ---- testing: 'abc' << 'a5.9' --- -int(0) ---- testing: '123abc' << '0' --- -int(123) ---- testing: '123abc' << '65' --- -int(0) ---- testing: '123abc' << '-44' --- -Exception: Bit shift by negative number ---- testing: '123abc' << '1.2' --- -int(246) ---- testing: '123abc' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '123abc' << 'abc' --- -int(123) ---- testing: '123abc' << '123abc' --- -int(0) ---- testing: '123abc' << '123e5' --- -int(0) ---- testing: '123abc' << '123e5xyz' --- -int(0) ---- testing: '123abc' << ' 123abc' --- -int(0) ---- testing: '123abc' << '123 abc' --- -int(0) ---- testing: '123abc' << '123abc ' --- -int(0) ---- testing: '123abc' << '3.4a' --- -int(984) ---- testing: '123abc' << 'a5.9' --- -int(123) ---- testing: '123e5' << '0' --- -int(123) ---- testing: '123e5' << '65' --- -int(0) ---- testing: '123e5' << '-44' --- -Exception: Bit shift by negative number ---- testing: '123e5' << '1.2' --- -int(246) ---- testing: '123e5' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '123e5' << 'abc' --- -int(123) ---- testing: '123e5' << '123abc' --- -int(0) ---- testing: '123e5' << '123e5' --- -int(0) ---- testing: '123e5' << '123e5xyz' --- -int(0) ---- testing: '123e5' << ' 123abc' --- -int(0) ---- testing: '123e5' << '123 abc' --- -int(0) ---- testing: '123e5' << '123abc ' --- -int(0) ---- testing: '123e5' << '3.4a' --- -int(984) ---- testing: '123e5' << 'a5.9' --- -int(123) ---- testing: '123e5xyz' << '0' --- -int(123) ---- testing: '123e5xyz' << '65' --- -int(0) ---- testing: '123e5xyz' << '-44' --- -Exception: Bit shift by negative number ---- testing: '123e5xyz' << '1.2' --- -int(246) ---- testing: '123e5xyz' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '123e5xyz' << 'abc' --- -int(123) ---- testing: '123e5xyz' << '123abc' --- -int(0) ---- testing: '123e5xyz' << '123e5' --- -int(0) ---- testing: '123e5xyz' << '123e5xyz' --- -int(0) ---- testing: '123e5xyz' << ' 123abc' --- -int(0) ---- testing: '123e5xyz' << '123 abc' --- -int(0) ---- testing: '123e5xyz' << '123abc ' --- -int(0) ---- testing: '123e5xyz' << '3.4a' --- -int(984) ---- testing: '123e5xyz' << 'a5.9' --- -int(123) ---- testing: ' 123abc' << '0' --- -int(123) ---- testing: ' 123abc' << '65' --- -int(0) ---- testing: ' 123abc' << '-44' --- -Exception: Bit shift by negative number ---- testing: ' 123abc' << '1.2' --- -int(246) ---- testing: ' 123abc' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: ' 123abc' << 'abc' --- -int(123) ---- testing: ' 123abc' << '123abc' --- -int(0) ---- testing: ' 123abc' << '123e5' --- -int(0) ---- testing: ' 123abc' << '123e5xyz' --- -int(0) ---- testing: ' 123abc' << ' 123abc' --- -int(0) ---- testing: ' 123abc' << '123 abc' --- -int(0) ---- testing: ' 123abc' << '123abc ' --- -int(0) ---- testing: ' 123abc' << '3.4a' --- -int(984) ---- testing: ' 123abc' << 'a5.9' --- -int(123) ---- testing: '123 abc' << '0' --- -int(123) ---- testing: '123 abc' << '65' --- -int(0) ---- testing: '123 abc' << '-44' --- -Exception: Bit shift by negative number ---- testing: '123 abc' << '1.2' --- -int(246) ---- testing: '123 abc' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '123 abc' << 'abc' --- -int(123) ---- testing: '123 abc' << '123abc' --- -int(0) ---- testing: '123 abc' << '123e5' --- -int(0) ---- testing: '123 abc' << '123e5xyz' --- -int(0) ---- testing: '123 abc' << ' 123abc' --- -int(0) ---- testing: '123 abc' << '123 abc' --- -int(0) ---- testing: '123 abc' << '123abc ' --- -int(0) ---- testing: '123 abc' << '3.4a' --- -int(984) ---- testing: '123 abc' << 'a5.9' --- -int(123) ---- testing: '123abc ' << '0' --- -int(123) ---- testing: '123abc ' << '65' --- -int(0) ---- testing: '123abc ' << '-44' --- -Exception: Bit shift by negative number ---- testing: '123abc ' << '1.2' --- -int(246) ---- testing: '123abc ' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '123abc ' << 'abc' --- -int(123) ---- testing: '123abc ' << '123abc' --- -int(0) ---- testing: '123abc ' << '123e5' --- -int(0) ---- testing: '123abc ' << '123e5xyz' --- -int(0) ---- testing: '123abc ' << ' 123abc' --- -int(0) ---- testing: '123abc ' << '123 abc' --- -int(0) ---- testing: '123abc ' << '123abc ' --- -int(0) ---- testing: '123abc ' << '3.4a' --- -int(984) ---- testing: '123abc ' << 'a5.9' --- -int(123) ---- testing: '3.4a' << '0' --- -int(3) ---- testing: '3.4a' << '65' --- -int(0) ---- testing: '3.4a' << '-44' --- -Exception: Bit shift by negative number ---- testing: '3.4a' << '1.2' --- -int(6) ---- testing: '3.4a' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: '3.4a' << 'abc' --- -int(3) ---- testing: '3.4a' << '123abc' --- -int(0) ---- testing: '3.4a' << '123e5' --- -int(0) ---- testing: '3.4a' << '123e5xyz' --- -int(0) ---- testing: '3.4a' << ' 123abc' --- -int(0) ---- testing: '3.4a' << '123 abc' --- -int(0) ---- testing: '3.4a' << '123abc ' --- -int(0) ---- testing: '3.4a' << '3.4a' --- -int(24) ---- testing: '3.4a' << 'a5.9' --- -int(3) ---- testing: 'a5.9' << '0' --- -int(0) ---- testing: 'a5.9' << '65' --- -int(0) ---- testing: 'a5.9' << '-44' --- -Exception: Bit shift by negative number ---- testing: 'a5.9' << '1.2' --- -int(0) ---- testing: 'a5.9' << '-7.7' --- -Exception: Bit shift by negative number ---- testing: 'a5.9' << 'abc' --- -int(0) ---- testing: 'a5.9' << '123abc' --- -int(0) ---- testing: 'a5.9' << '123e5' --- -int(0) ---- testing: 'a5.9' << '123e5xyz' --- -int(0) ---- testing: 'a5.9' << ' 123abc' --- -int(0) ---- testing: 'a5.9' << '123 abc' --- -int(0) ---- testing: 'a5.9' << '123abc ' --- -int(0) ---- testing: 'a5.9' << '3.4a' --- -int(0) ---- testing: 'a5.9' << 'a5.9' --- -int(0) -===DONE=== +--- testing: '0' << '0' --- +int(0) +--- testing: '0' << '65' --- +int(0) +--- testing: '0' << '-44' --- +Exception: Bit shift by negative number +--- testing: '0' << '1.2' --- +int(0) +--- testing: '0' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '0' << 'abc' --- +int(0) +--- testing: '0' << '123abc' --- +int(0) +--- testing: '0' << '123e5' --- +int(0) +--- testing: '0' << '123e5xyz' --- +int(0) +--- testing: '0' << ' 123abc' --- +int(0) +--- testing: '0' << '123 abc' --- +int(0) +--- testing: '0' << '123abc ' --- +int(0) +--- testing: '0' << '3.4a' --- +int(0) +--- testing: '0' << 'a5.9' --- +int(0) +--- testing: '65' << '0' --- +int(65) +--- testing: '65' << '65' --- +int(0) +--- testing: '65' << '-44' --- +Exception: Bit shift by negative number +--- testing: '65' << '1.2' --- +int(130) +--- testing: '65' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '65' << 'abc' --- +int(65) +--- testing: '65' << '123abc' --- +int(0) +--- testing: '65' << '123e5' --- +int(0) +--- testing: '65' << '123e5xyz' --- +int(0) +--- testing: '65' << ' 123abc' --- +int(0) +--- testing: '65' << '123 abc' --- +int(0) +--- testing: '65' << '123abc ' --- +int(0) +--- testing: '65' << '3.4a' --- +int(520) +--- testing: '65' << 'a5.9' --- +int(65) +--- testing: '-44' << '0' --- +int(-44) +--- testing: '-44' << '65' --- +int(0) +--- testing: '-44' << '-44' --- +Exception: Bit shift by negative number +--- testing: '-44' << '1.2' --- +int(-88) +--- testing: '-44' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '-44' << 'abc' --- +int(-44) +--- testing: '-44' << '123abc' --- +int(0) +--- testing: '-44' << '123e5' --- +int(0) +--- testing: '-44' << '123e5xyz' --- +int(0) +--- testing: '-44' << ' 123abc' --- +int(0) +--- testing: '-44' << '123 abc' --- +int(0) +--- testing: '-44' << '123abc ' --- +int(0) +--- testing: '-44' << '3.4a' --- +int(-352) +--- testing: '-44' << 'a5.9' --- +int(-44) +--- testing: '1.2' << '0' --- +int(1) +--- testing: '1.2' << '65' --- +int(0) +--- testing: '1.2' << '-44' --- +Exception: Bit shift by negative number +--- testing: '1.2' << '1.2' --- +int(2) +--- testing: '1.2' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '1.2' << 'abc' --- +int(1) +--- testing: '1.2' << '123abc' --- +int(0) +--- testing: '1.2' << '123e5' --- +int(0) +--- testing: '1.2' << '123e5xyz' --- +int(0) +--- testing: '1.2' << ' 123abc' --- +int(0) +--- testing: '1.2' << '123 abc' --- +int(0) +--- testing: '1.2' << '123abc ' --- +int(0) +--- testing: '1.2' << '3.4a' --- +int(8) +--- testing: '1.2' << 'a5.9' --- +int(1) +--- testing: '-7.7' << '0' --- +int(-7) +--- testing: '-7.7' << '65' --- +int(0) +--- testing: '-7.7' << '-44' --- +Exception: Bit shift by negative number +--- testing: '-7.7' << '1.2' --- +int(-14) +--- testing: '-7.7' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '-7.7' << 'abc' --- +int(-7) +--- testing: '-7.7' << '123abc' --- +int(0) +--- testing: '-7.7' << '123e5' --- +int(0) +--- testing: '-7.7' << '123e5xyz' --- +int(0) +--- testing: '-7.7' << ' 123abc' --- +int(0) +--- testing: '-7.7' << '123 abc' --- +int(0) +--- testing: '-7.7' << '123abc ' --- +int(0) +--- testing: '-7.7' << '3.4a' --- +int(-56) +--- testing: '-7.7' << 'a5.9' --- +int(-7) +--- testing: 'abc' << '0' --- +int(0) +--- testing: 'abc' << '65' --- +int(0) +--- testing: 'abc' << '-44' --- +Exception: Bit shift by negative number +--- testing: 'abc' << '1.2' --- +int(0) +--- testing: 'abc' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: 'abc' << 'abc' --- +int(0) +--- testing: 'abc' << '123abc' --- +int(0) +--- testing: 'abc' << '123e5' --- +int(0) +--- testing: 'abc' << '123e5xyz' --- +int(0) +--- testing: 'abc' << ' 123abc' --- +int(0) +--- testing: 'abc' << '123 abc' --- +int(0) +--- testing: 'abc' << '123abc ' --- +int(0) +--- testing: 'abc' << '3.4a' --- +int(0) +--- testing: 'abc' << 'a5.9' --- +int(0) +--- testing: '123abc' << '0' --- +int(123) +--- testing: '123abc' << '65' --- +int(0) +--- testing: '123abc' << '-44' --- +Exception: Bit shift by negative number +--- testing: '123abc' << '1.2' --- +int(246) +--- testing: '123abc' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '123abc' << 'abc' --- +int(123) +--- testing: '123abc' << '123abc' --- +int(0) +--- testing: '123abc' << '123e5' --- +int(0) +--- testing: '123abc' << '123e5xyz' --- +int(0) +--- testing: '123abc' << ' 123abc' --- +int(0) +--- testing: '123abc' << '123 abc' --- +int(0) +--- testing: '123abc' << '123abc ' --- +int(0) +--- testing: '123abc' << '3.4a' --- +int(984) +--- testing: '123abc' << 'a5.9' --- +int(123) +--- testing: '123e5' << '0' --- +int(123) +--- testing: '123e5' << '65' --- +int(0) +--- testing: '123e5' << '-44' --- +Exception: Bit shift by negative number +--- testing: '123e5' << '1.2' --- +int(246) +--- testing: '123e5' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '123e5' << 'abc' --- +int(123) +--- testing: '123e5' << '123abc' --- +int(0) +--- testing: '123e5' << '123e5' --- +int(0) +--- testing: '123e5' << '123e5xyz' --- +int(0) +--- testing: '123e5' << ' 123abc' --- +int(0) +--- testing: '123e5' << '123 abc' --- +int(0) +--- testing: '123e5' << '123abc ' --- +int(0) +--- testing: '123e5' << '3.4a' --- +int(984) +--- testing: '123e5' << 'a5.9' --- +int(123) +--- testing: '123e5xyz' << '0' --- +int(123) +--- testing: '123e5xyz' << '65' --- +int(0) +--- testing: '123e5xyz' << '-44' --- +Exception: Bit shift by negative number +--- testing: '123e5xyz' << '1.2' --- +int(246) +--- testing: '123e5xyz' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '123e5xyz' << 'abc' --- +int(123) +--- testing: '123e5xyz' << '123abc' --- +int(0) +--- testing: '123e5xyz' << '123e5' --- +int(0) +--- testing: '123e5xyz' << '123e5xyz' --- +int(0) +--- testing: '123e5xyz' << ' 123abc' --- +int(0) +--- testing: '123e5xyz' << '123 abc' --- +int(0) +--- testing: '123e5xyz' << '123abc ' --- +int(0) +--- testing: '123e5xyz' << '3.4a' --- +int(984) +--- testing: '123e5xyz' << 'a5.9' --- +int(123) +--- testing: ' 123abc' << '0' --- +int(123) +--- testing: ' 123abc' << '65' --- +int(0) +--- testing: ' 123abc' << '-44' --- +Exception: Bit shift by negative number +--- testing: ' 123abc' << '1.2' --- +int(246) +--- testing: ' 123abc' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: ' 123abc' << 'abc' --- +int(123) +--- testing: ' 123abc' << '123abc' --- +int(0) +--- testing: ' 123abc' << '123e5' --- +int(0) +--- testing: ' 123abc' << '123e5xyz' --- +int(0) +--- testing: ' 123abc' << ' 123abc' --- +int(0) +--- testing: ' 123abc' << '123 abc' --- +int(0) +--- testing: ' 123abc' << '123abc ' --- +int(0) +--- testing: ' 123abc' << '3.4a' --- +int(984) +--- testing: ' 123abc' << 'a5.9' --- +int(123) +--- testing: '123 abc' << '0' --- +int(123) +--- testing: '123 abc' << '65' --- +int(0) +--- testing: '123 abc' << '-44' --- +Exception: Bit shift by negative number +--- testing: '123 abc' << '1.2' --- +int(246) +--- testing: '123 abc' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '123 abc' << 'abc' --- +int(123) +--- testing: '123 abc' << '123abc' --- +int(0) +--- testing: '123 abc' << '123e5' --- +int(0) +--- testing: '123 abc' << '123e5xyz' --- +int(0) +--- testing: '123 abc' << ' 123abc' --- +int(0) +--- testing: '123 abc' << '123 abc' --- +int(0) +--- testing: '123 abc' << '123abc ' --- +int(0) +--- testing: '123 abc' << '3.4a' --- +int(984) +--- testing: '123 abc' << 'a5.9' --- +int(123) +--- testing: '123abc ' << '0' --- +int(123) +--- testing: '123abc ' << '65' --- +int(0) +--- testing: '123abc ' << '-44' --- +Exception: Bit shift by negative number +--- testing: '123abc ' << '1.2' --- +int(246) +--- testing: '123abc ' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '123abc ' << 'abc' --- +int(123) +--- testing: '123abc ' << '123abc' --- +int(0) +--- testing: '123abc ' << '123e5' --- +int(0) +--- testing: '123abc ' << '123e5xyz' --- +int(0) +--- testing: '123abc ' << ' 123abc' --- +int(0) +--- testing: '123abc ' << '123 abc' --- +int(0) +--- testing: '123abc ' << '123abc ' --- +int(0) +--- testing: '123abc ' << '3.4a' --- +int(984) +--- testing: '123abc ' << 'a5.9' --- +int(123) +--- testing: '3.4a' << '0' --- +int(3) +--- testing: '3.4a' << '65' --- +int(0) +--- testing: '3.4a' << '-44' --- +Exception: Bit shift by negative number +--- testing: '3.4a' << '1.2' --- +int(6) +--- testing: '3.4a' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: '3.4a' << 'abc' --- +int(3) +--- testing: '3.4a' << '123abc' --- +int(0) +--- testing: '3.4a' << '123e5' --- +int(0) +--- testing: '3.4a' << '123e5xyz' --- +int(0) +--- testing: '3.4a' << ' 123abc' --- +int(0) +--- testing: '3.4a' << '123 abc' --- +int(0) +--- testing: '3.4a' << '123abc ' --- +int(0) +--- testing: '3.4a' << '3.4a' --- +int(24) +--- testing: '3.4a' << 'a5.9' --- +int(3) +--- testing: 'a5.9' << '0' --- +int(0) +--- testing: 'a5.9' << '65' --- +int(0) +--- testing: 'a5.9' << '-44' --- +Exception: Bit shift by negative number +--- testing: 'a5.9' << '1.2' --- +int(0) +--- testing: 'a5.9' << '-7.7' --- +Exception: Bit shift by negative number +--- testing: 'a5.9' << 'abc' --- +int(0) +--- testing: 'a5.9' << '123abc' --- +int(0) +--- testing: 'a5.9' << '123e5' --- +int(0) +--- testing: 'a5.9' << '123e5xyz' --- +int(0) +--- testing: 'a5.9' << ' 123abc' --- +int(0) +--- testing: 'a5.9' << '123 abc' --- +int(0) +--- testing: 'a5.9' << '123abc ' --- +int(0) +--- testing: 'a5.9' << '3.4a' --- +int(0) +--- testing: 'a5.9' << 'a5.9' --- +int(0) +===DONE=== diff --git a/tests/lang/operators/bitwiseShiftRight_basiclong_64bit.phpt b/tests/lang/operators/bitwiseShiftRight_basiclong_64bit.phpt index 9083f47b03..c85c440312 100644 --- a/tests/lang/operators/bitwiseShiftRight_basiclong_64bit.phpt +++ b/tests/lang/operators/bitwiseShiftRight_basiclong_64bit.phpt @@ -27,7 +27,7 @@ foreach ($longVals as $longVal) { echo "--- testing: $longVal >> $otherVal ---\n"; try { var_dump($longVal>>$otherVal); - } catch (Exception $e) { + } catch (Throwable $e) { echo "Exception: " . $e->getMessage() . "\n"; } } @@ -38,7 +38,7 @@ foreach ($otherVals as $otherVal) { echo "--- testing: $otherVal >> $longVal ---\n"; try { var_dump($otherVal>>$longVal); - } catch (Exception $e) { + } catch (Throwable $e) { echo "Exception: " . $e->getMessage() . "\n"; } } diff --git a/tests/lang/operators/bitwiseShiftRight_variationStr.phpt b/tests/lang/operators/bitwiseShiftRight_variationStr.phpt index 018e9b27e5..1c3277acc8 100644 --- a/tests/lang/operators/bitwiseShiftRight_variationStr.phpt +++ b/tests/lang/operators/bitwiseShiftRight_variationStr.phpt @@ -15,7 +15,7 @@ foreach ($strVals as $strVal) { echo "--- testing: '$strVal' >> '$otherVal' ---\n"; try { var_dump($strVal>>$otherVal); - } catch (Exception $e) { + } catch (Throwable $e) { echo "Exception: " . $e->getMessage() . "\n"; } } -- 2.40.0