14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm/* File automatically generated by Parser/asdl_c.py. */
24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm/*
54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm   __version__ 82160.
64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm   This module must be committed separately after each AST grammar change;
84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm   The __version__ number is set to the revision number of the commit
94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm   containing the grammar change.
104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*/
114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm#include "Python.h"
134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm#include "Python-ast.h"
144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject AST_type;
164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *mod_type;
174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_mod(void*);
184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Module_type;
194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Module_fields[]={
204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Interactive_type;
234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Interactive_fields[]={
244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Expression_type;
274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Expression_fields[]={
284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Suite_type;
314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Suite_fields[]={
324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *stmt_type;
354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *stmt_attributes[] = {
364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "lineno",
374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "col_offset",
384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_stmt(void*);
404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *FunctionDef_type;
414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *FunctionDef_fields[]={
424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "name",
434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "args",
444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "decorator_list",
464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *ClassDef_type;
484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *ClassDef_fields[]={
494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "name",
504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "bases",
514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "decorator_list",
534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Return_type;
554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Return_fields[]={
564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Delete_type;
594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Delete_fields[]={
604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "targets",
614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Assign_type;
634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Assign_fields[]={
644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "targets",
654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *AugAssign_type;
684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *AugAssign_fields[]={
694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "target",
704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "op",
714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Print_type;
744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Print_fields[]={
754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "dest",
764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "values",
774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "nl",
784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *For_type;
804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *For_fields[]={
814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "target",
824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "iter",
834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "orelse",
854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *While_type;
874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *While_fields[]={
884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "test",
894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "orelse",
914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *If_type;
934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *If_fields[]={
944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "test",
954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "orelse",
974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *With_type;
994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *With_fields[]={
1004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "context_expr",
1014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "optional_vars",
1024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
1034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Raise_type;
1054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Raise_fields[]={
1064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "type",
1074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "inst",
1084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "tback",
1094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *TryExcept_type;
1114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *TryExcept_fields[]={
1124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
1134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "handlers",
1144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "orelse",
1154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *TryFinally_type;
1174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *TryFinally_fields[]={
1184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
1194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "finalbody",
1204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Assert_type;
1224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Assert_fields[]={
1234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "test",
1244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "msg",
1254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Import_type;
1274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Import_fields[]={
1284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "names",
1294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *ImportFrom_type;
1314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *ImportFrom_fields[]={
1324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "module",
1334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "names",
1344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "level",
1354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Exec_type;
1374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Exec_fields[]={
1384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
1394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "globals",
1404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "locals",
1414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Global_type;
1434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Global_fields[]={
1444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "names",
1454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Expr_type;
1474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Expr_fields[]={
1484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
1494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Pass_type;
1514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Break_type;
1524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Continue_type;
1534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *expr_type;
1544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *expr_attributes[] = {
1554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "lineno",
1564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "col_offset",
1574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_expr(void*);
1594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *BoolOp_type;
1604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *BoolOp_fields[]={
1614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "op",
1624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "values",
1634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *BinOp_type;
1654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *BinOp_fields[]={
1664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "left",
1674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "op",
1684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "right",
1694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *UnaryOp_type;
1714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *UnaryOp_fields[]={
1724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "op",
1734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "operand",
1744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Lambda_type;
1764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Lambda_fields[]={
1774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "args",
1784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
1794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *IfExp_type;
1814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *IfExp_fields[]={
1824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "test",
1834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
1844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "orelse",
1854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Dict_type;
1874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Dict_fields[]={
1884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "keys",
1894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "values",
1904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Set_type;
1924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Set_fields[]={
1934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "elts",
1944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
1954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *ListComp_type;
1964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *ListComp_fields[]={
1974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "elt",
1984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "generators",
1994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *SetComp_type;
2014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *SetComp_fields[]={
2024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "elt",
2034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "generators",
2044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *DictComp_type;
2064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *DictComp_fields[]={
2074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "key",
2084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
2094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "generators",
2104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *GeneratorExp_type;
2124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *GeneratorExp_fields[]={
2134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "elt",
2144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "generators",
2154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Yield_type;
2174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Yield_fields[]={
2184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
2194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Compare_type;
2214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Compare_fields[]={
2224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "left",
2234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "ops",
2244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "comparators",
2254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Call_type;
2274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Call_fields[]={
2284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "func",
2294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "args",
2304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "keywords",
2314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "starargs",
2324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "kwargs",
2334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Repr_type;
2354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Repr_fields[]={
2364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
2374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Num_type;
2394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Num_fields[]={
2404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "n",
2414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Str_type;
2434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Str_fields[]={
2444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "s",
2454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Attribute_type;
2474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Attribute_fields[]={
2484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
2494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "attr",
2504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "ctx",
2514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Subscript_type;
2534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Subscript_fields[]={
2544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
2554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "slice",
2564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "ctx",
2574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Name_type;
2594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Name_fields[]={
2604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "id",
2614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "ctx",
2624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *List_type;
2644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *List_fields[]={
2654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "elts",
2664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "ctx",
2674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Tuple_type;
2694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Tuple_fields[]={
2704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "elts",
2714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "ctx",
2724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *expr_context_type;
2744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject *Load_singleton, *Store_singleton, *Del_singleton,
2754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*AugLoad_singleton, *AugStore_singleton, *Param_singleton;
2764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_expr_context(expr_context_ty);
2774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Load_type;
2784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Store_type;
2794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Del_type;
2804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *AugLoad_type;
2814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *AugStore_type;
2824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Param_type;
2834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *slice_type;
2844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_slice(void*);
2854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Ellipsis_type;
2864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Slice_type;
2874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Slice_fields[]={
2884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "lower",
2894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "upper",
2904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "step",
2914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *ExtSlice_type;
2934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *ExtSlice_fields[]={
2944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "dims",
2954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
2964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Index_type;
2974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *Index_fields[]={
2984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
2994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
3004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *boolop_type;
3014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject *And_singleton, *Or_singleton;
3024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_boolop(boolop_ty);
3034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *And_type;
3044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Or_type;
3054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *operator_type;
3064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject *Add_singleton, *Sub_singleton, *Mult_singleton,
3074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*Div_singleton, *Mod_singleton, *Pow_singleton, *LShift_singleton,
3084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*RShift_singleton, *BitOr_singleton, *BitXor_singleton, *BitAnd_singleton,
3094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*FloorDiv_singleton;
3104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_operator(operator_ty);
3114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Add_type;
3124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Sub_type;
3134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Mult_type;
3144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Div_type;
3154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Mod_type;
3164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Pow_type;
3174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *LShift_type;
3184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *RShift_type;
3194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *BitOr_type;
3204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *BitXor_type;
3214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *BitAnd_type;
3224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *FloorDiv_type;
3234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *unaryop_type;
3244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject *Invert_singleton, *Not_singleton, *UAdd_singleton,
3254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*USub_singleton;
3264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_unaryop(unaryop_ty);
3274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Invert_type;
3284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Not_type;
3294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *UAdd_type;
3304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *USub_type;
3314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *cmpop_type;
3324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject *Eq_singleton, *NotEq_singleton, *Lt_singleton, *LtE_singleton,
3334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*Gt_singleton, *GtE_singleton, *Is_singleton, *IsNot_singleton, *In_singleton,
3344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm*NotIn_singleton;
3354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_cmpop(cmpop_ty);
3364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Eq_type;
3374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *NotEq_type;
3384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Lt_type;
3394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *LtE_type;
3404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Gt_type;
3414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *GtE_type;
3424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *Is_type;
3434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *IsNot_type;
3444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *In_type;
3454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *NotIn_type;
3464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *comprehension_type;
3474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_comprehension(void*);
3484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *comprehension_fields[]={
3494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "target",
3504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "iter",
3514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "ifs",
3524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
3534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *excepthandler_type;
3544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *excepthandler_attributes[] = {
3554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "lineno",
3564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "col_offset",
3574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
3584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_excepthandler(void*);
3594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *ExceptHandler_type;
3604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *ExceptHandler_fields[]={
3614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "type",
3624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "name",
3634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "body",
3644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
3654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *arguments_type;
3664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_arguments(void*);
3674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *arguments_fields[]={
3684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "args",
3694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "vararg",
3704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "kwarg",
3714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "defaults",
3724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
3734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *keyword_type;
3744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_keyword(void*);
3754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *keyword_fields[]={
3764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "arg",
3774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "value",
3784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
3794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject *alias_type;
3804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_alias(void*);
3814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic char *alias_fields[]={
3824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "name",
3834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        "asname",
3844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
3854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
3864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
3874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int
3884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast_type_init(PyObject *self, PyObject *args, PyObject *kw)
3894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
3904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_ssize_t i, numfields = 0;
3914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    int res = -1;
3924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *key, *value, *fields;
3934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    fields = PyObject_GetAttrString((PyObject*)Py_TYPE(self), "_fields");
3944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!fields)
3954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Clear();
3964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (fields) {
3974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        numfields = PySequence_Size(fields);
3984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (numfields == -1)
3994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            goto cleanup;
4004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
4014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    res = 0; /* if no error occurs, this stays 0 to the end */
4024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (PyTuple_GET_SIZE(args) > 0) {
4034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (numfields != PyTuple_GET_SIZE(args)) {
4044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            PyErr_Format(PyExc_TypeError, "%.400s constructor takes %s"
4054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                         "%zd positional argument%s",
4064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                         Py_TYPE(self)->tp_name,
4074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                         numfields == 0 ? "" : "either 0 or ",
4084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                         numfields, numfields == 1 ? "" : "s");
4094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            res = -1;
4104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            goto cleanup;
4114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
4124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
4134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            /* cannot be reached when fields is NULL */
4144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            PyObject *name = PySequence_GetItem(fields, i);
4154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            if (!name) {
4164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = -1;
4174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto cleanup;
4184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            }
4194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            res = PyObject_SetAttr(self, name, PyTuple_GET_ITEM(args, i));
4204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            Py_DECREF(name);
4214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            if (res < 0)
4224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto cleanup;
4234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
4244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
4254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (kw) {
4264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        i = 0;  /* needed by PyDict_Next */
4274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        while (PyDict_Next(kw, &i, &key, &value)) {
4284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            res = PyObject_SetAttr(self, key, value);
4294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            if (res < 0)
4304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto cleanup;
4314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
4324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
4334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm  cleanup:
4344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_XDECREF(fields);
4354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return res;
4364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
4374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
4384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm/* Pickling support */
4394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject *
4404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast_type_reduce(PyObject *self, PyObject *unused)
4414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
4424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *res;
4434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *dict = PyObject_GetAttrString(self, "__dict__");
4444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (dict == NULL) {
4454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyErr_ExceptionMatches(PyExc_AttributeError))
4464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            PyErr_Clear();
4474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        else
4484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return NULL;
4494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
4504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (dict) {
4514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        res = Py_BuildValue("O()O", Py_TYPE(self), dict);
4524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(dict);
4534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return res;
4544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
4554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return Py_BuildValue("O()", Py_TYPE(self));
4564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
4574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
4584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyMethodDef ast_type_methods[] = {
4594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    {"__reduce__", ast_type_reduce, METH_NOARGS, NULL},
4604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    {NULL}
4614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
4624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
4634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject AST_type = {
4644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyVarObject_HEAD_INIT(&PyType_Type, 0)
4654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    "_ast.AST",
4664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    sizeof(PyObject),
4674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,
4684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_dealloc */
4694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_print */
4704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_getattr */
4714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_setattr */
4724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_compare */
4734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_repr */
4744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_as_number */
4754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_as_sequence */
4764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_as_mapping */
4774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_hash */
4784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_call */
4794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_str */
4804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject_GenericGetAttr, /* tp_getattro */
4814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject_GenericSetAttr, /* tp_setattro */
4824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_as_buffer */
4834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
4844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_doc */
4854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_traverse */
4864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_clear */
4874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_richcompare */
4884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_weaklistoffset */
4894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_iter */
4904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_iternext */
4914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    ast_type_methods,        /* tp_methods */
4924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_members */
4934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_getset */
4944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_base */
4954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_dict */
4964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_descr_get */
4974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_descr_set */
4984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    0,                       /* tp_dictoffset */
4994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    (initproc)ast_type_init, /* tp_init */
5004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyType_GenericAlloc,     /* tp_alloc */
5014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyType_GenericNew,       /* tp_new */
5024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject_Del,            /* tp_free */
5034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm};
5044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields)
5074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
5084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *fnames, *result;
5094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    int i;
5104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    fnames = PyTuple_New(num_fields);
5114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!fnames) return NULL;
5124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    for (i = 0; i < num_fields; i++) {
5134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *field = PyString_FromString(fields[i]);
5144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!field) {
5154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            Py_DECREF(fnames);
5164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return NULL;
5174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
5184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyTuple_SET_ITEM(fnames, i, field);
5194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
5204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}",
5214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    type, base, "_fields", fnames, "__module__", "_ast");
5224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_DECREF(fnames);
5234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return (PyTypeObject*)result;
5244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
5254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
5274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
5284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    int i, result;
5294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *s, *l = PyTuple_New(num_fields);
5304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!l)
5314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 0;
5324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    for (i = 0; i < num_fields; i++) {
5334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        s = PyString_FromString(attrs[i]);
5344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!s) {
5354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            Py_DECREF(l);
5364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return 0;
5374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
5384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyTuple_SET_ITEM(l, i, s);
5394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
5404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    result = PyObject_SetAttrString((PyObject*)type, "_attributes", l) >= 0;
5414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_DECREF(l);
5424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return result;
5434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
5444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm/* Conversion AST -> Python */
5464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_list(asdl_seq *seq, PyObject* (*func)(void*))
5484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
5494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    int i, n = asdl_seq_LEN(seq);
5504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *result = PyList_New(n);
5514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *value;
5524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!result)
5534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
5544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    for (i = 0; i < n; i++) {
5554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = func(asdl_seq_GET(seq, i));
5564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
5574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            Py_DECREF(result);
5584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return NULL;
5594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
5604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyList_SET_ITEM(result, i, value);
5614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
5624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return result;
5634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
5644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_object(void *o)
5664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
5674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!o)
5684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        o = Py_None;
5694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_INCREF((PyObject*)o);
5704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return (PyObject*)o;
5714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
5724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm#define ast2obj_identifier ast2obj_object
5734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm#define ast2obj_string ast2obj_object
5744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_bool(bool b)
5754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
5764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return PyBool_FromLong(b);
5774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
5784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic PyObject* ast2obj_int(long b)
5804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
5814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return PyInt_FromLong(b);
5824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
5834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm/* Conversion Python -> AST */
5854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena)
5874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
5884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (obj == Py_None)
5894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        obj = NULL;
5904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (obj)
5914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyArena_AddPyObject(arena, obj);
5924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_XINCREF(obj);
5934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    *out = obj;
5944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return 0;
5954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
5964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
5974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm#define obj2ast_identifier obj2ast_object
5984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm#define obj2ast_string obj2ast_object
5994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
6014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
6024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    int i;
6034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!PyInt_Check(obj) && !PyLong_Check(obj)) {
6044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *s = PyObject_Repr(obj);
6054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (s == NULL) return 1;
6064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s",
6074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                     PyString_AS_STRING(s));
6084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(s);
6094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
6104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
6114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    i = (int)PyLong_AsLong(obj);
6134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (i == -1 && PyErr_Occurred())
6144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
6154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    *out = i;
6164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return 0;
6174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
6184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_bool(PyObject* obj, bool* out, PyArena* arena)
6204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
6214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!PyBool_Check(obj)) {
6224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *s = PyObject_Repr(obj);
6234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (s == NULL) return 1;
6244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_ValueError, "invalid boolean value: %.400s",
6254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                     PyString_AS_STRING(s));
6264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(s);
6274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
6284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
6294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    *out = (obj == Py_True);
6314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return 0;
6324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
6334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int add_ast_fields(void)
6354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
6364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *empty_tuple, *d;
6374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (PyType_Ready(&AST_type) < 0)
6384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return -1;
6394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    d = AST_type.tp_dict;
6404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    empty_tuple = PyTuple_New(0);
6414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!empty_tuple ||
6424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyDict_SetItemString(d, "_fields", empty_tuple) < 0 ||
6434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) {
6444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(empty_tuple);
6454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return -1;
6464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
6474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    Py_DECREF(empty_tuple);
6484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return 0;
6494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
6504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int init_types(void)
6534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
6544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        static int initialized;
6554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (initialized) return 1;
6564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (add_ast_fields() < 0) return 0;
6574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        mod_type = make_type("mod", &AST_type, NULL, 0);
6584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!mod_type) return 0;
6594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(mod_type, NULL, 0)) return 0;
6604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Module_type = make_type("Module", mod_type, Module_fields, 1);
6614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Module_type) return 0;
6624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Interactive_type = make_type("Interactive", mod_type,
6634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     Interactive_fields, 1);
6644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Interactive_type) return 0;
6654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Expression_type = make_type("Expression", mod_type, Expression_fields,
6664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                    1);
6674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Expression_type) return 0;
6684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Suite_type = make_type("Suite", mod_type, Suite_fields, 1);
6694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Suite_type) return 0;
6704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_type = make_type("stmt", &AST_type, NULL, 0);
6714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!stmt_type) return 0;
6724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(stmt_type, stmt_attributes, 2)) return 0;
6734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        FunctionDef_type = make_type("FunctionDef", stmt_type,
6744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     FunctionDef_fields, 4);
6754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!FunctionDef_type) return 0;
6764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 4);
6774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ClassDef_type) return 0;
6784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Return_type = make_type("Return", stmt_type, Return_fields, 1);
6794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Return_type) return 0;
6804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Delete_type = make_type("Delete", stmt_type, Delete_fields, 1);
6814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Delete_type) return 0;
6824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Assign_type = make_type("Assign", stmt_type, Assign_fields, 2);
6834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Assign_type) return 0;
6844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        AugAssign_type = make_type("AugAssign", stmt_type, AugAssign_fields, 3);
6854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!AugAssign_type) return 0;
6864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Print_type = make_type("Print", stmt_type, Print_fields, 3);
6874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Print_type) return 0;
6884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        For_type = make_type("For", stmt_type, For_fields, 4);
6894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!For_type) return 0;
6904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        While_type = make_type("While", stmt_type, While_fields, 3);
6914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!While_type) return 0;
6924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        If_type = make_type("If", stmt_type, If_fields, 3);
6934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!If_type) return 0;
6944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        With_type = make_type("With", stmt_type, With_fields, 3);
6954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!With_type) return 0;
6964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Raise_type = make_type("Raise", stmt_type, Raise_fields, 3);
6974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Raise_type) return 0;
6984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        TryExcept_type = make_type("TryExcept", stmt_type, TryExcept_fields, 3);
6994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!TryExcept_type) return 0;
7004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        TryFinally_type = make_type("TryFinally", stmt_type, TryFinally_fields,
7014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                    2);
7024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!TryFinally_type) return 0;
7034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Assert_type = make_type("Assert", stmt_type, Assert_fields, 2);
7044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Assert_type) return 0;
7054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Import_type = make_type("Import", stmt_type, Import_fields, 1);
7064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Import_type) return 0;
7074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        ImportFrom_type = make_type("ImportFrom", stmt_type, ImportFrom_fields,
7084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                    3);
7094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ImportFrom_type) return 0;
7104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Exec_type = make_type("Exec", stmt_type, Exec_fields, 3);
7114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Exec_type) return 0;
7124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Global_type = make_type("Global", stmt_type, Global_fields, 1);
7134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Global_type) return 0;
7144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Expr_type = make_type("Expr", stmt_type, Expr_fields, 1);
7154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Expr_type) return 0;
7164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Pass_type = make_type("Pass", stmt_type, NULL, 0);
7174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Pass_type) return 0;
7184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Break_type = make_type("Break", stmt_type, NULL, 0);
7194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Break_type) return 0;
7204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Continue_type = make_type("Continue", stmt_type, NULL, 0);
7214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Continue_type) return 0;
7224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_type = make_type("expr", &AST_type, NULL, 0);
7234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!expr_type) return 0;
7244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(expr_type, expr_attributes, 2)) return 0;
7254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BoolOp_type = make_type("BoolOp", expr_type, BoolOp_fields, 2);
7264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BoolOp_type) return 0;
7274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BinOp_type = make_type("BinOp", expr_type, BinOp_fields, 3);
7284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BinOp_type) return 0;
7294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        UnaryOp_type = make_type("UnaryOp", expr_type, UnaryOp_fields, 2);
7304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!UnaryOp_type) return 0;
7314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Lambda_type = make_type("Lambda", expr_type, Lambda_fields, 2);
7324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Lambda_type) return 0;
7334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        IfExp_type = make_type("IfExp", expr_type, IfExp_fields, 3);
7344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!IfExp_type) return 0;
7354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Dict_type = make_type("Dict", expr_type, Dict_fields, 2);
7364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Dict_type) return 0;
7374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Set_type = make_type("Set", expr_type, Set_fields, 1);
7384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Set_type) return 0;
7394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        ListComp_type = make_type("ListComp", expr_type, ListComp_fields, 2);
7404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ListComp_type) return 0;
7414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        SetComp_type = make_type("SetComp", expr_type, SetComp_fields, 2);
7424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!SetComp_type) return 0;
7434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        DictComp_type = make_type("DictComp", expr_type, DictComp_fields, 3);
7444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!DictComp_type) return 0;
7454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        GeneratorExp_type = make_type("GeneratorExp", expr_type,
7464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                      GeneratorExp_fields, 2);
7474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!GeneratorExp_type) return 0;
7484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Yield_type = make_type("Yield", expr_type, Yield_fields, 1);
7494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Yield_type) return 0;
7504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Compare_type = make_type("Compare", expr_type, Compare_fields, 3);
7514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Compare_type) return 0;
7524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Call_type = make_type("Call", expr_type, Call_fields, 5);
7534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Call_type) return 0;
7544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Repr_type = make_type("Repr", expr_type, Repr_fields, 1);
7554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Repr_type) return 0;
7564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Num_type = make_type("Num", expr_type, Num_fields, 1);
7574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Num_type) return 0;
7584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Str_type = make_type("Str", expr_type, Str_fields, 1);
7594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Str_type) return 0;
7604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3);
7614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Attribute_type) return 0;
7624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Subscript_type = make_type("Subscript", expr_type, Subscript_fields, 3);
7634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Subscript_type) return 0;
7644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Name_type = make_type("Name", expr_type, Name_fields, 2);
7654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Name_type) return 0;
7664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        List_type = make_type("List", expr_type, List_fields, 2);
7674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!List_type) return 0;
7684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Tuple_type = make_type("Tuple", expr_type, Tuple_fields, 2);
7694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Tuple_type) return 0;
7704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_context_type = make_type("expr_context", &AST_type, NULL, 0);
7714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!expr_context_type) return 0;
7724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(expr_context_type, NULL, 0)) return 0;
7734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Load_type = make_type("Load", expr_context_type, NULL, 0);
7744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Load_type) return 0;
7754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Load_singleton = PyType_GenericNew(Load_type, NULL, NULL);
7764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Load_singleton) return 0;
7774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Store_type = make_type("Store", expr_context_type, NULL, 0);
7784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Store_type) return 0;
7794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Store_singleton = PyType_GenericNew(Store_type, NULL, NULL);
7804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Store_singleton) return 0;
7814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Del_type = make_type("Del", expr_context_type, NULL, 0);
7824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Del_type) return 0;
7834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Del_singleton = PyType_GenericNew(Del_type, NULL, NULL);
7844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Del_singleton) return 0;
7854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        AugLoad_type = make_type("AugLoad", expr_context_type, NULL, 0);
7864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!AugLoad_type) return 0;
7874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        AugLoad_singleton = PyType_GenericNew(AugLoad_type, NULL, NULL);
7884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!AugLoad_singleton) return 0;
7894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        AugStore_type = make_type("AugStore", expr_context_type, NULL, 0);
7904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!AugStore_type) return 0;
7914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        AugStore_singleton = PyType_GenericNew(AugStore_type, NULL, NULL);
7924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!AugStore_singleton) return 0;
7934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Param_type = make_type("Param", expr_context_type, NULL, 0);
7944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Param_type) return 0;
7954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Param_singleton = PyType_GenericNew(Param_type, NULL, NULL);
7964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Param_singleton) return 0;
7974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        slice_type = make_type("slice", &AST_type, NULL, 0);
7984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!slice_type) return 0;
7994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(slice_type, NULL, 0)) return 0;
8004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Ellipsis_type = make_type("Ellipsis", slice_type, NULL, 0);
8014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Ellipsis_type) return 0;
8024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Slice_type = make_type("Slice", slice_type, Slice_fields, 3);
8034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Slice_type) return 0;
8044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        ExtSlice_type = make_type("ExtSlice", slice_type, ExtSlice_fields, 1);
8054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ExtSlice_type) return 0;
8064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Index_type = make_type("Index", slice_type, Index_fields, 1);
8074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Index_type) return 0;
8084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        boolop_type = make_type("boolop", &AST_type, NULL, 0);
8094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!boolop_type) return 0;
8104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(boolop_type, NULL, 0)) return 0;
8114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        And_type = make_type("And", boolop_type, NULL, 0);
8124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!And_type) return 0;
8134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        And_singleton = PyType_GenericNew(And_type, NULL, NULL);
8144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!And_singleton) return 0;
8154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Or_type = make_type("Or", boolop_type, NULL, 0);
8164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Or_type) return 0;
8174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Or_singleton = PyType_GenericNew(Or_type, NULL, NULL);
8184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Or_singleton) return 0;
8194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        operator_type = make_type("operator", &AST_type, NULL, 0);
8204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!operator_type) return 0;
8214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(operator_type, NULL, 0)) return 0;
8224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Add_type = make_type("Add", operator_type, NULL, 0);
8234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Add_type) return 0;
8244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Add_singleton = PyType_GenericNew(Add_type, NULL, NULL);
8254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Add_singleton) return 0;
8264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Sub_type = make_type("Sub", operator_type, NULL, 0);
8274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Sub_type) return 0;
8284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Sub_singleton = PyType_GenericNew(Sub_type, NULL, NULL);
8294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Sub_singleton) return 0;
8304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Mult_type = make_type("Mult", operator_type, NULL, 0);
8314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Mult_type) return 0;
8324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Mult_singleton = PyType_GenericNew(Mult_type, NULL, NULL);
8334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Mult_singleton) return 0;
8344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Div_type = make_type("Div", operator_type, NULL, 0);
8354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Div_type) return 0;
8364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Div_singleton = PyType_GenericNew(Div_type, NULL, NULL);
8374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Div_singleton) return 0;
8384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Mod_type = make_type("Mod", operator_type, NULL, 0);
8394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Mod_type) return 0;
8404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Mod_singleton = PyType_GenericNew(Mod_type, NULL, NULL);
8414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Mod_singleton) return 0;
8424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Pow_type = make_type("Pow", operator_type, NULL, 0);
8434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Pow_type) return 0;
8444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Pow_singleton = PyType_GenericNew(Pow_type, NULL, NULL);
8454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Pow_singleton) return 0;
8464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        LShift_type = make_type("LShift", operator_type, NULL, 0);
8474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!LShift_type) return 0;
8484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        LShift_singleton = PyType_GenericNew(LShift_type, NULL, NULL);
8494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!LShift_singleton) return 0;
8504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        RShift_type = make_type("RShift", operator_type, NULL, 0);
8514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!RShift_type) return 0;
8524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        RShift_singleton = PyType_GenericNew(RShift_type, NULL, NULL);
8534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!RShift_singleton) return 0;
8544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BitOr_type = make_type("BitOr", operator_type, NULL, 0);
8554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BitOr_type) return 0;
8564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BitOr_singleton = PyType_GenericNew(BitOr_type, NULL, NULL);
8574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BitOr_singleton) return 0;
8584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BitXor_type = make_type("BitXor", operator_type, NULL, 0);
8594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BitXor_type) return 0;
8604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BitXor_singleton = PyType_GenericNew(BitXor_type, NULL, NULL);
8614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BitXor_singleton) return 0;
8624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BitAnd_type = make_type("BitAnd", operator_type, NULL, 0);
8634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BitAnd_type) return 0;
8644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        BitAnd_singleton = PyType_GenericNew(BitAnd_type, NULL, NULL);
8654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!BitAnd_singleton) return 0;
8664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        FloorDiv_type = make_type("FloorDiv", operator_type, NULL, 0);
8674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!FloorDiv_type) return 0;
8684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        FloorDiv_singleton = PyType_GenericNew(FloorDiv_type, NULL, NULL);
8694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!FloorDiv_singleton) return 0;
8704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        unaryop_type = make_type("unaryop", &AST_type, NULL, 0);
8714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!unaryop_type) return 0;
8724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(unaryop_type, NULL, 0)) return 0;
8734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Invert_type = make_type("Invert", unaryop_type, NULL, 0);
8744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Invert_type) return 0;
8754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Invert_singleton = PyType_GenericNew(Invert_type, NULL, NULL);
8764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Invert_singleton) return 0;
8774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Not_type = make_type("Not", unaryop_type, NULL, 0);
8784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Not_type) return 0;
8794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Not_singleton = PyType_GenericNew(Not_type, NULL, NULL);
8804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Not_singleton) return 0;
8814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        UAdd_type = make_type("UAdd", unaryop_type, NULL, 0);
8824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!UAdd_type) return 0;
8834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        UAdd_singleton = PyType_GenericNew(UAdd_type, NULL, NULL);
8844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!UAdd_singleton) return 0;
8854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        USub_type = make_type("USub", unaryop_type, NULL, 0);
8864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!USub_type) return 0;
8874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        USub_singleton = PyType_GenericNew(USub_type, NULL, NULL);
8884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!USub_singleton) return 0;
8894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmpop_type = make_type("cmpop", &AST_type, NULL, 0);
8904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!cmpop_type) return 0;
8914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(cmpop_type, NULL, 0)) return 0;
8924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Eq_type = make_type("Eq", cmpop_type, NULL, 0);
8934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Eq_type) return 0;
8944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Eq_singleton = PyType_GenericNew(Eq_type, NULL, NULL);
8954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Eq_singleton) return 0;
8964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        NotEq_type = make_type("NotEq", cmpop_type, NULL, 0);
8974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!NotEq_type) return 0;
8984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        NotEq_singleton = PyType_GenericNew(NotEq_type, NULL, NULL);
8994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!NotEq_singleton) return 0;
9004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Lt_type = make_type("Lt", cmpop_type, NULL, 0);
9014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Lt_type) return 0;
9024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Lt_singleton = PyType_GenericNew(Lt_type, NULL, NULL);
9034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Lt_singleton) return 0;
9044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        LtE_type = make_type("LtE", cmpop_type, NULL, 0);
9054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!LtE_type) return 0;
9064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        LtE_singleton = PyType_GenericNew(LtE_type, NULL, NULL);
9074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!LtE_singleton) return 0;
9084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Gt_type = make_type("Gt", cmpop_type, NULL, 0);
9094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Gt_type) return 0;
9104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Gt_singleton = PyType_GenericNew(Gt_type, NULL, NULL);
9114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Gt_singleton) return 0;
9124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        GtE_type = make_type("GtE", cmpop_type, NULL, 0);
9134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!GtE_type) return 0;
9144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        GtE_singleton = PyType_GenericNew(GtE_type, NULL, NULL);
9154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!GtE_singleton) return 0;
9164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Is_type = make_type("Is", cmpop_type, NULL, 0);
9174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Is_type) return 0;
9184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Is_singleton = PyType_GenericNew(Is_type, NULL, NULL);
9194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!Is_singleton) return 0;
9204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        IsNot_type = make_type("IsNot", cmpop_type, NULL, 0);
9214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!IsNot_type) return 0;
9224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        IsNot_singleton = PyType_GenericNew(IsNot_type, NULL, NULL);
9234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!IsNot_singleton) return 0;
9244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        In_type = make_type("In", cmpop_type, NULL, 0);
9254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!In_type) return 0;
9264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        In_singleton = PyType_GenericNew(In_type, NULL, NULL);
9274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!In_singleton) return 0;
9284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        NotIn_type = make_type("NotIn", cmpop_type, NULL, 0);
9294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!NotIn_type) return 0;
9304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        NotIn_singleton = PyType_GenericNew(NotIn_type, NULL, NULL);
9314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!NotIn_singleton) return 0;
9324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        comprehension_type = make_type("comprehension", &AST_type,
9334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                       comprehension_fields, 3);
9344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!comprehension_type) return 0;
9354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        excepthandler_type = make_type("excepthandler", &AST_type, NULL, 0);
9364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!excepthandler_type) return 0;
9374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!add_attributes(excepthandler_type, excepthandler_attributes, 2))
9384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return 0;
9394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        ExceptHandler_type = make_type("ExceptHandler", excepthandler_type,
9404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                       ExceptHandler_fields, 3);
9414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ExceptHandler_type) return 0;
9424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        arguments_type = make_type("arguments", &AST_type, arguments_fields, 4);
9434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!arguments_type) return 0;
9444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        keyword_type = make_type("keyword", &AST_type, keyword_fields, 2);
9454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!keyword_type) return 0;
9464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        alias_type = make_type("alias", &AST_type, alias_fields, 2);
9474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!alias_type) return 0;
9484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        initialized = 1;
9494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
9504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
9514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
9524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena);
9534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena);
9544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena);
9554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena*
9564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                arena);
9574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena);
9584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena);
9594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena);
9604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena);
9614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena);
9624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena*
9634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                 arena);
9644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena*
9654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                 arena);
9664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena);
9674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena);
9684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstatic int obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena);
9694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
9704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmmod_ty
9714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmModule(asdl_seq * body, PyArena *arena)
9724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
9734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        mod_ty p;
9744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
9754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
9764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
9774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Module_kind;
9784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Module.body = body;
9794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
9804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
9814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
9824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmmod_ty
9834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmInteractive(asdl_seq * body, PyArena *arena)
9844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
9854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        mod_ty p;
9864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
9874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
9884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
9894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Interactive_kind;
9904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Interactive.body = body;
9914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
9924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
9934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
9944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmmod_ty
9954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmExpression(expr_ty body, PyArena *arena)
9964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
9974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        mod_ty p;
9984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!body) {
9994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
10004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field body is required for Expression");
10014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
10034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
10044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
10054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Expression_kind;
10074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Expression.body = body;
10084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
10094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
10104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
10114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmmod_ty
10124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmSuite(asdl_seq * body, PyArena *arena)
10134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
10144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        mod_ty p;
10154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
10164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
10174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Suite_kind;
10194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Suite.body = body;
10204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
10214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
10224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
10234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
10244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmFunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq *
10254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            decorator_list, int lineno, int col_offset, PyArena *arena)
10264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
10274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
10284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!name) {
10294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
10304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field name is required for FunctionDef");
10314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
10334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!args) {
10344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
10354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field args is required for FunctionDef");
10364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
10384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
10394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
10404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = FunctionDef_kind;
10424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.FunctionDef.name = name;
10434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.FunctionDef.args = args;
10444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.FunctionDef.body = body;
10454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.FunctionDef.decorator_list = decorator_list;
10464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
10474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
10484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
10494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
10504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
10514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
10524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmClassDef(identifier name, asdl_seq * bases, asdl_seq * body, asdl_seq *
10534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm         decorator_list, int lineno, int col_offset, PyArena *arena)
10544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
10554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
10564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!name) {
10574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
10584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field name is required for ClassDef");
10594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
10614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
10624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
10634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = ClassDef_kind;
10654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ClassDef.name = name;
10664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ClassDef.bases = bases;
10674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ClassDef.body = body;
10684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ClassDef.decorator_list = decorator_list;
10694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
10704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
10714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
10724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
10734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
10744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
10754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmReturn(expr_ty value, int lineno, int col_offset, PyArena *arena)
10764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
10774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
10784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
10794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
10804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Return_kind;
10824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Return.value = value;
10834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
10844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
10854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
10864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
10874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
10884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
10894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmDelete(asdl_seq * targets, int lineno, int col_offset, PyArena *arena)
10904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
10914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
10924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
10934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
10944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
10954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Delete_kind;
10964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Delete.targets = targets;
10974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
10984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
10994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
11004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
11014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
11024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
11034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmAssign(asdl_seq * targets, expr_ty value, int lineno, int col_offset, PyArena
11044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm       *arena)
11054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
11064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
11074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
11084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
11094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for Assign");
11104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
11124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
11134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
11144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Assign_kind;
11164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Assign.targets = targets;
11174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Assign.value = value;
11184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
11194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
11204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
11214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
11224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
11234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
11244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmAugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno, int
11254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm          col_offset, PyArena *arena)
11264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
11274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
11284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!target) {
11294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
11304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field target is required for AugAssign");
11314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
11334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!op) {
11344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
11354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field op is required for AugAssign");
11364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
11384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
11394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
11404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for AugAssign");
11414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
11434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
11444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
11454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = AugAssign_kind;
11474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.AugAssign.target = target;
11484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.AugAssign.op = op;
11494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.AugAssign.value = value;
11504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
11514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
11524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
11534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
11544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
11554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
11564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPrint(expr_ty dest, asdl_seq * values, bool nl, int lineno, int col_offset,
11574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm      PyArena *arena)
11584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
11594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
11604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
11614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
11624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Print_kind;
11644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Print.dest = dest;
11654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Print.values = values;
11664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Print.nl = nl;
11674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
11684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
11694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
11704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
11714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
11724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
11734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmFor(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int
11744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    lineno, int col_offset, PyArena *arena)
11754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
11764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
11774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!target) {
11784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
11794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field target is required for For");
11804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
11824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!iter) {
11834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
11844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field iter is required for For");
11854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
11874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
11884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
11894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
11904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = For_kind;
11914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.For.target = target;
11924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.For.iter = iter;
11934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.For.body = body;
11944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.For.orelse = orelse;
11954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
11964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
11974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
11984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
11994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
12004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
12014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmWhile(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int
12024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm      col_offset, PyArena *arena)
12034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
12044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
12054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!test) {
12064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
12074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field test is required for While");
12084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
12104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
12114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
12124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = While_kind;
12144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.While.test = test;
12154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.While.body = body;
12164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.While.orelse = orelse;
12174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
12184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
12194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
12204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
12214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
12224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
12234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmIf(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int
12244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm   col_offset, PyArena *arena)
12254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
12264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
12274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!test) {
12284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
12294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field test is required for If");
12304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
12324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
12334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
12344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = If_kind;
12364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.If.test = test;
12374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.If.body = body;
12384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.If.orelse = orelse;
12394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
12404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
12414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
12424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
12434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
12444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
12454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmWith(expr_ty context_expr, expr_ty optional_vars, asdl_seq * body, int lineno,
12464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm     int col_offset, PyArena *arena)
12474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
12484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
12494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!context_expr) {
12504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
12514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field context_expr is required for With");
12524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
12544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
12554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
12564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = With_kind;
12584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.With.context_expr = context_expr;
12594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.With.optional_vars = optional_vars;
12604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.With.body = body;
12614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
12624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
12634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
12644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
12654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
12664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
12674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmRaise(expr_ty type, expr_ty inst, expr_ty tback, int lineno, int col_offset,
12684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm      PyArena *arena)
12694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
12704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
12714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
12724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
12734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Raise_kind;
12754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Raise.type = type;
12764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Raise.inst = inst;
12774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Raise.tback = tback;
12784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
12794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
12804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
12814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
12824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
12834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
12844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmTryExcept(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse, int lineno,
12854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm          int col_offset, PyArena *arena)
12864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
12874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
12884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
12894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
12904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
12914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = TryExcept_kind;
12924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.TryExcept.body = body;
12934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.TryExcept.handlers = handlers;
12944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.TryExcept.orelse = orelse;
12954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
12964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
12974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
12984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
12994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
13004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
13014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmTryFinally(asdl_seq * body, asdl_seq * finalbody, int lineno, int col_offset,
13024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm           PyArena *arena)
13034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
13044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
13054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
13064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
13074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = TryFinally_kind;
13094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.TryFinally.body = body;
13104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.TryFinally.finalbody = finalbody;
13114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
13124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
13134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
13144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
13154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
13164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
13174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmAssert(expr_ty test, expr_ty msg, int lineno, int col_offset, PyArena *arena)
13184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
13194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
13204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!test) {
13214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
13224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field test is required for Assert");
13234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
13254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
13264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
13274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Assert_kind;
13294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Assert.test = test;
13304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Assert.msg = msg;
13314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
13324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
13334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
13344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
13354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
13364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
13374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmImport(asdl_seq * names, int lineno, int col_offset, PyArena *arena)
13384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
13394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
13404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
13414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
13424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Import_kind;
13444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Import.names = names;
13454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
13464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
13474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
13484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
13494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
13504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
13514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmImportFrom(identifier module, asdl_seq * names, int level, int lineno, int
13524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm           col_offset, PyArena *arena)
13534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
13544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
13554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
13564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
13574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = ImportFrom_kind;
13594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ImportFrom.module = module;
13604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ImportFrom.names = names;
13614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ImportFrom.level = level;
13624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
13634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
13644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
13654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
13664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
13674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
13684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmExec(expr_ty body, expr_ty globals, expr_ty locals, int lineno, int col_offset,
13694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm     PyArena *arena)
13704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
13714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
13724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!body) {
13734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
13744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field body is required for Exec");
13754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
13774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
13784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
13794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Exec_kind;
13814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Exec.body = body;
13824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Exec.globals = globals;
13834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Exec.locals = locals;
13844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
13854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
13864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
13874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
13884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
13894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
13904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmGlobal(asdl_seq * names, int lineno, int col_offset, PyArena *arena)
13914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
13924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
13934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
13944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
13954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
13964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Global_kind;
13974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Global.names = names;
13984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
13994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
14004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
14014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
14024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
14034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
14044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmExpr(expr_ty value, int lineno, int col_offset, PyArena *arena)
14054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
14064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
14074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
14084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
14094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for Expr");
14104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
14124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
14134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
14144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Expr_kind;
14164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Expr.value = value;
14174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
14184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
14194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
14204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
14214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
14224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
14234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPass(int lineno, int col_offset, PyArena *arena)
14244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
14254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
14264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
14274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
14284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Pass_kind;
14304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
14314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
14324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
14334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
14344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
14354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
14364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmBreak(int lineno, int col_offset, PyArena *arena)
14374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
14384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
14394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
14404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
14414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Break_kind;
14434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
14444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
14454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
14464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
14474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
14484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmstmt_ty
14494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmContinue(int lineno, int col_offset, PyArena *arena)
14504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
14514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty p;
14524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
14534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
14544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Continue_kind;
14564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
14574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
14584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
14594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
14604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
14614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
14624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmBoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset, PyArena
14634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm       *arena)
14644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
14654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
14664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!op) {
14674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
14684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field op is required for BoolOp");
14694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
14714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
14724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
14734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = BoolOp_kind;
14754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.BoolOp.op = op;
14764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.BoolOp.values = values;
14774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
14784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
14794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
14804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
14814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
14824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
14834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmBinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int col_offset,
14844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm      PyArena *arena)
14854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
14864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
14874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!left) {
14884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
14894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field left is required for BinOp");
14904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
14924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!op) {
14934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
14944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field op is required for BinOp");
14954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
14964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
14974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!right) {
14984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
14994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field right is required for BinOp");
15004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
15034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
15044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = BinOp_kind;
15064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.BinOp.left = left;
15074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.BinOp.op = op;
15084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.BinOp.right = right;
15094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
15104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
15114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
15124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
15134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
15144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
15154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmUnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset, PyArena
15164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        *arena)
15174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
15184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
15194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!op) {
15204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
15214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field op is required for UnaryOp");
15224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!operand) {
15254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
15264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field operand is required for UnaryOp");
15274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
15304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
15314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = UnaryOp_kind;
15334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.UnaryOp.op = op;
15344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.UnaryOp.operand = operand;
15354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
15364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
15374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
15384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
15394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
15404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
15414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmLambda(arguments_ty args, expr_ty body, int lineno, int col_offset, PyArena
15424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm       *arena)
15434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
15444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
15454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!args) {
15464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
15474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field args is required for Lambda");
15484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!body) {
15514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
15524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field body is required for Lambda");
15534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
15564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
15574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Lambda_kind;
15594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Lambda.args = args;
15604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Lambda.body = body;
15614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
15624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
15634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
15644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
15654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
15664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
15674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmIfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int col_offset,
15684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm      PyArena *arena)
15694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
15704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
15714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!test) {
15724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
15734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field test is required for IfExp");
15744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!body) {
15774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
15784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field body is required for IfExp");
15794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!orelse) {
15824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
15834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field orelse is required for IfExp");
15844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
15864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
15874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
15884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
15894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = IfExp_kind;
15904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.IfExp.test = test;
15914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.IfExp.body = body;
15924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.IfExp.orelse = orelse;
15934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
15944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
15954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
15964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
15974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
15984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
15994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmDict(asdl_seq * keys, asdl_seq * values, int lineno, int col_offset, PyArena
16004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm     *arena)
16014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
16024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
16034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
16044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
16054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Dict_kind;
16074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Dict.keys = keys;
16084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Dict.values = values;
16094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
16104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
16114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
16124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
16134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
16144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
16154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmSet(asdl_seq * elts, int lineno, int col_offset, PyArena *arena)
16164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
16174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
16184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
16194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
16204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Set_kind;
16224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Set.elts = elts;
16234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
16244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
16254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
16264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
16274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
16284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
16294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmListComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset,
16304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm         PyArena *arena)
16314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
16324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
16334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!elt) {
16344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
16354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field elt is required for ListComp");
16364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
16384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
16394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
16404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = ListComp_kind;
16424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ListComp.elt = elt;
16434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ListComp.generators = generators;
16444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
16454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
16464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
16474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
16484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
16494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
16504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmSetComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena
16514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        *arena)
16524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
16534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
16544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!elt) {
16554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
16564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field elt is required for SetComp");
16574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
16594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
16604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
16614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = SetComp_kind;
16634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.SetComp.elt = elt;
16644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.SetComp.generators = generators;
16654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
16664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
16674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
16684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
16694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
16704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
16714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmDictComp(expr_ty key, expr_ty value, asdl_seq * generators, int lineno, int
16724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm         col_offset, PyArena *arena)
16734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
16744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
16754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!key) {
16764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
16774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field key is required for DictComp");
16784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
16804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
16814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
16824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for DictComp");
16834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
16854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
16864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
16874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
16884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = DictComp_kind;
16894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.DictComp.key = key;
16904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.DictComp.value = value;
16914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.DictComp.generators = generators;
16924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
16934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
16944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
16954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
16964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
16974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
16984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmGeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset,
16994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm             PyArena *arena)
17004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
17014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
17024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!elt) {
17034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
17044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field elt is required for GeneratorExp");
17054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
17074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
17084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
17094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = GeneratorExp_kind;
17114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.GeneratorExp.elt = elt;
17124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.GeneratorExp.generators = generators;
17134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
17144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
17154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
17164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
17174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
17184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
17194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmYield(expr_ty value, int lineno, int col_offset, PyArena *arena)
17204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
17214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
17224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
17234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
17244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Yield_kind;
17264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Yield.value = value;
17274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
17284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
17294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
17304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
17314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
17324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
17334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmCompare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators, int lineno,
17344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int col_offset, PyArena *arena)
17354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
17364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
17374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!left) {
17384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
17394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field left is required for Compare");
17404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
17424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
17434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
17444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Compare_kind;
17464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Compare.left = left;
17474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Compare.ops = ops;
17484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Compare.comparators = comparators;
17494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
17504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
17514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
17524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
17534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
17544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
17554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmCall(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs,
17564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm     expr_ty kwargs, int lineno, int col_offset, PyArena *arena)
17574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
17584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
17594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!func) {
17604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
17614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field func is required for Call");
17624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
17644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
17654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
17664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Call_kind;
17684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Call.func = func;
17694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Call.args = args;
17704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Call.keywords = keywords;
17714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Call.starargs = starargs;
17724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Call.kwargs = kwargs;
17734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
17744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
17754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
17764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
17774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
17784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
17794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmRepr(expr_ty value, int lineno, int col_offset, PyArena *arena)
17804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
17814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
17824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
17834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
17844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for Repr");
17854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
17874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
17884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
17894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
17904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Repr_kind;
17914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Repr.value = value;
17924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
17934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
17944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
17954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
17964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
17974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
17984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmNum(object n, int lineno, int col_offset, PyArena *arena)
17994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
18004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
18014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!n) {
18024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field n is required for Num");
18044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
18074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
18084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Num_kind;
18104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Num.n = n;
18114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
18124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
18134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
18144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
18154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
18164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
18174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmStr(string s, int lineno, int col_offset, PyArena *arena)
18184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
18194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
18204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!s) {
18214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field s is required for Str");
18234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
18264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
18274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Str_kind;
18294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Str.s = s;
18304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
18314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
18324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
18334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
18344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
18354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
18364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmAttribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno, int
18374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm          col_offset, PyArena *arena)
18384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
18394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
18404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
18414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for Attribute");
18434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!attr) {
18464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field attr is required for Attribute");
18484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ctx) {
18514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field ctx is required for Attribute");
18534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
18564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
18574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Attribute_kind;
18594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Attribute.value = value;
18604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Attribute.attr = attr;
18614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Attribute.ctx = ctx;
18624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
18634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
18644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
18654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
18664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
18674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
18684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmSubscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int lineno, int
18694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm          col_offset, PyArena *arena)
18704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
18714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
18724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
18734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for Subscript");
18754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!slice) {
18784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field slice is required for Subscript");
18804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ctx) {
18834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
18844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field ctx is required for Subscript");
18854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
18874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
18884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
18894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
18904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Subscript_kind;
18914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Subscript.value = value;
18924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Subscript.slice = slice;
18934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Subscript.ctx = ctx;
18944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
18954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
18964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
18974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
18984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
18994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
19004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmName(identifier id, expr_context_ty ctx, int lineno, int col_offset, PyArena
19014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm     *arena)
19024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
19034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
19044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!id) {
19054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
19064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field id is required for Name");
19074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
19094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ctx) {
19104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
19114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field ctx is required for Name");
19124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
19144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
19154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
19164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Name_kind;
19184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Name.id = id;
19194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Name.ctx = ctx;
19204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
19214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
19224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
19234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
19244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
19254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
19264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmList(asdl_seq * elts, expr_context_ty ctx, int lineno, int col_offset, PyArena
19274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm     *arena)
19284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
19294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
19304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ctx) {
19314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
19324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field ctx is required for List");
19334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
19354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
19364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
19374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = List_kind;
19394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.List.elts = elts;
19404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.List.ctx = ctx;
19414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
19424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
19434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
19444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
19454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
19464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexpr_ty
19474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmTuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int col_offset, PyArena
19484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm      *arena)
19494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
19504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty p;
19514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!ctx) {
19524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
19534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field ctx is required for Tuple");
19544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
19564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
19574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
19584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Tuple_kind;
19604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Tuple.elts = elts;
19614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Tuple.ctx = ctx;
19624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
19634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
19644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
19654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
19664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
19674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmslice_ty
19684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmEllipsis(PyArena *arena)
19694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
19704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        slice_ty p;
19714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
19724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
19734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Ellipsis_kind;
19754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
19764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
19774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
19784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmslice_ty
19794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmSlice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena)
19804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
19814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        slice_ty p;
19824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
19834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
19844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Slice_kind;
19864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Slice.lower = lower;
19874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Slice.upper = upper;
19884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Slice.step = step;
19894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
19904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
19914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
19924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmslice_ty
19934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmExtSlice(asdl_seq * dims, PyArena *arena)
19944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
19954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        slice_ty p;
19964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
19974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
19984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
19994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = ExtSlice_kind;
20004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ExtSlice.dims = dims;
20014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
20024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
20034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
20044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmslice_ty
20054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmIndex(expr_ty value, PyArena *arena)
20064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
20074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        slice_ty p;
20084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
20094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
20104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for Index");
20114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
20134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
20144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
20154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = Index_kind;
20174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.Index.value = value;
20184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
20194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
20204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
20214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmcomprehension_ty
20224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmcomprehension(expr_ty target, expr_ty iter, asdl_seq * ifs, PyArena *arena)
20234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
20244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        comprehension_ty p;
20254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!target) {
20264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
20274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field target is required for comprehension");
20284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
20304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!iter) {
20314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
20324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field iter is required for comprehension");
20334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
20354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (comprehension_ty)PyArena_Malloc(arena, sizeof(*p));
20364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
20374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->target = target;
20394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->iter = iter;
20404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->ifs = ifs;
20414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
20424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
20434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
20444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmexcepthandler_ty
20454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmExceptHandler(expr_ty type, expr_ty name, asdl_seq * body, int lineno, int
20464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm              col_offset, PyArena *arena)
20474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
20484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        excepthandler_ty p;
20494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (excepthandler_ty)PyArena_Malloc(arena, sizeof(*p));
20504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
20514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kind = ExceptHandler_kind;
20534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ExceptHandler.type = type;
20544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ExceptHandler.name = name;
20554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->v.ExceptHandler.body = body;
20564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->lineno = lineno;
20574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->col_offset = col_offset;
20584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
20594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
20604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
20614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmarguments_ty
20624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmarguments(asdl_seq * args, identifier vararg, identifier kwarg, asdl_seq *
20634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm          defaults, PyArena *arena)
20644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
20654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        arguments_ty p;
20664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (arguments_ty)PyArena_Malloc(arena, sizeof(*p));
20674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
20684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->args = args;
20704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->vararg = vararg;
20714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->kwarg = kwarg;
20724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->defaults = defaults;
20734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
20744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
20754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
20764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmkeyword_ty
20774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmkeyword(identifier arg, expr_ty value, PyArena *arena)
20784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
20794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        keyword_ty p;
20804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!arg) {
20814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
20824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field arg is required for keyword");
20834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
20854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) {
20864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
20874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field value is required for keyword");
20884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
20904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (keyword_ty)PyArena_Malloc(arena, sizeof(*p));
20914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
20924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
20934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->arg = arg;
20944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->value = value;
20954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
20964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
20974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
20984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmalias_ty
20994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmalias(identifier name, identifier asname, PyArena *arena)
21004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
21014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        alias_ty p;
21024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!name) {
21034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_ValueError,
21044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                "field name is required for alias");
21054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
21064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
21074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p = (alias_ty)PyArena_Malloc(arena, sizeof(*p));
21084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!p)
21094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return NULL;
21104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->name = name;
21114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        p->asname = asname;
21124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return p;
21134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
21144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
21154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
21164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
21174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_mod(void* _o)
21184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
21194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        mod_ty o = (mod_ty)_o;
21204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
21214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
21224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
21234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
21244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
21254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
21264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch (o->kind) {
21274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Module_kind:
21284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Module_type, NULL, NULL);
21294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
21304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Module.body, ast2obj_stmt);
21314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
21324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
21334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
21344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
21354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
21364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Interactive_kind:
21374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Interactive_type, NULL, NULL);
21384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
21394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Interactive.body, ast2obj_stmt);
21404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
21414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
21424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
21434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
21444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
21454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Expression_kind:
21464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Expression_type, NULL, NULL);
21474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
21484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Expression.body);
21494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
21504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
21514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
21524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
21534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
21544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Suite_kind:
21554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Suite_type, NULL, NULL);
21564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
21574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Suite.body, ast2obj_stmt);
21584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
21594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
21604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
21614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
21624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
21634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
21644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
21654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
21664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
21674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
21684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
21694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
21704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
21714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
21724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_stmt(void* _o)
21734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
21744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        stmt_ty o = (stmt_ty)_o;
21754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
21764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
21774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
21784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
21794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
21804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
21814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch (o->kind) {
21824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case FunctionDef_kind:
21834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(FunctionDef_type, NULL, NULL);
21844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
21854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_identifier(o->v.FunctionDef.name);
21864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
21874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "name", value) == -1)
21884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
21894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
21904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_arguments(o->v.FunctionDef.args);
21914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
21924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "args", value) == -1)
21934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
21944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
21954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.FunctionDef.body, ast2obj_stmt);
21964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
21974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
21984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
21994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.FunctionDef.decorator_list,
22014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     ast2obj_expr);
22024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "decorator_list", value) ==
22044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    -1)
22054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
22084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case ClassDef_kind:
22094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(ClassDef_type, NULL, NULL);
22104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
22114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_identifier(o->v.ClassDef.name);
22124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "name", value) == -1)
22144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.ClassDef.bases, ast2obj_expr);
22174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "bases", value) == -1)
22194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.ClassDef.body, ast2obj_stmt);
22224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
22244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.ClassDef.decorator_list,
22274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     ast2obj_expr);
22284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "decorator_list", value) ==
22304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    -1)
22314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
22344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Return_kind:
22354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Return_type, NULL, NULL);
22364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
22374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Return.value);
22384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
22404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
22434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Delete_kind:
22444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Delete_type, NULL, NULL);
22454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
22464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Delete.targets, ast2obj_expr);
22474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "targets", value) == -1)
22494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
22524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Assign_kind:
22534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Assign_type, NULL, NULL);
22544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
22554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Assign.targets, ast2obj_expr);
22564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "targets", value) == -1)
22584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Assign.value);
22614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
22634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
22664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case AugAssign_kind:
22674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(AugAssign_type, NULL, NULL);
22684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
22694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.AugAssign.target);
22704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "target", value) == -1)
22724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_operator(o->v.AugAssign.op);
22754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "op", value) == -1)
22774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.AugAssign.value);
22804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
22824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
22854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Print_kind:
22864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Print_type, NULL, NULL);
22874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
22884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Print.dest);
22894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "dest", value) == -1)
22914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Print.values, ast2obj_expr);
22944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
22954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "values", value) == -1)
22964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
22974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
22984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_bool(o->v.Print.nl);
22994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "nl", value) == -1)
23014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
23044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case For_kind:
23054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(For_type, NULL, NULL);
23064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
23074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.For.target);
23084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "target", value) == -1)
23104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.For.iter);
23134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "iter", value) == -1)
23154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.For.body, ast2obj_stmt);
23184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
23204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.For.orelse, ast2obj_stmt);
23234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "orelse", value) == -1)
23254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
23284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case While_kind:
23294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(While_type, NULL, NULL);
23304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
23314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.While.test);
23324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "test", value) == -1)
23344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.While.body, ast2obj_stmt);
23374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
23394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.While.orelse, ast2obj_stmt);
23424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "orelse", value) == -1)
23444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
23474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case If_kind:
23484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(If_type, NULL, NULL);
23494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
23504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.If.test);
23514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "test", value) == -1)
23534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.If.body, ast2obj_stmt);
23564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
23584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.If.orelse, ast2obj_stmt);
23614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "orelse", value) == -1)
23634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
23664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case With_kind:
23674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(With_type, NULL, NULL);
23684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
23694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.With.context_expr);
23704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "context_expr", value) == -1)
23724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.With.optional_vars);
23754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "optional_vars", value) ==
23774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    -1)
23784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.With.body, ast2obj_stmt);
23814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
23834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
23864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Raise_kind:
23874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Raise_type, NULL, NULL);
23884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
23894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Raise.type);
23904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "type", value) == -1)
23924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Raise.inst);
23954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
23964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "inst", value) == -1)
23974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
23984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
23994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Raise.tback);
24004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "tback", value) == -1)
24024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
24054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case TryExcept_kind:
24064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(TryExcept_type, NULL, NULL);
24074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
24084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.TryExcept.body, ast2obj_stmt);
24094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
24114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.TryExcept.handlers,
24144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     ast2obj_excepthandler);
24154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "handlers", value) == -1)
24174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.TryExcept.orelse, ast2obj_stmt);
24204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "orelse", value) == -1)
24224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
24254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case TryFinally_kind:
24264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(TryFinally_type, NULL, NULL);
24274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
24284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.TryFinally.body, ast2obj_stmt);
24294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
24314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.TryFinally.finalbody, ast2obj_stmt);
24344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "finalbody", value) == -1)
24364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
24394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Assert_kind:
24404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Assert_type, NULL, NULL);
24414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
24424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Assert.test);
24434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "test", value) == -1)
24454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Assert.msg);
24484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "msg", value) == -1)
24504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
24534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Import_kind:
24544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Import_type, NULL, NULL);
24554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
24564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Import.names, ast2obj_alias);
24574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "names", value) == -1)
24594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
24624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case ImportFrom_kind:
24634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(ImportFrom_type, NULL, NULL);
24644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
24654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_identifier(o->v.ImportFrom.module);
24664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "module", value) == -1)
24684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.ImportFrom.names, ast2obj_alias);
24714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "names", value) == -1)
24734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_int(o->v.ImportFrom.level);
24764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "level", value) == -1)
24784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
24814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Exec_kind:
24824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Exec_type, NULL, NULL);
24834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
24844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Exec.body);
24854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
24874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Exec.globals);
24904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "globals", value) == -1)
24924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Exec.locals);
24954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
24964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "locals", value) == -1)
24974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
24984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
24994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Global_kind:
25014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Global_type, NULL, NULL);
25024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Global.names, ast2obj_identifier);
25044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "names", value) == -1)
25064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
25084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Expr_kind:
25104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Expr_type, NULL, NULL);
25114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Expr.value);
25134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
25154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
25174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Pass_kind:
25194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Pass_type, NULL, NULL);
25204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Break_kind:
25234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Break_type, NULL, NULL);
25244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Continue_kind:
25274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Continue_type, NULL, NULL);
25284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
25314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_int(o->lineno);
25324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
25334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "lineno", value) < 0)
25344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
25354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
25364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_int(o->col_offset);
25374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
25384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
25394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
25404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
25414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
25424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
25434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
25444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
25454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
25464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
25474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
25484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
25494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_expr(void* _o)
25504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
25514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty o = (expr_ty)_o;
25524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
25534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
25544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
25554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
25564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
25574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
25584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch (o->kind) {
25594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case BoolOp_kind:
25604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(BoolOp_type, NULL, NULL);
25614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_boolop(o->v.BoolOp.op);
25634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "op", value) == -1)
25654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
25674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.BoolOp.values, ast2obj_expr);
25684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "values", value) == -1)
25704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
25724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case BinOp_kind:
25744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(BinOp_type, NULL, NULL);
25754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.BinOp.left);
25774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "left", value) == -1)
25794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
25814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_operator(o->v.BinOp.op);
25824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "op", value) == -1)
25844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
25864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.BinOp.right);
25874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "right", value) == -1)
25894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
25914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
25924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case UnaryOp_kind:
25934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(UnaryOp_type, NULL, NULL);
25944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
25954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_unaryop(o->v.UnaryOp.op);
25964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
25974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "op", value) == -1)
25984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
25994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.UnaryOp.operand);
26014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "operand", value) == -1)
26034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
26064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Lambda_kind:
26074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Lambda_type, NULL, NULL);
26084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
26094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_arguments(o->v.Lambda.args);
26104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "args", value) == -1)
26124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Lambda.body);
26154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
26174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
26204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case IfExp_kind:
26214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(IfExp_type, NULL, NULL);
26224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
26234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.IfExp.test);
26244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "test", value) == -1)
26264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.IfExp.body);
26294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
26314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.IfExp.orelse);
26344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "orelse", value) == -1)
26364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
26394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Dict_kind:
26404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Dict_type, NULL, NULL);
26414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
26424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Dict.keys, ast2obj_expr);
26434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "keys", value) == -1)
26454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Dict.values, ast2obj_expr);
26484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "values", value) == -1)
26504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
26534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Set_kind:
26544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Set_type, NULL, NULL);
26554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
26564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Set.elts, ast2obj_expr);
26574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "elts", value) == -1)
26594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
26624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case ListComp_kind:
26634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(ListComp_type, NULL, NULL);
26644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
26654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.ListComp.elt);
26664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "elt", value) == -1)
26684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.ListComp.generators,
26714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     ast2obj_comprehension);
26724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "generators", value) == -1)
26744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
26774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case SetComp_kind:
26784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(SetComp_type, NULL, NULL);
26794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
26804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.SetComp.elt);
26814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "elt", value) == -1)
26834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.SetComp.generators,
26864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     ast2obj_comprehension);
26874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "generators", value) == -1)
26894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
26914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
26924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case DictComp_kind:
26934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(DictComp_type, NULL, NULL);
26944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
26954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.DictComp.key);
26964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
26974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "key", value) == -1)
26984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
26994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.DictComp.value);
27014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
27034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.DictComp.generators,
27064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     ast2obj_comprehension);
27074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "generators", value) == -1)
27094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
27124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case GeneratorExp_kind:
27134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(GeneratorExp_type, NULL, NULL);
27144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
27154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.GeneratorExp.elt);
27164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "elt", value) == -1)
27184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.GeneratorExp.generators,
27214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     ast2obj_comprehension);
27224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "generators", value) == -1)
27244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
27274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Yield_kind:
27284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Yield_type, NULL, NULL);
27294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
27304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Yield.value);
27314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
27334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
27364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Compare_kind:
27374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Compare_type, NULL, NULL);
27384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
27394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Compare.left);
27404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "left", value) == -1)
27424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                {
27454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int i, n = asdl_seq_LEN(o->v.Compare.ops);
27464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        value = PyList_New(n);
27474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!value) goto failed;
27484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for(i = 0; i < n; i++)
27494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i)));
27504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
27514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "ops", value) == -1)
27534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Compare.comparators, ast2obj_expr);
27564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "comparators", value) == -1)
27584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
27614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Call_kind:
27624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Call_type, NULL, NULL);
27634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
27644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Call.func);
27654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "func", value) == -1)
27674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Call.args, ast2obj_expr);
27704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "args", value) == -1)
27724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Call.keywords, ast2obj_keyword);
27754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "keywords", value) == -1)
27774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Call.starargs);
27804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "starargs", value) == -1)
27824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Call.kwargs);
27854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "kwargs", value) == -1)
27874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
27904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Repr_kind:
27914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Repr_type, NULL, NULL);
27924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
27934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Repr.value);
27944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
27954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
27964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
27974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
27984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
27994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Num_kind:
28004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Num_type, NULL, NULL);
28014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
28024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_object(o->v.Num.n);
28034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "n", value) == -1)
28054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
28084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Str_kind:
28094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Str_type, NULL, NULL);
28104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
28114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_string(o->v.Str.s);
28124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "s", value) == -1)
28144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
28174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Attribute_kind:
28184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Attribute_type, NULL, NULL);
28194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
28204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Attribute.value);
28214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
28234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_identifier(o->v.Attribute.attr);
28264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "attr", value) == -1)
28284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr_context(o->v.Attribute.ctx);
28314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "ctx", value) == -1)
28334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
28364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Subscript_kind:
28374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Subscript_type, NULL, NULL);
28384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
28394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Subscript.value);
28404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
28424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_slice(o->v.Subscript.slice);
28454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "slice", value) == -1)
28474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr_context(o->v.Subscript.ctx);
28504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "ctx", value) == -1)
28524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
28554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Name_kind:
28564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Name_type, NULL, NULL);
28574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
28584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_identifier(o->v.Name.id);
28594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "id", value) == -1)
28614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr_context(o->v.Name.ctx);
28644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "ctx", value) == -1)
28664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
28694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case List_kind:
28704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(List_type, NULL, NULL);
28714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
28724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.List.elts, ast2obj_expr);
28734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "elts", value) == -1)
28754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr_context(o->v.List.ctx);
28784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "ctx", value) == -1)
28804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
28834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Tuple_kind:
28844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Tuple_type, NULL, NULL);
28854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
28864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.Tuple.elts, ast2obj_expr);
28874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "elts", value) == -1)
28894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr_context(o->v.Tuple.ctx);
28924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
28934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "ctx", value) == -1)
28944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
28954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
28964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
28974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
28984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_int(o->lineno);
28994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
29004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "lineno", value) < 0)
29014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
29024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
29034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_int(o->col_offset);
29044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
29054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
29064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
29074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
29084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
29094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
29104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
29114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
29124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
29134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
29144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
29154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject* ast2obj_expr_context(expr_context_ty o)
29164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
29174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch(o) {
29184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Load:
29194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Load_singleton);
29204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Load_singleton;
29214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Store:
29224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Store_singleton);
29234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Store_singleton;
29244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Del:
29254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Del_singleton);
29264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Del_singleton;
29274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case AugLoad:
29284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(AugLoad_singleton);
29294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return AugLoad_singleton;
29304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case AugStore:
29314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(AugStore_singleton);
29324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return AugStore_singleton;
29334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Param:
29344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Param_singleton);
29354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Param_singleton;
29364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                default:
29374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        /* should never happen, but just in case ... */
29384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_SystemError, "unknown expr_context found");
29394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return NULL;
29404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
29414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
29424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
29434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_slice(void* _o)
29444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
29454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        slice_ty o = (slice_ty)_o;
29464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
29474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
29484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
29494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
29504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
29514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
29524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch (o->kind) {
29534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Ellipsis_kind:
29544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Ellipsis_type, NULL, NULL);
29554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
29564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
29574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Slice_kind:
29584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Slice_type, NULL, NULL);
29594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
29604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Slice.lower);
29614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
29624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "lower", value) == -1)
29634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
29644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
29654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Slice.upper);
29664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
29674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "upper", value) == -1)
29684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
29694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
29704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Slice.step);
29714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
29724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "step", value) == -1)
29734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
29744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
29754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
29764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case ExtSlice_kind:
29774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(ExtSlice_type, NULL, NULL);
29784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
29794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.ExtSlice.dims, ast2obj_slice);
29804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
29814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "dims", value) == -1)
29824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
29834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
29844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
29854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case Index_kind:
29864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(Index_type, NULL, NULL);
29874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
29884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.Index.value);
29894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
29904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "value", value) == -1)
29914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
29924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
29934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
29944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
29954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
29964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
29974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
29984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
29994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
30004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
30014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
30024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject* ast2obj_boolop(boolop_ty o)
30034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
30044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch(o) {
30054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case And:
30064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(And_singleton);
30074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return And_singleton;
30084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Or:
30094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Or_singleton);
30104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Or_singleton;
30114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                default:
30124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        /* should never happen, but just in case ... */
30134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_SystemError, "unknown boolop found");
30144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return NULL;
30154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
30164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
30174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject* ast2obj_operator(operator_ty o)
30184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
30194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch(o) {
30204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Add:
30214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Add_singleton);
30224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Add_singleton;
30234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Sub:
30244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Sub_singleton);
30254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Sub_singleton;
30264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Mult:
30274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Mult_singleton);
30284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Mult_singleton;
30294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Div:
30304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Div_singleton);
30314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Div_singleton;
30324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Mod:
30334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Mod_singleton);
30344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Mod_singleton;
30354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Pow:
30364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Pow_singleton);
30374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Pow_singleton;
30384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case LShift:
30394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(LShift_singleton);
30404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return LShift_singleton;
30414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case RShift:
30424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(RShift_singleton);
30434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return RShift_singleton;
30444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case BitOr:
30454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(BitOr_singleton);
30464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return BitOr_singleton;
30474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case BitXor:
30484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(BitXor_singleton);
30494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return BitXor_singleton;
30504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case BitAnd:
30514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(BitAnd_singleton);
30524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return BitAnd_singleton;
30534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case FloorDiv:
30544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(FloorDiv_singleton);
30554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return FloorDiv_singleton;
30564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                default:
30574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        /* should never happen, but just in case ... */
30584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_SystemError, "unknown operator found");
30594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return NULL;
30604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
30614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
30624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject* ast2obj_unaryop(unaryop_ty o)
30634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
30644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch(o) {
30654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Invert:
30664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Invert_singleton);
30674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Invert_singleton;
30684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Not:
30694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Not_singleton);
30704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Not_singleton;
30714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case UAdd:
30724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(UAdd_singleton);
30734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return UAdd_singleton;
30744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case USub:
30754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(USub_singleton);
30764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return USub_singleton;
30774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                default:
30784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        /* should never happen, but just in case ... */
30794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_SystemError, "unknown unaryop found");
30804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return NULL;
30814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
30824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
30834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject* ast2obj_cmpop(cmpop_ty o)
30844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
30854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch(o) {
30864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Eq:
30874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Eq_singleton);
30884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Eq_singleton;
30894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case NotEq:
30904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(NotEq_singleton);
30914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return NotEq_singleton;
30924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Lt:
30934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Lt_singleton);
30944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Lt_singleton;
30954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case LtE:
30964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(LtE_singleton);
30974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return LtE_singleton;
30984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Gt:
30994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Gt_singleton);
31004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Gt_singleton;
31014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case GtE:
31024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(GtE_singleton);
31034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return GtE_singleton;
31044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case Is:
31054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(Is_singleton);
31064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return Is_singleton;
31074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case IsNot:
31084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(IsNot_singleton);
31094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return IsNot_singleton;
31104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case In:
31114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(In_singleton);
31124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return In_singleton;
31134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                case NotIn:
31144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_INCREF(NotIn_singleton);
31154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return NotIn_singleton;
31164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                default:
31174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        /* should never happen, but just in case ... */
31184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_SystemError, "unknown cmpop found");
31194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return NULL;
31204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
31214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
31224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
31234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_comprehension(void* _o)
31244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
31254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        comprehension_ty o = (comprehension_ty)_o;
31264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
31274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
31284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
31294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
31304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
31314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
31324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        result = PyType_GenericNew(comprehension_type, NULL, NULL);
31334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!result) return NULL;
31344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_expr(o->target);
31354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
31364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "target", value) == -1)
31374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
31384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
31394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_expr(o->iter);
31404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
31414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "iter", value) == -1)
31424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
31434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
31444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_list(o->ifs, ast2obj_expr);
31454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
31464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "ifs", value) == -1)
31474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
31484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
31494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
31504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
31514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
31524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
31534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
31544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
31554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
31564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
31574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_excepthandler(void* _o)
31584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
31594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        excepthandler_ty o = (excepthandler_ty)_o;
31604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
31614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
31624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
31634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
31644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
31654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
31664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        switch (o->kind) {
31674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        case ExceptHandler_kind:
31684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                result = PyType_GenericNew(ExceptHandler_type, NULL, NULL);
31694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!result) goto failed;
31704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.ExceptHandler.type);
31714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
31724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "type", value) == -1)
31734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
31744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
31754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_expr(o->v.ExceptHandler.name);
31764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
31774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "name", value) == -1)
31784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
31794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
31804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                value = ast2obj_list(o->v.ExceptHandler.body, ast2obj_stmt);
31814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!value) goto failed;
31824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_SetAttrString(result, "body", value) == -1)
31834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
31844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_DECREF(value);
31854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                break;
31864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
31874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_int(o->lineno);
31884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
31894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "lineno", value) < 0)
31904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
31914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
31924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_int(o->col_offset);
31934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
31944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
31954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
31964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
31974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
31984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
31994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
32004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
32014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
32024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
32034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
32044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
32054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_arguments(void* _o)
32064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
32074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        arguments_ty o = (arguments_ty)_o;
32084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
32094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
32104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
32114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
32124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
32134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
32144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        result = PyType_GenericNew(arguments_type, NULL, NULL);
32154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!result) return NULL;
32164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_list(o->args, ast2obj_expr);
32174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "args", value) == -1)
32194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_identifier(o->vararg);
32224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "vararg", value) == -1)
32244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_identifier(o->kwarg);
32274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "kwarg", value) == -1)
32294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_list(o->defaults, ast2obj_expr);
32324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "defaults", value) == -1)
32344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
32374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
32384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
32394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
32404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
32414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
32424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
32434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
32444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_keyword(void* _o)
32454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
32464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        keyword_ty o = (keyword_ty)_o;
32474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
32484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
32494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
32504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
32514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
32524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
32534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        result = PyType_GenericNew(keyword_type, NULL, NULL);
32544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!result) return NULL;
32554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_identifier(o->arg);
32564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "arg", value) == -1)
32584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_expr(o->value);
32614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "value", value) == -1)
32634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
32664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
32674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
32684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
32694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
32704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
32714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
32724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject*
32734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmast2obj_alias(void* _o)
32744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
32754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        alias_ty o = (alias_ty)_o;
32764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *result = NULL, *value = NULL;
32774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!o) {
32784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_INCREF(Py_None);
32794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return Py_None;
32804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
32814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
32824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        result = PyType_GenericNew(alias_type, NULL, NULL);
32834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!result) return NULL;
32844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_identifier(o->name);
32854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "name", value) == -1)
32874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        value = ast2obj_identifier(o->asname);
32904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!value) goto failed;
32914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_SetAttrString(result, "asname", value) == -1)
32924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                goto failed;
32934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_DECREF(value);
32944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return result;
32954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
32964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(value);
32974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(result);
32984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
32994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
33004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
33014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
33024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
33034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
33044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
33054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
33064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
33074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
33084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
33094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (obj == Py_None) {
33104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = NULL;
33114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
33124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
33134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type);
33144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
33154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
33164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
33174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
33184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
33194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
33204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
33214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
33224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
33234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
33244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
33254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
33264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
33274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
33284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
33294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
33304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
33314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
33324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
33334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
33344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
33354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
33364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
33374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
33384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
33394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
33404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
33414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
33424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Module");
33434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
33444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
33454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Module(body, arena);
33464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
33474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
33484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
33494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type);
33504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
33514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
33524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
33534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
33544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
33554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
33564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
33574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
33584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
33594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
33604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
33614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
33624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
33634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
33644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
33654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
33664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
33674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
33684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
33694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
33704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
33714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
33724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
33734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
33744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
33754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
33764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
33774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
33784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Interactive");
33794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
33804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
33814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Interactive(body, arena);
33824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
33834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
33844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
33854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type);
33864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
33874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
33884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
33894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
33904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty body;
33914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
33924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
33934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
33944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
33954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
33964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &body, arena);
33974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
33984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
33994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
34004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
34014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Expression");
34024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
34034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
34044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Expression(body, arena);
34054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
34064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
34074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
34084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type);
34094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
34104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
34114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
34124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
34134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
34144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
34154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
34164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
34174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
34184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
34194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
34204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
34214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
34224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Suite field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
34234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
34244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
34254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
34264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
34274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
34284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
34294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
34304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
34314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
34324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
34334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
34344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
34354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
34364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
34374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Suite");
34384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
34394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
34404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Suite(body, arena);
34414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
34424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
34434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
34444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
34454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
34464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
34474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of mod, but got %.400s", PyString_AS_STRING(tmp));
34484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
34494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
34504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
34514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
34524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
34534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
34544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
34554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
34564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
34574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
34584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
34594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int lineno;
34604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int col_offset;
34614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
34624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (obj == Py_None) {
34634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = NULL;
34644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
34654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
34664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "lineno")) {
34674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
34684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "lineno");
34694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
34704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_int(tmp, &lineno, arena);
34714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
34724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
34734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
34744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
34754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from stmt");
34764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
34774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
34784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "col_offset")) {
34794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
34804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "col_offset");
34814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
34824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_int(tmp, &col_offset, arena);
34834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
34844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
34854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
34864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
34874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt");
34884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
34894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
34904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type);
34914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
34924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
34934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
34944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
34954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                identifier name;
34964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                arguments_ty args;
34974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
34984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* decorator_list;
34994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
35004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "name")) {
35014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
35024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "name");
35034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
35044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_identifier(tmp, &name, arena);
35054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
35064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
35074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
35084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
35094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from FunctionDef");
35104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
35114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
35124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "args")) {
35134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
35144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "args");
35154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
35164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_arguments(tmp, &args, arena);
35174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
35184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
35194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
35204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
35214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from FunctionDef");
35224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
35234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
35244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
35254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
35264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
35274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
35284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
35294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
35304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
35314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
35324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
35334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
35344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
35354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
35364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
35374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
35384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
35394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
35404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
35414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
35424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
35434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
35444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
35454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
35464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from FunctionDef");
35474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
35484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
35494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "decorator_list")) {
35504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
35514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
35524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
35534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "decorator_list");
35544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
35554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
35564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "FunctionDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name);
35574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
35584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
35594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
35604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        decorator_list = asdl_seq_new(len, arena);
35614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (decorator_list == NULL) goto failed;
35624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
35634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
35644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
35654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
35664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(decorator_list, i, value);
35674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
35684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
35694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
35704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
35714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from FunctionDef");
35724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
35734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
35744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = FunctionDef(name, args, body, decorator_list, lineno,
35754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                   col_offset, arena);
35764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
35774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
35784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
35794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type);
35804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
35814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
35824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
35834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
35844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                identifier name;
35854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* bases;
35864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
35874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* decorator_list;
35884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
35894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "name")) {
35904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
35914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "name");
35924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
35934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_identifier(tmp, &name, arena);
35944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
35954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
35964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
35974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
35984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from ClassDef");
35994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
36004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
36014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "bases")) {
36024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
36034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
36044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
36054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "bases");
36064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
36074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
36084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", tmp->ob_type->tp_name);
36094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
36104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
36114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
36124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        bases = asdl_seq_new(len, arena);
36134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (bases == NULL) goto failed;
36144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
36154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
36164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
36174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
36184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(bases, i, value);
36194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
36204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
36214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
36224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
36234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"bases\" missing from ClassDef");
36244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
36254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
36264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
36274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
36284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
36294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
36304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
36314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
36324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
36334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
36344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
36354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
36364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
36374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
36384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
36394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
36404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
36414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
36424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
36434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
36444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
36454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
36464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
36474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
36484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ClassDef");
36494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
36504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
36514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "decorator_list")) {
36524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
36534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
36544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
36554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "decorator_list");
36564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
36574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
36584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name);
36594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
36604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
36614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
36624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        decorator_list = asdl_seq_new(len, arena);
36634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (decorator_list == NULL) goto failed;
36644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
36654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
36664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
36674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
36684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(decorator_list, i, value);
36694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
36704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
36714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
36724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
36734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from ClassDef");
36744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
36754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
36764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = ClassDef(name, bases, body, decorator_list, lineno,
36774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                col_offset, arena);
36784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
36794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
36804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
36814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type);
36824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
36834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
36844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
36854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
36864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
36874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
36884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
36894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
36904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
36914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
36924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
36934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
36944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
36954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
36964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
36974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        value = NULL;
36984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
36994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Return(value, lineno, col_offset, arena);
37004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
37014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
37024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
37034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type);
37044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
37054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
37064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
37074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
37084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* targets;
37094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
37104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "targets")) {
37114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
37124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
37134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
37144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "targets");
37154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
37164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
37174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name);
37184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
37194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
37204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
37214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        targets = asdl_seq_new(len, arena);
37224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (targets == NULL) goto failed;
37234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
37244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
37254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
37264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
37274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(targets, i, value);
37284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
37294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
37304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
37314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
37324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Delete");
37334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
37344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
37354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Delete(targets, lineno, col_offset, arena);
37364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
37374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
37384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
37394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type);
37404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
37414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
37424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
37434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
37444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* targets;
37454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
37464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
37474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "targets")) {
37484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
37494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
37504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
37514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "targets");
37524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
37534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
37544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name);
37554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
37564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
37574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
37584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        targets = asdl_seq_new(len, arena);
37594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (targets == NULL) goto failed;
37604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
37614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
37624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
37634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
37644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(targets, i, value);
37654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
37664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
37674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
37684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
37694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Assign");
37704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
37714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
37724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
37734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
37744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
37754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
37764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
37774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
37784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
37794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
37804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
37814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Assign");
37824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
37834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
37844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Assign(targets, value, lineno, col_offset, arena);
37854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
37864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
37874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
37884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type);
37894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
37904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
37914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
37924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
37934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty target;
37944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                operator_ty op;
37954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
37964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
37974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "target")) {
37984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
37994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "target");
38004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
38014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &target, arena);
38024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
38034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
38044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
38054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
38064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AugAssign");
38074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
38084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
38094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "op")) {
38104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
38114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "op");
38124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
38134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_operator(tmp, &op, arena);
38144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
38154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
38164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
38174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
38184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from AugAssign");
38194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
38204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
38214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
38224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
38234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
38244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
38254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
38264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
38274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
38284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
38294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
38304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from AugAssign");
38314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
38324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
38334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = AugAssign(target, op, value, lineno, col_offset, arena);
38344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
38354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
38364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
38374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Print_type);
38384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
38394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
38404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
38414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
38424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty dest;
38434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* values;
38444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                bool nl;
38454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
38464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "dest")) {
38474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
38484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "dest");
38494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
38504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &dest, arena);
38514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
38524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
38534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
38544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
38554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        dest = NULL;
38564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
38574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "values")) {
38584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
38594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
38604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
38614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "values");
38624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
38634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
38644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Print field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
38654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
38664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
38674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
38684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        values = asdl_seq_new(len, arena);
38694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (values == NULL) goto failed;
38704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
38714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
38724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
38734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
38744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(values, i, value);
38754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
38764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
38774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
38784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
38794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from Print");
38804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
38814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
38824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "nl")) {
38834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
38844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "nl");
38854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
38864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_bool(tmp, &nl, arena);
38874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
38884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
38894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
38904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
38914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"nl\" missing from Print");
38924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
38934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
38944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Print(dest, values, nl, lineno, col_offset, arena);
38954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
38964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
38974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
38984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)For_type);
38994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
39004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
39014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
39024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
39034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty target;
39044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty iter;
39054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
39064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* orelse;
39074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
39084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "target")) {
39094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
39104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "target");
39114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
39124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &target, arena);
39134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
39144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
39154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
39164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
39174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from For");
39184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
39194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
39204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "iter")) {
39214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
39224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "iter");
39234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
39244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &iter, arena);
39254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
39264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
39274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
39284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
39294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from For");
39304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
39314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
39324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
39334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
39344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
39354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
39364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
39374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
39384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
39394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "For field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
39404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
39414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
39424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
39434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
39444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
39454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
39464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
39474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
39484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
39494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
39504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
39514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
39524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
39534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
39544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from For");
39554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
39564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
39574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "orelse")) {
39584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
39594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
39604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
39614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "orelse");
39624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
39634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
39644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
39654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
39664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
39674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
39684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        orelse = asdl_seq_new(len, arena);
39694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (orelse == NULL) goto failed;
39704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
39714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
39724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
39734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
39744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(orelse, i, value);
39754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
39764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
39774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
39784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
39794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from For");
39804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
39814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
39824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = For(target, iter, body, orelse, lineno, col_offset,
39834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                           arena);
39844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
39854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
39864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
39874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)While_type);
39884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
39894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
39904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
39914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
39924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty test;
39934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
39944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* orelse;
39954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
39964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "test")) {
39974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
39984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "test");
39994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
40004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &test, arena);
40014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
40024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
40034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
40044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
40054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from While");
40064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
40074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
40084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
40094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
40104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
40114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
40124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
40134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
40144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
40154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "While field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
40164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
40174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
40184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
40194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
40204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
40214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
40224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
40234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
40244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
40254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
40264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
40274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
40284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
40294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
40304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from While");
40314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
40324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
40334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "orelse")) {
40344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
40354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
40364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
40374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "orelse");
40384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
40394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
40404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
40414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
40424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
40434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
40444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        orelse = asdl_seq_new(len, arena);
40454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (orelse == NULL) goto failed;
40464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
40474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
40484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
40494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
40504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(orelse, i, value);
40514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
40524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
40534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
40544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
40554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from While");
40564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
40574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
40584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = While(test, body, orelse, lineno, col_offset, arena);
40594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
40604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
40614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
40624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)If_type);
40634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
40644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
40654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
40664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
40674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty test;
40684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
40694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* orelse;
40704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
40714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "test")) {
40724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
40734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "test");
40744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
40754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &test, arena);
40764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
40774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
40784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
40794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
40804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from If");
40814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
40824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
40834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
40844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
40854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
40864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
40874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
40884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
40894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
40904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "If field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
40914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
40924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
40934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
40944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
40954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
40964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
40974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
40984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
40994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
41004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
41014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
41024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
41034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
41044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
41054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from If");
41064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
41074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
41084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "orelse")) {
41094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
41104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
41114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
41124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "orelse");
41134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
41144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
41154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
41164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
41174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
41184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
41194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        orelse = asdl_seq_new(len, arena);
41204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (orelse == NULL) goto failed;
41214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
41224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
41234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
41244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
41254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(orelse, i, value);
41264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
41274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
41284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
41294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
41304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from If");
41314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
41324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
41334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = If(test, body, orelse, lineno, col_offset, arena);
41344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
41354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
41364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
41374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)With_type);
41384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
41394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
41404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
41414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
41424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty context_expr;
41434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty optional_vars;
41444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
41454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
41464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "context_expr")) {
41474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
41484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "context_expr");
41494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
41504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &context_expr, arena);
41514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
41524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
41534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
41544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
41554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"context_expr\" missing from With");
41564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
41574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
41584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "optional_vars")) {
41594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
41604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "optional_vars");
41614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
41624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &optional_vars, arena);
41634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
41644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
41654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
41664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
41674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        optional_vars = NULL;
41684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
41694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
41704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
41714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
41724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
41734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
41744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
41754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
41764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "With field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
41774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
41784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
41794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
41804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
41814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
41824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
41834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
41844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
41854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
41864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
41874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
41884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
41894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
41904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
41914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from With");
41924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
41934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
41944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = With(context_expr, optional_vars, body, lineno,
41954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                            col_offset, arena);
41964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
41974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
41984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
41994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type);
42004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
42014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
42024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
42034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
42044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty type;
42054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty inst;
42064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty tback;
42074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
42084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "type")) {
42094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
42104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "type");
42114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
42124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &type, arena);
42134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
42144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
42154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
42164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
42174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        type = NULL;
42184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
42194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "inst")) {
42204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
42214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "inst");
42224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
42234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &inst, arena);
42244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
42254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
42264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
42274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
42284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        inst = NULL;
42294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
42304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "tback")) {
42314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
42324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "tback");
42334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
42344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &tback, arena);
42354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
42364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
42374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
42384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
42394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tback = NULL;
42404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
42414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Raise(type, inst, tback, lineno, col_offset, arena);
42424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
42434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
42444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
42454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)TryExcept_type);
42464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
42474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
42484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
42494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
42504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
42514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* handlers;
42524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* orelse;
42534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
42544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
42554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
42564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
42574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
42584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
42594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
42604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
42614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "TryExcept field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
42624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
42634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
42644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
42654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
42664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
42674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
42684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
42694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
42704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
42714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
42724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
42734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
42744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
42754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
42764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from TryExcept");
42774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
42784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
42794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "handlers")) {
42804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
42814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
42824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
42834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "handlers");
42844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
42854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
42864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "TryExcept field \"handlers\" must be a list, not a %.200s", tmp->ob_type->tp_name);
42874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
42884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
42894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
42904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        handlers = asdl_seq_new(len, arena);
42914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (handlers == NULL) goto failed;
42924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
42934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                excepthandler_ty value;
42944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_excepthandler(PyList_GET_ITEM(tmp, i), &value, arena);
42954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
42964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(handlers, i, value);
42974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
42984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
42994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
43004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
43014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"handlers\" missing from TryExcept");
43024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
43034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
43044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "orelse")) {
43054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
43064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
43074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
43084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "orelse");
43094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
43104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
43114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "TryExcept field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
43124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
43134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
43144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
43154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        orelse = asdl_seq_new(len, arena);
43164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (orelse == NULL) goto failed;
43174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
43184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
43194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
43204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
43214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(orelse, i, value);
43224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
43234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
43244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
43254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
43264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from TryExcept");
43274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
43284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
43294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = TryExcept(body, handlers, orelse, lineno, col_offset,
43304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                 arena);
43314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
43324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
43334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
43344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)TryFinally_type);
43354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
43364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
43374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
43384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
43394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
43404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* finalbody;
43414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
43424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
43434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
43444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
43454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
43464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
43474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
43484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
43494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "TryFinally field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
43504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
43514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
43524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
43534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
43544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
43554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
43564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
43574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
43584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
43594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
43604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
43614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
43624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
43634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
43644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from TryFinally");
43654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
43664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
43674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "finalbody")) {
43684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
43694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
43704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
43714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "finalbody");
43724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
43734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
43744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "TryFinally field \"finalbody\" must be a list, not a %.200s", tmp->ob_type->tp_name);
43754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
43764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
43774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
43784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        finalbody = asdl_seq_new(len, arena);
43794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (finalbody == NULL) goto failed;
43804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
43814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
43824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
43834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
43844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(finalbody, i, value);
43854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
43864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
43874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
43884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
43894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"finalbody\" missing from TryFinally");
43904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
43914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
43924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = TryFinally(body, finalbody, lineno, col_offset, arena);
43934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
43944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
43954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
43964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type);
43974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
43984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
43994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
44004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
44014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty test;
44024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty msg;
44034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
44044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "test")) {
44054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
44064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "test");
44074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
44084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &test, arena);
44094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
44104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
44114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
44124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
44134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from Assert");
44144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
44154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
44164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "msg")) {
44174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
44184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "msg");
44194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
44204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &msg, arena);
44214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
44224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
44234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
44244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
44254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        msg = NULL;
44264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
44274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Assert(test, msg, lineno, col_offset, arena);
44284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
44294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
44304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
44314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type);
44324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
44334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
44344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
44354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
44364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* names;
44374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
44384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "names")) {
44394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
44404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
44414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
44424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "names");
44434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
44444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
44454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Import field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name);
44464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
44474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
44484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
44494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        names = asdl_seq_new(len, arena);
44504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (names == NULL) goto failed;
44514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
44524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                alias_ty value;
44534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_alias(PyList_GET_ITEM(tmp, i), &value, arena);
44544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
44554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(names, i, value);
44564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
44574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
44584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
44594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
44604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Import");
44614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
44624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
44634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Import(names, lineno, col_offset, arena);
44644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
44654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
44664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
44674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type);
44684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
44694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
44704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
44714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
44724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                identifier module;
44734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* names;
44744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int level;
44754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
44764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "module")) {
44774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
44784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "module");
44794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
44804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_identifier(tmp, &module, arena);
44814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
44824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
44834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
44844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
44854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        module = NULL;
44864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
44874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "names")) {
44884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
44894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
44904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
44914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "names");
44924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
44934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
44944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name);
44954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
44964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
44974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
44984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        names = asdl_seq_new(len, arena);
44994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (names == NULL) goto failed;
45004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
45014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                alias_ty value;
45024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_alias(PyList_GET_ITEM(tmp, i), &value, arena);
45034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
45044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(names, i, value);
45054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
45064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
45074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
45084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
45094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from ImportFrom");
45104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
45114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
45124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "level")) {
45134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
45144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "level");
45154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
45164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_int(tmp, &level, arena);
45174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
45184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
45194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
45204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
45214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        level = 0;
45224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
45234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = ImportFrom(module, names, level, lineno, col_offset,
45244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                  arena);
45254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
45264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
45274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
45284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Exec_type);
45294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
45304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
45314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
45324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
45334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty body;
45344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty globals;
45354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty locals;
45364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
45374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
45384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
45394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
45404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
45414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &body, arena);
45424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
45434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
45444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
45454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
45464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Exec");
45474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
45484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
45494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "globals")) {
45504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
45514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "globals");
45524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
45534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &globals, arena);
45544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
45554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
45564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
45574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
45584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        globals = NULL;
45594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
45604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "locals")) {
45614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
45624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "locals");
45634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
45644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &locals, arena);
45654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
45664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
45674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
45684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
45694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        locals = NULL;
45704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
45714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Exec(body, globals, locals, lineno, col_offset, arena);
45724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
45734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
45744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
45754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type);
45764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
45774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
45784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
45794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
45804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* names;
45814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
45824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "names")) {
45834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
45844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
45854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
45864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "names");
45874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
45884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
45894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name);
45904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
45914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
45924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
45934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        names = asdl_seq_new(len, arena);
45944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (names == NULL) goto failed;
45954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
45964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                identifier value;
45974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_identifier(PyList_GET_ITEM(tmp, i), &value, arena);
45984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
45994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(names, i, value);
46004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
46014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
46024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
46034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
46044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Global");
46054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
46064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
46074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Global(names, lineno, col_offset, arena);
46084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
46094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
46104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type);
46124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
46134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
46144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
46164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
46174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
46194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
46204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
46214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
46224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
46234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
46244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
46254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
46264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
46274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Expr");
46284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
46294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
46304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Expr(value, lineno, col_offset, arena);
46314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
46324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
46334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type);
46354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
46364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
46374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
46394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Pass(lineno, col_offset, arena);
46414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
46424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
46434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type);
46454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
46464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
46474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
46494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Break(lineno, col_offset, arena);
46514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
46524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
46534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type);
46554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
46564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
46574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
46594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Continue(lineno, col_offset, arena);
46614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
46624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
46634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
46664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
46674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of stmt, but got %.400s", PyString_AS_STRING(tmp));
46684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
46694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
46704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
46714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
46724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
46744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
46754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
46764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
46774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
46784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int lineno;
46804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int col_offset;
46814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
46824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (obj == Py_None) {
46834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = NULL;
46844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
46854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "lineno")) {
46874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
46884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "lineno");
46894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
46904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_int(tmp, &lineno, arena);
46914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
46924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
46934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
46944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
46954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from expr");
46964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
46974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
46984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "col_offset")) {
46994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
47004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "col_offset");
47014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
47024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_int(tmp, &col_offset, arena);
47034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
47044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
47054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
47064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
47074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr");
47084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
47094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
47104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type);
47114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
47124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
47134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
47144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
47154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                boolop_ty op;
47164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* values;
47174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
47184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "op")) {
47194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
47204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "op");
47214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
47224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_boolop(tmp, &op, arena);
47234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
47244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
47254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
47264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
47274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BoolOp");
47284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
47294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
47304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "values")) {
47314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
47324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
47334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
47344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "values");
47354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
47364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
47374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
47384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
47394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
47404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
47414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        values = asdl_seq_new(len, arena);
47424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (values == NULL) goto failed;
47434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
47444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
47454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
47464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
47474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(values, i, value);
47484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
47494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
47504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
47514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
47524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from BoolOp");
47534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
47544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
47554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = BoolOp(op, values, lineno, col_offset, arena);
47564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
47574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
47584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
47594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type);
47604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
47614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
47624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
47634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
47644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty left;
47654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                operator_ty op;
47664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty right;
47674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
47684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "left")) {
47694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
47704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "left");
47714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
47724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &left, arena);
47734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
47744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
47754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
47764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
47774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from BinOp");
47784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
47794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
47804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "op")) {
47814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
47824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "op");
47834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
47844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_operator(tmp, &op, arena);
47854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
47864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
47874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
47884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
47894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BinOp");
47904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
47914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
47924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "right")) {
47934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
47944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "right");
47954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
47964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &right, arena);
47974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
47984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
47994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
48004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
48014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"right\" missing from BinOp");
48024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
48034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
48044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = BinOp(left, op, right, lineno, col_offset, arena);
48054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
48064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
48074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
48084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type);
48094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
48104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
48114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
48124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
48134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                unaryop_ty op;
48144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty operand;
48154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
48164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "op")) {
48174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
48184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "op");
48194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
48204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_unaryop(tmp, &op, arena);
48214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
48224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
48234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
48244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
48254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from UnaryOp");
48264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
48274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
48284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "operand")) {
48294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
48304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "operand");
48314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
48324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &operand, arena);
48334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
48344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
48354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
48364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
48374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"operand\" missing from UnaryOp");
48384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
48394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
48404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = UnaryOp(op, operand, lineno, col_offset, arena);
48414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
48424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
48434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
48444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type);
48454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
48464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
48474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
48484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
48494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                arguments_ty args;
48504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty body;
48514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
48524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "args")) {
48534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
48544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "args");
48554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
48564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_arguments(tmp, &args, arena);
48574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
48584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
48594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
48604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
48614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Lambda");
48624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
48634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
48644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
48654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
48664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
48674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
48684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &body, arena);
48694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
48704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
48714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
48724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
48734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Lambda");
48744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
48754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
48764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Lambda(args, body, lineno, col_offset, arena);
48774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
48784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
48794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
48804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type);
48814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
48824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
48834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
48844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
48854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty test;
48864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty body;
48874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty orelse;
48884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
48894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "test")) {
48904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
48914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "test");
48924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
48934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &test, arena);
48944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
48954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
48964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
48974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
48984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from IfExp");
48994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
49004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
49014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
49024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
49034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
49044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
49054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &body, arena);
49064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
49074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
49084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
49094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
49104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from IfExp");
49114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
49124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
49134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "orelse")) {
49144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
49154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "orelse");
49164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
49174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &orelse, arena);
49184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
49194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
49204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
49214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
49224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from IfExp");
49234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
49244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
49254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = IfExp(test, body, orelse, lineno, col_offset, arena);
49264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
49274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
49284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
49294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type);
49304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
49314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
49324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
49334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
49344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* keys;
49354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* values;
49364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
49374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "keys")) {
49384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
49394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
49404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
49414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "keys");
49424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
49434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
49444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a list, not a %.200s", tmp->ob_type->tp_name);
49454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
49464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
49474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
49484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        keys = asdl_seq_new(len, arena);
49494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (keys == NULL) goto failed;
49504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
49514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
49524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
49534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
49544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(keys, i, value);
49554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
49564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
49574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
49584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
49594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"keys\" missing from Dict");
49604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
49614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
49624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "values")) {
49634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
49644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
49654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
49664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "values");
49674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
49684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
49694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
49704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
49714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
49724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
49734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        values = asdl_seq_new(len, arena);
49744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (values == NULL) goto failed;
49754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
49764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
49774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
49784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
49794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(values, i, value);
49804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
49814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
49824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
49834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
49844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from Dict");
49854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
49864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
49874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Dict(keys, values, lineno, col_offset, arena);
49884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
49894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
49904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
49914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Set_type);
49924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
49934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
49944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
49954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
49964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* elts;
49974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
49984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "elts")) {
49994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
50004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
50014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
50024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "elts");
50034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
50044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
50054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name);
50064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
50074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
50084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
50094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        elts = asdl_seq_new(len, arena);
50104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (elts == NULL) goto failed;
50114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
50124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
50134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
50144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
50154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(elts, i, value);
50164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
50174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
50184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
50194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
50204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Set");
50214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
50224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
50234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Set(elts, lineno, col_offset, arena);
50244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
50254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
50264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
50274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type);
50284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
50294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
50304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
50314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
50324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty elt;
50334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* generators;
50344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
50354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "elt")) {
50364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
50374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "elt");
50384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
50394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &elt, arena);
50404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
50414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
50424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
50434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
50444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from ListComp");
50454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
50464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
50474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "generators")) {
50484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
50494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
50504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
50514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "generators");
50524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
50534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
50544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "ListComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
50554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
50564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
50574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
50584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        generators = asdl_seq_new(len, arena);
50594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (generators == NULL) goto failed;
50604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
50614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                comprehension_ty value;
50624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
50634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
50644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(generators, i, value);
50654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
50664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
50674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
50684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
50694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from ListComp");
50704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
50714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
50724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = ListComp(elt, generators, lineno, col_offset, arena);
50734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
50744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
50754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
50764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type);
50774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
50784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
50794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
50804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
50814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty elt;
50824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* generators;
50834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
50844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "elt")) {
50854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
50864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "elt");
50874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
50884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &elt, arena);
50894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
50904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
50914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
50924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
50934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from SetComp");
50944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
50954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
50964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "generators")) {
50974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
50984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
50994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
51004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "generators");
51014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
51024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
51034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "SetComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
51044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
51054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
51064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
51074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        generators = asdl_seq_new(len, arena);
51084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (generators == NULL) goto failed;
51094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
51104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                comprehension_ty value;
51114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
51124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
51134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(generators, i, value);
51144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
51154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
51164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
51174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
51184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from SetComp");
51194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
51204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
51214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = SetComp(elt, generators, lineno, col_offset, arena);
51224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
51234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
51244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
51254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type);
51264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
51274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
51284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
51294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
51304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty key;
51314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
51324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* generators;
51334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
51344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "key")) {
51354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
51364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "key");
51374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
51384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &key, arena);
51394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
51404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
51414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
51424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
51434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"key\" missing from DictComp");
51444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
51454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
51464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
51474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
51484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
51494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
51504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
51514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
51524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
51534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
51544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
51554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from DictComp");
51564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
51574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
51584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "generators")) {
51594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
51604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
51614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
51624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "generators");
51634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
51644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
51654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "DictComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
51664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
51674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
51684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
51694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        generators = asdl_seq_new(len, arena);
51704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (generators == NULL) goto failed;
51714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
51724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                comprehension_ty value;
51734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
51744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
51754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(generators, i, value);
51764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
51774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
51784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
51794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
51804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from DictComp");
51814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
51824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
51834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = DictComp(key, value, generators, lineno, col_offset,
51844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                arena);
51854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
51864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
51874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
51884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type);
51894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
51904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
51914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
51924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
51934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty elt;
51944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* generators;
51954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
51964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "elt")) {
51974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
51984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "elt");
51994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
52004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &elt, arena);
52014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
52024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
52034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
52044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
52054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from GeneratorExp");
52064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
52074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
52084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "generators")) {
52094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
52104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
52114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
52124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "generators");
52134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
52144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
52154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "GeneratorExp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
52164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
52174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
52184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
52194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        generators = asdl_seq_new(len, arena);
52204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (generators == NULL) goto failed;
52214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
52224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                comprehension_ty value;
52234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
52244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
52254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(generators, i, value);
52264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
52274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
52284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
52294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
52304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from GeneratorExp");
52314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
52324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
52334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = GeneratorExp(elt, generators, lineno, col_offset, arena);
52344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
52354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
52364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
52374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type);
52384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
52394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
52404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
52414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
52424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
52434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
52444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
52454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
52464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
52474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
52484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
52494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
52504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
52514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
52524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
52534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        value = NULL;
52544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
52554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Yield(value, lineno, col_offset, arena);
52564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
52574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
52584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
52594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type);
52604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
52614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
52624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
52634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
52644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty left;
52654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_int_seq* ops;
52664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* comparators;
52674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
52684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "left")) {
52694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
52704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "left");
52714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
52724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &left, arena);
52734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
52744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
52754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
52764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
52774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from Compare");
52784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
52794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
52804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "ops")) {
52814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
52824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
52834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
52844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "ops");
52854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
52864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
52874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a list, not a %.200s", tmp->ob_type->tp_name);
52884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
52894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
52904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
52914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        ops = asdl_int_seq_new(len, arena);
52924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (ops == NULL) goto failed;
52934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
52944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                cmpop_ty value;
52954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_cmpop(PyList_GET_ITEM(tmp, i), &value, arena);
52964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
52974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(ops, i, value);
52984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
52994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
53004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
53014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
53024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"ops\" missing from Compare");
53034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
53044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
53054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "comparators")) {
53064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
53074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
53084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
53094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "comparators");
53104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
53114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
53124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Compare field \"comparators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
53134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
53144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
53154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
53164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        comparators = asdl_seq_new(len, arena);
53174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (comparators == NULL) goto failed;
53184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
53194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
53204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
53214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
53224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(comparators, i, value);
53234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
53244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
53254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
53264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
53274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"comparators\" missing from Compare");
53284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
53294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
53304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Compare(left, ops, comparators, lineno, col_offset,
53314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                               arena);
53324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
53334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
53344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
53354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type);
53364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
53374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
53384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
53394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
53404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty func;
53414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* args;
53424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* keywords;
53434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty starargs;
53444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty kwargs;
53454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
53464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "func")) {
53474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
53484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "func");
53494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
53504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &func, arena);
53514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
53524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
53534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
53544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
53554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"func\" missing from Call");
53564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
53574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
53584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "args")) {
53594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
53604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
53614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
53624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "args");
53634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
53644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
53654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name);
53664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
53674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
53684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
53694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        args = asdl_seq_new(len, arena);
53704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (args == NULL) goto failed;
53714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
53724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
53734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
53744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
53754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(args, i, value);
53764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
53774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
53784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
53794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
53804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Call");
53814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
53824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
53834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "keywords")) {
53844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
53854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
53864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
53874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "keywords");
53884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
53894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
53904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be a list, not a %.200s", tmp->ob_type->tp_name);
53914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
53924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
53934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
53944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        keywords = asdl_seq_new(len, arena);
53954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (keywords == NULL) goto failed;
53964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
53974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                keyword_ty value;
53984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_keyword(PyList_GET_ITEM(tmp, i), &value, arena);
53994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
54004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(keywords, i, value);
54014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
54024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
54034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
54044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
54054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from Call");
54064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
54074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
54084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "starargs")) {
54094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
54104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "starargs");
54114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
54124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &starargs, arena);
54134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
54144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
54154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
54164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
54174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        starargs = NULL;
54184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
54194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "kwargs")) {
54204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
54214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "kwargs");
54224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
54234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &kwargs, arena);
54244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
54254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
54264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
54274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
54284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        kwargs = NULL;
54294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
54304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Call(func, args, keywords, starargs, kwargs, lineno,
54314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                            col_offset, arena);
54324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
54334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
54344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
54354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Repr_type);
54364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
54374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
54384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
54394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
54404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
54414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
54424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
54434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
54444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
54454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
54464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
54474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
54484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
54494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
54504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
54514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Repr");
54524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
54534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
54544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Repr(value, lineno, col_offset, arena);
54554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
54564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
54574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
54584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type);
54594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
54604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
54614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
54624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
54634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                object n;
54644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
54654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "n")) {
54664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
54674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "n");
54684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
54694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_object(tmp, &n, arena);
54704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
54714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
54724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
54734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
54744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"n\" missing from Num");
54754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
54764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
54774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Num(n, lineno, col_offset, arena);
54784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
54794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
54804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
54814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type);
54824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
54834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
54844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
54854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
54864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                string s;
54874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
54884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "s")) {
54894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
54904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "s");
54914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
54924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_string(tmp, &s, arena);
54934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
54944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
54954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
54964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
54974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Str");
54984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
54994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
55004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Str(s, lineno, col_offset, arena);
55014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
55024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
55034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
55044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
55054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
55064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
55074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
55084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
55094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
55104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                identifier attr;
55114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_context_ty ctx;
55124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
55134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
55144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
55154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
55164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
55174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
55184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
55194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
55204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
55214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
55224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Attribute");
55234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
55244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
55254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "attr")) {
55264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
55274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "attr");
55284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
55294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_identifier(tmp, &attr, arena);
55304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
55314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
55324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
55334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
55344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"attr\" missing from Attribute");
55354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
55364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
55374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "ctx")) {
55384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
55394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "ctx");
55404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
55414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr_context(tmp, &ctx, arena);
55424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
55434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
55444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
55454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
55464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Attribute");
55474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
55484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
55494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Attribute(value, attr, ctx, lineno, col_offset, arena);
55504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
55514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
55524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
55534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type);
55544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
55554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
55564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
55574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
55584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
55594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                slice_ty slice;
55604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_context_ty ctx;
55614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
55624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
55634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
55644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
55654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
55664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
55674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
55684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
55694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
55704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
55714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Subscript");
55724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
55734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
55744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "slice")) {
55754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
55764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "slice");
55774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
55784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_slice(tmp, &slice, arena);
55794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
55804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
55814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
55824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
55834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"slice\" missing from Subscript");
55844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
55854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
55864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "ctx")) {
55874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
55884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "ctx");
55894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
55904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr_context(tmp, &ctx, arena);
55914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
55924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
55934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
55944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
55954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Subscript");
55964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
55974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
55984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Subscript(value, slice, ctx, lineno, col_offset, arena);
55994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
56004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
56014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
56024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type);
56034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
56044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
56054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
56064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
56074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                identifier id;
56084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_context_ty ctx;
56094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
56104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "id")) {
56114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
56124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "id");
56134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
56144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_identifier(tmp, &id, arena);
56154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
56164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
56174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
56184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
56194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"id\" missing from Name");
56204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
56214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
56224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "ctx")) {
56234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
56244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "ctx");
56254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
56264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr_context(tmp, &ctx, arena);
56274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
56284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
56294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
56304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
56314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Name");
56324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
56334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
56344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Name(id, ctx, lineno, col_offset, arena);
56354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
56364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
56374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
56384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)List_type);
56394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
56404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
56414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
56424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
56434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* elts;
56444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_context_ty ctx;
56454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
56464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "elts")) {
56474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
56484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
56494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
56504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "elts");
56514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
56524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
56534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name);
56544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
56554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
56564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
56574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        elts = asdl_seq_new(len, arena);
56584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (elts == NULL) goto failed;
56594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
56604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
56614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
56624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
56634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(elts, i, value);
56644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
56654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
56664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
56674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
56684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from List");
56694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
56704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
56714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "ctx")) {
56724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
56734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "ctx");
56744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
56754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr_context(tmp, &ctx, arena);
56764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
56774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
56784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
56794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
56804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from List");
56814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
56824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
56834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = List(elts, ctx, lineno, col_offset, arena);
56844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
56854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
56864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
56874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type);
56884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
56894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
56904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
56914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
56924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* elts;
56934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_context_ty ctx;
56944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
56954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "elts")) {
56964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
56974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
56984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
56994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "elts");
57004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
57014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
57024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name);
57034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
57044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
57054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
57064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        elts = asdl_seq_new(len, arena);
57074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (elts == NULL) goto failed;
57084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
57094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                expr_ty value;
57104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
57114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
57124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(elts, i, value);
57134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
57144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
57154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
57164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
57174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Tuple");
57184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
57194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
57204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "ctx")) {
57214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
57224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "ctx");
57234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
57244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr_context(tmp, &ctx, arena);
57254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
57264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
57274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
57284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
57294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Tuple");
57304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
57314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
57324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Tuple(elts, ctx, lineno, col_offset, arena);
57334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
57344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
57354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
57374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
57384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
57394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of expr, but got %.400s", PyString_AS_STRING(tmp));
57404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
57414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
57424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
57434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
57444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
57454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
57464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena)
57474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
57484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
57494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
57504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
57514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type);
57524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
57534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
57544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
57564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Load;
57574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
57584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type);
57604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
57614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
57624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
57644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Store;
57654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
57664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type);
57684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
57694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
57704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
57724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Del;
57734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
57744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type);
57764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
57774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
57784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
57804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = AugLoad;
57814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
57824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type);
57844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
57854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
57864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
57884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = AugStore;
57894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
57904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type);
57924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
57934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
57944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
57964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Param;
57974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
57984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
57994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
58004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
58014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
58024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of expr_context, but got %.400s", PyString_AS_STRING(tmp));
58034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
58044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
58054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
58064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
58074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
58084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
58094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
58104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
58114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
58124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
58134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
58144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
58154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (obj == Py_None) {
58164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = NULL;
58174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
58184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
58194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
58204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
58214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
58224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
58234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
58244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
58254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Ellipsis(arena);
58264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
58274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
58284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
58294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type);
58304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
58314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
58324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
58334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
58344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty lower;
58354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty upper;
58364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty step;
58374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
58384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "lower")) {
58394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
58404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "lower");
58414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
58424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &lower, arena);
58434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
58444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
58454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
58464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
58474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        lower = NULL;
58484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
58494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "upper")) {
58504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
58514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "upper");
58524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
58534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &upper, arena);
58544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
58554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
58564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
58574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
58584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        upper = NULL;
58594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
58604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "step")) {
58614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
58624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "step");
58634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
58644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &step, arena);
58654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
58664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
58674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
58684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
58694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        step = NULL;
58704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
58714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Slice(lower, upper, step, arena);
58724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
58734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
58744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
58754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type);
58764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
58774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
58784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
58794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
58804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* dims;
58814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
58824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "dims")) {
58834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
58844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
58854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
58864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "dims");
58874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
58884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
58894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "ExtSlice field \"dims\" must be a list, not a %.200s", tmp->ob_type->tp_name);
58904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
58914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
58924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
58934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        dims = asdl_seq_new(len, arena);
58944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (dims == NULL) goto failed;
58954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
58964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                slice_ty value;
58974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_slice(PyList_GET_ITEM(tmp, i), &value, arena);
58984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
58994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(dims, i, value);
59004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
59014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
59024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
59034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
59044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"dims\" missing from ExtSlice");
59054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
59064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
59074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = ExtSlice(dims, arena);
59084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
59094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
59104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type);
59124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
59134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
59144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
59164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty value;
59174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
59184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "value")) {
59194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
59204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "value");
59214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
59224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &value, arena);
59234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
59244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
59254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
59264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
59274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Index");
59284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
59294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
59304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Index(value, arena);
59314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
59324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
59334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
59354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
59364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
59374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of slice, but got %.400s", PyString_AS_STRING(tmp));
59384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
59394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
59404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
59414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
59424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
59434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
59444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena)
59454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
59464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
59474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
59484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
59494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)And_type);
59504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
59514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
59524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
59544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = And;
59554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
59564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type);
59584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
59594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
59604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
59624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Or;
59634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
59644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
59664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
59674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
59684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of boolop, but got %.400s", PyString_AS_STRING(tmp));
59694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
59704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
59714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
59724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
59734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
59744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
59754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena)
59764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
59774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
59784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
59794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
59804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type);
59814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
59824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
59834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
59854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Add;
59864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
59874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type);
59894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
59904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
59914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
59934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Sub;
59944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
59954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
59964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type);
59974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
59984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
59994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Mult;
60024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type);
60054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Div;
60104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type);
60134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Mod;
60184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type);
60214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Pow;
60264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type);
60294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = LShift;
60344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type);
60374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = RShift;
60424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type);
60454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = BitOr;
60504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type);
60534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = BitXor;
60584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type);
60614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = BitAnd;
60664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type);
60694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = FloorDiv;
60744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
60774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
60784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
60794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of operator, but got %.400s", PyString_AS_STRING(tmp));
60804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
60814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
60824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
60834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
60844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
60854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
60864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena)
60874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
60884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
60894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
60904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
60914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type);
60924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
60934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
60944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
60964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Invert;
60974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
60984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
60994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type);
61004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Not;
61054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type);
61084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = UAdd;
61134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type);
61164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = USub;
61214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
61244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
61254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
61264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of unaryop, but got %.400s", PyString_AS_STRING(tmp));
61274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
61284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
61294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
61304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
61314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
61324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
61334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena)
61344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
61354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
61364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
61374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
61384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type);
61394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Eq;
61444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type);
61474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = NotEq;
61524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type);
61554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Lt;
61604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type);
61634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = LtE;
61684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type);
61714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Gt;
61764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type);
61794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = GtE;
61844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type);
61874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = Is;
61924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
61934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type);
61954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
61964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
61974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
61984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
61994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = IsNot;
62004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
62014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)In_type);
62034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
62044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
62054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
62074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = In;
62084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
62094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type);
62114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
62124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
62134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
62154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = NotIn;
62164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
62174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
62194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
62204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
62214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of cmpop, but got %.400s", PyString_AS_STRING(tmp));
62224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
62234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
62244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
62254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
62264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
62274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
62284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena)
62294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
62304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
62314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty target;
62324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty iter;
62334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        asdl_seq* ifs;
62344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
62354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "target")) {
62364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
62374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "target");
62384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
62394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_expr(tmp, &target, arena);
62404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
62414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
62424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
62434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
62444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from comprehension");
62454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
62464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "iter")) {
62484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
62494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "iter");
62504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
62514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_expr(tmp, &iter, arena);
62524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
62534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
62544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
62554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
62564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from comprehension");
62574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
62584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "ifs")) {
62604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
62614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_ssize_t len;
62624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_ssize_t i;
62634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "ifs");
62644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
62654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!PyList_Check(tmp)) {
62664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be a list, not a %.200s", tmp->ob_type->tp_name);
62674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
62684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
62694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                len = PyList_GET_SIZE(tmp);
62704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                ifs = asdl_seq_new(len, arena);
62714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (ifs == NULL) goto failed;
62724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                for (i = 0; i < len; i++) {
62734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        expr_ty value;
62744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
62754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
62764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        asdl_seq_SET(ifs, i, value);
62774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
62784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
62794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
62804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
62814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"ifs\" missing from comprehension");
62824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
62834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
62844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        *out = comprehension(target, iter, ifs, arena);
62854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 0;
62864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
62874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
62884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
62894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
62904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
62914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
62924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
62934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
62944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
62954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int isinstance;
62964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
62974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int lineno;
62984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        int col_offset;
62994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
63004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (obj == Py_None) {
63014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = NULL;
63024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
63034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
63044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "lineno")) {
63054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
63064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "lineno");
63074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
63084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_int(tmp, &lineno, arena);
63094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
63104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
63114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
63124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
63134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from excepthandler");
63144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
63154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
63164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "col_offset")) {
63174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
63184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "col_offset");
63194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
63204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_int(tmp, &col_offset, arena);
63214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
63224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
63234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
63244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
63254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler");
63264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
63274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
63284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type);
63294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance == -1) {
63304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
63314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
63324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (isinstance) {
63334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty type;
63344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                expr_ty name;
63354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asdl_seq* body;
63364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
63374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "type")) {
63384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
63394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "type");
63404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
63414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &type, arena);
63424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
63434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
63444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
63454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
63464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        type = NULL;
63474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
63484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "name")) {
63494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
63504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "name");
63514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
63524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(tmp, &name, arena);
63534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
63544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
63554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
63564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
63574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        name = NULL;
63584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
63594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (PyObject_HasAttrString(obj, "body")) {
63604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        int res;
63614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t len;
63624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_ssize_t i;
63634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = PyObject_GetAttrString(obj, "body");
63644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (tmp == NULL) goto failed;
63654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (!PyList_Check(tmp)) {
63664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
63674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                goto failed;
63684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
63694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        len = PyList_GET_SIZE(tmp);
63704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        body = asdl_seq_new(len, arena);
63714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (body == NULL) goto failed;
63724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        for (i = 0; i < len; i++) {
63734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                stmt_ty value;
63744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
63754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                if (res != 0) goto failed;
63764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                asdl_seq_SET(body, i, value);
63774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        }
63784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        Py_XDECREF(tmp);
63794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        tmp = NULL;
63804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                } else {
63814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ExceptHandler");
63824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        return 1;
63834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
63844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                *out = ExceptHandler(type, name, body, lineno, col_offset,
63854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                                     arena);
63864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (*out == NULL) goto failed;
63874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 0;
63884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
63894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
63904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        tmp = PyObject_Repr(obj);
63914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (tmp == NULL) goto failed;
63924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected some sort of excepthandler, but got %.400s", PyString_AS_STRING(tmp));
63934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
63944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
63954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
63964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
63974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
63984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
63994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena)
64004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
64014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
64024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        asdl_seq* args;
64034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        identifier vararg;
64044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        identifier kwarg;
64054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        asdl_seq* defaults;
64064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
64074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "args")) {
64084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
64094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_ssize_t len;
64104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_ssize_t i;
64114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "args");
64124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
64134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!PyList_Check(tmp)) {
64144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name);
64154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
64164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
64174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                len = PyList_GET_SIZE(tmp);
64184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                args = asdl_seq_new(len, arena);
64194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (args == NULL) goto failed;
64204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                for (i = 0; i < len; i++) {
64214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        expr_ty value;
64224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
64234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
64244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        asdl_seq_SET(args, i, value);
64254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
64264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
64274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
64284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
64294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from arguments");
64304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
64314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
64324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "vararg")) {
64334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
64344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "vararg");
64354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
64364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_identifier(tmp, &vararg, arena);
64374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
64384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
64394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
64404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
64414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                vararg = NULL;
64424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
64434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "kwarg")) {
64444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
64454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "kwarg");
64464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
64474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_identifier(tmp, &kwarg, arena);
64484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
64494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
64504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
64514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
64524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                kwarg = NULL;
64534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
64544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "defaults")) {
64554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
64564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_ssize_t len;
64574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_ssize_t i;
64584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "defaults");
64594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
64604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (!PyList_Check(tmp)) {
64614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name);
64624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        goto failed;
64634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
64644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                len = PyList_GET_SIZE(tmp);
64654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                defaults = asdl_seq_new(len, arena);
64664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (defaults == NULL) goto failed;
64674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                for (i = 0; i < len; i++) {
64684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        expr_ty value;
64694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
64704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        if (res != 0) goto failed;
64714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                        asdl_seq_SET(defaults, i, value);
64724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                }
64734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
64744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
64754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
64764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments");
64774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
64784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
64794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        *out = arguments(args, vararg, kwarg, defaults, arena);
64804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 0;
64814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
64824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
64834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
64844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
64854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
64864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
64874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena)
64884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
64894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
64904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        identifier arg;
64914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        expr_ty value;
64924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
64934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "arg")) {
64944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
64954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "arg");
64964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
64974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_identifier(tmp, &arg, arena);
64984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
64994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
65004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
65014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
65024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from keyword");
65034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
65044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
65054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "value")) {
65064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
65074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "value");
65084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
65094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_expr(tmp, &value, arena);
65104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
65114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
65124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
65134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
65144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from keyword");
65154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
65164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
65174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        *out = keyword(arg, value, arena);
65184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 0;
65194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
65204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
65214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
65224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
65234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
65244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint
65254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmobj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena)
65264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
65274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject* tmp = NULL;
65284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        identifier name;
65294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        identifier asname;
65304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
65314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "name")) {
65324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
65334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "name");
65344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
65354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_identifier(tmp, &name, arena);
65364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
65374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
65384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
65394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
65404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from alias");
65414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return 1;
65424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
65434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyObject_HasAttrString(obj, "asname")) {
65444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                int res;
65454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = PyObject_GetAttrString(obj, "asname");
65464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (tmp == NULL) goto failed;
65474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                res = obj2ast_identifier(tmp, &asname, arena);
65484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                if (res != 0) goto failed;
65494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                Py_XDECREF(tmp);
65504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                tmp = NULL;
65514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        } else {
65524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                asname = NULL;
65534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        }
65544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        *out = alias(name, asname, arena);
65554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 0;
65564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfailed:
65574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        Py_XDECREF(tmp);
65584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return 1;
65594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
65604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
65614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
65624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyMODINIT_FUNC
65634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylminit_ast(void)
65644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
65654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyObject *m, *d;
65664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!init_types()) return;
65674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        m = Py_InitModule3("_ast", NULL, NULL);
65684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (!m) return;
65694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        d = PyModule_GetDict(m);
65704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return;
65714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)
65724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return;
65734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyModule_AddStringConstant(m, "__version__", "82160") < 0)
65744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                return;
65754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return;
65764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0)
65774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
65784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Interactive", (PyObject*)Interactive_type)
65794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            < 0) return;
65804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Expression", (PyObject*)Expression_type) <
65814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
65824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Suite", (PyObject*)Suite_type) < 0) return;
65834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "stmt", (PyObject*)stmt_type) < 0) return;
65844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "FunctionDef", (PyObject*)FunctionDef_type)
65854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            < 0) return;
65864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "ClassDef", (PyObject*)ClassDef_type) < 0)
65874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
65884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Return", (PyObject*)Return_type) < 0)
65894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
65904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Delete", (PyObject*)Delete_type) < 0)
65914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
65924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Assign", (PyObject*)Assign_type) < 0)
65934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
65944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "AugAssign", (PyObject*)AugAssign_type) <
65954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
65964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Print", (PyObject*)Print_type) < 0) return;
65974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return;
65984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "While", (PyObject*)While_type) < 0) return;
65994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "If", (PyObject*)If_type) < 0) return;
66004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "With", (PyObject*)With_type) < 0) return;
66014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Raise", (PyObject*)Raise_type) < 0) return;
66024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "TryExcept", (PyObject*)TryExcept_type) <
66034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
66044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "TryFinally", (PyObject*)TryFinally_type) <
66054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
66064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Assert", (PyObject*)Assert_type) < 0)
66074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Import", (PyObject*)Import_type) < 0)
66094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "ImportFrom", (PyObject*)ImportFrom_type) <
66114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
66124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Exec", (PyObject*)Exec_type) < 0) return;
66134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Global", (PyObject*)Global_type) < 0)
66144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Expr", (PyObject*)Expr_type) < 0) return;
66164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Pass", (PyObject*)Pass_type) < 0) return;
66174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Break", (PyObject*)Break_type) < 0) return;
66184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Continue", (PyObject*)Continue_type) < 0)
66194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "expr", (PyObject*)expr_type) < 0) return;
66214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "BoolOp", (PyObject*)BoolOp_type) < 0)
66224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "BinOp", (PyObject*)BinOp_type) < 0) return;
66244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "UnaryOp", (PyObject*)UnaryOp_type) < 0)
66254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Lambda", (PyObject*)Lambda_type) < 0)
66274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "IfExp", (PyObject*)IfExp_type) < 0) return;
66294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Dict", (PyObject*)Dict_type) < 0) return;
66304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return;
66314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < 0)
66324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "SetComp", (PyObject*)SetComp_type) < 0)
66344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "DictComp", (PyObject*)DictComp_type) < 0)
66364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "GeneratorExp",
66384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            (PyObject*)GeneratorExp_type) < 0) return;
66394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return;
66404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Compare", (PyObject*)Compare_type) < 0)
66414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return;
66434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Repr", (PyObject*)Repr_type) < 0) return;
66444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return;
66454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return;
66464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) <
66474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
66484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Subscript", (PyObject*)Subscript_type) <
66494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
66504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Name", (PyObject*)Name_type) < 0) return;
66514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "List", (PyObject*)List_type) < 0) return;
66524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Tuple", (PyObject*)Tuple_type) < 0) return;
66534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "expr_context",
66544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            (PyObject*)expr_context_type) < 0) return;
66554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Load", (PyObject*)Load_type) < 0) return;
66564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Store", (PyObject*)Store_type) < 0) return;
66574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Del", (PyObject*)Del_type) < 0) return;
66584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "AugLoad", (PyObject*)AugLoad_type) < 0)
66594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "AugStore", (PyObject*)AugStore_type) < 0)
66614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Param", (PyObject*)Param_type) < 0) return;
66634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "slice", (PyObject*)slice_type) < 0) return;
66644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0)
66654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Slice", (PyObject*)Slice_type) < 0) return;
66674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "ExtSlice", (PyObject*)ExtSlice_type) < 0)
66684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Index", (PyObject*)Index_type) < 0) return;
66704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "boolop", (PyObject*)boolop_type) < 0)
66714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "And", (PyObject*)And_type) < 0) return;
66734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Or", (PyObject*)Or_type) < 0) return;
66744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "operator", (PyObject*)operator_type) < 0)
66754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Add", (PyObject*)Add_type) < 0) return;
66774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Sub", (PyObject*)Sub_type) < 0) return;
66784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Mult", (PyObject*)Mult_type) < 0) return;
66794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Div", (PyObject*)Div_type) < 0) return;
66804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Mod", (PyObject*)Mod_type) < 0) return;
66814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Pow", (PyObject*)Pow_type) < 0) return;
66824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "LShift", (PyObject*)LShift_type) < 0)
66834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "RShift", (PyObject*)RShift_type) < 0)
66854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "BitOr", (PyObject*)BitOr_type) < 0) return;
66874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "BitXor", (PyObject*)BitXor_type) < 0)
66884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "BitAnd", (PyObject*)BitAnd_type) < 0)
66904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "FloorDiv", (PyObject*)FloorDiv_type) < 0)
66924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "unaryop", (PyObject*)unaryop_type) < 0)
66944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Invert", (PyObject*)Invert_type) < 0)
66964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
66974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Not", (PyObject*)Not_type) < 0) return;
66984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "UAdd", (PyObject*)UAdd_type) < 0) return;
66994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "USub", (PyObject*)USub_type) < 0) return;
67004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "cmpop", (PyObject*)cmpop_type) < 0) return;
67014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Eq", (PyObject*)Eq_type) < 0) return;
67024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "NotEq", (PyObject*)NotEq_type) < 0) return;
67034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Lt", (PyObject*)Lt_type) < 0) return;
67044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "LtE", (PyObject*)LtE_type) < 0) return;
67054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Gt", (PyObject*)Gt_type) < 0) return;
67064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "GtE", (PyObject*)GtE_type) < 0) return;
67074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "Is", (PyObject*)Is_type) < 0) return;
67084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "IsNot", (PyObject*)IsNot_type) < 0) return;
67094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "In", (PyObject*)In_type) < 0) return;
67104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "NotIn", (PyObject*)NotIn_type) < 0) return;
67114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "comprehension",
67124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            (PyObject*)comprehension_type) < 0) return;
67134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "excepthandler",
67144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            (PyObject*)excepthandler_type) < 0) return;
67154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "ExceptHandler",
67164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            (PyObject*)ExceptHandler_type) < 0) return;
67174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "arguments", (PyObject*)arguments_type) <
67184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            0) return;
67194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "keyword", (PyObject*)keyword_type) < 0)
67204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            return;
67214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if (PyDict_SetItemString(d, "alias", (PyObject*)alias_type) < 0) return;
67224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
67234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
67244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
67254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPyObject* PyAST_mod2obj(mod_ty t)
67264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
67274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    init_types();
67284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return ast2obj_mod(t);
67294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
67304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
67314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm/* mode is 0 for "exec", 1 for "eval" and 2 for "single" input */
67324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmmod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
67334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
67344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    mod_ty res;
67354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
67364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                            (PyObject*)Interactive_type};
67374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    char *req_name[] = {"Module", "Expression", "Interactive"};
67384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    int isinstance;
67394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    assert(0 <= mode && mode <= 2);
67404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
67414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    init_types();
67424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
67434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    isinstance = PyObject_IsInstance(ast, req_type[mode]);
67444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (isinstance == -1)
67454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
67464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (!isinstance) {
67474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
67484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                     req_name[mode], Py_TYPE(ast)->tp_name);
67494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
67504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    }
67514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    if (obj2ast_mod(ast, &res, arena) != 0)
67524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return NULL;
67534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    else
67544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        return res;
67554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
67564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
67574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmint PyAST_Check(PyObject* obj)
67584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm{
67594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    init_types();
67604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return PyObject_IsInstance(obj, (PyObject*)&AST_type);
67614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm}
67624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
67634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
6764