mirror of https://github.com/python/cpython
Fix closes issue12471 - wrong TypeError message when '%i' format spec was used.
This commit is contained in:
parent
a55007a620
commit
9ebe08d2f6
|
@ -788,6 +788,7 @@ class UnicodeTest(string_tests.CommonTest,
|
||||||
self.assertEqual('%c' % '\U00021483', '\U00021483')
|
self.assertEqual('%c' % '\U00021483', '\U00021483')
|
||||||
self.assertRaises(TypeError, "%c".__mod__, "aa")
|
self.assertRaises(TypeError, "%c".__mod__, "aa")
|
||||||
self.assertRaises(ValueError, "%.1\u1032f".__mod__, (1.0/3))
|
self.assertRaises(ValueError, "%.1\u1032f".__mod__, (1.0/3))
|
||||||
|
self.assertRaises(TypeError, "%i".__mod__, "aa")
|
||||||
|
|
||||||
# formatting jobs delegated from the string implementation:
|
# formatting jobs delegated from the string implementation:
|
||||||
self.assertEqual('...%(foo)s...' % {'foo':"abc"}, '...abc...')
|
self.assertEqual('...%(foo)s...' % {'foo':"abc"}, '...abc...')
|
||||||
|
|
|
@ -9689,8 +9689,6 @@ PyObject *PyUnicode_Format(PyObject *format,
|
||||||
case 'o':
|
case 'o':
|
||||||
case 'x':
|
case 'x':
|
||||||
case 'X':
|
case 'X':
|
||||||
if (c == 'i')
|
|
||||||
c = 'd';
|
|
||||||
isnumok = 0;
|
isnumok = 0;
|
||||||
if (PyNumber_Check(v)) {
|
if (PyNumber_Check(v)) {
|
||||||
PyObject *iobj=NULL;
|
PyObject *iobj=NULL;
|
||||||
|
@ -9705,7 +9703,7 @@ PyObject *PyUnicode_Format(PyObject *format,
|
||||||
if (iobj!=NULL) {
|
if (iobj!=NULL) {
|
||||||
if (PyLong_Check(iobj)) {
|
if (PyLong_Check(iobj)) {
|
||||||
isnumok = 1;
|
isnumok = 1;
|
||||||
temp = formatlong(iobj, flags, prec, c);
|
temp = formatlong(iobj, flags, prec, (c == 'i'? 'd': c));
|
||||||
Py_DECREF(iobj);
|
Py_DECREF(iobj);
|
||||||
if (!temp)
|
if (!temp)
|
||||||
goto onError;
|
goto onError;
|
||||||
|
|
Loading…
Reference in New Issue