mirror of https://github.com/python/cpython
Issue #13436: Fix a bogus error message when an AST object was passed
an invalid integer value.
This commit is contained in:
parent
3b1acf11e9
commit
58e8761da6
|
@ -486,6 +486,17 @@ class ASTHelpers_Test(unittest.TestCase):
|
||||||
self.assertEqual(ast.literal_eval('10 + 2j'), 10 + 2j)
|
self.assertEqual(ast.literal_eval('10 + 2j'), 10 + 2j)
|
||||||
self.assertEqual(ast.literal_eval('1.5 - 2j'), 1.5 - 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():
|
def test_main():
|
||||||
support.run_unittest(AST_Tests, ASTHelpers_Test)
|
support.run_unittest(AST_Tests, ASTHelpers_Test)
|
||||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.2.3?
|
||||||
Core and Builtins
|
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
|
- Issue #13338: Handle all enumerations in _Py_ANNOTATE_MEMORY_ORDER
|
||||||
to allow compiling extension modules with -Wswitch-enum on gcc.
|
to allow compiling extension modules with -Wswitch-enum on gcc.
|
||||||
Initial patch by Floris Bruynooghe.
|
Initial patch by Floris Bruynooghe.
|
||||||
|
|
|
@ -816,11 +816,7 @@ static int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
if (!PyLong_Check(obj)) {
|
if (!PyLong_Check(obj)) {
|
||||||
PyObject *s = PyObject_Repr(obj);
|
PyErr_Format(PyExc_ValueError, "invalid integer value: %R", obj);
|
||||||
if (s == NULL) return 1;
|
|
||||||
PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s",
|
|
||||||
PyBytes_AS_STRING(s));
|
|
||||||
Py_DECREF(s);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue