summaryrefslogtreecommitdiffstats
path: root/Parser
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2008-03-31 04:20:05 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2008-03-31 04:20:05 (GMT)
commitdb4115ffc063f20da2c6078bb93187ee8753d4ec (patch)
treeaefc108acfa75b71a627cb7fa3c0cfd6428a8e07 /Parser
parent9367c78c84efaa3f2d6797ca7e18dc78e838c531 (diff)
downloadcpython-db4115ffc063f20da2c6078bb93187ee8753d4ec.zip
cpython-db4115ffc063f20da2c6078bb93187ee8753d4ec.tar.gz
cpython-db4115ffc063f20da2c6078bb93187ee8753d4ec.tar.bz2
Merged revisions 62039-62042 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r62039 | georg.brandl | 2008-03-29 06:24:23 -0700 (Sat, 29 Mar 2008) | 3 lines Properly check for consistency with the third argument of compile() when compiling an AST node. ........ r62040 | amaury.forgeotdarc | 2008-03-29 06:47:05 -0700 (Sat, 29 Mar 2008) | 5 lines The buildbot "x86 W2k8 trunk" seems to hang in test_socket. http://www.python.org/dev/buildbot/trunk/x86%20W2k8%20trunk/builds/255/step-test/0 Temporarily increase verbosity of this test. ........ r62042 | amaury.forgeotdarc | 2008-03-29 07:53:05 -0700 (Sat, 29 Mar 2008) | 3 lines Still investigating on the hanging test_socket. the test itself doesn't do anything on windows, focus on setUp and tearDown. ........
Diffstat (limited to 'Parser')
-rwxr-xr-xParser/asdl_c.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 94e04b1..1b5e18f 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -934,13 +934,20 @@ PyObject* PyAST_mod2obj(mod_ty t)
return ast2obj_mod(t);
}
-mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena)
+/* mode is 0 for "exec", 1 for "eval" and 2 for "single" input */
+mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
{
mod_ty res;
+ PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
+ (PyObject*)Interactive_type};
+ char *req_name[] = {"Module", "Expression", "Interactive"};
+ assert(0 <= mode && mode <= 2);
+
init_types();
- if (!PyObject_IsInstance(ast, (PyObject*)mod_type)) {
- PyErr_SetString(PyExc_TypeError, "expected either Module, Interactive "
- "or Expression node");
+
+ if (!PyObject_IsInstance(ast, req_type[mode])) {
+ PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
+ req_name[mode], Py_TYPE(ast)->tp_name);
return NULL;
}
if (obj2ast_mod(ast, &res, arena) != 0)
@@ -997,8 +1004,8 @@ def main(srcfile):
)
c.visit(mod)
f.write("PyObject* PyAST_mod2obj(mod_ty t);\n")
- print >>f, "mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena);"
- print >>f, "int PyAST_Check(PyObject* obj);"
+ f.write("mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);\n")
+ f.write("int PyAST_Check(PyObject* obj);\n")
f.close()
if SRC_DIR: