From 18a67ba0bd6d23da454e975f814dad50d7e09cdb Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 21 Aug 2006 18:27:07 +0000 Subject: [PATCH] Fix comparing complex to non-complex numbers. --- BROKEN | 28 ---------------------------- Objects/complexobject.c | 14 ++++---------- 2 files changed, 4 insertions(+), 38 deletions(-) diff --git a/BROKEN b/BROKEN index 3468e43086e..6d1b4fe6159 100644 --- a/BROKEN +++ b/BROKEN @@ -110,31 +110,3 @@ Traceback (most recent call last): File "../Lib/test/test_set.py", line 291, in test_remove self.assert_(self.thetype(self.word) in s) AssertionError - -//////////////////////////////////////////////////////////////////////// -test_compare -//////////////////////////////////////////////////////////////////////// -test test_compare failed -- Traceback (most recent call last): - File "/Users/nnorwitz/build/python/py3k.2/Lib/test/test_compare.py", line 28, in test_comparisons - self.assertEqual(a, b) -AssertionError: 2 != (2+0j) - -//////////////////////////////////////////////////////////////////////// -test_complex -//////////////////////////////////////////////////////////////////////// -====================================================================== -FAIL: test_pow (test.test_complex.ComplexTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/Users/nnorwitz/build/python/py3k.2/Lib/test/test_complex.py", line 130, in test_pow - self.assertEqual(a ** 0j, 1) -AssertionError: (1+0j) != 1 - -====================================================================== -FAIL: test_richcompare (test.test_complex.ComplexTest) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/Users/nnorwitz/build/python/py3k.2/Lib/test/test_complex.py", line 96, in test_richcompare - self.assertRaises(OverflowError, complex.__eq__, 1+1j, 1L<<10000) -AssertionError: OverflowError not raised - diff --git a/Objects/complexobject.c b/Objects/complexobject.c index e081256d81b..2713e3eeec1 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -576,19 +576,13 @@ complex_nonzero(PyComplexObject *v) static PyObject * complex_richcompare(PyObject *v, PyObject *w, int op) { - Py_complex i, j; PyObject *res; - - /* Make sure both arguments are complex. */ - if (!(PyComplex_Check(v) && PyComplex_Check(w))) { - Py_INCREF(Py_NotImplemented); - return Py_NotImplemented; - } - - i = ((PyComplexObject *)v)->cval; - j = ((PyComplexObject *)w)->cval; + Py_complex i, j; + TO_COMPLEX(v, i); + TO_COMPLEX(w, j); if (op != Py_EQ && op != Py_NE) { + /* XXX Should eventually return NotImplemented */ PyErr_SetString(PyExc_TypeError, "no ordering relation is defined for complex numbers"); return NULL;