summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2011-06-05 03:06:42 (GMT)
committerBenjamin Peterson <benjamin@python.org>2011-06-05 03:06:42 (GMT)
commitf719957d7a1f8ee1545e7b5bd3f59aa24e6db5fc (patch)
treefa3d4773a7bd2a4883a5e7f2ed61b9218fd8fe2a
parent4dfcb1a00dbcbc76fcd152d652d3f83b53b14e45 (diff)
downloadcpython-f719957d7a1f8ee1545e7b5bd3f59aa24e6db5fc.zip
cpython-f719957d7a1f8ee1545e7b5bd3f59aa24e6db5fc.tar.gz
cpython-f719957d7a1f8ee1545e7b5bd3f59aa24e6db5fc.tar.bz2
only clear the parser error if it's set (closes #12264)
-rw-r--r--Lib/test/test_parser.py8
-rw-r--r--Modules/parsermodule.c5
2 files changed, 11 insertions, 2 deletions
diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py
index 020acd5..2b50fca 100644
--- a/Lib/test/test_parser.py
+++ b/Lib/test/test_parser.py
@@ -614,6 +614,13 @@ class STObjectTestCase(unittest.TestCase):
# XXX tests for pickling and unpickling of ST objects should go here
+class OtherParserCase(unittest.TestCase):
+
+ def test_two_args_to_expr(self):
+ # See bug #12264
+ with self.assertRaises(TypeError):
+ parser.expr("a", "b")
+
def test_main():
support.run_unittest(
@@ -622,6 +629,7 @@ def test_main():
CompileTestCase,
ParserStackLimitTestCase,
STObjectTestCase,
+ OtherParserCase,
)
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index e5b4e55..1ffa896 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -581,10 +581,11 @@ parser_do_parse(PyObject *args, PyObject *kw, char *argspec, int type)
if (res)
((PyST_Object *)res)->st_flags.cf_flags = flags & PyCF_MASK;
}
- else
+ else {
PyParser_SetError(&err);
+ PyParser_ClearError(&err);
+ }
}
- PyParser_ClearError(&err);
return (res);
}