Issue #5211: Complete removal of implicit coercions for the complex
type. Coercion for arithmetic operations was already removed in
r78280, but that commit didn't remove coercion for rich comparisons.
diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py
index fc47b23..f27593e 100644
--- a/Lib/test/test_complex.py
+++ b/Lib/test/test_complex.py
@@ -115,6 +115,19 @@
def test_coerce(self):
self.assertRaises(OverflowError, complex.__coerce__, 1+1j, 1L<<10000)
+ def test_no_implicit_coerce(self):
+ # Python 2.7 removed implicit coercion from the complex type
+ class A(object):
+ def __coerce__(self, other):
+ raise RuntimeError
+ __hash__ = None
+ def __cmp__(self, other):
+ return -1
+
+ a = A()
+ self.assertRaises(TypeError, lambda: a + 2.0j)
+ self.assertTrue(a < 2.0j)
+
def test_richcompare(self):
self.assertRaises(OverflowError, complex.__eq__, 1+1j, 1L<<10000)
self.assertEqual(complex.__lt__(1+1j, None), NotImplemented)