summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>2011-11-22 20:51:55 (GMT)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>2011-11-22 20:51:55 (GMT)
commit58e8761da6d11653288b76d2dec6417000a20e74 (patch)
tree6b4ef5c1a8ca1329724cffe07ff34fb5282ba845
parent3b1acf11e98bceec44c28d9e6d665e68227d8bf2 (diff)
downloadcpython-58e8761da6d11653288b76d2dec6417000a20e74.zip
cpython-58e8761da6d11653288b76d2dec6417000a20e74.tar.gz
cpython-58e8761da6d11653288b76d2dec6417000a20e74.tar.bz2
Issue #13436: Fix a bogus error message when an AST object was passed
an invalid integer value.
-rw-r--r--Lib/test/test_ast.py11
-rw-r--r--Misc/NEWS3
-rwxr-xr-xParser/asdl_c.py6
3 files changed, 15 insertions, 5 deletions
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index 2ba3ea5..be9f05e 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -486,6 +486,17 @@ class ASTHelpers_Test(unittest.TestCase):
self.assertEqual(ast.literal_eval('10 + 2j'), 10 + 2j)
self.assertEqual(ast.literal_eval('1.5 - 2j'), 1.5 - 2j)
+ def test_bad_integer(self):
+ # issue13436: Bad error message with invalid numeric values
+ body = [ast.ImportFrom(module='time',
+ names=[ast.alias(name='sleep')],
+ level=None,
+ lineno=None, col_offset=None)]
+ mod = ast.Module(body)
+ with self.assertRaises(ValueError) as cm:
+ compile(mod, 'test', 'exec')
+ self.assertIn("invalid integer value: None", str(cm.exception))
+
def test_main():
support.run_unittest(AST_Tests, ASTHelpers_Test)
diff --git a/Misc/NEWS b/Misc/NEWS
index 4e43b45..0b228ef 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@ What's New in Python 3.2.3?
Core and Builtins
-----------------
+- Issue #13436: Fix a bogus error message when an AST object was passed
+ an invalid integer value.
+
- Issue #13338: Handle all enumerations in _Py_ANNOTATE_MEMORY_ORDER
to allow compiling extension modules with -Wswitch-enum on gcc.
Initial patch by Floris Bruynooghe.
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 249e18d..b85c07e 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -816,11 +816,7 @@ static int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
{
int i;
if (!PyLong_Check(obj)) {
- PyObject *s = PyObject_Repr(obj);
- if (s == NULL) return 1;
- PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s",
- PyBytes_AS_STRING(s));
- Py_DECREF(s);
+ PyErr_Format(PyExc_ValueError, "invalid integer value: %R", obj);
return 1;
}