diff options
Diffstat (limited to 'Python/Python-ast.c')
-rw-r--r-- | Python/Python-ast.c | 1257 |
1 files changed, 526 insertions, 731 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 2c09f96..dcfde3c 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -2,7 +2,7 @@ /* - __version__ 82163. + __version__ 82160. This module must be committed separately after each AST grammar change; The __version__ number is set to the revision number of the commit @@ -43,15 +43,11 @@ static char *FunctionDef_fields[]={ "args", "body", "decorator_list", - "returns", }; static PyTypeObject *ClassDef_type; static char *ClassDef_fields[]={ "name", "bases", - "keywords", - "starargs", - "kwargs", "body", "decorator_list", }; @@ -74,6 +70,12 @@ static char *AugAssign_fields[]={ "op", "value", }; +static PyTypeObject *Print_type; +static char *Print_fields[]={ + "dest", + "values", + "nl", +}; static PyTypeObject *For_type; static char *For_fields[]={ "target", @@ -101,8 +103,9 @@ static char *With_fields[]={ }; static PyTypeObject *Raise_type; static char *Raise_fields[]={ - "exc", - "cause", + "type", + "inst", + "tback", }; static PyTypeObject *TryExcept_type; static char *TryExcept_fields[]={ @@ -130,14 +133,16 @@ static char *ImportFrom_fields[]={ "names", "level", }; +static PyTypeObject *Exec_type; +static char *Exec_fields[]={ + "body", + "globals", + "locals", +}; static PyTypeObject *Global_type; static char *Global_fields[]={ "names", }; -static PyTypeObject *Nonlocal_type; -static char *Nonlocal_fields[]={ - "names", -}; static PyTypeObject *Expr_type; static char *Expr_fields[]={ "value", @@ -226,6 +231,10 @@ static char *Call_fields[]={ "starargs", "kwargs", }; +static PyTypeObject *Repr_type; +static char *Repr_fields[]={ + "value", +}; static PyTypeObject *Num_type; static char *Num_fields[]={ "n", @@ -234,11 +243,6 @@ static PyTypeObject *Str_type; static char *Str_fields[]={ "s", }; -static PyTypeObject *Bytes_type; -static char *Bytes_fields[]={ - "s", -}; -static PyTypeObject *Ellipsis_type; static PyTypeObject *Attribute_type; static char *Attribute_fields[]={ "value", @@ -251,11 +255,6 @@ static char *Subscript_fields[]={ "slice", "ctx", }; -static PyTypeObject *Starred_type; -static char *Starred_fields[]={ - "value", - "ctx", -}; static PyTypeObject *Name_type; static char *Name_fields[]={ "id", @@ -283,6 +282,7 @@ static PyTypeObject *AugStore_type; static PyTypeObject *Param_type; static PyTypeObject *slice_type; static PyObject* ast2obj_slice(void*); +static PyTypeObject *Ellipsis_type; static PyTypeObject *Slice_type; static char *Slice_fields[]={ "lower", @@ -367,18 +367,8 @@ static PyObject* ast2obj_arguments(void*); static char *arguments_fields[]={ "args", "vararg", - "varargannotation", - "kwonlyargs", "kwarg", - "kwargannotation", "defaults", - "kw_defaults", -}; -static PyTypeObject *arg_type; -static PyObject* ast2obj_arg(void*); -static char *arg_fields[]={ - "arg", - "annotation", }; static PyTypeObject *keyword_type; static PyObject* ast2obj_keyword(void*); @@ -479,7 +469,7 @@ static PyTypeObject AST_type = { 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_reserved */ + 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -520,7 +510,7 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int fnames = PyTuple_New(num_fields); if (!fnames) return NULL; for (i = 0; i < num_fields; i++) { - PyObject *field = PyUnicode_FromString(fields[i]); + PyObject *field = PyString_FromString(fields[i]); if (!field) { Py_DECREF(fnames); return NULL; @@ -540,7 +530,7 @@ static int add_attributes(PyTypeObject* type, char**attrs, int num_fields) if (!l) return 0; for (i = 0; i < num_fields; i++) { - s = PyUnicode_FromString(attrs[i]); + s = PyString_FromString(attrs[i]); if (!s) { Py_DECREF(l); return 0; @@ -581,10 +571,14 @@ static PyObject* ast2obj_object(void *o) } #define ast2obj_identifier ast2obj_object #define ast2obj_string ast2obj_object +static PyObject* ast2obj_bool(bool b) +{ + return PyBool_FromLong(b); +} static PyObject* ast2obj_int(long b) { - return PyLong_FromLong(b); + return PyInt_FromLong(b); } /* Conversion Python -> AST */ @@ -600,17 +594,34 @@ static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena) return 0; } -#define obj2ast_identifier obj2ast_object -#define obj2ast_string obj2ast_object +static int obj2ast_identifier(PyObject* obj, PyObject** out, PyArena* arena) +{ + if (!PyString_CheckExact(obj) && obj != Py_None) { + PyErr_Format(PyExc_TypeError, + "AST identifier must be of type str"); + return 1; + } + return obj2ast_object(obj, out, arena); +} + +static int obj2ast_string(PyObject* obj, PyObject** out, PyArena* arena) +{ + if (!PyString_CheckExact(obj) && !PyUnicode_CheckExact(obj)) { + PyErr_SetString(PyExc_TypeError, + "AST string must be of type str or unicode"); + return 1; + } + return obj2ast_object(obj, out, arena); +} static int obj2ast_int(PyObject* obj, int* out, PyArena* arena) { int i; - if (!PyLong_Check(obj)) { + if (!PyInt_Check(obj) && !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)); + PyString_AS_STRING(s)); Py_DECREF(s); return 1; } @@ -622,6 +633,21 @@ static int obj2ast_int(PyObject* obj, int* out, PyArena* arena) return 0; } +static int obj2ast_bool(PyObject* obj, bool* out, PyArena* arena) +{ + if (!PyBool_Check(obj)) { + PyObject *s = PyObject_Repr(obj); + if (s == NULL) return 1; + PyErr_Format(PyExc_ValueError, "invalid boolean value: %.400s", + PyString_AS_STRING(s)); + Py_DECREF(s); + return 1; + } + + *out = (obj == Py_True); + return 0; +} + static int add_ast_fields(void) { PyObject *empty_tuple, *d; @@ -662,9 +688,9 @@ static int init_types(void) if (!stmt_type) return 0; if (!add_attributes(stmt_type, stmt_attributes, 2)) return 0; FunctionDef_type = make_type("FunctionDef", stmt_type, - FunctionDef_fields, 5); + FunctionDef_fields, 4); if (!FunctionDef_type) return 0; - ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 7); + ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 4); if (!ClassDef_type) return 0; Return_type = make_type("Return", stmt_type, Return_fields, 1); if (!Return_type) return 0; @@ -674,6 +700,8 @@ static int init_types(void) if (!Assign_type) return 0; AugAssign_type = make_type("AugAssign", stmt_type, AugAssign_fields, 3); if (!AugAssign_type) return 0; + Print_type = make_type("Print", stmt_type, Print_fields, 3); + if (!Print_type) return 0; For_type = make_type("For", stmt_type, For_fields, 4); if (!For_type) return 0; While_type = make_type("While", stmt_type, While_fields, 3); @@ -682,7 +710,7 @@ static int init_types(void) if (!If_type) return 0; With_type = make_type("With", stmt_type, With_fields, 3); if (!With_type) return 0; - Raise_type = make_type("Raise", stmt_type, Raise_fields, 2); + Raise_type = make_type("Raise", stmt_type, Raise_fields, 3); if (!Raise_type) return 0; TryExcept_type = make_type("TryExcept", stmt_type, TryExcept_fields, 3); if (!TryExcept_type) return 0; @@ -696,10 +724,10 @@ static int init_types(void) ImportFrom_type = make_type("ImportFrom", stmt_type, ImportFrom_fields, 3); if (!ImportFrom_type) return 0; + Exec_type = make_type("Exec", stmt_type, Exec_fields, 3); + if (!Exec_type) return 0; Global_type = make_type("Global", stmt_type, Global_fields, 1); if (!Global_type) return 0; - Nonlocal_type = make_type("Nonlocal", stmt_type, Nonlocal_fields, 1); - if (!Nonlocal_type) return 0; Expr_type = make_type("Expr", stmt_type, Expr_fields, 1); if (!Expr_type) return 0; Pass_type = make_type("Pass", stmt_type, NULL, 0); @@ -740,20 +768,16 @@ static int init_types(void) if (!Compare_type) return 0; Call_type = make_type("Call", expr_type, Call_fields, 5); if (!Call_type) return 0; + Repr_type = make_type("Repr", expr_type, Repr_fields, 1); + if (!Repr_type) return 0; Num_type = make_type("Num", expr_type, Num_fields, 1); if (!Num_type) return 0; Str_type = make_type("Str", expr_type, Str_fields, 1); if (!Str_type) return 0; - Bytes_type = make_type("Bytes", expr_type, Bytes_fields, 1); - if (!Bytes_type) return 0; - Ellipsis_type = make_type("Ellipsis", expr_type, NULL, 0); - if (!Ellipsis_type) return 0; Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3); if (!Attribute_type) return 0; Subscript_type = make_type("Subscript", expr_type, Subscript_fields, 3); if (!Subscript_type) return 0; - Starred_type = make_type("Starred", expr_type, Starred_fields, 2); - if (!Starred_type) return 0; Name_type = make_type("Name", expr_type, Name_fields, 2); if (!Name_type) return 0; List_type = make_type("List", expr_type, List_fields, 2); @@ -790,6 +814,8 @@ static int init_types(void) slice_type = make_type("slice", &AST_type, NULL, 0); if (!slice_type) return 0; if (!add_attributes(slice_type, NULL, 0)) return 0; + Ellipsis_type = make_type("Ellipsis", slice_type, NULL, 0); + if (!Ellipsis_type) return 0; Slice_type = make_type("Slice", slice_type, Slice_fields, 3); if (!Slice_type) return 0; ExtSlice_type = make_type("ExtSlice", slice_type, ExtSlice_fields, 1); @@ -930,10 +956,8 @@ static int init_types(void) ExceptHandler_type = make_type("ExceptHandler", excepthandler_type, ExceptHandler_fields, 3); if (!ExceptHandler_type) return 0; - arguments_type = make_type("arguments", &AST_type, arguments_fields, 8); + arguments_type = make_type("arguments", &AST_type, arguments_fields, 4); if (!arguments_type) return 0; - arg_type = make_type("arg", &AST_type, arg_fields, 2); - if (!arg_type) return 0; keyword_type = make_type("keyword", &AST_type, keyword_fields, 2); if (!keyword_type) return 0; alias_type = make_type("alias", &AST_type, alias_fields, 2); @@ -957,7 +981,6 @@ static int obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* static int obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena); static int obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena); -static int obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena); static int obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena); static int obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena); @@ -1016,8 +1039,7 @@ Suite(asdl_seq * body, PyArena *arena) stmt_ty FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * - decorator_list, expr_ty returns, int lineno, int col_offset, - PyArena *arena) + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -1038,16 +1060,14 @@ FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * p->v.FunctionDef.args = args; p->v.FunctionDef.body = body; p->v.FunctionDef.decorator_list = decorator_list; - p->v.FunctionDef.returns = returns; p->lineno = lineno; p->col_offset = col_offset; return p; } stmt_ty -ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, expr_ty - starargs, expr_ty kwargs, asdl_seq * body, asdl_seq * decorator_list, - int lineno, int col_offset, PyArena *arena) +ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, asdl_seq * + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -1061,9 +1081,6 @@ ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, expr_ty p->kind = ClassDef_kind; p->v.ClassDef.name = name; p->v.ClassDef.bases = bases; - p->v.ClassDef.keywords = keywords; - p->v.ClassDef.starargs = starargs; - p->v.ClassDef.kwargs = kwargs; p->v.ClassDef.body = body; p->v.ClassDef.decorator_list = decorator_list; p->lineno = lineno; @@ -1153,6 +1170,23 @@ AugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno, int } stmt_ty +Print(expr_ty dest, asdl_seq * values, bool nl, int lineno, int col_offset, + PyArena *arena) +{ + stmt_ty p; + p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = Print_kind; + p->v.Print.dest = dest; + p->v.Print.values = values; + p->v.Print.nl = nl; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + +stmt_ty For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int lineno, int col_offset, PyArena *arena) { @@ -1247,15 +1281,17 @@ With(expr_ty context_expr, expr_ty optional_vars, asdl_seq * body, int lineno, } stmt_ty -Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, PyArena *arena) +Raise(expr_ty type, expr_ty inst, expr_ty tback, int lineno, int col_offset, + PyArena *arena) { stmt_ty p; p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; p->kind = Raise_kind; - p->v.Raise.exc = exc; - p->v.Raise.cause = cause; + p->v.Raise.type = type; + p->v.Raise.inst = inst; + p->v.Raise.tback = tback; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -1346,28 +1382,36 @@ ImportFrom(identifier module, asdl_seq * names, int level, int lineno, int } stmt_ty -Global(asdl_seq * names, int lineno, int col_offset, PyArena *arena) +Exec(expr_ty body, expr_ty globals, expr_ty locals, int lineno, int col_offset, + PyArena *arena) { stmt_ty p; + if (!body) { + PyErr_SetString(PyExc_ValueError, + "field body is required for Exec"); + return NULL; + } p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; - p->kind = Global_kind; - p->v.Global.names = names; + p->kind = Exec_kind; + p->v.Exec.body = body; + p->v.Exec.globals = globals; + p->v.Exec.locals = locals; p->lineno = lineno; p->col_offset = col_offset; return p; } stmt_ty -Nonlocal(asdl_seq * names, int lineno, int col_offset, PyArena *arena) +Global(asdl_seq * names, int lineno, int col_offset, PyArena *arena) { stmt_ty p; p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; - p->kind = Nonlocal_kind; - p->v.Nonlocal.names = names; + p->kind = Global_kind; + p->v.Global.names = names; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -1749,70 +1793,57 @@ Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs, } expr_ty -Num(object n, int lineno, int col_offset, PyArena *arena) +Repr(expr_ty value, int lineno, int col_offset, PyArena *arena) { expr_ty p; - if (!n) { + if (!value) { PyErr_SetString(PyExc_ValueError, - "field n is required for Num"); + "field value is required for Repr"); return NULL; } p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; - p->kind = Num_kind; - p->v.Num.n = n; + p->kind = Repr_kind; + p->v.Repr.value = value; p->lineno = lineno; p->col_offset = col_offset; return p; } expr_ty -Str(string s, int lineno, int col_offset, PyArena *arena) +Num(object n, int lineno, int col_offset, PyArena *arena) { expr_ty p; - if (!s) { + if (!n) { PyErr_SetString(PyExc_ValueError, - "field s is required for Str"); + "field n is required for Num"); return NULL; } p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; - p->kind = Str_kind; - p->v.Str.s = s; + p->kind = Num_kind; + p->v.Num.n = n; p->lineno = lineno; p->col_offset = col_offset; return p; } expr_ty -Bytes(string s, int lineno, int col_offset, PyArena *arena) +Str(string s, int lineno, int col_offset, PyArena *arena) { expr_ty p; if (!s) { PyErr_SetString(PyExc_ValueError, - "field s is required for Bytes"); + "field s is required for Str"); return NULL; } p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; - p->kind = Bytes_kind; - p->v.Bytes.s = s; - p->lineno = lineno; - p->col_offset = col_offset; - return p; -} - -expr_ty -Ellipsis(int lineno, int col_offset, PyArena *arena) -{ - expr_ty p; - p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); - if (!p) - return NULL; - p->kind = Ellipsis_kind; + p->kind = Str_kind; + p->v.Str.s = s; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -1883,32 +1914,6 @@ Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int lineno, int } expr_ty -Starred(expr_ty value, expr_context_ty ctx, int lineno, int col_offset, PyArena - *arena) -{ - expr_ty p; - if (!value) { - PyErr_SetString(PyExc_ValueError, - "field value is required for Starred"); - return NULL; - } - if (!ctx) { - PyErr_SetString(PyExc_ValueError, - "field ctx is required for Starred"); - return NULL; - } - p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); - if (!p) - return NULL; - p->kind = Starred_kind; - p->v.Starred.value = value; - p->v.Starred.ctx = ctx; - p->lineno = lineno; - p->col_offset = col_offset; - return p; -} - -expr_ty Name(identifier id, expr_context_ty ctx, int lineno, int col_offset, PyArena *arena) { @@ -1977,6 +1982,17 @@ Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int col_offset, PyArena } slice_ty +Ellipsis(PyArena *arena) +{ + slice_ty p; + p = (slice_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = Ellipsis_kind; + return p; +} + +slice_ty Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena) { slice_ty p; @@ -2043,7 +2059,7 @@ comprehension(expr_ty target, expr_ty iter, asdl_seq * ifs, PyArena *arena) } excepthandler_ty -ExceptHandler(expr_ty type, identifier name, asdl_seq * body, int lineno, int +ExceptHandler(expr_ty type, expr_ty name, asdl_seq * body, int lineno, int col_offset, PyArena *arena) { excepthandler_ty p; @@ -2060,9 +2076,8 @@ ExceptHandler(expr_ty type, identifier name, asdl_seq * body, int lineno, int } arguments_ty -arguments(asdl_seq * args, identifier vararg, expr_ty varargannotation, - asdl_seq * kwonlyargs, identifier kwarg, expr_ty kwargannotation, - asdl_seq * defaults, asdl_seq * kw_defaults, PyArena *arena) +arguments(asdl_seq * args, identifier vararg, identifier kwarg, asdl_seq * + defaults, PyArena *arena) { arguments_ty p; p = (arguments_ty)PyArena_Malloc(arena, sizeof(*p)); @@ -2070,29 +2085,8 @@ arguments(asdl_seq * args, identifier vararg, expr_ty varargannotation, return NULL; p->args = args; p->vararg = vararg; - p->varargannotation = varargannotation; - p->kwonlyargs = kwonlyargs; p->kwarg = kwarg; - p->kwargannotation = kwargannotation; p->defaults = defaults; - p->kw_defaults = kw_defaults; - return p; -} - -arg_ty -arg(identifier arg, expr_ty annotation, PyArena *arena) -{ - arg_ty p; - if (!arg) { - PyErr_SetString(PyExc_ValueError, - "field arg is required for arg"); - return NULL; - } - p = (arg_ty)PyArena_Malloc(arena, sizeof(*p)); - if (!p) - return NULL; - p->arg = arg; - p->annotation = annotation; return p; } @@ -2227,11 +2221,6 @@ ast2obj_stmt(void* _o) -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(o->v.FunctionDef.returns); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "returns", value) == -1) - goto failed; - Py_DECREF(value); break; case ClassDef_kind: result = PyType_GenericNew(ClassDef_type, NULL, NULL); @@ -2246,21 +2235,6 @@ ast2obj_stmt(void* _o) if (PyObject_SetAttrString(result, "bases", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(o->v.ClassDef.keywords, ast2obj_keyword); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "keywords", value) == -1) - goto failed; - Py_DECREF(value); - value = ast2obj_expr(o->v.ClassDef.starargs); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "starargs", value) == -1) - goto failed; - Py_DECREF(value); - value = ast2obj_expr(o->v.ClassDef.kwargs); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "kwargs", value) == -1) - goto failed; - Py_DECREF(value); value = ast2obj_list(o->v.ClassDef.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttrString(result, "body", value) == -1) @@ -2325,6 +2299,25 @@ ast2obj_stmt(void* _o) goto failed; Py_DECREF(value); break; + case Print_kind: + result = PyType_GenericNew(Print_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_expr(o->v.Print.dest); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "dest", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.Print.values, ast2obj_expr); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "values", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_bool(o->v.Print.nl); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "nl", value) == -1) + goto failed; + Py_DECREF(value); + break; case For_kind: result = PyType_GenericNew(For_type, NULL, NULL); if (!result) goto failed; @@ -2410,14 +2403,19 @@ ast2obj_stmt(void* _o) case Raise_kind: result = PyType_GenericNew(Raise_type, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(o->v.Raise.exc); + value = ast2obj_expr(o->v.Raise.type); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "type", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.Raise.inst); if (!value) goto failed; - if (PyObject_SetAttrString(result, "exc", value) == -1) + if (PyObject_SetAttrString(result, "inst", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(o->v.Raise.cause); + value = ast2obj_expr(o->v.Raise.tback); if (!value) goto failed; - if (PyObject_SetAttrString(result, "cause", value) == -1) + if (PyObject_SetAttrString(result, "tback", value) == -1) goto failed; Py_DECREF(value); break; @@ -2497,19 +2495,29 @@ ast2obj_stmt(void* _o) goto failed; Py_DECREF(value); break; - case Global_kind: - result = PyType_GenericNew(Global_type, NULL, NULL); + case Exec_kind: + result = PyType_GenericNew(Exec_type, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(o->v.Global.names, ast2obj_identifier); + value = ast2obj_expr(o->v.Exec.body); if (!value) goto failed; - if (PyObject_SetAttrString(result, "names", value) == -1) + if (PyObject_SetAttrString(result, "body", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.Exec.globals); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "globals", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.Exec.locals); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "locals", value) == -1) goto failed; Py_DECREF(value); break; - case Nonlocal_kind: - result = PyType_GenericNew(Nonlocal_type, NULL, NULL); + case Global_kind: + result = PyType_GenericNew(Global_type, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(o->v.Nonlocal.names, ast2obj_identifier); + value = ast2obj_list(o->v.Global.names, ast2obj_identifier); if (!value) goto failed; if (PyObject_SetAttrString(result, "names", value) == -1) goto failed; @@ -2796,6 +2804,15 @@ ast2obj_expr(void* _o) goto failed; Py_DECREF(value); break; + case Repr_kind: + result = PyType_GenericNew(Repr_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_expr(o->v.Repr.value); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "value", value) == -1) + goto failed; + Py_DECREF(value); + break; case Num_kind: result = PyType_GenericNew(Num_type, NULL, NULL); if (!result) goto failed; @@ -2814,19 +2831,6 @@ ast2obj_expr(void* _o) goto failed; Py_DECREF(value); break; - case Bytes_kind: - result = PyType_GenericNew(Bytes_type, NULL, NULL); - if (!result) goto failed; - value = ast2obj_string(o->v.Bytes.s); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "s", value) == -1) - goto failed; - Py_DECREF(value); - break; - case Ellipsis_kind: - result = PyType_GenericNew(Ellipsis_type, NULL, NULL); - if (!result) goto failed; - break; case Attribute_kind: result = PyType_GenericNew(Attribute_type, NULL, NULL); if (!result) goto failed; @@ -2865,20 +2869,6 @@ ast2obj_expr(void* _o) goto failed; Py_DECREF(value); break; - case Starred_kind: - result = PyType_GenericNew(Starred_type, NULL, NULL); - if (!result) goto failed; - value = ast2obj_expr(o->v.Starred.value); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "value", value) == -1) - goto failed; - Py_DECREF(value); - value = ast2obj_expr_context(o->v.Starred.ctx); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "ctx", value) == -1) - goto failed; - Py_DECREF(value); - break; case Name_kind: result = PyType_GenericNew(Name_type, NULL, NULL); if (!result) goto failed; @@ -2977,6 +2967,10 @@ ast2obj_slice(void* _o) } switch (o->kind) { + case Ellipsis_kind: + result = PyType_GenericNew(Ellipsis_type, NULL, NULL); + if (!result) goto failed; + break; case Slice_kind: result = PyType_GenericNew(Slice_type, NULL, NULL); if (!result) goto failed; @@ -3195,7 +3189,7 @@ ast2obj_excepthandler(void* _o) if (PyObject_SetAttrString(result, "type", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(o->v.ExceptHandler.name); + value = ast2obj_expr(o->v.ExceptHandler.name); if (!value) goto failed; if (PyObject_SetAttrString(result, "name", value) == -1) goto failed; @@ -3236,7 +3230,7 @@ ast2obj_arguments(void* _o) result = PyType_GenericNew(arguments_type, NULL, NULL); if (!result) return NULL; - value = ast2obj_list(o->args, ast2obj_arg); + value = ast2obj_list(o->args, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttrString(result, "args", value) == -1) goto failed; @@ -3246,65 +3240,16 @@ ast2obj_arguments(void* _o) if (PyObject_SetAttrString(result, "vararg", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(o->varargannotation); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "varargannotation", value) == -1) - goto failed; - Py_DECREF(value); - value = ast2obj_list(o->kwonlyargs, ast2obj_arg); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "kwonlyargs", value) == -1) - goto failed; - Py_DECREF(value); value = ast2obj_identifier(o->kwarg); if (!value) goto failed; if (PyObject_SetAttrString(result, "kwarg", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(o->kwargannotation); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "kwargannotation", value) == -1) - goto failed; - Py_DECREF(value); value = ast2obj_list(o->defaults, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttrString(result, "defaults", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(o->kw_defaults, ast2obj_expr); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "kw_defaults", value) == -1) - goto failed; - Py_DECREF(value); - return result; -failed: - Py_XDECREF(value); - Py_XDECREF(result); - return NULL; -} - -PyObject* -ast2obj_arg(void* _o) -{ - arg_ty o = (arg_ty)_o; - PyObject *result = NULL, *value = NULL; - if (!o) { - Py_INCREF(Py_None); - return Py_None; - } - - result = PyType_GenericNew(arg_type, NULL, NULL); - if (!result) return NULL; - value = ast2obj_identifier(o->arg); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "arg", value) == -1) - goto failed; - Py_DECREF(value); - value = ast2obj_expr(o->annotation); - if (!value) goto failed; - if (PyObject_SetAttrString(result, "annotation", value) == -1) - goto failed; - Py_DECREF(value); return result; failed: Py_XDECREF(value); @@ -3374,9 +3319,9 @@ failed: int obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; - PyObject *tmp = NULL; if (obj == Py_None) { *out = NULL; @@ -3514,8 +3459,10 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of mod, but got %R", obj); - failed: + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of mod, but got %.400s", PyString_AS_STRING(tmp)); +failed: Py_XDECREF(tmp); return 1; } @@ -3523,9 +3470,9 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) int obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; - PyObject *tmp = NULL; int lineno; int col_offset; @@ -3566,7 +3513,6 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) arguments_ty args; asdl_seq* body; asdl_seq* decorator_list; - expr_ty returns; if (PyObject_HasAttrString(obj, "name")) { int res; @@ -3642,19 +3588,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from FunctionDef"); return 1; } - if (PyObject_HasAttrString(obj, "returns")) { - int res; - tmp = PyObject_GetAttrString(obj, "returns"); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &returns, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - returns = NULL; - } - *out = FunctionDef(name, args, body, decorator_list, returns, - lineno, col_offset, arena); + *out = FunctionDef(name, args, body, decorator_list, lineno, + col_offset, arena); if (*out == NULL) goto failed; return 0; } @@ -3665,9 +3600,6 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (isinstance) { identifier name; asdl_seq* bases; - asdl_seq* keywords; - expr_ty starargs; - expr_ty kwargs; asdl_seq* body; asdl_seq* decorator_list; @@ -3708,53 +3640,6 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"bases\" missing from ClassDef"); return 1; } - if (PyObject_HasAttrString(obj, "keywords")) { - int res; - Py_ssize_t len; - Py_ssize_t i; - tmp = PyObject_GetAttrString(obj, "keywords"); - if (tmp == NULL) goto failed; - if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\" must be a list, not a %.200s", tmp->ob_type->tp_name); - goto failed; - } - len = PyList_GET_SIZE(tmp); - keywords = asdl_seq_new(len, arena); - if (keywords == NULL) goto failed; - for (i = 0; i < len; i++) { - keyword_ty value; - res = obj2ast_keyword(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(keywords, i, value); - } - Py_XDECREF(tmp); - tmp = NULL; - } else { - PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from ClassDef"); - return 1; - } - if (PyObject_HasAttrString(obj, "starargs")) { - int res; - tmp = PyObject_GetAttrString(obj, "starargs"); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &starargs, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - starargs = NULL; - } - if (PyObject_HasAttrString(obj, "kwargs")) { - int res; - tmp = PyObject_GetAttrString(obj, "kwargs"); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &kwargs, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - kwargs = NULL; - } if (PyObject_HasAttrString(obj, "body")) { int res; Py_ssize_t len; @@ -3805,8 +3690,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from ClassDef"); return 1; } - *out = ClassDef(name, bases, keywords, starargs, kwargs, body, - decorator_list, lineno, col_offset, arena); + *out = ClassDef(name, bases, body, decorator_list, lineno, + col_offset, arena); if (*out == NULL) goto failed; return 0; } @@ -3966,6 +3851,67 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)Print_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + expr_ty dest; + asdl_seq* values; + bool nl; + + if (PyObject_HasAttrString(obj, "dest")) { + int res; + tmp = PyObject_GetAttrString(obj, "dest"); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &dest, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + dest = NULL; + } + if (PyObject_HasAttrString(obj, "values")) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = PyObject_GetAttrString(obj, "values"); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "Print field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + values = asdl_seq_new(len, arena); + if (values == NULL) goto failed; + for (i = 0; i < len; i++) { + expr_ty value; + res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(values, i, value); + } + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from Print"); + return 1; + } + if (PyObject_HasAttrString(obj, "nl")) { + int res; + tmp = PyObject_GetAttrString(obj, "nl"); + if (tmp == NULL) goto failed; + res = obj2ast_bool(tmp, &nl, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"nl\" missing from Print"); + return 1; + } + *out = Print(dest, values, nl, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)For_type); if (isinstance == -1) { return 1; @@ -4272,32 +4218,44 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) return 1; } if (isinstance) { - expr_ty exc; - expr_ty cause; + expr_ty type; + expr_ty inst; + expr_ty tback; - if (PyObject_HasAttrString(obj, "exc")) { + if (PyObject_HasAttrString(obj, "type")) { + int res; + tmp = PyObject_GetAttrString(obj, "type"); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &type, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + type = NULL; + } + if (PyObject_HasAttrString(obj, "inst")) { int res; - tmp = PyObject_GetAttrString(obj, "exc"); + tmp = PyObject_GetAttrString(obj, "inst"); if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &exc, arena); + res = obj2ast_expr(tmp, &inst, arena); if (res != 0) goto failed; Py_XDECREF(tmp); tmp = NULL; } else { - exc = NULL; + inst = NULL; } - if (PyObject_HasAttrString(obj, "cause")) { + if (PyObject_HasAttrString(obj, "tback")) { int res; - tmp = PyObject_GetAttrString(obj, "cause"); + tmp = PyObject_GetAttrString(obj, "tback"); if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &cause, arena); + res = obj2ast_expr(tmp, &tback, arena); if (res != 0) goto failed; Py_XDECREF(tmp); tmp = NULL; } else { - cause = NULL; + tback = NULL; } - *out = Raise(exc, cause, lineno, col_offset, arena); + *out = Raise(type, inst, tback, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } @@ -4584,43 +4542,54 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type); + isinstance = PyObject_IsInstance(obj, (PyObject*)Exec_type); if (isinstance == -1) { return 1; } if (isinstance) { - asdl_seq* names; + expr_ty body; + expr_ty globals; + expr_ty locals; - if (PyObject_HasAttrString(obj, "names")) { + if (PyObject_HasAttrString(obj, "body")) { int res; - Py_ssize_t len; - Py_ssize_t i; - tmp = PyObject_GetAttrString(obj, "names"); + tmp = PyObject_GetAttrString(obj, "body"); if (tmp == NULL) goto failed; - if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); - goto failed; - } - len = PyList_GET_SIZE(tmp); - names = asdl_seq_new(len, arena); - if (names == NULL) goto failed; - for (i = 0; i < len; i++) { - identifier value; - res = obj2ast_identifier(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(names, i, value); - } + res = obj2ast_expr(tmp, &body, arena); + if (res != 0) goto failed; Py_XDECREF(tmp); tmp = NULL; } else { - PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Global"); + PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Exec"); return 1; } - *out = Global(names, lineno, col_offset, arena); + if (PyObject_HasAttrString(obj, "globals")) { + int res; + tmp = PyObject_GetAttrString(obj, "globals"); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &globals, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + globals = NULL; + } + if (PyObject_HasAttrString(obj, "locals")) { + int res; + tmp = PyObject_GetAttrString(obj, "locals"); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &locals, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + locals = NULL; + } + *out = Exec(body, globals, locals, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Nonlocal_type); + isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type); if (isinstance == -1) { return 1; } @@ -4634,7 +4603,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) tmp = PyObject_GetAttrString(obj, "names"); if (tmp == NULL) goto failed; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Nonlocal field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4649,10 +4618,10 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_XDECREF(tmp); tmp = NULL; } else { - PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Nonlocal"); + PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Global"); return 1; } - *out = Nonlocal(names, lineno, col_offset, arena); + *out = Global(names, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } @@ -4710,8 +4679,10 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of stmt, but got %R", obj); - failed: + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of stmt, but got %.400s", PyString_AS_STRING(tmp)); +failed: Py_XDECREF(tmp); return 1; } @@ -4719,9 +4690,9 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) int obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; - PyObject *tmp = NULL; int lineno; int col_offset; @@ -5478,53 +5449,53 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type); + isinstance = PyObject_IsInstance(obj, (PyObject*)Repr_type); if (isinstance == -1) { return 1; } if (isinstance) { - object n; + expr_ty value; - if (PyObject_HasAttrString(obj, "n")) { + if (PyObject_HasAttrString(obj, "value")) { int res; - tmp = PyObject_GetAttrString(obj, "n"); + tmp = PyObject_GetAttrString(obj, "value"); if (tmp == NULL) goto failed; - res = obj2ast_object(tmp, &n, arena); + res = obj2ast_expr(tmp, &value, arena); if (res != 0) goto failed; Py_XDECREF(tmp); tmp = NULL; } else { - PyErr_SetString(PyExc_TypeError, "required field \"n\" missing from Num"); + PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Repr"); return 1; } - *out = Num(n, lineno, col_offset, arena); + *out = Repr(value, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type); + isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type); if (isinstance == -1) { return 1; } if (isinstance) { - string s; + object n; - if (PyObject_HasAttrString(obj, "s")) { + if (PyObject_HasAttrString(obj, "n")) { int res; - tmp = PyObject_GetAttrString(obj, "s"); + tmp = PyObject_GetAttrString(obj, "n"); if (tmp == NULL) goto failed; - res = obj2ast_string(tmp, &s, arena); + res = obj2ast_object(tmp, &n, arena); if (res != 0) goto failed; Py_XDECREF(tmp); tmp = NULL; } else { - PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Str"); + PyErr_SetString(PyExc_TypeError, "required field \"n\" missing from Num"); return 1; } - *out = Str(s, lineno, col_offset, arena); + *out = Num(n, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Bytes_type); + isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type); if (isinstance == -1) { return 1; } @@ -5540,20 +5511,10 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_XDECREF(tmp); tmp = NULL; } else { - PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Bytes"); + PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Str"); return 1; } - *out = Bytes(s, lineno, col_offset, arena); - if (*out == NULL) goto failed; - return 0; - } - isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type); - if (isinstance == -1) { - return 1; - } - if (isinstance) { - - *out = Ellipsis(lineno, col_offset, arena); + *out = Str(s, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } @@ -5655,42 +5616,6 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Starred_type); - if (isinstance == -1) { - return 1; - } - if (isinstance) { - expr_ty value; - expr_context_ty ctx; - - if (PyObject_HasAttrString(obj, "value")) { - int res; - tmp = PyObject_GetAttrString(obj, "value"); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &value, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Starred"); - return 1; - } - if (PyObject_HasAttrString(obj, "ctx")) { - int res; - tmp = PyObject_GetAttrString(obj, "ctx"); - if (tmp == NULL) goto failed; - res = obj2ast_expr_context(tmp, &ctx, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Starred"); - return 1; - } - *out = Starred(value, ctx, lineno, col_offset, arena); - if (*out == NULL) goto failed; - return 0; - } isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type); if (isinstance == -1) { return 1; @@ -5826,8 +5751,10 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of expr, but got %R", obj); - failed: + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of expr, but got %.400s", PyString_AS_STRING(tmp)); +failed: Py_XDECREF(tmp); return 1; } @@ -5835,6 +5762,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) int obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type); @@ -5886,21 +5814,35 @@ obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of expr_context, but got %R", obj); + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of expr_context, but got %.400s", PyString_AS_STRING(tmp)); +failed: + Py_XDECREF(tmp); return 1; } int obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; - PyObject *tmp = NULL; if (obj == Py_None) { *out = NULL; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + + *out = Ellipsis(arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type); if (isinstance == -1) { return 1; @@ -6007,8 +5949,10 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of slice, but got %R", obj); - failed: + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of slice, but got %.400s", PyString_AS_STRING(tmp)); +failed: Py_XDECREF(tmp); return 1; } @@ -6016,6 +5960,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) int obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; isinstance = PyObject_IsInstance(obj, (PyObject *)And_type); @@ -6035,13 +5980,18 @@ obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of boolop, but got %R", obj); + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of boolop, but got %.400s", PyString_AS_STRING(tmp)); +failed: + Py_XDECREF(tmp); return 1; } int obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type); @@ -6141,13 +6091,18 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of operator, but got %R", obj); + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of operator, but got %.400s", PyString_AS_STRING(tmp)); +failed: + Py_XDECREF(tmp); return 1; } int obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type); @@ -6183,13 +6138,18 @@ obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of unaryop, but got %R", obj); + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of unaryop, but got %.400s", PyString_AS_STRING(tmp)); +failed: + Py_XDECREF(tmp); return 1; } int obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type); @@ -6273,7 +6233,11 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of cmpop, but got %R", obj); + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of cmpop, but got %.400s", PyString_AS_STRING(tmp)); +failed: + Py_XDECREF(tmp); return 1; } @@ -6344,9 +6308,9 @@ failed: int obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) { + PyObject* tmp = NULL; int isinstance; - PyObject *tmp = NULL; int lineno; int col_offset; @@ -6384,7 +6348,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) } if (isinstance) { expr_ty type; - identifier name; + expr_ty name; asdl_seq* body; if (PyObject_HasAttrString(obj, "type")) { @@ -6402,7 +6366,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) int res; tmp = PyObject_GetAttrString(obj, "name"); if (tmp == NULL) goto failed; - res = obj2ast_identifier(tmp, &name, arena); + res = obj2ast_expr(tmp, &name, arena); if (res != 0) goto failed; Py_XDECREF(tmp); tmp = NULL; @@ -6440,8 +6404,10 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) return 0; } - PyErr_Format(PyExc_TypeError, "expected some sort of excepthandler, but got %R", obj); - failed: + tmp = PyObject_Repr(obj); + if (tmp == NULL) goto failed; + PyErr_Format(PyExc_TypeError, "expected some sort of excepthandler, but got %.400s", PyString_AS_STRING(tmp)); +failed: Py_XDECREF(tmp); return 1; } @@ -6452,12 +6418,8 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) PyObject* tmp = NULL; asdl_seq* args; identifier vararg; - expr_ty varargannotation; - asdl_seq* kwonlyargs; identifier kwarg; - expr_ty kwargannotation; asdl_seq* defaults; - asdl_seq* kw_defaults; if (PyObject_HasAttrString(obj, "args")) { int res; @@ -6473,8 +6435,8 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) args = asdl_seq_new(len, arena); if (args == NULL) goto failed; for (i = 0; i < len; i++) { - arg_ty value; - res = obj2ast_arg(PyList_GET_ITEM(tmp, i), &value, arena); + expr_ty value; + res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); if (res != 0) goto failed; asdl_seq_SET(args, i, value); } @@ -6495,42 +6457,6 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) } else { vararg = NULL; } - if (PyObject_HasAttrString(obj, "varargannotation")) { - int res; - tmp = PyObject_GetAttrString(obj, "varargannotation"); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &varargannotation, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - varargannotation = NULL; - } - if (PyObject_HasAttrString(obj, "kwonlyargs")) { - int res; - Py_ssize_t len; - Py_ssize_t i; - tmp = PyObject_GetAttrString(obj, "kwonlyargs"); - if (tmp == NULL) goto failed; - if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"kwonlyargs\" must be a list, not a %.200s", tmp->ob_type->tp_name); - goto failed; - } - len = PyList_GET_SIZE(tmp); - kwonlyargs = asdl_seq_new(len, arena); - if (kwonlyargs == NULL) goto failed; - for (i = 0; i < len; i++) { - arg_ty value; - res = obj2ast_arg(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(kwonlyargs, i, value); - } - Py_XDECREF(tmp); - tmp = NULL; - } else { - PyErr_SetString(PyExc_TypeError, "required field \"kwonlyargs\" missing from arguments"); - return 1; - } if (PyObject_HasAttrString(obj, "kwarg")) { int res; tmp = PyObject_GetAttrString(obj, "kwarg"); @@ -6542,17 +6468,6 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) } else { kwarg = NULL; } - if (PyObject_HasAttrString(obj, "kwargannotation")) { - int res; - tmp = PyObject_GetAttrString(obj, "kwargannotation"); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &kwargannotation, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - kwargannotation = NULL; - } if (PyObject_HasAttrString(obj, "defaults")) { int res; Py_ssize_t len; @@ -6578,70 +6493,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments"); return 1; } - if (PyObject_HasAttrString(obj, "kw_defaults")) { - int res; - Py_ssize_t len; - Py_ssize_t i; - tmp = PyObject_GetAttrString(obj, "kw_defaults"); - if (tmp == NULL) goto failed; - if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name); - goto failed; - } - len = PyList_GET_SIZE(tmp); - kw_defaults = asdl_seq_new(len, arena); - if (kw_defaults == NULL) goto failed; - for (i = 0; i < len; i++) { - expr_ty value; - res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(kw_defaults, i, value); - } - Py_XDECREF(tmp); - tmp = NULL; - } else { - PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments"); - return 1; - } - *out = arguments(args, vararg, varargannotation, kwonlyargs, kwarg, - kwargannotation, defaults, kw_defaults, arena); - return 0; -failed: - Py_XDECREF(tmp); - return 1; -} - -int -obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) -{ - PyObject* tmp = NULL; - identifier arg; - expr_ty annotation; - - if (PyObject_HasAttrString(obj, "arg")) { - int res; - tmp = PyObject_GetAttrString(obj, "arg"); - if (tmp == NULL) goto failed; - res = obj2ast_identifier(tmp, &arg, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from arg"); - return 1; - } - if (PyObject_HasAttrString(obj, "annotation")) { - int res; - tmp = PyObject_GetAttrString(obj, "annotation"); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &annotation, arena); - if (res != 0) goto failed; - Py_XDECREF(tmp); - tmp = NULL; - } else { - annotation = NULL; - } - *out = arg(arg, annotation, arena); + *out = arguments(args, vararg, kwarg, defaults, arena); return 0; failed: Py_XDECREF(tmp); @@ -6724,223 +6576,166 @@ failed: } -static struct PyModuleDef _astmodule = { - PyModuleDef_HEAD_INIT, "_ast" -}; PyMODINIT_FUNC -PyInit__ast(void) +init_ast(void) { PyObject *m, *d; - if (!init_types()) return NULL; - m = PyModule_Create(&_astmodule); - if (!m) return NULL; + if (!init_types()) return; + m = Py_InitModule3("_ast", NULL, NULL); + if (!m) return; d = PyModule_GetDict(m); - if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return - NULL; + if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return; if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0) - return NULL; - if (PyModule_AddStringConstant(m, "__version__", "82163") < 0) - return NULL; - if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return - NULL; + return; + if (PyModule_AddStringConstant(m, "__version__", "82160") < 0) + return; + if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return; if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "Interactive", (PyObject*)Interactive_type) - < 0) return NULL; + < 0) return; if (PyDict_SetItemString(d, "Expression", (PyObject*)Expression_type) < - 0) return NULL; - if (PyDict_SetItemString(d, "Suite", (PyObject*)Suite_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "stmt", (PyObject*)stmt_type) < 0) return - NULL; + 0) return; + if (PyDict_SetItemString(d, "Suite", (PyObject*)Suite_type) < 0) return; + if (PyDict_SetItemString(d, "stmt", (PyObject*)stmt_type) < 0) return; if (PyDict_SetItemString(d, "FunctionDef", (PyObject*)FunctionDef_type) - < 0) return NULL; + < 0) return; if (PyDict_SetItemString(d, "ClassDef", (PyObject*)ClassDef_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "Return", (PyObject*)Return_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "Delete", (PyObject*)Delete_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "Assign", (PyObject*)Assign_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "AugAssign", (PyObject*)AugAssign_type) < - 0) return NULL; - if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "While", (PyObject*)While_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "If", (PyObject*)If_type) < 0) return NULL; - if (PyDict_SetItemString(d, "With", (PyObject*)With_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Raise", (PyObject*)Raise_type) < 0) return - NULL; + 0) return; + if (PyDict_SetItemString(d, "Print", (PyObject*)Print_type) < 0) return; + if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return; + if (PyDict_SetItemString(d, "While", (PyObject*)While_type) < 0) return; + if (PyDict_SetItemString(d, "If", (PyObject*)If_type) < 0) return; + if (PyDict_SetItemString(d, "With", (PyObject*)With_type) < 0) return; + if (PyDict_SetItemString(d, "Raise", (PyObject*)Raise_type) < 0) return; if (PyDict_SetItemString(d, "TryExcept", (PyObject*)TryExcept_type) < - 0) return NULL; + 0) return; if (PyDict_SetItemString(d, "TryFinally", (PyObject*)TryFinally_type) < - 0) return NULL; + 0) return; if (PyDict_SetItemString(d, "Assert", (PyObject*)Assert_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "Import", (PyObject*)Import_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "ImportFrom", (PyObject*)ImportFrom_type) < - 0) return NULL; + 0) return; + if (PyDict_SetItemString(d, "Exec", (PyObject*)Exec_type) < 0) return; if (PyDict_SetItemString(d, "Global", (PyObject*)Global_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Nonlocal", (PyObject*)Nonlocal_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Expr", (PyObject*)Expr_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Pass", (PyObject*)Pass_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Break", (PyObject*)Break_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "Expr", (PyObject*)Expr_type) < 0) return; + if (PyDict_SetItemString(d, "Pass", (PyObject*)Pass_type) < 0) return; + if (PyDict_SetItemString(d, "Break", (PyObject*)Break_type) < 0) return; if (PyDict_SetItemString(d, "Continue", (PyObject*)Continue_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "expr", (PyObject*)expr_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "expr", (PyObject*)expr_type) < 0) return; if (PyDict_SetItemString(d, "BoolOp", (PyObject*)BoolOp_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "BinOp", (PyObject*)BinOp_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "BinOp", (PyObject*)BinOp_type) < 0) return; if (PyDict_SetItemString(d, "UnaryOp", (PyObject*)UnaryOp_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "Lambda", (PyObject*)Lambda_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "IfExp", (PyObject*)IfExp_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Dict", (PyObject*)Dict_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "IfExp", (PyObject*)IfExp_type) < 0) return; + if (PyDict_SetItemString(d, "Dict", (PyObject*)Dict_type) < 0) return; + if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return; if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "SetComp", (PyObject*)SetComp_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "DictComp", (PyObject*)DictComp_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "GeneratorExp", - (PyObject*)GeneratorExp_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return - NULL; + (PyObject*)GeneratorExp_type) < 0) return; + if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return; if (PyDict_SetItemString(d, "Compare", (PyObject*)Compare_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Bytes", (PyObject*)Bytes_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0) - return NULL; + return; + if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return; + if (PyDict_SetItemString(d, "Repr", (PyObject*)Repr_type) < 0) return; + if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return; + if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return; if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) < - 0) return NULL; + 0) return; if (PyDict_SetItemString(d, "Subscript", (PyObject*)Subscript_type) < - 0) return NULL; - if (PyDict_SetItemString(d, "Starred", (PyObject*)Starred_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Name", (PyObject*)Name_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "List", (PyObject*)List_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Tuple", (PyObject*)Tuple_type) < 0) return - NULL; + 0) return; + if (PyDict_SetItemString(d, "Name", (PyObject*)Name_type) < 0) return; + if (PyDict_SetItemString(d, "List", (PyObject*)List_type) < 0) return; + if (PyDict_SetItemString(d, "Tuple", (PyObject*)Tuple_type) < 0) return; if (PyDict_SetItemString(d, "expr_context", - (PyObject*)expr_context_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Load", (PyObject*)Load_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Store", (PyObject*)Store_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Del", (PyObject*)Del_type) < 0) return - NULL; + (PyObject*)expr_context_type) < 0) return; + if (PyDict_SetItemString(d, "Load", (PyObject*)Load_type) < 0) return; + if (PyDict_SetItemString(d, "Store", (PyObject*)Store_type) < 0) return; + if (PyDict_SetItemString(d, "Del", (PyObject*)Del_type) < 0) return; if (PyDict_SetItemString(d, "AugLoad", (PyObject*)AugLoad_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "AugStore", (PyObject*)AugStore_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Param", (PyObject*)Param_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "slice", (PyObject*)slice_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Slice", (PyObject*)Slice_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "Param", (PyObject*)Param_type) < 0) return; + if (PyDict_SetItemString(d, "slice", (PyObject*)slice_type) < 0) return; + if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0) + return; + if (PyDict_SetItemString(d, "Slice", (PyObject*)Slice_type) < 0) return; if (PyDict_SetItemString(d, "ExtSlice", (PyObject*)ExtSlice_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Index", (PyObject*)Index_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "Index", (PyObject*)Index_type) < 0) return; if (PyDict_SetItemString(d, "boolop", (PyObject*)boolop_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "And", (PyObject*)And_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Or", (PyObject*)Or_type) < 0) return NULL; + return; + if (PyDict_SetItemString(d, "And", (PyObject*)And_type) < 0) return; + if (PyDict_SetItemString(d, "Or", (PyObject*)Or_type) < 0) return; if (PyDict_SetItemString(d, "operator", (PyObject*)operator_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Add", (PyObject*)Add_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Sub", (PyObject*)Sub_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Mult", (PyObject*)Mult_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Div", (PyObject*)Div_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Mod", (PyObject*)Mod_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Pow", (PyObject*)Pow_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "Add", (PyObject*)Add_type) < 0) return; + if (PyDict_SetItemString(d, "Sub", (PyObject*)Sub_type) < 0) return; + if (PyDict_SetItemString(d, "Mult", (PyObject*)Mult_type) < 0) return; + if (PyDict_SetItemString(d, "Div", (PyObject*)Div_type) < 0) return; + if (PyDict_SetItemString(d, "Mod", (PyObject*)Mod_type) < 0) return; + if (PyDict_SetItemString(d, "Pow", (PyObject*)Pow_type) < 0) return; if (PyDict_SetItemString(d, "LShift", (PyObject*)LShift_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "RShift", (PyObject*)RShift_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "BitOr", (PyObject*)BitOr_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "BitOr", (PyObject*)BitOr_type) < 0) return; if (PyDict_SetItemString(d, "BitXor", (PyObject*)BitXor_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "BitAnd", (PyObject*)BitAnd_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "FloorDiv", (PyObject*)FloorDiv_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "unaryop", (PyObject*)unaryop_type) < 0) - return NULL; + return; if (PyDict_SetItemString(d, "Invert", (PyObject*)Invert_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Not", (PyObject*)Not_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "UAdd", (PyObject*)UAdd_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "USub", (PyObject*)USub_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "cmpop", (PyObject*)cmpop_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Eq", (PyObject*)Eq_type) < 0) return NULL; - if (PyDict_SetItemString(d, "NotEq", (PyObject*)NotEq_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Lt", (PyObject*)Lt_type) < 0) return NULL; - if (PyDict_SetItemString(d, "LtE", (PyObject*)LtE_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Gt", (PyObject*)Gt_type) < 0) return NULL; - if (PyDict_SetItemString(d, "GtE", (PyObject*)GtE_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Is", (PyObject*)Is_type) < 0) return NULL; - if (PyDict_SetItemString(d, "IsNot", (PyObject*)IsNot_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "In", (PyObject*)In_type) < 0) return NULL; - if (PyDict_SetItemString(d, "NotIn", (PyObject*)NotIn_type) < 0) return - NULL; + return; + if (PyDict_SetItemString(d, "Not", (PyObject*)Not_type) < 0) return; + if (PyDict_SetItemString(d, "UAdd", (PyObject*)UAdd_type) < 0) return; + if (PyDict_SetItemString(d, "USub", (PyObject*)USub_type) < 0) return; + if (PyDict_SetItemString(d, "cmpop", (PyObject*)cmpop_type) < 0) return; + if (PyDict_SetItemString(d, "Eq", (PyObject*)Eq_type) < 0) return; + if (PyDict_SetItemString(d, "NotEq", (PyObject*)NotEq_type) < 0) return; + if (PyDict_SetItemString(d, "Lt", (PyObject*)Lt_type) < 0) return; + if (PyDict_SetItemString(d, "LtE", (PyObject*)LtE_type) < 0) return; + if (PyDict_SetItemString(d, "Gt", (PyObject*)Gt_type) < 0) return; + if (PyDict_SetItemString(d, "GtE", (PyObject*)GtE_type) < 0) return; + if (PyDict_SetItemString(d, "Is", (PyObject*)Is_type) < 0) return; + if (PyDict_SetItemString(d, "IsNot", (PyObject*)IsNot_type) < 0) return; + if (PyDict_SetItemString(d, "In", (PyObject*)In_type) < 0) return; + if (PyDict_SetItemString(d, "NotIn", (PyObject*)NotIn_type) < 0) return; if (PyDict_SetItemString(d, "comprehension", - (PyObject*)comprehension_type) < 0) return NULL; + (PyObject*)comprehension_type) < 0) return; if (PyDict_SetItemString(d, "excepthandler", - (PyObject*)excepthandler_type) < 0) return NULL; + (PyObject*)excepthandler_type) < 0) return; if (PyDict_SetItemString(d, "ExceptHandler", - (PyObject*)ExceptHandler_type) < 0) return NULL; + (PyObject*)ExceptHandler_type) < 0) return; if (PyDict_SetItemString(d, "arguments", (PyObject*)arguments_type) < - 0) return NULL; - if (PyDict_SetItemString(d, "arg", (PyObject*)arg_type) < 0) return - NULL; + 0) return; if (PyDict_SetItemString(d, "keyword", (PyObject*)keyword_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "alias", (PyObject*)alias_type) < 0) return - NULL; - return m; + return; + if (PyDict_SetItemString(d, "alias", (PyObject*)alias_type) < 0) return; } |