forked from Rust-related/RustPython
Merge pull request #1562 from ichyo/wrong-zero-div-optimization
Fix wrong const optimization for "1.0 / 0.0" case
This commit is contained in:
@@ -52,7 +52,7 @@ pub fn operator(buf: &mut impl OptimizationBuffer) {
|
||||
(op!(Multiply), lc!(Float, lhs), lc!(Float, rhs)) => {
|
||||
emitconst!(buf, [lhs_meta, rhs_meta], Float, lhs * rhs)
|
||||
}
|
||||
(op!(Divide), lc!(Float, lhs), lc!(Float, rhs)) => {
|
||||
(op!(Divide), lc!(Float, lhs), lc!(Float, rhs)) if rhs != 0.0 => {
|
||||
emitconst!(buf, [lhs_meta, rhs_meta], Float, lhs / rhs)
|
||||
}
|
||||
(op!(Power), lc!(Float, lhs), lc!(Float, rhs)) => {
|
||||
|
||||
@@ -144,6 +144,10 @@ assert_raises(ZeroDivisionError, lambda: 2 / 0.0)
|
||||
assert_raises(ZeroDivisionError, lambda: 2 // 0.0)
|
||||
assert_raises(ZeroDivisionError, lambda: 2 % 0.0)
|
||||
# assert_raises(ZeroDivisionError, divmod, 2, 0.0)
|
||||
assert_raises(ZeroDivisionError, lambda: 2.0 / 0.0)
|
||||
assert_raises(ZeroDivisionError, lambda: 2.0 // 0.0)
|
||||
assert_raises(ZeroDivisionError, lambda: 2.0 % 0.0)
|
||||
assert_raises(ZeroDivisionError, divmod, 2.0, 0.0)
|
||||
|
||||
assert 1.2.__int__() == 1
|
||||
assert 1.2.__float__() == 1.2
|
||||
|
||||
Reference in New Issue
Block a user