mirror of https://github.com/python/cpython
Issue #26146: enhance ast.Constant error message
Mention the name of the invalid type in error message of AST validation for constants. Suggestion made by Joseph Jevnik on a review.
This commit is contained in:
parent
25219f596a
commit
be59d1489b
|
@ -951,6 +951,12 @@ class ConstantTests(unittest.TestCase):
|
|||
exec(code, ns)
|
||||
return ns['x']
|
||||
|
||||
def test_validation(self):
|
||||
with self.assertRaises(TypeError) as cm:
|
||||
self.compile_constant([1, 2, 3])
|
||||
self.assertEqual(str(cm.exception),
|
||||
"got an invalid type in Constant: list")
|
||||
|
||||
def test_singletons(self):
|
||||
for const in (None, False, True, Ellipsis, b'', frozenset()):
|
||||
with self.subTest(const=const):
|
||||
|
|
|
@ -288,7 +288,9 @@ validate_expr(expr_ty exp, expr_context_ty ctx)
|
|||
validate_keywords(exp->v.Call.keywords);
|
||||
case Constant_kind:
|
||||
if (!validate_constant(exp->v.Constant.value)) {
|
||||
PyErr_SetString(PyExc_TypeError, "invalid type in Constant");
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"got an invalid type in Constant: %s",
|
||||
Py_TYPE(exp->v.Constant.value)->tp_name);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
|
|
Loading…
Reference in New Issue