summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorEzio Melotti <ezio.melotti@gmail.com>2013-11-07 17:18:34 (GMT)
committerEzio Melotti <ezio.melotti@gmail.com>2013-11-07 17:18:34 (GMT)
commita5b9599538083468cffee3c052e15dd541c4bbd5 (patch)
tree62ec19c7e876881fccd49e0eada11c08ea461806 /Objects
parentd0786a1a5036c06770f1c958323387fd682e789e (diff)
downloadcpython-a5b9599538083468cffee3c052e15dd541c4bbd5.zip
cpython-a5b9599538083468cffee3c052e15dd541c4bbd5.tar.gz
cpython-a5b9599538083468cffee3c052e15dd541c4bbd5.tar.bz2
#17080: improve error message of float/complex when the wrong type is passed.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/complexobject.c10
-rw-r--r--Objects/floatobject.c5
2 files changed, 9 insertions, 6 deletions
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index 64e7b44..60a388f 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -773,8 +773,9 @@ complex_subtype_from_string(PyTypeObject *type, PyObject *v)
goto error;
}
else if (PyObject_AsCharBuffer(v, &s, &len)) {
- PyErr_SetString(PyExc_TypeError,
- "complex() argument must be a string or a number");
+ PyErr_Format(PyExc_TypeError,
+ "complex() argument must be a string or a number, not '%.200s'",
+ Py_TYPE(v)->tp_name);
return NULL;
}
@@ -953,8 +954,9 @@ complex_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
nbi = i->ob_type->tp_as_number;
if (nbr == NULL || nbr->nb_float == NULL ||
((i != NULL) && (nbi == NULL || nbi->nb_float == NULL))) {
- PyErr_SetString(PyExc_TypeError,
- "complex() argument must be a string or a number");
+ PyErr_Format(PyExc_TypeError,
+ "complex() argument must be a string or a number, not '%.200s'",
+ Py_TYPE(r)->tp_name);
if (own_r) {
Py_DECREF(r);
}
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 9771063..abea975 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -144,8 +144,9 @@ PyFloat_FromString(PyObject *v)
}
}
else if (PyObject_AsCharBuffer(v, &s, &len)) {
- PyErr_SetString(PyExc_TypeError,
- "float() argument must be a string or a number");
+ PyErr_Format(PyExc_TypeError,
+ "float() argument must be a string or a number, not '%.200s'",
+ Py_TYPE(v)->tp_name);
return NULL;
}
last = s + len;