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