Skip to content
Merged
Prev Previous commit
Next Next commit
Merge remote-tracking branch 'upstream/main' into binaryops
  • Loading branch information
iritkatriel committed Jan 21, 2025
commit 8448b4bfd973b9b8bc60b033dcacedc7b073e625
49 changes: 48 additions & 1 deletion Lib/test/test_opcache.py
Original file line number Diff line number Diff line change
Expand Up @@ -1362,6 +1362,54 @@ def binary_op_add_extend():
self.assert_specialized(binary_op_add_extend, "BINARY_OP_EXTEND")
self.assert_no_opcode(binary_op_add_extend, "BINARY_OP")

def binary_op_zero_division():
def compactlong_lhs(arg):
42 / arg
def float_lhs(arg):
42.0 / arg

with self.assertRaises(ZeroDivisionError):
compactlong_lhs(0)
with self.assertRaises(ZeroDivisionError):
compactlong_lhs(0.0)
with self.assertRaises(ZeroDivisionError):
float_lhs(0.0)
with self.assertRaises(ZeroDivisionError):
float_lhs(0)

self.assert_no_opcode(compactlong_lhs, "BINARY_OP_EXTEND")
self.assert_no_opcode(float_lhs, "BINARY_OP_EXTEND")

binary_op_zero_division()

def binary_op_nan():
def compactlong_lhs(arg):
return (
42 + arg,
42 - arg,
42 * arg,
42 / arg,
)
def compactlong_rhs(arg):
return (
arg + 42,
arg - 42,
arg * 2,
arg / 42,
)
nan = float('nan')
self.assertEqual(compactlong_lhs(1.0), (43.0, 41.0, 42.0, 42.0))
for _ in range(100):
self.assertTrue(all(filter(lambda x: x is nan, compactlong_lhs(nan))))
self.assertEqual(compactlong_rhs(42.0), (84.0, 0.0, 84.0, 1.0))
for _ in range(100):
self.assertTrue(all(filter(lambda x: x is nan, compactlong_rhs(nan))))

self.assert_no_opcode(compactlong_lhs, "BINARY_OP_EXTEND")
self.assert_no_opcode(compactlong_rhs, "BINARY_OP_EXTEND")

binary_op_nan()

def binary_op_bitwise_extend():
for _ in range(100):
a, b = 2, 7
Expand All @@ -1385,7 +1433,6 @@ def binary_op_bitwise_extend():
self.assert_specialized(binary_op_bitwise_extend, "BINARY_OP_EXTEND")
self.assert_no_opcode(binary_op_bitwise_extend, "BINARY_OP")


@cpython_only
@requires_specialization_ft
def test_load_super_attr(self):
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.