Mercurial > cpython-lru_cache-weakref
annotate Python/Python-ast.c @ 62570:32651ee779ed
Merged revisions 81380 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r81380 | brett.cannon | 2010-05-20 13:37:55 -0500 (Thu, 20 May 2010) | 8 lines
Turned out that if you used explicit relative import syntax
(e.g. from .os import sep) and it failed, import would still try the implicit
relative import semantics of an absolute import (from os import sep). That's
not right, so when level is negative, only do explicit relative import
semantics.
Fixes issue #7902. Thanks to Meador Inge for the patch.
........
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sun, 27 Jun 2010 22:37:28 +0000 |
| parents | 504c499e8c95 |
| children | e37344a8f0c9 |
| rev | line source |
|---|---|
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
1 /* File automatically generated by Parser/asdl_c.py. */ |
|
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
2 |
|
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
3 |
|
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
4 /* |
|
62464
3cf35231f7d3
Issue #9051: Instances of timezone class can now be pickled.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62155
diff
changeset
|
5 __version__ 82163. |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
6 |
|
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
7 This module must be committed separately after each AST grammar change; |
|
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
8 The __version__ number is set to the revision number of the commit |
|
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
9 containing the grammar change. |
|
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40819
diff
changeset
|
10 */ |
| 35742 | 11 |
| 12 #include "Python.h" | |
| 13 #include "Python-ast.h" | |
| 14 | |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
15 static PyTypeObject AST_type; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
16 static PyTypeObject *mod_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
17 static PyObject* ast2obj_mod(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
18 static PyTypeObject *Module_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
19 static char *Module_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
20 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
21 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
22 static PyTypeObject *Interactive_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
23 static char *Interactive_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
24 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
25 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
26 static PyTypeObject *Expression_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
27 static char *Expression_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
28 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
29 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
30 static PyTypeObject *Suite_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
31 static char *Suite_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
32 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
33 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
34 static PyTypeObject *stmt_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
35 static char *stmt_attributes[] = { |
| 36669 | 36 "lineno", |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
37 "col_offset", |
| 36669 | 38 }; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
39 static PyObject* ast2obj_stmt(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
40 static PyTypeObject *FunctionDef_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
41 static char *FunctionDef_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
42 "name", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
43 "args", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
44 "body", |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
45 "decorator_list", |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
46 "returns", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
47 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
48 static PyTypeObject *ClassDef_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
49 static char *ClassDef_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
50 "name", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
51 "bases", |
|
41226
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
52 "keywords", |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
53 "starargs", |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
54 "kwargs", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
55 "body", |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
56 "decorator_list", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
57 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
58 static PyTypeObject *Return_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
59 static char *Return_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
60 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
61 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
62 static PyTypeObject *Delete_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
63 static char *Delete_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
64 "targets", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
65 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
66 static PyTypeObject *Assign_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
67 static char *Assign_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
68 "targets", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
69 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
70 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
71 static PyTypeObject *AugAssign_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
72 static char *AugAssign_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
73 "target", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
74 "op", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
75 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
76 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
77 static PyTypeObject *For_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
78 static char *For_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
79 "target", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
80 "iter", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
81 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
82 "orelse", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
83 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
84 static PyTypeObject *While_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
85 static char *While_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
86 "test", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
87 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
88 "orelse", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
89 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
90 static PyTypeObject *If_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
91 static char *If_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
92 "test", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
93 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
94 "orelse", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
95 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
96 static PyTypeObject *With_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
97 static char *With_fields[]={ |
|
36695
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
98 "context_expr", |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
99 "optional_vars", |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
100 "body", |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
101 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
102 static PyTypeObject *Raise_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
103 static char *Raise_fields[]={ |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
104 "exc", |
|
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
105 "cause", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
106 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
107 static PyTypeObject *TryExcept_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
108 static char *TryExcept_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
109 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
110 "handlers", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
111 "orelse", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
112 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
113 static PyTypeObject *TryFinally_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
114 static char *TryFinally_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
115 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
116 "finalbody", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
117 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
118 static PyTypeObject *Assert_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
119 static char *Assert_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
120 "test", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
121 "msg", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
122 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
123 static PyTypeObject *Import_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
124 static char *Import_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
125 "names", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
126 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
127 static PyTypeObject *ImportFrom_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
128 static char *ImportFrom_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
129 "module", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
130 "names", |
|
36712
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
131 "level", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
132 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
133 static PyTypeObject *Global_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
134 static char *Global_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
135 "names", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
136 }; |
|
40965
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
137 static PyTypeObject *Nonlocal_type; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
138 static char *Nonlocal_fields[]={ |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
139 "names", |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
140 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
141 static PyTypeObject *Expr_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
142 static char *Expr_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
143 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
144 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
145 static PyTypeObject *Pass_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
146 static PyTypeObject *Break_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
147 static PyTypeObject *Continue_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
148 static PyTypeObject *expr_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
149 static char *expr_attributes[] = { |
| 36669 | 150 "lineno", |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
151 "col_offset", |
| 36669 | 152 }; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
153 static PyObject* ast2obj_expr(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
154 static PyTypeObject *BoolOp_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
155 static char *BoolOp_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
156 "op", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
157 "values", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
158 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
159 static PyTypeObject *BinOp_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
160 static char *BinOp_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
161 "left", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
162 "op", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
163 "right", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
164 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
165 static PyTypeObject *UnaryOp_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
166 static char *UnaryOp_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
167 "op", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
168 "operand", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
169 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
170 static PyTypeObject *Lambda_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
171 static char *Lambda_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
172 "args", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
173 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
174 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
175 static PyTypeObject *IfExp_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
176 static char *IfExp_fields[]={ |
|
36666
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
177 "test", |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
178 "body", |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
179 "orelse", |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
180 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
181 static PyTypeObject *Dict_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
182 static char *Dict_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
183 "keys", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
184 "values", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
185 }; |
|
39693
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
186 static PyTypeObject *Set_type; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
187 static char *Set_fields[]={ |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
188 "elts", |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
189 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
190 static PyTypeObject *ListComp_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
191 static char *ListComp_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
192 "elt", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
193 "generators", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
194 }; |
|
41464
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
195 static PyTypeObject *SetComp_type; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
196 static char *SetComp_fields[]={ |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
197 "elt", |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
198 "generators", |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
199 }; |
|
42193
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
200 static PyTypeObject *DictComp_type; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
201 static char *DictComp_fields[]={ |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
202 "key", |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
203 "value", |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
204 "generators", |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
205 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
206 static PyTypeObject *GeneratorExp_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
207 static char *GeneratorExp_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
208 "elt", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
209 "generators", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
210 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
211 static PyTypeObject *Yield_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
212 static char *Yield_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
213 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
214 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
215 static PyTypeObject *Compare_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
216 static char *Compare_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
217 "left", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
218 "ops", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
219 "comparators", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
220 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
221 static PyTypeObject *Call_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
222 static char *Call_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
223 "func", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
224 "args", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
225 "keywords", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
226 "starargs", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
227 "kwargs", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
228 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
229 static PyTypeObject *Num_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
230 static char *Num_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
231 "n", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
232 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
233 static PyTypeObject *Str_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
234 static char *Str_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
235 "s", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
236 }; |
| 40894 | 237 static PyTypeObject *Bytes_type; |
| 238 static char *Bytes_fields[]={ | |
| 239 "s", | |
| 240 }; | |
|
39783
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
241 static PyTypeObject *Ellipsis_type; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
242 static PyTypeObject *Attribute_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
243 static char *Attribute_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
244 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
245 "attr", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
246 "ctx", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
247 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
248 static PyTypeObject *Subscript_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
249 static char *Subscript_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
250 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
251 "slice", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
252 "ctx", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
253 }; |
|
41699
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
254 static PyTypeObject *Starred_type; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
255 static char *Starred_fields[]={ |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
256 "value", |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
257 "ctx", |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
258 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
259 static PyTypeObject *Name_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
260 static char *Name_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
261 "id", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
262 "ctx", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
263 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
264 static PyTypeObject *List_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
265 static char *List_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
266 "elts", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
267 "ctx", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
268 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
269 static PyTypeObject *Tuple_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
270 static char *Tuple_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
271 "elts", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
272 "ctx", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
273 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
274 static PyTypeObject *expr_context_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
275 static PyObject *Load_singleton, *Store_singleton, *Del_singleton, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
276 *AugLoad_singleton, *AugStore_singleton, *Param_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
277 static PyObject* ast2obj_expr_context(expr_context_ty); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
278 static PyTypeObject *Load_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
279 static PyTypeObject *Store_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
280 static PyTypeObject *Del_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
281 static PyTypeObject *AugLoad_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
282 static PyTypeObject *AugStore_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
283 static PyTypeObject *Param_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
284 static PyTypeObject *slice_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
285 static PyObject* ast2obj_slice(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
286 static PyTypeObject *Slice_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
287 static char *Slice_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
288 "lower", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
289 "upper", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
290 "step", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
291 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
292 static PyTypeObject *ExtSlice_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
293 static char *ExtSlice_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
294 "dims", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
295 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
296 static PyTypeObject *Index_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
297 static char *Index_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
298 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
299 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
300 static PyTypeObject *boolop_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
301 static PyObject *And_singleton, *Or_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
302 static PyObject* ast2obj_boolop(boolop_ty); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
303 static PyTypeObject *And_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
304 static PyTypeObject *Or_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
305 static PyTypeObject *operator_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
306 static PyObject *Add_singleton, *Sub_singleton, *Mult_singleton, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
307 *Div_singleton, *Mod_singleton, *Pow_singleton, *LShift_singleton, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
308 *RShift_singleton, *BitOr_singleton, *BitXor_singleton, *BitAnd_singleton, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
309 *FloorDiv_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
310 static PyObject* ast2obj_operator(operator_ty); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
311 static PyTypeObject *Add_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
312 static PyTypeObject *Sub_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
313 static PyTypeObject *Mult_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
314 static PyTypeObject *Div_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
315 static PyTypeObject *Mod_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
316 static PyTypeObject *Pow_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
317 static PyTypeObject *LShift_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
318 static PyTypeObject *RShift_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
319 static PyTypeObject *BitOr_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
320 static PyTypeObject *BitXor_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
321 static PyTypeObject *BitAnd_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
322 static PyTypeObject *FloorDiv_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
323 static PyTypeObject *unaryop_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
324 static PyObject *Invert_singleton, *Not_singleton, *UAdd_singleton, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
325 *USub_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
326 static PyObject* ast2obj_unaryop(unaryop_ty); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
327 static PyTypeObject *Invert_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
328 static PyTypeObject *Not_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
329 static PyTypeObject *UAdd_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
330 static PyTypeObject *USub_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
331 static PyTypeObject *cmpop_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
332 static PyObject *Eq_singleton, *NotEq_singleton, *Lt_singleton, *LtE_singleton, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
333 *Gt_singleton, *GtE_singleton, *Is_singleton, *IsNot_singleton, *In_singleton, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
334 *NotIn_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
335 static PyObject* ast2obj_cmpop(cmpop_ty); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
336 static PyTypeObject *Eq_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
337 static PyTypeObject *NotEq_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
338 static PyTypeObject *Lt_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
339 static PyTypeObject *LtE_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
340 static PyTypeObject *Gt_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
341 static PyTypeObject *GtE_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
342 static PyTypeObject *Is_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
343 static PyTypeObject *IsNot_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
344 static PyTypeObject *In_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
345 static PyTypeObject *NotIn_type; |
|
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
346 static PyTypeObject *comprehension_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
347 static PyObject* ast2obj_comprehension(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
348 static char *comprehension_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
349 "target", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
350 "iter", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
351 "ifs", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
352 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
353 static PyTypeObject *excepthandler_type; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
354 static char *excepthandler_attributes[] = { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
355 "lineno", |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
356 "col_offset", |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
357 }; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
358 static PyObject* ast2obj_excepthandler(void*); |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
359 static PyTypeObject *ExceptHandler_type; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
360 static char *ExceptHandler_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
361 "type", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
362 "name", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
363 "body", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
364 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
365 static PyTypeObject *arguments_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
366 static PyObject* ast2obj_arguments(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
367 static char *arguments_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
368 "args", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
369 "vararg", |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
370 "varargannotation", |
|
40215
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
371 "kwonlyargs", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
372 "kwarg", |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
373 "kwargannotation", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
374 "defaults", |
|
40215
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
375 "kw_defaults", |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
376 }; |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
377 static PyTypeObject *arg_type; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
378 static PyObject* ast2obj_arg(void*); |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
379 static char *arg_fields[]={ |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
380 "arg", |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
381 "annotation", |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
382 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
383 static PyTypeObject *keyword_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
384 static PyObject* ast2obj_keyword(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
385 static char *keyword_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
386 "arg", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
387 "value", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
388 }; |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
389 static PyTypeObject *alias_type; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
390 static PyObject* ast2obj_alias(void*); |
|
36743
dbf9cc6c36eb
Don't pollute namespace as bad as before. All the types are static now.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36726
diff
changeset
|
391 static char *alias_fields[]={ |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
392 "name", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
393 "asname", |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
394 }; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
395 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
396 |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
397 static int |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
398 ast_type_init(PyObject *self, PyObject *args, PyObject *kw) |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
399 { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
400 Py_ssize_t i, numfields = 0; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
401 int res = -1; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
402 PyObject *key, *value, *fields; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
403 fields = PyObject_GetAttrString((PyObject*)Py_TYPE(self), "_fields"); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
404 if (!fields) |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
405 PyErr_Clear(); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
406 if (fields) { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
407 numfields = PySequence_Size(fields); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
408 if (numfields == -1) |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
409 goto cleanup; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
410 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
411 res = 0; /* if no error occurs, this stays 0 to the end */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
412 if (PyTuple_GET_SIZE(args) > 0) { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
413 if (numfields != PyTuple_GET_SIZE(args)) { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
414 PyErr_Format(PyExc_TypeError, "%.400s constructor takes %s" |
|
49139
6ae2d4b507a2
Merged revisions 66377 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
415 "%zd positional argument%s", |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
416 Py_TYPE(self)->tp_name, |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
417 numfields == 0 ? "" : "either 0 or ", |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
418 numfields, numfields == 1 ? "" : "s"); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
419 res = -1; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
420 goto cleanup; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
421 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
422 for (i = 0; i < PyTuple_GET_SIZE(args); i++) { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
423 /* cannot be reached when fields is NULL */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
424 PyObject *name = PySequence_GetItem(fields, i); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
425 if (!name) { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
426 res = -1; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
427 goto cleanup; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
428 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
429 res = PyObject_SetAttr(self, name, PyTuple_GET_ITEM(args, i)); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
430 Py_DECREF(name); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
431 if (res < 0) |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
432 goto cleanup; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
433 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
434 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
435 if (kw) { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
436 i = 0; /* needed by PyDict_Next */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
437 while (PyDict_Next(kw, &i, &key, &value)) { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
438 res = PyObject_SetAttr(self, key, value); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
439 if (res < 0) |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
440 goto cleanup; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
441 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
442 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
443 cleanup: |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
444 Py_XDECREF(fields); |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
445 return res; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
446 } |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
447 |
|
46233
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
448 /* Pickling support */ |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
449 static PyObject * |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
450 ast_type_reduce(PyObject *self, PyObject *unused) |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
451 { |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
452 PyObject *res; |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
453 PyObject *dict = PyObject_GetAttrString(self, "__dict__"); |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
454 if (dict == NULL) { |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
455 if (PyErr_ExceptionMatches(PyExc_AttributeError)) |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
456 PyErr_Clear(); |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
457 else |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
458 return NULL; |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
459 } |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
460 if (dict) { |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
461 res = Py_BuildValue("O()O", Py_TYPE(self), dict); |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
462 Py_DECREF(dict); |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
463 return res; |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
464 } |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
465 return Py_BuildValue("O()", Py_TYPE(self)); |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
466 } |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
467 |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
468 static PyMethodDef ast_type_methods[] = { |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
469 {"__reduce__", ast_type_reduce, METH_NOARGS, NULL}, |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
470 {NULL} |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
471 }; |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
472 |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
473 static PyTypeObject AST_type = { |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
474 PyVarObject_HEAD_INIT(&PyType_Type, 0) |
|
46233
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
475 "_ast.AST", |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
476 sizeof(PyObject), |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
477 0, |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
478 0, /* tp_dealloc */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
479 0, /* tp_print */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
480 0, /* tp_getattr */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
481 0, /* tp_setattr */ |
|
51270
debd14c489b9
Issue #1717: rename tp_compare to tp_reserved. I'll change the
Mark Dickinson <dickinsm@gmail.com>
parents:
50076
diff
changeset
|
482 0, /* tp_reserved */ |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
483 0, /* tp_repr */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
484 0, /* tp_as_number */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
485 0, /* tp_as_sequence */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
486 0, /* tp_as_mapping */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
487 0, /* tp_hash */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
488 0, /* tp_call */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
489 0, /* tp_str */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
490 PyObject_GenericGetAttr, /* tp_getattro */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
491 PyObject_GenericSetAttr, /* tp_setattro */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
492 0, /* tp_as_buffer */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
493 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
494 0, /* tp_doc */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
495 0, /* tp_traverse */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
496 0, /* tp_clear */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
497 0, /* tp_richcompare */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
498 0, /* tp_weaklistoffset */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
499 0, /* tp_iter */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
500 0, /* tp_iternext */ |
|
46233
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
501 ast_type_methods, /* tp_methods */ |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
502 0, /* tp_members */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
503 0, /* tp_getset */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
504 0, /* tp_base */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
505 0, /* tp_dict */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
506 0, /* tp_descr_get */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
507 0, /* tp_descr_set */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
508 0, /* tp_dictoffset */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
509 (initproc)ast_type_init, /* tp_init */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
510 PyType_GenericAlloc, /* tp_alloc */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
511 PyType_GenericNew, /* tp_new */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
512 PyObject_Del, /* tp_free */ |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
513 }; |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
514 |
|
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
515 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
516 static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
517 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
518 PyObject *fnames, *result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
519 int i; |
|
46233
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
520 fnames = PyTuple_New(num_fields); |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
521 if (!fnames) return NULL; |
|
61c92923cf7f
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62048,62050-62051,62055-62066,62068-62074,62076-62078 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46231
diff
changeset
|
522 for (i = 0; i < num_fields; i++) { |
|
42816
872c7c3f0af3
Use unicode for AST attributes
Neal Norwitz <nnorwitz@gmail.com>
parents:
42206
diff
changeset
|
523 PyObject *field = PyUnicode_FromString(fields[i]); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
524 if (!field) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
525 Py_DECREF(fnames); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
526 return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
527 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
528 PyTuple_SET_ITEM(fnames, i, field); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
529 } |
|
62155
600c23127207
Issue #8848: U / U# formats of Py_BuildValue() are just alias to s / s#
Victor Stinner <victor.stinner@haypocalc.com>
parents:
57676
diff
changeset
|
530 result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}", |
| 36669 | 531 type, base, "_fields", fnames, "__module__", "_ast"); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
532 Py_DECREF(fnames); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
533 return (PyTypeObject*)result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
534 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
535 |
| 36669 | 536 static int add_attributes(PyTypeObject* type, char**attrs, int num_fields) |
| 537 { | |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
538 int i, result; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
539 PyObject *s, *l = PyTuple_New(num_fields); |
|
62566
504c499e8c95
Merged revisions 81465-81466,81468,81679,81735,81760,81868,82183 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62464
diff
changeset
|
540 if (!l) |
|
504c499e8c95
Merged revisions 81465-81466,81468,81679,81735,81760,81868,82183 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62464
diff
changeset
|
541 return 0; |
|
504c499e8c95
Merged revisions 81465-81466,81468,81679,81735,81760,81868,82183 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62464
diff
changeset
|
542 for (i = 0; i < num_fields; i++) { |
|
42816
872c7c3f0af3
Use unicode for AST attributes
Neal Norwitz <nnorwitz@gmail.com>
parents:
42206
diff
changeset
|
543 s = PyUnicode_FromString(attrs[i]); |
| 36669 | 544 if (!s) { |
| 545 Py_DECREF(l); | |
| 546 return 0; | |
| 547 } | |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
548 PyTuple_SET_ITEM(l, i, s); |
| 36669 | 549 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
550 result = PyObject_SetAttrString((PyObject*)type, "_attributes", l) >= 0; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
551 Py_DECREF(l); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
552 return result; |
| 36669 | 553 } |
| 554 | |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
555 /* Conversion AST -> Python */ |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
556 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
557 static PyObject* ast2obj_list(asdl_seq *seq, PyObject* (*func)(void*)) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
558 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
559 int i, n = asdl_seq_LEN(seq); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
560 PyObject *result = PyList_New(n); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
561 PyObject *value; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
562 if (!result) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
563 return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
564 for (i = 0; i < n; i++) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
565 value = func(asdl_seq_GET(seq, i)); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
566 if (!value) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
567 Py_DECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
568 return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
569 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
570 PyList_SET_ITEM(result, i, value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
571 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
572 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
573 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
574 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
575 static PyObject* ast2obj_object(void *o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
576 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
577 if (!o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
578 o = Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
579 Py_INCREF((PyObject*)o); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
580 return (PyObject*)o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
581 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
582 #define ast2obj_identifier ast2obj_object |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
583 #define ast2obj_string ast2obj_object |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
584 |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
585 static PyObject* ast2obj_int(long b) |
| 36669 | 586 { |
|
44099
f324631462a2
Cleanup: Replaced most PyInt_ aliases with PyLong_ and disabled the aliases in intobject.h
Christian Heimes <christian@cheimes.de>
parents:
43755
diff
changeset
|
587 return PyLong_FromLong(b); |
| 36669 | 588 } |
| 589 | |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
590 /* Conversion Python -> AST */ |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
591 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
592 static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
593 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
594 if (obj == Py_None) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
595 obj = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
596 if (obj) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
597 PyArena_AddPyObject(arena, obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
598 Py_XINCREF(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
599 *out = obj; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
600 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
601 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
602 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
603 #define obj2ast_identifier obj2ast_object |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
604 #define obj2ast_string obj2ast_object |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
605 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
606 static int obj2ast_int(PyObject* obj, int* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
607 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
608 int i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
609 if (!PyLong_Check(obj)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
610 PyObject *s = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
611 if (s == NULL) return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
612 PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s", |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
613 PyBytes_AS_STRING(s)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
614 Py_DECREF(s); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
615 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
616 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
617 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
618 i = (int)PyLong_AsLong(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
619 if (i == -1 && PyErr_Occurred()) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
620 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
621 *out = i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
622 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
623 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
624 |
|
49587
f66688e69f66
Merged revisions 66974,66977,66984,66989,66992,66994-66996,66998-67000,67007,67015 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49583
diff
changeset
|
625 static int add_ast_fields(void) |
|
49583
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
626 { |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
627 PyObject *empty_tuple, *d; |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
628 if (PyType_Ready(&AST_type) < 0) |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
629 return -1; |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
630 d = AST_type.tp_dict; |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
631 empty_tuple = PyTuple_New(0); |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
632 if (!empty_tuple || |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
633 PyDict_SetItemString(d, "_fields", empty_tuple) < 0 || |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
634 PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) { |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
635 Py_XDECREF(empty_tuple); |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
636 return -1; |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
637 } |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
638 Py_DECREF(empty_tuple); |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
639 return 0; |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
640 } |
|
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
641 |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
642 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
643 static int init_types(void) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
644 { |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
645 static int initialized; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
646 if (initialized) return 1; |
|
49583
2a38771cecdd
update Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
49139
diff
changeset
|
647 if (add_ast_fields() < 0) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
648 mod_type = make_type("mod", &AST_type, NULL, 0); |
| 36669 | 649 if (!mod_type) return 0; |
| 650 if (!add_attributes(mod_type, NULL, 0)) return 0; | |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
651 Module_type = make_type("Module", mod_type, Module_fields, 1); |
| 36669 | 652 if (!Module_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
653 Interactive_type = make_type("Interactive", mod_type, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
654 Interactive_fields, 1); |
| 36669 | 655 if (!Interactive_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
656 Expression_type = make_type("Expression", mod_type, Expression_fields, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
657 1); |
| 36669 | 658 if (!Expression_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
659 Suite_type = make_type("Suite", mod_type, Suite_fields, 1); |
| 36669 | 660 if (!Suite_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
661 stmt_type = make_type("stmt", &AST_type, NULL, 0); |
| 36669 | 662 if (!stmt_type) return 0; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
663 if (!add_attributes(stmt_type, stmt_attributes, 2)) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
664 FunctionDef_type = make_type("FunctionDef", stmt_type, |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
665 FunctionDef_fields, 5); |
| 36669 | 666 if (!FunctionDef_type) return 0; |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
667 ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 7); |
| 36669 | 668 if (!ClassDef_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
669 Return_type = make_type("Return", stmt_type, Return_fields, 1); |
| 36669 | 670 if (!Return_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
671 Delete_type = make_type("Delete", stmt_type, Delete_fields, 1); |
| 36669 | 672 if (!Delete_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
673 Assign_type = make_type("Assign", stmt_type, Assign_fields, 2); |
| 36669 | 674 if (!Assign_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
675 AugAssign_type = make_type("AugAssign", stmt_type, AugAssign_fields, 3); |
| 36669 | 676 if (!AugAssign_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
677 For_type = make_type("For", stmt_type, For_fields, 4); |
| 36669 | 678 if (!For_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
679 While_type = make_type("While", stmt_type, While_fields, 3); |
| 36669 | 680 if (!While_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
681 If_type = make_type("If", stmt_type, If_fields, 3); |
| 36669 | 682 if (!If_type) return 0; |
|
36695
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
683 With_type = make_type("With", stmt_type, With_fields, 3); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
684 if (!With_type) return 0; |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
685 Raise_type = make_type("Raise", stmt_type, Raise_fields, 2); |
| 36669 | 686 if (!Raise_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
687 TryExcept_type = make_type("TryExcept", stmt_type, TryExcept_fields, 3); |
| 36669 | 688 if (!TryExcept_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
689 TryFinally_type = make_type("TryFinally", stmt_type, TryFinally_fields, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
690 2); |
| 36669 | 691 if (!TryFinally_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
692 Assert_type = make_type("Assert", stmt_type, Assert_fields, 2); |
| 36669 | 693 if (!Assert_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
694 Import_type = make_type("Import", stmt_type, Import_fields, 1); |
| 36669 | 695 if (!Import_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
696 ImportFrom_type = make_type("ImportFrom", stmt_type, ImportFrom_fields, |
|
36712
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
697 3); |
| 36669 | 698 if (!ImportFrom_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
699 Global_type = make_type("Global", stmt_type, Global_fields, 1); |
| 36669 | 700 if (!Global_type) return 0; |
|
40965
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
701 Nonlocal_type = make_type("Nonlocal", stmt_type, Nonlocal_fields, 1); |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
702 if (!Nonlocal_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
703 Expr_type = make_type("Expr", stmt_type, Expr_fields, 1); |
| 36669 | 704 if (!Expr_type) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
705 Pass_type = make_type("Pass", stmt_type, NULL, 0); |
| 36669 | 706 if (!Pass_type) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
707 Break_type = make_type("Break", stmt_type, NULL, 0); |
| 36669 | 708 if (!Break_type) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
709 Continue_type = make_type("Continue", stmt_type, NULL, 0); |
| 36669 | 710 if (!Continue_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
711 expr_type = make_type("expr", &AST_type, NULL, 0); |
| 36669 | 712 if (!expr_type) return 0; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
713 if (!add_attributes(expr_type, expr_attributes, 2)) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
714 BoolOp_type = make_type("BoolOp", expr_type, BoolOp_fields, 2); |
| 36669 | 715 if (!BoolOp_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
716 BinOp_type = make_type("BinOp", expr_type, BinOp_fields, 3); |
| 36669 | 717 if (!BinOp_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
718 UnaryOp_type = make_type("UnaryOp", expr_type, UnaryOp_fields, 2); |
| 36669 | 719 if (!UnaryOp_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
720 Lambda_type = make_type("Lambda", expr_type, Lambda_fields, 2); |
| 36669 | 721 if (!Lambda_type) return 0; |
|
36666
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
722 IfExp_type = make_type("IfExp", expr_type, IfExp_fields, 3); |
| 36669 | 723 if (!IfExp_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
724 Dict_type = make_type("Dict", expr_type, Dict_fields, 2); |
| 36669 | 725 if (!Dict_type) return 0; |
|
39693
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
726 Set_type = make_type("Set", expr_type, Set_fields, 1); |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
727 if (!Set_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
728 ListComp_type = make_type("ListComp", expr_type, ListComp_fields, 2); |
| 36669 | 729 if (!ListComp_type) return 0; |
|
41464
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
730 SetComp_type = make_type("SetComp", expr_type, SetComp_fields, 2); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
731 if (!SetComp_type) return 0; |
|
42193
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
732 DictComp_type = make_type("DictComp", expr_type, DictComp_fields, 3); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
733 if (!DictComp_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
734 GeneratorExp_type = make_type("GeneratorExp", expr_type, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
735 GeneratorExp_fields, 2); |
| 36669 | 736 if (!GeneratorExp_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
737 Yield_type = make_type("Yield", expr_type, Yield_fields, 1); |
| 36669 | 738 if (!Yield_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
739 Compare_type = make_type("Compare", expr_type, Compare_fields, 3); |
| 36669 | 740 if (!Compare_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
741 Call_type = make_type("Call", expr_type, Call_fields, 5); |
| 36669 | 742 if (!Call_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
743 Num_type = make_type("Num", expr_type, Num_fields, 1); |
| 36669 | 744 if (!Num_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
745 Str_type = make_type("Str", expr_type, Str_fields, 1); |
| 36669 | 746 if (!Str_type) return 0; |
| 40894 | 747 Bytes_type = make_type("Bytes", expr_type, Bytes_fields, 1); |
| 748 if (!Bytes_type) return 0; | |
|
39783
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
749 Ellipsis_type = make_type("Ellipsis", expr_type, NULL, 0); |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
750 if (!Ellipsis_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
751 Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3); |
| 36669 | 752 if (!Attribute_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
753 Subscript_type = make_type("Subscript", expr_type, Subscript_fields, 3); |
| 36669 | 754 if (!Subscript_type) return 0; |
|
41699
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
755 Starred_type = make_type("Starred", expr_type, Starred_fields, 2); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
756 if (!Starred_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
757 Name_type = make_type("Name", expr_type, Name_fields, 2); |
| 36669 | 758 if (!Name_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
759 List_type = make_type("List", expr_type, List_fields, 2); |
| 36669 | 760 if (!List_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
761 Tuple_type = make_type("Tuple", expr_type, Tuple_fields, 2); |
| 36669 | 762 if (!Tuple_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
763 expr_context_type = make_type("expr_context", &AST_type, NULL, 0); |
| 36669 | 764 if (!expr_context_type) return 0; |
| 765 if (!add_attributes(expr_context_type, NULL, 0)) return 0; | |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
766 Load_type = make_type("Load", expr_context_type, NULL, 0); |
| 36669 | 767 if (!Load_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
768 Load_singleton = PyType_GenericNew(Load_type, NULL, NULL); |
| 36669 | 769 if (!Load_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
770 Store_type = make_type("Store", expr_context_type, NULL, 0); |
| 36669 | 771 if (!Store_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
772 Store_singleton = PyType_GenericNew(Store_type, NULL, NULL); |
| 36669 | 773 if (!Store_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
774 Del_type = make_type("Del", expr_context_type, NULL, 0); |
| 36669 | 775 if (!Del_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
776 Del_singleton = PyType_GenericNew(Del_type, NULL, NULL); |
| 36669 | 777 if (!Del_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
778 AugLoad_type = make_type("AugLoad", expr_context_type, NULL, 0); |
| 36669 | 779 if (!AugLoad_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
780 AugLoad_singleton = PyType_GenericNew(AugLoad_type, NULL, NULL); |
| 36669 | 781 if (!AugLoad_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
782 AugStore_type = make_type("AugStore", expr_context_type, NULL, 0); |
| 36669 | 783 if (!AugStore_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
784 AugStore_singleton = PyType_GenericNew(AugStore_type, NULL, NULL); |
| 36669 | 785 if (!AugStore_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
786 Param_type = make_type("Param", expr_context_type, NULL, 0); |
| 36669 | 787 if (!Param_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
788 Param_singleton = PyType_GenericNew(Param_type, NULL, NULL); |
| 36669 | 789 if (!Param_singleton) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
790 slice_type = make_type("slice", &AST_type, NULL, 0); |
| 36669 | 791 if (!slice_type) return 0; |
| 792 if (!add_attributes(slice_type, NULL, 0)) return 0; | |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
793 Slice_type = make_type("Slice", slice_type, Slice_fields, 3); |
| 36669 | 794 if (!Slice_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
795 ExtSlice_type = make_type("ExtSlice", slice_type, ExtSlice_fields, 1); |
| 36669 | 796 if (!ExtSlice_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
797 Index_type = make_type("Index", slice_type, Index_fields, 1); |
| 36669 | 798 if (!Index_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
799 boolop_type = make_type("boolop", &AST_type, NULL, 0); |
| 36669 | 800 if (!boolop_type) return 0; |
| 801 if (!add_attributes(boolop_type, NULL, 0)) return 0; | |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
802 And_type = make_type("And", boolop_type, NULL, 0); |
| 36669 | 803 if (!And_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
804 And_singleton = PyType_GenericNew(And_type, NULL, NULL); |
| 36669 | 805 if (!And_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
806 Or_type = make_type("Or", boolop_type, NULL, 0); |
| 36669 | 807 if (!Or_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
808 Or_singleton = PyType_GenericNew(Or_type, NULL, NULL); |
| 36669 | 809 if (!Or_singleton) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
810 operator_type = make_type("operator", &AST_type, NULL, 0); |
| 36669 | 811 if (!operator_type) return 0; |
| 812 if (!add_attributes(operator_type, NULL, 0)) return 0; | |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
813 Add_type = make_type("Add", operator_type, NULL, 0); |
| 36669 | 814 if (!Add_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
815 Add_singleton = PyType_GenericNew(Add_type, NULL, NULL); |
| 36669 | 816 if (!Add_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
817 Sub_type = make_type("Sub", operator_type, NULL, 0); |
| 36669 | 818 if (!Sub_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
819 Sub_singleton = PyType_GenericNew(Sub_type, NULL, NULL); |
| 36669 | 820 if (!Sub_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
821 Mult_type = make_type("Mult", operator_type, NULL, 0); |
| 36669 | 822 if (!Mult_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
823 Mult_singleton = PyType_GenericNew(Mult_type, NULL, NULL); |
| 36669 | 824 if (!Mult_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
825 Div_type = make_type("Div", operator_type, NULL, 0); |
| 36669 | 826 if (!Div_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
827 Div_singleton = PyType_GenericNew(Div_type, NULL, NULL); |
| 36669 | 828 if (!Div_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
829 Mod_type = make_type("Mod", operator_type, NULL, 0); |
| 36669 | 830 if (!Mod_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
831 Mod_singleton = PyType_GenericNew(Mod_type, NULL, NULL); |
| 36669 | 832 if (!Mod_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
833 Pow_type = make_type("Pow", operator_type, NULL, 0); |
| 36669 | 834 if (!Pow_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
835 Pow_singleton = PyType_GenericNew(Pow_type, NULL, NULL); |
| 36669 | 836 if (!Pow_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
837 LShift_type = make_type("LShift", operator_type, NULL, 0); |
| 36669 | 838 if (!LShift_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
839 LShift_singleton = PyType_GenericNew(LShift_type, NULL, NULL); |
| 36669 | 840 if (!LShift_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
841 RShift_type = make_type("RShift", operator_type, NULL, 0); |
| 36669 | 842 if (!RShift_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
843 RShift_singleton = PyType_GenericNew(RShift_type, NULL, NULL); |
| 36669 | 844 if (!RShift_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
845 BitOr_type = make_type("BitOr", operator_type, NULL, 0); |
| 36669 | 846 if (!BitOr_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
847 BitOr_singleton = PyType_GenericNew(BitOr_type, NULL, NULL); |
| 36669 | 848 if (!BitOr_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
849 BitXor_type = make_type("BitXor", operator_type, NULL, 0); |
| 36669 | 850 if (!BitXor_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
851 BitXor_singleton = PyType_GenericNew(BitXor_type, NULL, NULL); |
| 36669 | 852 if (!BitXor_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
853 BitAnd_type = make_type("BitAnd", operator_type, NULL, 0); |
| 36669 | 854 if (!BitAnd_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
855 BitAnd_singleton = PyType_GenericNew(BitAnd_type, NULL, NULL); |
| 36669 | 856 if (!BitAnd_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
857 FloorDiv_type = make_type("FloorDiv", operator_type, NULL, 0); |
| 36669 | 858 if (!FloorDiv_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
859 FloorDiv_singleton = PyType_GenericNew(FloorDiv_type, NULL, NULL); |
| 36669 | 860 if (!FloorDiv_singleton) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
861 unaryop_type = make_type("unaryop", &AST_type, NULL, 0); |
| 36669 | 862 if (!unaryop_type) return 0; |
| 863 if (!add_attributes(unaryop_type, NULL, 0)) return 0; | |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
864 Invert_type = make_type("Invert", unaryop_type, NULL, 0); |
| 36669 | 865 if (!Invert_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
866 Invert_singleton = PyType_GenericNew(Invert_type, NULL, NULL); |
| 36669 | 867 if (!Invert_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
868 Not_type = make_type("Not", unaryop_type, NULL, 0); |
| 36669 | 869 if (!Not_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
870 Not_singleton = PyType_GenericNew(Not_type, NULL, NULL); |
| 36669 | 871 if (!Not_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
872 UAdd_type = make_type("UAdd", unaryop_type, NULL, 0); |
| 36669 | 873 if (!UAdd_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
874 UAdd_singleton = PyType_GenericNew(UAdd_type, NULL, NULL); |
| 36669 | 875 if (!UAdd_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
876 USub_type = make_type("USub", unaryop_type, NULL, 0); |
| 36669 | 877 if (!USub_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
878 USub_singleton = PyType_GenericNew(USub_type, NULL, NULL); |
| 36669 | 879 if (!USub_singleton) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
880 cmpop_type = make_type("cmpop", &AST_type, NULL, 0); |
| 36669 | 881 if (!cmpop_type) return 0; |
| 882 if (!add_attributes(cmpop_type, NULL, 0)) return 0; | |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
883 Eq_type = make_type("Eq", cmpop_type, NULL, 0); |
| 36669 | 884 if (!Eq_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
885 Eq_singleton = PyType_GenericNew(Eq_type, NULL, NULL); |
| 36669 | 886 if (!Eq_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
887 NotEq_type = make_type("NotEq", cmpop_type, NULL, 0); |
| 36669 | 888 if (!NotEq_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
889 NotEq_singleton = PyType_GenericNew(NotEq_type, NULL, NULL); |
| 36669 | 890 if (!NotEq_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
891 Lt_type = make_type("Lt", cmpop_type, NULL, 0); |
| 36669 | 892 if (!Lt_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
893 Lt_singleton = PyType_GenericNew(Lt_type, NULL, NULL); |
| 36669 | 894 if (!Lt_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
895 LtE_type = make_type("LtE", cmpop_type, NULL, 0); |
| 36669 | 896 if (!LtE_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
897 LtE_singleton = PyType_GenericNew(LtE_type, NULL, NULL); |
| 36669 | 898 if (!LtE_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
899 Gt_type = make_type("Gt", cmpop_type, NULL, 0); |
| 36669 | 900 if (!Gt_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
901 Gt_singleton = PyType_GenericNew(Gt_type, NULL, NULL); |
| 36669 | 902 if (!Gt_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
903 GtE_type = make_type("GtE", cmpop_type, NULL, 0); |
| 36669 | 904 if (!GtE_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
905 GtE_singleton = PyType_GenericNew(GtE_type, NULL, NULL); |
| 36669 | 906 if (!GtE_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
907 Is_type = make_type("Is", cmpop_type, NULL, 0); |
| 36669 | 908 if (!Is_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
909 Is_singleton = PyType_GenericNew(Is_type, NULL, NULL); |
| 36669 | 910 if (!Is_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
911 IsNot_type = make_type("IsNot", cmpop_type, NULL, 0); |
| 36669 | 912 if (!IsNot_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
913 IsNot_singleton = PyType_GenericNew(IsNot_type, NULL, NULL); |
| 36669 | 914 if (!IsNot_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
915 In_type = make_type("In", cmpop_type, NULL, 0); |
| 36669 | 916 if (!In_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
917 In_singleton = PyType_GenericNew(In_type, NULL, NULL); |
| 36669 | 918 if (!In_singleton) return 0; |
|
36664
7bfbfb2ef4e2
Stop generating empty arrays.
Martin v. Löwis <martin@v.loewis.de>
parents:
36661
diff
changeset
|
919 NotIn_type = make_type("NotIn", cmpop_type, NULL, 0); |
| 36669 | 920 if (!NotIn_type) return 0; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
921 NotIn_singleton = PyType_GenericNew(NotIn_type, NULL, NULL); |
| 36669 | 922 if (!NotIn_singleton) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
923 comprehension_type = make_type("comprehension", &AST_type, |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
924 comprehension_fields, 3); |
| 36669 | 925 if (!comprehension_type) return 0; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
926 excepthandler_type = make_type("excepthandler", &AST_type, NULL, 0); |
| 36669 | 927 if (!excepthandler_type) return 0; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
928 if (!add_attributes(excepthandler_type, excepthandler_attributes, 2)) |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
929 return 0; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
930 ExceptHandler_type = make_type("ExceptHandler", excepthandler_type, |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
931 ExceptHandler_fields, 3); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
932 if (!ExceptHandler_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
933 arguments_type = make_type("arguments", &AST_type, arguments_fields, 8); |
| 36669 | 934 if (!arguments_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
935 arg_type = make_type("arg", &AST_type, arg_fields, 2); |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
936 if (!arg_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
937 keyword_type = make_type("keyword", &AST_type, keyword_fields, 2); |
| 36669 | 938 if (!keyword_type) return 0; |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
939 alias_type = make_type("alias", &AST_type, alias_fields, 2); |
| 36669 | 940 if (!alias_type) return 0; |
| 941 initialized = 1; | |
| 942 return 1; | |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
943 } |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
944 |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
945 static int obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
946 static int obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
947 static int obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
948 static int obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
949 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
950 static int obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
951 static int obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
952 static int obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
953 static int obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
954 static int obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
955 static int obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
956 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
957 static int obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
958 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
959 static int obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
960 static int obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
961 static int obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
962 static int obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
963 |
| 35742 | 964 mod_ty |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
965 Module(asdl_seq * body, PyArena *arena) |
| 35742 | 966 { |
| 967 mod_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
968 p = (mod_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
969 if (!p) |
| 35742 | 970 return NULL; |
| 971 p->kind = Module_kind; | |
| 972 p->v.Module.body = body; | |
| 973 return p; | |
| 974 } | |
| 975 | |
| 976 mod_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
977 Interactive(asdl_seq * body, PyArena *arena) |
| 35742 | 978 { |
| 979 mod_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
980 p = (mod_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
981 if (!p) |
| 35742 | 982 return NULL; |
| 983 p->kind = Interactive_kind; | |
| 984 p->v.Interactive.body = body; | |
| 985 return p; | |
| 986 } | |
| 987 | |
| 988 mod_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
989 Expression(expr_ty body, PyArena *arena) |
| 35742 | 990 { |
| 991 mod_ty p; | |
| 992 if (!body) { | |
| 993 PyErr_SetString(PyExc_ValueError, | |
| 994 "field body is required for Expression"); | |
| 995 return NULL; | |
| 996 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
997 p = (mod_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
998 if (!p) |
| 35742 | 999 return NULL; |
| 1000 p->kind = Expression_kind; | |
| 1001 p->v.Expression.body = body; | |
| 1002 return p; | |
| 1003 } | |
| 1004 | |
| 1005 mod_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1006 Suite(asdl_seq * body, PyArena *arena) |
| 35742 | 1007 { |
| 1008 mod_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1009 p = (mod_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1010 if (!p) |
| 35742 | 1011 return NULL; |
| 1012 p->kind = Suite_kind; | |
| 1013 p->v.Suite.body = body; | |
| 1014 return p; | |
| 1015 } | |
| 1016 | |
| 1017 stmt_ty | |
| 1018 FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * | |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
1019 decorator_list, expr_ty returns, int lineno, int col_offset, |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
1020 PyArena *arena) |
| 35742 | 1021 { |
| 1022 stmt_ty p; | |
| 1023 if (!name) { | |
| 1024 PyErr_SetString(PyExc_ValueError, | |
| 1025 "field name is required for FunctionDef"); | |
| 1026 return NULL; | |
| 1027 } | |
| 1028 if (!args) { | |
| 1029 PyErr_SetString(PyExc_ValueError, | |
| 1030 "field args is required for FunctionDef"); | |
| 1031 return NULL; | |
| 1032 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1033 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1034 if (!p) |
| 35742 | 1035 return NULL; |
| 1036 p->kind = FunctionDef_kind; | |
| 1037 p->v.FunctionDef.name = name; | |
| 1038 p->v.FunctionDef.args = args; | |
| 1039 p->v.FunctionDef.body = body; | |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
1040 p->v.FunctionDef.decorator_list = decorator_list; |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
1041 p->v.FunctionDef.returns = returns; |
| 35742 | 1042 p->lineno = lineno; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1043 p->col_offset = col_offset; |
| 35742 | 1044 return p; |
| 1045 } | |
| 1046 | |
| 1047 stmt_ty | |
|
41226
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
1048 ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, expr_ty |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
1049 starargs, expr_ty kwargs, asdl_seq * body, asdl_seq * decorator_list, |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
1050 int lineno, int col_offset, PyArena *arena) |
| 35742 | 1051 { |
| 1052 stmt_ty p; | |
| 1053 if (!name) { | |
| 1054 PyErr_SetString(PyExc_ValueError, | |
| 1055 "field name is required for ClassDef"); | |
| 1056 return NULL; | |
| 1057 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1058 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1059 if (!p) |
| 35742 | 1060 return NULL; |
| 1061 p->kind = ClassDef_kind; | |
| 1062 p->v.ClassDef.name = name; | |
| 1063 p->v.ClassDef.bases = bases; | |
|
41226
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
1064 p->v.ClassDef.keywords = keywords; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
1065 p->v.ClassDef.starargs = starargs; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
1066 p->v.ClassDef.kwargs = kwargs; |
| 35742 | 1067 p->v.ClassDef.body = body; |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
1068 p->v.ClassDef.decorator_list = decorator_list; |
| 35742 | 1069 p->lineno = lineno; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1070 p->col_offset = col_offset; |
| 35742 | 1071 return p; |
| 1072 } | |
| 1073 | |
| 1074 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1075 Return(expr_ty value, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1076 { |
| 1077 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1078 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1079 if (!p) |
| 35742 | 1080 return NULL; |
| 1081 p->kind = Return_kind; | |
| 1082 p->v.Return.value = value; | |
| 1083 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1084 p->col_offset = col_offset; |
| 35742 | 1085 return p; |
| 1086 } | |
| 1087 | |
| 1088 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1089 Delete(asdl_seq * targets, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1090 { |
| 1091 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1092 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1093 if (!p) |
| 35742 | 1094 return NULL; |
| 1095 p->kind = Delete_kind; | |
| 1096 p->v.Delete.targets = targets; | |
| 1097 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1098 p->col_offset = col_offset; |
| 35742 | 1099 return p; |
| 1100 } | |
| 1101 | |
| 1102 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1103 Assign(asdl_seq * targets, expr_ty value, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1104 *arena) |
| 35742 | 1105 { |
| 1106 stmt_ty p; | |
| 1107 if (!value) { | |
| 1108 PyErr_SetString(PyExc_ValueError, | |
| 1109 "field value is required for Assign"); | |
| 1110 return NULL; | |
| 1111 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1112 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1113 if (!p) |
| 35742 | 1114 return NULL; |
| 1115 p->kind = Assign_kind; | |
| 1116 p->v.Assign.targets = targets; | |
| 1117 p->v.Assign.value = value; | |
| 1118 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1119 p->col_offset = col_offset; |
| 35742 | 1120 return p; |
| 1121 } | |
| 1122 | |
| 1123 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1124 AugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno, int |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1125 col_offset, PyArena *arena) |
| 35742 | 1126 { |
| 1127 stmt_ty p; | |
| 1128 if (!target) { | |
| 1129 PyErr_SetString(PyExc_ValueError, | |
| 1130 "field target is required for AugAssign"); | |
| 1131 return NULL; | |
| 1132 } | |
| 1133 if (!op) { | |
| 1134 PyErr_SetString(PyExc_ValueError, | |
| 1135 "field op is required for AugAssign"); | |
| 1136 return NULL; | |
| 1137 } | |
| 1138 if (!value) { | |
| 1139 PyErr_SetString(PyExc_ValueError, | |
| 1140 "field value is required for AugAssign"); | |
| 1141 return NULL; | |
| 1142 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1143 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1144 if (!p) |
| 35742 | 1145 return NULL; |
| 1146 p->kind = AugAssign_kind; | |
| 1147 p->v.AugAssign.target = target; | |
| 1148 p->v.AugAssign.op = op; | |
| 1149 p->v.AugAssign.value = value; | |
| 1150 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1151 p->col_offset = col_offset; |
| 35742 | 1152 return p; |
| 1153 } | |
| 1154 | |
| 1155 stmt_ty | |
| 1156 For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1157 lineno, int col_offset, PyArena *arena) |
| 35742 | 1158 { |
| 1159 stmt_ty p; | |
| 1160 if (!target) { | |
| 1161 PyErr_SetString(PyExc_ValueError, | |
| 1162 "field target is required for For"); | |
| 1163 return NULL; | |
| 1164 } | |
| 1165 if (!iter) { | |
| 1166 PyErr_SetString(PyExc_ValueError, | |
| 1167 "field iter is required for For"); | |
| 1168 return NULL; | |
| 1169 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1170 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1171 if (!p) |
| 35742 | 1172 return NULL; |
| 1173 p->kind = For_kind; | |
| 1174 p->v.For.target = target; | |
| 1175 p->v.For.iter = iter; | |
| 1176 p->v.For.body = body; | |
| 1177 p->v.For.orelse = orelse; | |
| 1178 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1179 p->col_offset = col_offset; |
| 35742 | 1180 return p; |
| 1181 } | |
| 1182 | |
| 1183 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1184 While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1185 col_offset, PyArena *arena) |
| 35742 | 1186 { |
| 1187 stmt_ty p; | |
| 1188 if (!test) { | |
| 1189 PyErr_SetString(PyExc_ValueError, | |
| 1190 "field test is required for While"); | |
| 1191 return NULL; | |
| 1192 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1193 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1194 if (!p) |
| 35742 | 1195 return NULL; |
| 1196 p->kind = While_kind; | |
| 1197 p->v.While.test = test; | |
| 1198 p->v.While.body = body; | |
| 1199 p->v.While.orelse = orelse; | |
| 1200 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1201 p->col_offset = col_offset; |
| 35742 | 1202 return p; |
| 1203 } | |
| 1204 | |
| 1205 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1206 If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1207 col_offset, PyArena *arena) |
| 35742 | 1208 { |
| 1209 stmt_ty p; | |
| 1210 if (!test) { | |
| 1211 PyErr_SetString(PyExc_ValueError, | |
| 1212 "field test is required for If"); | |
| 1213 return NULL; | |
| 1214 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1215 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1216 if (!p) |
| 35742 | 1217 return NULL; |
| 1218 p->kind = If_kind; | |
| 1219 p->v.If.test = test; | |
| 1220 p->v.If.body = body; | |
| 1221 p->v.If.orelse = orelse; | |
| 1222 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1223 p->col_offset = col_offset; |
| 35742 | 1224 return p; |
| 1225 } | |
| 1226 | |
| 1227 stmt_ty | |
|
36695
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1228 With(expr_ty context_expr, expr_ty optional_vars, asdl_seq * body, int lineno, |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1229 int col_offset, PyArena *arena) |
|
36695
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1230 { |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1231 stmt_ty p; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1232 if (!context_expr) { |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1233 PyErr_SetString(PyExc_ValueError, |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1234 "field context_expr is required for With"); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1235 return NULL; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1236 } |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1237 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1238 if (!p) |
|
36695
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1239 return NULL; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1240 p->kind = With_kind; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1241 p->v.With.context_expr = context_expr; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1242 p->v.With.optional_vars = optional_vars; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1243 p->v.With.body = body; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1244 p->lineno = lineno; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1245 p->col_offset = col_offset; |
|
36695
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1246 return p; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1247 } |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1248 |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
1249 stmt_ty |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
1250 Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1251 { |
| 1252 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1253 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1254 if (!p) |
| 35742 | 1255 return NULL; |
| 1256 p->kind = Raise_kind; | |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
1257 p->v.Raise.exc = exc; |
|
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
1258 p->v.Raise.cause = cause; |
| 35742 | 1259 p->lineno = lineno; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1260 p->col_offset = col_offset; |
| 35742 | 1261 return p; |
| 1262 } | |
| 1263 | |
| 1264 stmt_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1265 TryExcept(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse, int lineno, |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1266 int col_offset, PyArena *arena) |
| 35742 | 1267 { |
| 1268 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1269 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1270 if (!p) |
| 35742 | 1271 return NULL; |
| 1272 p->kind = TryExcept_kind; | |
| 1273 p->v.TryExcept.body = body; | |
| 1274 p->v.TryExcept.handlers = handlers; | |
| 1275 p->v.TryExcept.orelse = orelse; | |
| 1276 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1277 p->col_offset = col_offset; |
| 35742 | 1278 return p; |
| 1279 } | |
| 1280 | |
| 1281 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1282 TryFinally(asdl_seq * body, asdl_seq * finalbody, int lineno, int col_offset, |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1283 PyArena *arena) |
| 35742 | 1284 { |
| 1285 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1286 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1287 if (!p) |
| 35742 | 1288 return NULL; |
| 1289 p->kind = TryFinally_kind; | |
| 1290 p->v.TryFinally.body = body; | |
| 1291 p->v.TryFinally.finalbody = finalbody; | |
| 1292 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1293 p->col_offset = col_offset; |
| 35742 | 1294 return p; |
| 1295 } | |
| 1296 | |
| 1297 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1298 Assert(expr_ty test, expr_ty msg, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1299 { |
| 1300 stmt_ty p; | |
| 1301 if (!test) { | |
| 1302 PyErr_SetString(PyExc_ValueError, | |
| 1303 "field test is required for Assert"); | |
| 1304 return NULL; | |
| 1305 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1306 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1307 if (!p) |
| 35742 | 1308 return NULL; |
| 1309 p->kind = Assert_kind; | |
| 1310 p->v.Assert.test = test; | |
| 1311 p->v.Assert.msg = msg; | |
| 1312 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1313 p->col_offset = col_offset; |
| 35742 | 1314 return p; |
| 1315 } | |
| 1316 | |
| 1317 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1318 Import(asdl_seq * names, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1319 { |
| 1320 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1321 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1322 if (!p) |
| 35742 | 1323 return NULL; |
| 1324 p->kind = Import_kind; | |
| 1325 p->v.Import.names = names; | |
| 1326 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1327 p->col_offset = col_offset; |
| 35742 | 1328 return p; |
| 1329 } | |
| 1330 | |
| 1331 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1332 ImportFrom(identifier module, asdl_seq * names, int level, int lineno, int |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1333 col_offset, PyArena *arena) |
| 35742 | 1334 { |
| 1335 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1336 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1337 if (!p) |
| 35742 | 1338 return NULL; |
| 1339 p->kind = ImportFrom_kind; | |
| 1340 p->v.ImportFrom.module = module; | |
| 1341 p->v.ImportFrom.names = names; | |
|
36712
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
1342 p->v.ImportFrom.level = level; |
| 35742 | 1343 p->lineno = lineno; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1344 p->col_offset = col_offset; |
| 35742 | 1345 return p; |
| 1346 } | |
| 1347 | |
| 1348 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1349 Global(asdl_seq * names, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1350 { |
| 1351 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1352 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1353 if (!p) |
| 35742 | 1354 return NULL; |
| 1355 p->kind = Global_kind; | |
| 1356 p->v.Global.names = names; | |
| 1357 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1358 p->col_offset = col_offset; |
| 35742 | 1359 return p; |
| 1360 } | |
| 1361 | |
| 1362 stmt_ty | |
|
40965
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1363 Nonlocal(asdl_seq * names, int lineno, int col_offset, PyArena *arena) |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1364 { |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1365 stmt_ty p; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1366 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1367 if (!p) |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1368 return NULL; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1369 p->kind = Nonlocal_kind; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1370 p->v.Nonlocal.names = names; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1371 p->lineno = lineno; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1372 p->col_offset = col_offset; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1373 return p; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1374 } |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1375 |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
1376 stmt_ty |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1377 Expr(expr_ty value, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1378 { |
| 1379 stmt_ty p; | |
| 1380 if (!value) { | |
| 1381 PyErr_SetString(PyExc_ValueError, | |
| 1382 "field value is required for Expr"); | |
| 1383 return NULL; | |
| 1384 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1385 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1386 if (!p) |
| 35742 | 1387 return NULL; |
| 1388 p->kind = Expr_kind; | |
| 1389 p->v.Expr.value = value; | |
| 1390 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1391 p->col_offset = col_offset; |
| 35742 | 1392 return p; |
| 1393 } | |
| 1394 | |
| 1395 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1396 Pass(int lineno, int col_offset, PyArena *arena) |
| 35742 | 1397 { |
| 1398 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1399 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1400 if (!p) |
| 35742 | 1401 return NULL; |
| 1402 p->kind = Pass_kind; | |
| 1403 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1404 p->col_offset = col_offset; |
| 35742 | 1405 return p; |
| 1406 } | |
| 1407 | |
| 1408 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1409 Break(int lineno, int col_offset, PyArena *arena) |
| 35742 | 1410 { |
| 1411 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1412 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1413 if (!p) |
| 35742 | 1414 return NULL; |
| 1415 p->kind = Break_kind; | |
| 1416 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1417 p->col_offset = col_offset; |
| 35742 | 1418 return p; |
| 1419 } | |
| 1420 | |
| 1421 stmt_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1422 Continue(int lineno, int col_offset, PyArena *arena) |
| 35742 | 1423 { |
| 1424 stmt_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1425 p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1426 if (!p) |
| 35742 | 1427 return NULL; |
| 1428 p->kind = Continue_kind; | |
| 1429 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1430 p->col_offset = col_offset; |
| 35742 | 1431 return p; |
| 1432 } | |
| 1433 | |
| 1434 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1435 BoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1436 *arena) |
| 35742 | 1437 { |
| 1438 expr_ty p; | |
| 1439 if (!op) { | |
| 1440 PyErr_SetString(PyExc_ValueError, | |
| 1441 "field op is required for BoolOp"); | |
| 1442 return NULL; | |
| 1443 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1444 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1445 if (!p) |
| 35742 | 1446 return NULL; |
| 1447 p->kind = BoolOp_kind; | |
| 1448 p->v.BoolOp.op = op; | |
| 1449 p->v.BoolOp.values = values; | |
| 1450 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1451 p->col_offset = col_offset; |
| 35742 | 1452 return p; |
| 1453 } | |
| 1454 | |
| 1455 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1456 BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int col_offset, |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1457 PyArena *arena) |
| 35742 | 1458 { |
| 1459 expr_ty p; | |
| 1460 if (!left) { | |
| 1461 PyErr_SetString(PyExc_ValueError, | |
| 1462 "field left is required for BinOp"); | |
| 1463 return NULL; | |
| 1464 } | |
| 1465 if (!op) { | |
| 1466 PyErr_SetString(PyExc_ValueError, | |
| 1467 "field op is required for BinOp"); | |
| 1468 return NULL; | |
| 1469 } | |
| 1470 if (!right) { | |
| 1471 PyErr_SetString(PyExc_ValueError, | |
| 1472 "field right is required for BinOp"); | |
| 1473 return NULL; | |
| 1474 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1475 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1476 if (!p) |
| 35742 | 1477 return NULL; |
| 1478 p->kind = BinOp_kind; | |
| 1479 p->v.BinOp.left = left; | |
| 1480 p->v.BinOp.op = op; | |
| 1481 p->v.BinOp.right = right; | |
| 1482 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1483 p->col_offset = col_offset; |
| 35742 | 1484 return p; |
| 1485 } | |
| 1486 | |
| 1487 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1488 UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1489 *arena) |
| 35742 | 1490 { |
| 1491 expr_ty p; | |
| 1492 if (!op) { | |
| 1493 PyErr_SetString(PyExc_ValueError, | |
| 1494 "field op is required for UnaryOp"); | |
| 1495 return NULL; | |
| 1496 } | |
| 1497 if (!operand) { | |
| 1498 PyErr_SetString(PyExc_ValueError, | |
| 1499 "field operand is required for UnaryOp"); | |
| 1500 return NULL; | |
| 1501 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1502 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1503 if (!p) |
| 35742 | 1504 return NULL; |
| 1505 p->kind = UnaryOp_kind; | |
| 1506 p->v.UnaryOp.op = op; | |
| 1507 p->v.UnaryOp.operand = operand; | |
| 1508 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1509 p->col_offset = col_offset; |
| 35742 | 1510 return p; |
| 1511 } | |
| 1512 | |
| 1513 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1514 Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1515 *arena) |
| 35742 | 1516 { |
| 1517 expr_ty p; | |
| 1518 if (!args) { | |
| 1519 PyErr_SetString(PyExc_ValueError, | |
| 1520 "field args is required for Lambda"); | |
| 1521 return NULL; | |
| 1522 } | |
| 1523 if (!body) { | |
| 1524 PyErr_SetString(PyExc_ValueError, | |
| 1525 "field body is required for Lambda"); | |
| 1526 return NULL; | |
| 1527 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1528 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1529 if (!p) |
| 35742 | 1530 return NULL; |
| 1531 p->kind = Lambda_kind; | |
| 1532 p->v.Lambda.args = args; | |
| 1533 p->v.Lambda.body = body; | |
| 1534 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1535 p->col_offset = col_offset; |
| 35742 | 1536 return p; |
| 1537 } | |
| 1538 | |
| 1539 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1540 IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int col_offset, |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1541 PyArena *arena) |
|
36666
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1542 { |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1543 expr_ty p; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1544 if (!test) { |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1545 PyErr_SetString(PyExc_ValueError, |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1546 "field test is required for IfExp"); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1547 return NULL; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1548 } |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1549 if (!body) { |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1550 PyErr_SetString(PyExc_ValueError, |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1551 "field body is required for IfExp"); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1552 return NULL; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1553 } |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1554 if (!orelse) { |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1555 PyErr_SetString(PyExc_ValueError, |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1556 "field orelse is required for IfExp"); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1557 return NULL; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1558 } |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1559 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1560 if (!p) |
|
36666
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1561 return NULL; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1562 p->kind = IfExp_kind; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1563 p->v.IfExp.test = test; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1564 p->v.IfExp.body = body; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1565 p->v.IfExp.orelse = orelse; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1566 p->lineno = lineno; |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1567 p->col_offset = col_offset; |
|
36666
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1568 return p; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1569 } |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1570 |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
1571 expr_ty |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1572 Dict(asdl_seq * keys, asdl_seq * values, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1573 *arena) |
| 35742 | 1574 { |
| 1575 expr_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1576 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1577 if (!p) |
| 35742 | 1578 return NULL; |
| 1579 p->kind = Dict_kind; | |
| 1580 p->v.Dict.keys = keys; | |
| 1581 p->v.Dict.values = values; | |
| 1582 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1583 p->col_offset = col_offset; |
| 35742 | 1584 return p; |
| 1585 } | |
| 1586 | |
| 1587 expr_ty | |
|
39693
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1588 Set(asdl_seq * elts, int lineno, int col_offset, PyArena *arena) |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1589 { |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1590 expr_ty p; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1591 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1592 if (!p) |
|
39693
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1593 return NULL; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1594 p->kind = Set_kind; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1595 p->v.Set.elts = elts; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1596 p->lineno = lineno; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1597 p->col_offset = col_offset; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1598 return p; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1599 } |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1600 |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
1601 expr_ty |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1602 ListComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1603 PyArena *arena) |
| 35742 | 1604 { |
| 1605 expr_ty p; | |
| 1606 if (!elt) { | |
| 1607 PyErr_SetString(PyExc_ValueError, | |
| 1608 "field elt is required for ListComp"); | |
| 1609 return NULL; | |
| 1610 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1611 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1612 if (!p) |
| 35742 | 1613 return NULL; |
| 1614 p->kind = ListComp_kind; | |
| 1615 p->v.ListComp.elt = elt; | |
| 1616 p->v.ListComp.generators = generators; | |
| 1617 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1618 p->col_offset = col_offset; |
| 35742 | 1619 return p; |
| 1620 } | |
| 1621 | |
| 1622 expr_ty | |
|
41464
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1623 SetComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1624 *arena) |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1625 { |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1626 expr_ty p; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1627 if (!elt) { |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1628 PyErr_SetString(PyExc_ValueError, |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1629 "field elt is required for SetComp"); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1630 return NULL; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1631 } |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1632 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1633 if (!p) |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1634 return NULL; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1635 p->kind = SetComp_kind; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1636 p->v.SetComp.elt = elt; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1637 p->v.SetComp.generators = generators; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1638 p->lineno = lineno; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1639 p->col_offset = col_offset; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1640 return p; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1641 } |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1642 |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
1643 expr_ty |
|
42193
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1644 DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int lineno, int |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1645 col_offset, PyArena *arena) |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1646 { |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1647 expr_ty p; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1648 if (!key) { |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1649 PyErr_SetString(PyExc_ValueError, |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1650 "field key is required for DictComp"); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1651 return NULL; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1652 } |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1653 if (!value) { |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1654 PyErr_SetString(PyExc_ValueError, |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1655 "field value is required for DictComp"); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1656 return NULL; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1657 } |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1658 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1659 if (!p) |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1660 return NULL; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1661 p->kind = DictComp_kind; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1662 p->v.DictComp.key = key; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1663 p->v.DictComp.value = value; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1664 p->v.DictComp.generators = generators; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1665 p->lineno = lineno; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1666 p->col_offset = col_offset; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1667 return p; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1668 } |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1669 |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
1670 expr_ty |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1671 GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1672 PyArena *arena) |
| 35742 | 1673 { |
| 1674 expr_ty p; | |
| 1675 if (!elt) { | |
| 1676 PyErr_SetString(PyExc_ValueError, | |
| 1677 "field elt is required for GeneratorExp"); | |
| 1678 return NULL; | |
| 1679 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1680 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1681 if (!p) |
| 35742 | 1682 return NULL; |
| 1683 p->kind = GeneratorExp_kind; | |
| 1684 p->v.GeneratorExp.elt = elt; | |
| 1685 p->v.GeneratorExp.generators = generators; | |
| 1686 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1687 p->col_offset = col_offset; |
| 35742 | 1688 return p; |
| 1689 } | |
| 1690 | |
| 1691 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1692 Yield(expr_ty value, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1693 { |
| 1694 expr_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1695 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1696 if (!p) |
| 35742 | 1697 return NULL; |
| 1698 p->kind = Yield_kind; | |
| 1699 p->v.Yield.value = value; | |
| 1700 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1701 p->col_offset = col_offset; |
| 35742 | 1702 return p; |
| 1703 } | |
| 1704 | |
| 1705 expr_ty | |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
1706 Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators, int lineno, |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
1707 int col_offset, PyArena *arena) |
| 35742 | 1708 { |
| 1709 expr_ty p; | |
| 1710 if (!left) { | |
| 1711 PyErr_SetString(PyExc_ValueError, | |
| 1712 "field left is required for Compare"); | |
| 1713 return NULL; | |
| 1714 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1715 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1716 if (!p) |
| 35742 | 1717 return NULL; |
| 1718 p->kind = Compare_kind; | |
| 1719 p->v.Compare.left = left; | |
| 1720 p->v.Compare.ops = ops; | |
| 1721 p->v.Compare.comparators = comparators; | |
| 1722 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1723 p->col_offset = col_offset; |
| 35742 | 1724 return p; |
| 1725 } | |
| 1726 | |
| 1727 expr_ty | |
| 1728 Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs, | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1729 expr_ty kwargs, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1730 { |
| 1731 expr_ty p; | |
| 1732 if (!func) { | |
| 1733 PyErr_SetString(PyExc_ValueError, | |
| 1734 "field func is required for Call"); | |
| 1735 return NULL; | |
| 1736 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1737 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1738 if (!p) |
| 35742 | 1739 return NULL; |
| 1740 p->kind = Call_kind; | |
| 1741 p->v.Call.func = func; | |
| 1742 p->v.Call.args = args; | |
| 1743 p->v.Call.keywords = keywords; | |
| 1744 p->v.Call.starargs = starargs; | |
| 1745 p->v.Call.kwargs = kwargs; | |
| 1746 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1747 p->col_offset = col_offset; |
| 35742 | 1748 return p; |
| 1749 } | |
| 1750 | |
| 1751 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1752 Num(object n, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1753 { |
| 1754 expr_ty p; | |
| 1755 if (!n) { | |
| 1756 PyErr_SetString(PyExc_ValueError, | |
| 1757 "field n is required for Num"); | |
| 1758 return NULL; | |
| 1759 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1760 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1761 if (!p) |
| 35742 | 1762 return NULL; |
| 1763 p->kind = Num_kind; | |
| 1764 p->v.Num.n = n; | |
| 1765 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1766 p->col_offset = col_offset; |
| 35742 | 1767 return p; |
| 1768 } | |
| 1769 | |
| 1770 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1771 Str(string s, int lineno, int col_offset, PyArena *arena) |
| 35742 | 1772 { |
| 1773 expr_ty p; | |
| 1774 if (!s) { | |
| 1775 PyErr_SetString(PyExc_ValueError, | |
| 1776 "field s is required for Str"); | |
| 1777 return NULL; | |
| 1778 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1779 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1780 if (!p) |
| 35742 | 1781 return NULL; |
| 1782 p->kind = Str_kind; | |
| 1783 p->v.Str.s = s; | |
| 1784 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1785 p->col_offset = col_offset; |
| 35742 | 1786 return p; |
| 1787 } | |
| 1788 | |
| 1789 expr_ty | |
| 40894 | 1790 Bytes(string s, int lineno, int col_offset, PyArena *arena) |
| 1791 { | |
| 1792 expr_ty p; | |
| 1793 if (!s) { | |
| 1794 PyErr_SetString(PyExc_ValueError, | |
| 1795 "field s is required for Bytes"); | |
| 1796 return NULL; | |
| 1797 } | |
| 1798 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); | |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1799 if (!p) |
| 40894 | 1800 return NULL; |
| 1801 p->kind = Bytes_kind; | |
| 1802 p->v.Bytes.s = s; | |
| 1803 p->lineno = lineno; | |
| 1804 p->col_offset = col_offset; | |
| 1805 return p; | |
| 1806 } | |
| 1807 | |
| 1808 expr_ty | |
|
39783
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1809 Ellipsis(int lineno, int col_offset, PyArena *arena) |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1810 { |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1811 expr_ty p; |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1812 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1813 if (!p) |
|
39783
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1814 return NULL; |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1815 p->kind = Ellipsis_kind; |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1816 p->lineno = lineno; |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1817 p->col_offset = col_offset; |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1818 return p; |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1819 } |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1820 |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
1821 expr_ty |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1822 Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno, int |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1823 col_offset, PyArena *arena) |
| 35742 | 1824 { |
| 1825 expr_ty p; | |
| 1826 if (!value) { | |
| 1827 PyErr_SetString(PyExc_ValueError, | |
| 1828 "field value is required for Attribute"); | |
| 1829 return NULL; | |
| 1830 } | |
| 1831 if (!attr) { | |
| 1832 PyErr_SetString(PyExc_ValueError, | |
| 1833 "field attr is required for Attribute"); | |
| 1834 return NULL; | |
| 1835 } | |
| 1836 if (!ctx) { | |
| 1837 PyErr_SetString(PyExc_ValueError, | |
| 1838 "field ctx is required for Attribute"); | |
| 1839 return NULL; | |
| 1840 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1841 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1842 if (!p) |
| 35742 | 1843 return NULL; |
| 1844 p->kind = Attribute_kind; | |
| 1845 p->v.Attribute.value = value; | |
| 1846 p->v.Attribute.attr = attr; | |
| 1847 p->v.Attribute.ctx = ctx; | |
| 1848 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1849 p->col_offset = col_offset; |
| 35742 | 1850 return p; |
| 1851 } | |
| 1852 | |
| 1853 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1854 Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int lineno, int |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1855 col_offset, PyArena *arena) |
| 35742 | 1856 { |
| 1857 expr_ty p; | |
| 1858 if (!value) { | |
| 1859 PyErr_SetString(PyExc_ValueError, | |
| 1860 "field value is required for Subscript"); | |
| 1861 return NULL; | |
| 1862 } | |
| 1863 if (!slice) { | |
| 1864 PyErr_SetString(PyExc_ValueError, | |
| 1865 "field slice is required for Subscript"); | |
| 1866 return NULL; | |
| 1867 } | |
| 1868 if (!ctx) { | |
| 1869 PyErr_SetString(PyExc_ValueError, | |
| 1870 "field ctx is required for Subscript"); | |
| 1871 return NULL; | |
| 1872 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1873 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1874 if (!p) |
| 35742 | 1875 return NULL; |
| 1876 p->kind = Subscript_kind; | |
| 1877 p->v.Subscript.value = value; | |
| 1878 p->v.Subscript.slice = slice; | |
| 1879 p->v.Subscript.ctx = ctx; | |
| 1880 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1881 p->col_offset = col_offset; |
| 35742 | 1882 return p; |
| 1883 } | |
| 1884 | |
| 1885 expr_ty | |
|
41699
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1886 Starred(expr_ty value, expr_context_ty ctx, int lineno, int col_offset, PyArena |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1887 *arena) |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1888 { |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1889 expr_ty p; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1890 if (!value) { |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1891 PyErr_SetString(PyExc_ValueError, |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1892 "field value is required for Starred"); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1893 return NULL; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1894 } |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1895 if (!ctx) { |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1896 PyErr_SetString(PyExc_ValueError, |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1897 "field ctx is required for Starred"); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1898 return NULL; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1899 } |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1900 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1901 if (!p) |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1902 return NULL; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1903 p->kind = Starred_kind; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1904 p->v.Starred.value = value; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1905 p->v.Starred.ctx = ctx; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1906 p->lineno = lineno; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1907 p->col_offset = col_offset; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1908 return p; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1909 } |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1910 |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
1911 expr_ty |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1912 Name(identifier id, expr_context_ty ctx, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1913 *arena) |
| 35742 | 1914 { |
| 1915 expr_ty p; | |
| 1916 if (!id) { | |
| 1917 PyErr_SetString(PyExc_ValueError, | |
| 1918 "field id is required for Name"); | |
| 1919 return NULL; | |
| 1920 } | |
| 1921 if (!ctx) { | |
| 1922 PyErr_SetString(PyExc_ValueError, | |
| 1923 "field ctx is required for Name"); | |
| 1924 return NULL; | |
| 1925 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1926 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1927 if (!p) |
| 35742 | 1928 return NULL; |
| 1929 p->kind = Name_kind; | |
| 1930 p->v.Name.id = id; | |
| 1931 p->v.Name.ctx = ctx; | |
| 1932 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1933 p->col_offset = col_offset; |
| 35742 | 1934 return p; |
| 1935 } | |
| 1936 | |
| 1937 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1938 List(asdl_seq * elts, expr_context_ty ctx, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1939 *arena) |
| 35742 | 1940 { |
| 1941 expr_ty p; | |
| 1942 if (!ctx) { | |
| 1943 PyErr_SetString(PyExc_ValueError, | |
| 1944 "field ctx is required for List"); | |
| 1945 return NULL; | |
| 1946 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1947 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1948 if (!p) |
| 35742 | 1949 return NULL; |
| 1950 p->kind = List_kind; | |
| 1951 p->v.List.elts = elts; | |
| 1952 p->v.List.ctx = ctx; | |
| 1953 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1954 p->col_offset = col_offset; |
| 35742 | 1955 return p; |
| 1956 } | |
| 1957 | |
| 1958 expr_ty | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1959 Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int col_offset, PyArena |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1960 *arena) |
| 35742 | 1961 { |
| 1962 expr_ty p; | |
| 1963 if (!ctx) { | |
| 1964 PyErr_SetString(PyExc_ValueError, | |
| 1965 "field ctx is required for Tuple"); | |
| 1966 return NULL; | |
| 1967 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1968 p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1969 if (!p) |
| 35742 | 1970 return NULL; |
| 1971 p->kind = Tuple_kind; | |
| 1972 p->v.Tuple.elts = elts; | |
| 1973 p->v.Tuple.ctx = ctx; | |
| 1974 p->lineno = lineno; | |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
1975 p->col_offset = col_offset; |
| 35742 | 1976 return p; |
| 1977 } | |
| 1978 | |
| 1979 slice_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1980 Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena) |
| 35742 | 1981 { |
| 1982 slice_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1983 p = (slice_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1984 if (!p) |
| 35742 | 1985 return NULL; |
| 1986 p->kind = Slice_kind; | |
| 1987 p->v.Slice.lower = lower; | |
| 1988 p->v.Slice.upper = upper; | |
| 1989 p->v.Slice.step = step; | |
| 1990 return p; | |
| 1991 } | |
| 1992 | |
| 1993 slice_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1994 ExtSlice(asdl_seq * dims, PyArena *arena) |
| 35742 | 1995 { |
| 1996 slice_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
1997 p = (slice_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
1998 if (!p) |
| 35742 | 1999 return NULL; |
| 2000 p->kind = ExtSlice_kind; | |
| 2001 p->v.ExtSlice.dims = dims; | |
| 2002 return p; | |
| 2003 } | |
| 2004 | |
| 2005 slice_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2006 Index(expr_ty value, PyArena *arena) |
| 35742 | 2007 { |
| 2008 slice_ty p; | |
| 2009 if (!value) { | |
| 2010 PyErr_SetString(PyExc_ValueError, | |
| 2011 "field value is required for Index"); | |
| 2012 return NULL; | |
| 2013 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2014 p = (slice_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
2015 if (!p) |
| 35742 | 2016 return NULL; |
| 2017 p->kind = Index_kind; | |
| 2018 p->v.Index.value = value; | |
| 2019 return p; | |
| 2020 } | |
| 2021 | |
| 2022 comprehension_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2023 comprehension(expr_ty target, expr_ty iter, asdl_seq * ifs, PyArena *arena) |
| 35742 | 2024 { |
| 2025 comprehension_ty p; | |
| 2026 if (!target) { | |
| 2027 PyErr_SetString(PyExc_ValueError, | |
| 2028 "field target is required for comprehension"); | |
| 2029 return NULL; | |
| 2030 } | |
| 2031 if (!iter) { | |
| 2032 PyErr_SetString(PyExc_ValueError, | |
| 2033 "field iter is required for comprehension"); | |
| 2034 return NULL; | |
| 2035 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2036 p = (comprehension_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
2037 if (!p) |
| 35742 | 2038 return NULL; |
| 2039 p->target = target; | |
| 2040 p->iter = iter; | |
| 2041 p->ifs = ifs; | |
| 2042 return p; | |
| 2043 } | |
| 2044 | |
| 2045 excepthandler_ty | |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
2046 ExceptHandler(expr_ty type, identifier name, asdl_seq * body, int lineno, int |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
2047 col_offset, PyArena *arena) |
| 35742 | 2048 { |
| 2049 excepthandler_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2050 p = (excepthandler_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
2051 if (!p) |
| 35742 | 2052 return NULL; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
2053 p->kind = ExceptHandler_kind; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
2054 p->v.ExceptHandler.type = type; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
2055 p->v.ExceptHandler.name = name; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
2056 p->v.ExceptHandler.body = body; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
2057 p->lineno = lineno; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
2058 p->col_offset = col_offset; |
| 35742 | 2059 return p; |
| 2060 } | |
| 2061 | |
| 2062 arguments_ty | |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2063 arguments(asdl_seq * args, identifier vararg, expr_ty varargannotation, |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2064 asdl_seq * kwonlyargs, identifier kwarg, expr_ty kwargannotation, |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2065 asdl_seq * defaults, asdl_seq * kw_defaults, PyArena *arena) |
| 35742 | 2066 { |
| 2067 arguments_ty p; | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2068 p = (arguments_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
2069 if (!p) |
| 35742 | 2070 return NULL; |
| 2071 p->args = args; | |
| 2072 p->vararg = vararg; | |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2073 p->varargannotation = varargannotation; |
|
40215
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
2074 p->kwonlyargs = kwonlyargs; |
| 35742 | 2075 p->kwarg = kwarg; |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2076 p->kwargannotation = kwargannotation; |
| 35742 | 2077 p->defaults = defaults; |
|
40215
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
2078 p->kw_defaults = kw_defaults; |
| 35742 | 2079 return p; |
| 2080 } | |
| 2081 | |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2082 arg_ty |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
2083 arg(identifier arg, expr_ty annotation, PyArena *arena) |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2084 { |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2085 arg_ty p; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2086 if (!arg) { |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2087 PyErr_SetString(PyExc_ValueError, |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
2088 "field arg is required for arg"); |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2089 return NULL; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2090 } |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2091 p = (arg_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
2092 if (!p) |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2093 return NULL; |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
2094 p->arg = arg; |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
2095 p->annotation = annotation; |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2096 return p; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2097 } |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2098 |
| 35742 | 2099 keyword_ty |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2100 keyword(identifier arg, expr_ty value, PyArena *arena) |
| 35742 | 2101 { |
| 2102 keyword_ty p; | |
| 2103 if (!arg) { | |
| 2104 PyErr_SetString(PyExc_ValueError, | |
| 2105 "field arg is required for keyword"); | |
| 2106 return NULL; | |
| 2107 } | |
| 2108 if (!value) { | |
| 2109 PyErr_SetString(PyExc_ValueError, | |
| 2110 "field value is required for keyword"); | |
| 2111 return NULL; | |
| 2112 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2113 p = (keyword_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
2114 if (!p) |
| 35742 | 2115 return NULL; |
| 2116 p->arg = arg; | |
| 2117 p->value = value; | |
| 2118 return p; | |
| 2119 } | |
| 2120 | |
| 2121 alias_ty | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2122 alias(identifier name, identifier asname, PyArena *arena) |
| 35742 | 2123 { |
| 2124 alias_ty p; | |
| 2125 if (!name) { | |
| 2126 PyErr_SetString(PyExc_ValueError, | |
| 2127 "field name is required for alias"); | |
| 2128 return NULL; | |
| 2129 } | |
|
36065
ea083efdc96c
Merge from ast-arena. This reduces the code in Python/ast.c by ~300 lines,
Neal Norwitz <nnorwitz@gmail.com>
parents:
36003
diff
changeset
|
2130 p = (alias_ty)PyArena_Malloc(arena, sizeof(*p)); |
|
40937
6aa1be5dd009
Merged revisions 53912-53951 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40896
diff
changeset
|
2131 if (!p) |
| 35742 | 2132 return NULL; |
| 2133 p->name = name; | |
| 2134 p->asname = asname; | |
| 2135 return p; | |
| 2136 } | |
| 2137 | |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2138 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2139 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2140 ast2obj_mod(void* _o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2141 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2142 mod_ty o = (mod_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2143 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2144 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2145 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2146 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2147 } |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2148 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2149 switch (o->kind) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2150 case Module_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2151 result = PyType_GenericNew(Module_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2152 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2153 value = ast2obj_list(o->v.Module.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2154 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2155 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2156 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2157 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2158 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2159 case Interactive_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2160 result = PyType_GenericNew(Interactive_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2161 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2162 value = ast2obj_list(o->v.Interactive.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2163 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2164 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2165 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2166 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2167 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2168 case Expression_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2169 result = PyType_GenericNew(Expression_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2170 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2171 value = ast2obj_expr(o->v.Expression.body); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2172 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2173 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2174 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2175 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2176 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2177 case Suite_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2178 result = PyType_GenericNew(Suite_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2179 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2180 value = ast2obj_list(o->v.Suite.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2181 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2182 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2183 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2184 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2185 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2186 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2187 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2188 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2189 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2190 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2191 return NULL; |
| 36174 | 2192 } |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2193 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2194 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2195 ast2obj_stmt(void* _o) |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2196 { |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2197 stmt_ty o = (stmt_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2198 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2199 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2200 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2201 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2202 } |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2203 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2204 switch (o->kind) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2205 case FunctionDef_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2206 result = PyType_GenericNew(FunctionDef_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2207 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2208 value = ast2obj_identifier(o->v.FunctionDef.name); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2209 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2210 if (PyObject_SetAttrString(result, "name", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2211 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2212 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2213 value = ast2obj_arguments(o->v.FunctionDef.args); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2214 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2215 if (PyObject_SetAttrString(result, "args", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2216 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2217 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2218 value = ast2obj_list(o->v.FunctionDef.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2219 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2220 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2221 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2222 Py_DECREF(value); |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2223 value = ast2obj_list(o->v.FunctionDef.decorator_list, |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2224 ast2obj_expr); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2225 if (!value) goto failed; |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2226 if (PyObject_SetAttrString(result, "decorator_list", value) == |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2227 -1) |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2228 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2229 Py_DECREF(value); |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2230 value = ast2obj_expr(o->v.FunctionDef.returns); |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2231 if (!value) goto failed; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2232 if (PyObject_SetAttrString(result, "returns", value) == -1) |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2233 goto failed; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
2234 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2235 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2236 case ClassDef_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2237 result = PyType_GenericNew(ClassDef_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2238 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2239 value = ast2obj_identifier(o->v.ClassDef.name); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2240 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2241 if (PyObject_SetAttrString(result, "name", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2242 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2243 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2244 value = ast2obj_list(o->v.ClassDef.bases, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2245 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2246 if (PyObject_SetAttrString(result, "bases", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2247 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2248 Py_DECREF(value); |
|
41226
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2249 value = ast2obj_list(o->v.ClassDef.keywords, ast2obj_keyword); |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2250 if (!value) goto failed; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2251 if (PyObject_SetAttrString(result, "keywords", value) == -1) |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2252 goto failed; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2253 Py_DECREF(value); |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2254 value = ast2obj_expr(o->v.ClassDef.starargs); |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2255 if (!value) goto failed; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2256 if (PyObject_SetAttrString(result, "starargs", value) == -1) |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2257 goto failed; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2258 Py_DECREF(value); |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2259 value = ast2obj_expr(o->v.ClassDef.kwargs); |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2260 if (!value) goto failed; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2261 if (PyObject_SetAttrString(result, "kwargs", value) == -1) |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2262 goto failed; |
|
19f7ff443718
Implement PEP 3115 -- new metaclass syntax and semantics.
Guido van Rossum <guido@python.org>
parents:
40980
diff
changeset
|
2263 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2264 value = ast2obj_list(o->v.ClassDef.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2265 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2266 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2267 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2268 Py_DECREF(value); |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2269 value = ast2obj_list(o->v.ClassDef.decorator_list, |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2270 ast2obj_expr); |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2271 if (!value) goto failed; |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2272 if (PyObject_SetAttrString(result, "decorator_list", value) == |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2273 -1) |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2274 goto failed; |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41722
diff
changeset
|
2275 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2276 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2277 case Return_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2278 result = PyType_GenericNew(Return_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2279 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2280 value = ast2obj_expr(o->v.Return.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2281 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2282 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2283 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2284 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2285 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2286 case Delete_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2287 result = PyType_GenericNew(Delete_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2288 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2289 value = ast2obj_list(o->v.Delete.targets, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2290 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2291 if (PyObject_SetAttrString(result, "targets", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2292 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2293 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2294 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2295 case Assign_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2296 result = PyType_GenericNew(Assign_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2297 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2298 value = ast2obj_list(o->v.Assign.targets, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2299 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2300 if (PyObject_SetAttrString(result, "targets", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2301 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2302 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2303 value = ast2obj_expr(o->v.Assign.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2304 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2305 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2306 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2307 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2308 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2309 case AugAssign_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2310 result = PyType_GenericNew(AugAssign_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2311 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2312 value = ast2obj_expr(o->v.AugAssign.target); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2313 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2314 if (PyObject_SetAttrString(result, "target", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2315 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2316 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2317 value = ast2obj_operator(o->v.AugAssign.op); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2318 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2319 if (PyObject_SetAttrString(result, "op", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2320 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2321 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2322 value = ast2obj_expr(o->v.AugAssign.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2323 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2324 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2325 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2326 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2327 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2328 case For_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2329 result = PyType_GenericNew(For_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2330 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2331 value = ast2obj_expr(o->v.For.target); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2332 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2333 if (PyObject_SetAttrString(result, "target", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2334 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2335 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2336 value = ast2obj_expr(o->v.For.iter); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2337 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2338 if (PyObject_SetAttrString(result, "iter", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2339 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2340 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2341 value = ast2obj_list(o->v.For.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2342 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2343 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2344 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2345 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2346 value = ast2obj_list(o->v.For.orelse, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2347 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2348 if (PyObject_SetAttrString(result, "orelse", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2349 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2350 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2351 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2352 case While_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2353 result = PyType_GenericNew(While_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2354 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2355 value = ast2obj_expr(o->v.While.test); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2356 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2357 if (PyObject_SetAttrString(result, "test", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2358 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2359 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2360 value = ast2obj_list(o->v.While.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2361 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2362 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2363 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2364 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2365 value = ast2obj_list(o->v.While.orelse, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2366 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2367 if (PyObject_SetAttrString(result, "orelse", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2368 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2369 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2370 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2371 case If_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2372 result = PyType_GenericNew(If_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2373 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2374 value = ast2obj_expr(o->v.If.test); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2375 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2376 if (PyObject_SetAttrString(result, "test", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2377 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2378 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2379 value = ast2obj_list(o->v.If.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2380 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2381 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2382 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2383 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2384 value = ast2obj_list(o->v.If.orelse, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2385 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2386 if (PyObject_SetAttrString(result, "orelse", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2387 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2388 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2389 break; |
|
36695
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2390 case With_kind: |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2391 result = PyType_GenericNew(With_type, NULL, NULL); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2392 if (!result) goto failed; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2393 value = ast2obj_expr(o->v.With.context_expr); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2394 if (!value) goto failed; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2395 if (PyObject_SetAttrString(result, "context_expr", value) == -1) |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2396 goto failed; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2397 Py_DECREF(value); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2398 value = ast2obj_expr(o->v.With.optional_vars); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2399 if (!value) goto failed; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2400 if (PyObject_SetAttrString(result, "optional_vars", value) == |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2401 -1) |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2402 goto failed; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2403 Py_DECREF(value); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2404 value = ast2obj_list(o->v.With.body, ast2obj_stmt); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2405 if (!value) goto failed; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2406 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2407 goto failed; |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2408 Py_DECREF(value); |
|
b6d2f6fd3e11
PEP 343 -- the with-statement.
Guido van Rossum <guido@python.org>
parents:
36669
diff
changeset
|
2409 break; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2410 case Raise_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2411 result = PyType_GenericNew(Raise_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2412 if (!result) goto failed; |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
2413 value = ast2obj_expr(o->v.Raise.exc); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2414 if (!value) goto failed; |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
2415 if (PyObject_SetAttrString(result, "exc", value) == -1) |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2416 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2417 Py_DECREF(value); |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
2418 value = ast2obj_expr(o->v.Raise.cause); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2419 if (!value) goto failed; |
|
43102
981ecc526703
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Collin Winter <collinw@gmail.com>
parents:
42844
diff
changeset
|
2420 if (PyObject_SetAttrString(result, "cause", value) == -1) |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2421 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2422 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2423 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2424 case TryExcept_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2425 result = PyType_GenericNew(TryExcept_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2426 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2427 value = ast2obj_list(o->v.TryExcept.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2428 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2429 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2430 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2431 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2432 value = ast2obj_list(o->v.TryExcept.handlers, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2433 ast2obj_excepthandler); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2434 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2435 if (PyObject_SetAttrString(result, "handlers", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2436 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2437 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2438 value = ast2obj_list(o->v.TryExcept.orelse, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2439 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2440 if (PyObject_SetAttrString(result, "orelse", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2441 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2442 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2443 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2444 case TryFinally_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2445 result = PyType_GenericNew(TryFinally_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2446 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2447 value = ast2obj_list(o->v.TryFinally.body, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2448 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2449 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2450 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2451 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2452 value = ast2obj_list(o->v.TryFinally.finalbody, ast2obj_stmt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2453 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2454 if (PyObject_SetAttrString(result, "finalbody", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2455 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2456 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2457 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2458 case Assert_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2459 result = PyType_GenericNew(Assert_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2460 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2461 value = ast2obj_expr(o->v.Assert.test); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2462 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2463 if (PyObject_SetAttrString(result, "test", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2464 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2465 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2466 value = ast2obj_expr(o->v.Assert.msg); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2467 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2468 if (PyObject_SetAttrString(result, "msg", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2469 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2470 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2471 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2472 case Import_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2473 result = PyType_GenericNew(Import_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2474 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2475 value = ast2obj_list(o->v.Import.names, ast2obj_alias); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2476 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2477 if (PyObject_SetAttrString(result, "names", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2478 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2479 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2480 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2481 case ImportFrom_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2482 result = PyType_GenericNew(ImportFrom_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2483 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2484 value = ast2obj_identifier(o->v.ImportFrom.module); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2485 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2486 if (PyObject_SetAttrString(result, "module", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2487 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2488 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2489 value = ast2obj_list(o->v.ImportFrom.names, ast2obj_alias); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2490 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2491 if (PyObject_SetAttrString(result, "names", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2492 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2493 Py_DECREF(value); |
|
36712
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
2494 value = ast2obj_int(o->v.ImportFrom.level); |
|
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
2495 if (!value) goto failed; |
|
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
2496 if (PyObject_SetAttrString(result, "level", value) == -1) |
|
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
2497 goto failed; |
|
5c36c222e7ca
SF patch #1438387, PEP 328: relative and absolute imports.
Thomas Wouters <thomas@python.org>
parents:
36707
diff
changeset
|
2498 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2499 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2500 case Global_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2501 result = PyType_GenericNew(Global_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2502 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2503 value = ast2obj_list(o->v.Global.names, ast2obj_identifier); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2504 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2505 if (PyObject_SetAttrString(result, "names", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2506 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2507 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2508 break; |
|
40965
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2509 case Nonlocal_kind: |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2510 result = PyType_GenericNew(Nonlocal_type, NULL, NULL); |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2511 if (!result) goto failed; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2512 value = ast2obj_list(o->v.Nonlocal.names, ast2obj_identifier); |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2513 if (!value) goto failed; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2514 if (PyObject_SetAttrString(result, "names", value) == -1) |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2515 goto failed; |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2516 Py_DECREF(value); |
|
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
2517 break; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2518 case Expr_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2519 result = PyType_GenericNew(Expr_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2520 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2521 value = ast2obj_expr(o->v.Expr.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2522 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2523 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2524 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2525 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2526 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2527 case Pass_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2528 result = PyType_GenericNew(Pass_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2529 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2530 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2531 case Break_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2532 result = PyType_GenericNew(Break_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2533 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2534 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2535 case Continue_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2536 result = PyType_GenericNew(Continue_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2537 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2538 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2539 } |
| 36669 | 2540 value = ast2obj_int(o->lineno); |
| 2541 if (!value) goto failed; | |
|
36794
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2542 if (PyObject_SetAttrString(result, "lineno", value) < 0) |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2543 goto failed; |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2544 Py_DECREF(value); |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
2545 value = ast2obj_int(o->col_offset); |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
2546 if (!value) goto failed; |
|
36794
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2547 if (PyObject_SetAttrString(result, "col_offset", value) < 0) |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2548 goto failed; |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2549 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2550 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2551 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2552 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2553 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2554 return NULL; |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2555 } |
|
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2556 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2557 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2558 ast2obj_expr(void* _o) |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2559 { |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2560 expr_ty o = (expr_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2561 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2562 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2563 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2564 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2565 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2566 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2567 switch (o->kind) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2568 case BoolOp_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2569 result = PyType_GenericNew(BoolOp_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2570 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2571 value = ast2obj_boolop(o->v.BoolOp.op); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2572 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2573 if (PyObject_SetAttrString(result, "op", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2574 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2575 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2576 value = ast2obj_list(o->v.BoolOp.values, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2577 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2578 if (PyObject_SetAttrString(result, "values", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2579 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2580 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2581 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2582 case BinOp_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2583 result = PyType_GenericNew(BinOp_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2584 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2585 value = ast2obj_expr(o->v.BinOp.left); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2586 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2587 if (PyObject_SetAttrString(result, "left", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2588 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2589 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2590 value = ast2obj_operator(o->v.BinOp.op); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2591 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2592 if (PyObject_SetAttrString(result, "op", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2593 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2594 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2595 value = ast2obj_expr(o->v.BinOp.right); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2596 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2597 if (PyObject_SetAttrString(result, "right", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2598 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2599 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2600 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2601 case UnaryOp_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2602 result = PyType_GenericNew(UnaryOp_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2603 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2604 value = ast2obj_unaryop(o->v.UnaryOp.op); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2605 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2606 if (PyObject_SetAttrString(result, "op", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2607 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2608 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2609 value = ast2obj_expr(o->v.UnaryOp.operand); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2610 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2611 if (PyObject_SetAttrString(result, "operand", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2612 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2613 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2614 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2615 case Lambda_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2616 result = PyType_GenericNew(Lambda_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2617 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2618 value = ast2obj_arguments(o->v.Lambda.args); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2619 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2620 if (PyObject_SetAttrString(result, "args", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2621 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2622 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2623 value = ast2obj_expr(o->v.Lambda.body); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2624 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2625 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2626 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2627 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2628 break; |
|
36666
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2629 case IfExp_kind: |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2630 result = PyType_GenericNew(IfExp_type, NULL, NULL); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2631 if (!result) goto failed; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2632 value = ast2obj_expr(o->v.IfExp.test); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2633 if (!value) goto failed; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2634 if (PyObject_SetAttrString(result, "test", value) == -1) |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2635 goto failed; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2636 Py_DECREF(value); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2637 value = ast2obj_expr(o->v.IfExp.body); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2638 if (!value) goto failed; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2639 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2640 goto failed; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2641 Py_DECREF(value); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2642 value = ast2obj_expr(o->v.IfExp.orelse); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2643 if (!value) goto failed; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2644 if (PyObject_SetAttrString(result, "orelse", value) == -1) |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2645 goto failed; |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2646 Py_DECREF(value); |
|
6165927431d6
PEP 308 implementation, including minor refdocs and some testcases. It
Thomas Wouters <thomas@python.org>
parents:
36665
diff
changeset
|
2647 break; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2648 case Dict_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2649 result = PyType_GenericNew(Dict_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2650 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2651 value = ast2obj_list(o->v.Dict.keys, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2652 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2653 if (PyObject_SetAttrString(result, "keys", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2654 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2655 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2656 value = ast2obj_list(o->v.Dict.values, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2657 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2658 if (PyObject_SetAttrString(result, "values", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2659 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2660 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2661 break; |
|
39693
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2662 case Set_kind: |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2663 result = PyType_GenericNew(Set_type, NULL, NULL); |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2664 if (!result) goto failed; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2665 value = ast2obj_list(o->v.Set.elts, ast2obj_expr); |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2666 if (!value) goto failed; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2667 if (PyObject_SetAttrString(result, "elts", value) == -1) |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2668 goto failed; |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2669 Py_DECREF(value); |
|
d0b83c4630c0
SF patch 1547796 by Georg Brandl -- set literals.
Guido van Rossum <guido@python.org>
parents:
39691
diff
changeset
|
2670 break; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2671 case ListComp_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2672 result = PyType_GenericNew(ListComp_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2673 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2674 value = ast2obj_expr(o->v.ListComp.elt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2675 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2676 if (PyObject_SetAttrString(result, "elt", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2677 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2678 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2679 value = ast2obj_list(o->v.ListComp.generators, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2680 ast2obj_comprehension); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2681 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2682 if (PyObject_SetAttrString(result, "generators", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2683 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2684 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2685 break; |
|
41464
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2686 case SetComp_kind: |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2687 result = PyType_GenericNew(SetComp_type, NULL, NULL); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2688 if (!result) goto failed; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2689 value = ast2obj_expr(o->v.SetComp.elt); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2690 if (!value) goto failed; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2691 if (PyObject_SetAttrString(result, "elt", value) == -1) |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2692 goto failed; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2693 Py_DECREF(value); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2694 value = ast2obj_list(o->v.SetComp.generators, |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2695 ast2obj_comprehension); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2696 if (!value) goto failed; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2697 if (PyObject_SetAttrString(result, "generators", value) == -1) |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2698 goto failed; |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2699 Py_DECREF(value); |
|
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
2700 break; |
|
42193
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2701 case DictComp_kind: |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2702 result = PyType_GenericNew(DictComp_type, NULL, NULL); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2703 if (!result) goto failed; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2704 value = ast2obj_expr(o->v.DictComp.key); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2705 if (!value) goto failed; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2706 if (PyObject_SetAttrString(result, "key", value) == -1) |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2707 goto failed; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2708 Py_DECREF(value); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2709 value = ast2obj_expr(o->v.DictComp.value); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2710 if (!value) goto failed; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2711 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2712 goto failed; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2713 Py_DECREF(value); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2714 value = ast2obj_list(o->v.DictComp.generators, |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2715 ast2obj_comprehension); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2716 if (!value) goto failed; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2717 if (PyObject_SetAttrString(result, "generators", value) == -1) |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2718 goto failed; |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2719 Py_DECREF(value); |
|
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
2720 break; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2721 case GeneratorExp_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2722 result = PyType_GenericNew(GeneratorExp_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2723 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2724 value = ast2obj_expr(o->v.GeneratorExp.elt); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2725 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2726 if (PyObject_SetAttrString(result, "elt", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2727 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2728 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2729 value = ast2obj_list(o->v.GeneratorExp.generators, |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2730 ast2obj_comprehension); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2731 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2732 if (PyObject_SetAttrString(result, "generators", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2733 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2734 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2735 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2736 case Yield_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2737 result = PyType_GenericNew(Yield_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2738 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2739 value = ast2obj_expr(o->v.Yield.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2740 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2741 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2742 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2743 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2744 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2745 case Compare_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2746 result = PyType_GenericNew(Compare_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2747 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2748 value = ast2obj_expr(o->v.Compare.left); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2749 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2750 if (PyObject_SetAttrString(result, "left", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2751 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2752 Py_DECREF(value); |
|
36661
710cbdd478a8
Fix iterating over cmpop_ty lists.
Martin v. Löwis <martin@v.loewis.de>
parents:
36660
diff
changeset
|
2753 { |
|
710cbdd478a8
Fix iterating over cmpop_ty lists.
Martin v. Löwis <martin@v.loewis.de>
parents:
36660
diff
changeset
|
2754 int i, n = asdl_seq_LEN(o->v.Compare.ops); |
|
710cbdd478a8
Fix iterating over cmpop_ty lists.
Martin v. Löwis <martin@v.loewis.de>
parents:
36660
diff
changeset
|
2755 value = PyList_New(n); |
|
710cbdd478a8
Fix iterating over cmpop_ty lists.
Martin v. Löwis <martin@v.loewis.de>
parents:
36660
diff
changeset
|
2756 if (!value) goto failed; |
|
710cbdd478a8
Fix iterating over cmpop_ty lists.
Martin v. Löwis <martin@v.loewis.de>
parents:
36660
diff
changeset
|
2757 for(i = 0; i < n; i++) |
|
710cbdd478a8
Fix iterating over cmpop_ty lists.
Martin v. Löwis <martin@v.loewis.de>
parents:
36660
diff
changeset
|
2758 PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i))); |
|
710cbdd478a8
Fix iterating over cmpop_ty lists.
Martin v. Löwis <martin@v.loewis.de>
parents:
36660
diff
changeset
|
2759 } |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2760 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2761 if (PyObject_SetAttrString(result, "ops", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2762 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2763 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2764 value = ast2obj_list(o->v.Compare.comparators, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2765 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2766 if (PyObject_SetAttrString(result, "comparators", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2767 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2768 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2769 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2770 case Call_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2771 result = PyType_GenericNew(Call_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2772 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2773 value = ast2obj_expr(o->v.Call.func); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2774 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2775 if (PyObject_SetAttrString(result, "func", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2776 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2777 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2778 value = ast2obj_list(o->v.Call.args, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2779 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2780 if (PyObject_SetAttrString(result, "args", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2781 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2782 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2783 value = ast2obj_list(o->v.Call.keywords, ast2obj_keyword); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2784 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2785 if (PyObject_SetAttrString(result, "keywords", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2786 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2787 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2788 value = ast2obj_expr(o->v.Call.starargs); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2789 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2790 if (PyObject_SetAttrString(result, "starargs", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2791 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2792 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2793 value = ast2obj_expr(o->v.Call.kwargs); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2794 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2795 if (PyObject_SetAttrString(result, "kwargs", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2796 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2797 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2798 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2799 case Num_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2800 result = PyType_GenericNew(Num_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2801 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2802 value = ast2obj_object(o->v.Num.n); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2803 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2804 if (PyObject_SetAttrString(result, "n", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2805 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2806 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2807 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2808 case Str_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2809 result = PyType_GenericNew(Str_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2810 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2811 value = ast2obj_string(o->v.Str.s); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2812 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2813 if (PyObject_SetAttrString(result, "s", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2814 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2815 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2816 break; |
| 40894 | 2817 case Bytes_kind: |
| 2818 result = PyType_GenericNew(Bytes_type, NULL, NULL); | |
| 2819 if (!result) goto failed; | |
| 2820 value = ast2obj_string(o->v.Bytes.s); | |
| 2821 if (!value) goto failed; | |
| 2822 if (PyObject_SetAttrString(result, "s", value) == -1) | |
| 2823 goto failed; | |
| 2824 Py_DECREF(value); | |
| 2825 break; | |
|
39783
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
2826 case Ellipsis_kind: |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
2827 result = PyType_GenericNew(Ellipsis_type, NULL, NULL); |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
2828 if (!result) goto failed; |
|
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
2829 break; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2830 case Attribute_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2831 result = PyType_GenericNew(Attribute_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2832 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2833 value = ast2obj_expr(o->v.Attribute.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2834 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2835 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2836 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2837 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2838 value = ast2obj_identifier(o->v.Attribute.attr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2839 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2840 if (PyObject_SetAttrString(result, "attr", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2841 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2842 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2843 value = ast2obj_expr_context(o->v.Attribute.ctx); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2844 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2845 if (PyObject_SetAttrString(result, "ctx", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2846 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2847 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2848 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2849 case Subscript_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2850 result = PyType_GenericNew(Subscript_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2851 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2852 value = ast2obj_expr(o->v.Subscript.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2853 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2854 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2855 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2856 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2857 value = ast2obj_slice(o->v.Subscript.slice); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2858 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2859 if (PyObject_SetAttrString(result, "slice", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2860 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2861 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2862 value = ast2obj_expr_context(o->v.Subscript.ctx); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2863 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2864 if (PyObject_SetAttrString(result, "ctx", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2865 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2866 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2867 break; |
|
41699
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2868 case Starred_kind: |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2869 result = PyType_GenericNew(Starred_type, NULL, NULL); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2870 if (!result) goto failed; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2871 value = ast2obj_expr(o->v.Starred.value); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2872 if (!value) goto failed; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2873 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2874 goto failed; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2875 Py_DECREF(value); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2876 value = ast2obj_expr_context(o->v.Starred.ctx); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2877 if (!value) goto failed; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2878 if (PyObject_SetAttrString(result, "ctx", value) == -1) |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2879 goto failed; |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2880 Py_DECREF(value); |
|
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
2881 break; |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2882 case Name_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2883 result = PyType_GenericNew(Name_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2884 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2885 value = ast2obj_identifier(o->v.Name.id); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2886 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2887 if (PyObject_SetAttrString(result, "id", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2888 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2889 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2890 value = ast2obj_expr_context(o->v.Name.ctx); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2891 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2892 if (PyObject_SetAttrString(result, "ctx", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2893 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2894 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2895 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2896 case List_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2897 result = PyType_GenericNew(List_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2898 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2899 value = ast2obj_list(o->v.List.elts, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2900 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2901 if (PyObject_SetAttrString(result, "elts", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2902 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2903 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2904 value = ast2obj_expr_context(o->v.List.ctx); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2905 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2906 if (PyObject_SetAttrString(result, "ctx", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2907 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2908 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2909 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2910 case Tuple_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2911 result = PyType_GenericNew(Tuple_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2912 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2913 value = ast2obj_list(o->v.Tuple.elts, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2914 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2915 if (PyObject_SetAttrString(result, "elts", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2916 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2917 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2918 value = ast2obj_expr_context(o->v.Tuple.ctx); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2919 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2920 if (PyObject_SetAttrString(result, "ctx", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2921 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2922 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2923 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2924 } |
| 36669 | 2925 value = ast2obj_int(o->lineno); |
| 2926 if (!value) goto failed; | |
|
36794
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2927 if (PyObject_SetAttrString(result, "lineno", value) < 0) |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2928 goto failed; |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2929 Py_DECREF(value); |
|
36786
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
2930 value = ast2obj_int(o->col_offset); |
|
57322cb2ca11
Patch #1440601: Add col_offset attribute to AST nodes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36743
diff
changeset
|
2931 if (!value) goto failed; |
|
36794
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2932 if (PyObject_SetAttrString(result, "col_offset", value) < 0) |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2933 goto failed; |
|
df843b07f5fe
Fix memory leak on attributes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36786
diff
changeset
|
2934 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2935 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2936 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2937 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2938 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2939 return NULL; |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2940 } |
|
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2941 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2942 PyObject* ast2obj_expr_context(expr_context_ty o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2943 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2944 switch(o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2945 case Load: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2946 Py_INCREF(Load_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2947 return Load_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2948 case Store: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2949 Py_INCREF(Store_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2950 return Store_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2951 case Del: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2952 Py_INCREF(Del_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2953 return Del_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2954 case AugLoad: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2955 Py_INCREF(AugLoad_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2956 return AugLoad_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2957 case AugStore: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2958 Py_INCREF(AugStore_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2959 return AugStore_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2960 case Param: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2961 Py_INCREF(Param_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2962 return Param_singleton; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
2963 default: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
2964 /* should never happen, but just in case ... */ |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
2965 PyErr_Format(PyExc_SystemError, "unknown expr_context found"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
2966 return NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
2967 } |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2968 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2969 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2970 ast2obj_slice(void* _o) |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
2971 { |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2972 slice_ty o = (slice_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2973 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2974 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2975 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2976 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2977 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2978 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2979 switch (o->kind) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2980 case Slice_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2981 result = PyType_GenericNew(Slice_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2982 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2983 value = ast2obj_expr(o->v.Slice.lower); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2984 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2985 if (PyObject_SetAttrString(result, "lower", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2986 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2987 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2988 value = ast2obj_expr(o->v.Slice.upper); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2989 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2990 if (PyObject_SetAttrString(result, "upper", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2991 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2992 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2993 value = ast2obj_expr(o->v.Slice.step); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2994 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2995 if (PyObject_SetAttrString(result, "step", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2996 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2997 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2998 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
2999 case ExtSlice_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3000 result = PyType_GenericNew(ExtSlice_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3001 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3002 value = ast2obj_list(o->v.ExtSlice.dims, ast2obj_slice); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3003 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3004 if (PyObject_SetAttrString(result, "dims", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3005 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3006 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3007 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3008 case Index_kind: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3009 result = PyType_GenericNew(Index_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3010 if (!result) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3011 value = ast2obj_expr(o->v.Index.value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3012 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3013 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3014 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3015 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3016 break; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3017 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3018 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3019 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3020 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3021 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3022 return NULL; |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3023 } |
|
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3024 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3025 PyObject* ast2obj_boolop(boolop_ty o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3026 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3027 switch(o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3028 case And: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3029 Py_INCREF(And_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3030 return And_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3031 case Or: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3032 Py_INCREF(Or_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3033 return Or_singleton; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3034 default: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3035 /* should never happen, but just in case ... */ |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3036 PyErr_Format(PyExc_SystemError, "unknown boolop found"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3037 return NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3038 } |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3039 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3040 PyObject* ast2obj_operator(operator_ty o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3041 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3042 switch(o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3043 case Add: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3044 Py_INCREF(Add_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3045 return Add_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3046 case Sub: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3047 Py_INCREF(Sub_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3048 return Sub_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3049 case Mult: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3050 Py_INCREF(Mult_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3051 return Mult_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3052 case Div: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3053 Py_INCREF(Div_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3054 return Div_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3055 case Mod: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3056 Py_INCREF(Mod_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3057 return Mod_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3058 case Pow: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3059 Py_INCREF(Pow_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3060 return Pow_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3061 case LShift: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3062 Py_INCREF(LShift_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3063 return LShift_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3064 case RShift: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3065 Py_INCREF(RShift_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3066 return RShift_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3067 case BitOr: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3068 Py_INCREF(BitOr_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3069 return BitOr_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3070 case BitXor: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3071 Py_INCREF(BitXor_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3072 return BitXor_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3073 case BitAnd: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3074 Py_INCREF(BitAnd_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3075 return BitAnd_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3076 case FloorDiv: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3077 Py_INCREF(FloorDiv_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3078 return FloorDiv_singleton; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3079 default: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3080 /* should never happen, but just in case ... */ |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3081 PyErr_Format(PyExc_SystemError, "unknown operator found"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3082 return NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3083 } |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3084 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3085 PyObject* ast2obj_unaryop(unaryop_ty o) |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3086 { |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3087 switch(o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3088 case Invert: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3089 Py_INCREF(Invert_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3090 return Invert_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3091 case Not: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3092 Py_INCREF(Not_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3093 return Not_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3094 case UAdd: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3095 Py_INCREF(UAdd_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3096 return UAdd_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3097 case USub: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3098 Py_INCREF(USub_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3099 return USub_singleton; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3100 default: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3101 /* should never happen, but just in case ... */ |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3102 PyErr_Format(PyExc_SystemError, "unknown unaryop found"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3103 return NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3104 } |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3105 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3106 PyObject* ast2obj_cmpop(cmpop_ty o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3107 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3108 switch(o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3109 case Eq: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3110 Py_INCREF(Eq_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3111 return Eq_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3112 case NotEq: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3113 Py_INCREF(NotEq_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3114 return NotEq_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3115 case Lt: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3116 Py_INCREF(Lt_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3117 return Lt_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3118 case LtE: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3119 Py_INCREF(LtE_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3120 return LtE_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3121 case Gt: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3122 Py_INCREF(Gt_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3123 return Gt_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3124 case GtE: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3125 Py_INCREF(GtE_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3126 return GtE_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3127 case Is: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3128 Py_INCREF(Is_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3129 return Is_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3130 case IsNot: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3131 Py_INCREF(IsNot_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3132 return IsNot_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3133 case In: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3134 Py_INCREF(In_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3135 return In_singleton; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3136 case NotIn: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3137 Py_INCREF(NotIn_singleton); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3138 return NotIn_singleton; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3139 default: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3140 /* should never happen, but just in case ... */ |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3141 PyErr_Format(PyExc_SystemError, "unknown cmpop found"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3142 return NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3143 } |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3144 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3145 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3146 ast2obj_comprehension(void* _o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3147 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3148 comprehension_ty o = (comprehension_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3149 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3150 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3151 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3152 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3153 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3154 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3155 result = PyType_GenericNew(comprehension_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3156 if (!result) return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3157 value = ast2obj_expr(o->target); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3158 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3159 if (PyObject_SetAttrString(result, "target", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3160 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3161 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3162 value = ast2obj_expr(o->iter); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3163 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3164 if (PyObject_SetAttrString(result, "iter", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3165 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3166 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3167 value = ast2obj_list(o->ifs, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3168 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3169 if (PyObject_SetAttrString(result, "ifs", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3170 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3171 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3172 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3173 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3174 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3175 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3176 return NULL; |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3177 } |
|
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3178 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3179 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3180 ast2obj_excepthandler(void* _o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3181 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3182 excepthandler_ty o = (excepthandler_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3183 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3184 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3185 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3186 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3187 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3188 |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3189 switch (o->kind) { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3190 case ExceptHandler_kind: |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3191 result = PyType_GenericNew(ExceptHandler_type, NULL, NULL); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3192 if (!result) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3193 value = ast2obj_expr(o->v.ExceptHandler.type); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3194 if (!value) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3195 if (PyObject_SetAttrString(result, "type", value) == -1) |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3196 goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3197 Py_DECREF(value); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3198 value = ast2obj_identifier(o->v.ExceptHandler.name); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3199 if (!value) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3200 if (PyObject_SetAttrString(result, "name", value) == -1) |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3201 goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3202 Py_DECREF(value); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3203 value = ast2obj_list(o->v.ExceptHandler.body, ast2obj_stmt); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3204 if (!value) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3205 if (PyObject_SetAttrString(result, "body", value) == -1) |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3206 goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3207 Py_DECREF(value); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3208 break; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3209 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3210 value = ast2obj_int(o->lineno); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3211 if (!value) goto failed; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3212 if (PyObject_SetAttrString(result, "lineno", value) < 0) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3213 goto failed; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3214 Py_DECREF(value); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3215 value = ast2obj_int(o->col_offset); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3216 if (!value) goto failed; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
3217 if (PyObject_SetAttrString(result, "col_offset", value) < 0) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3218 goto failed; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
3219 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3220 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3221 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3222 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3223 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3224 return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3225 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3226 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3227 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3228 ast2obj_arguments(void* _o) |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3229 { |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3230 arguments_ty o = (arguments_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3231 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3232 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3233 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3234 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3235 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3236 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3237 result = PyType_GenericNew(arguments_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3238 if (!result) return NULL; |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3239 value = ast2obj_list(o->args, ast2obj_arg); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3240 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3241 if (PyObject_SetAttrString(result, "args", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3242 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3243 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3244 value = ast2obj_identifier(o->vararg); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3245 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3246 if (PyObject_SetAttrString(result, "vararg", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3247 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3248 Py_DECREF(value); |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3249 value = ast2obj_expr(o->varargannotation); |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3250 if (!value) goto failed; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3251 if (PyObject_SetAttrString(result, "varargannotation", value) == -1) |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3252 goto failed; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3253 Py_DECREF(value); |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3254 value = ast2obj_list(o->kwonlyargs, ast2obj_arg); |
|
40215
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3255 if (!value) goto failed; |
|
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3256 if (PyObject_SetAttrString(result, "kwonlyargs", value) == -1) |
|
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3257 goto failed; |
|
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3258 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3259 value = ast2obj_identifier(o->kwarg); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3260 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3261 if (PyObject_SetAttrString(result, "kwarg", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3262 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3263 Py_DECREF(value); |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3264 value = ast2obj_expr(o->kwargannotation); |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3265 if (!value) goto failed; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3266 if (PyObject_SetAttrString(result, "kwargannotation", value) == -1) |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3267 goto failed; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3268 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3269 value = ast2obj_list(o->defaults, ast2obj_expr); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3270 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3271 if (PyObject_SetAttrString(result, "defaults", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3272 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3273 Py_DECREF(value); |
|
40215
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3274 value = ast2obj_list(o->kw_defaults, ast2obj_expr); |
|
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3275 if (!value) goto failed; |
|
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3276 if (PyObject_SetAttrString(result, "kw_defaults", value) == -1) |
|
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3277 goto failed; |
|
1cce0526d9b0
Jiwon Seo's PEP 3102 implementation.
Guido van Rossum <guido@python.org>
parents:
39783
diff
changeset
|
3278 Py_DECREF(value); |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3279 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3280 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3281 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3282 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3283 return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3284 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3285 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3286 PyObject* |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3287 ast2obj_arg(void* _o) |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3288 { |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3289 arg_ty o = (arg_ty)_o; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3290 PyObject *result = NULL, *value = NULL; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3291 if (!o) { |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3292 Py_INCREF(Py_None); |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3293 return Py_None; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3294 } |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3295 |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3296 result = PyType_GenericNew(arg_type, NULL, NULL); |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3297 if (!result) return NULL; |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3298 value = ast2obj_identifier(o->arg); |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3299 if (!value) goto failed; |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3300 if (PyObject_SetAttrString(result, "arg", value) == -1) |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3301 goto failed; |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3302 Py_DECREF(value); |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3303 value = ast2obj_expr(o->annotation); |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3304 if (!value) goto failed; |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3305 if (PyObject_SetAttrString(result, "annotation", value) == -1) |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3306 goto failed; |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41699
diff
changeset
|
3307 Py_DECREF(value); |
|
40529
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3308 return result; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3309 failed: |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3310 Py_XDECREF(value); |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3311 Py_XDECREF(result); |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3312 return NULL; |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3313 } |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3314 |
|
54cd47788811
PEP 3107 - Function Annotations thanks to Tony Lownds
Neal Norwitz <nnorwitz@gmail.com>
parents:
40215
diff
changeset
|
3315 PyObject* |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3316 ast2obj_keyword(void* _o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3317 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3318 keyword_ty o = (keyword_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3319 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3320 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3321 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3322 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3323 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3324 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3325 result = PyType_GenericNew(keyword_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3326 if (!result) return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3327 value = ast2obj_identifier(o->arg); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3328 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3329 if (PyObject_SetAttrString(result, "arg", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3330 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3331 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3332 value = ast2obj_expr(o->value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3333 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3334 if (PyObject_SetAttrString(result, "value", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3335 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3336 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3337 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3338 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3339 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3340 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3341 return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3342 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3343 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3344 PyObject* |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3345 ast2obj_alias(void* _o) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3346 { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3347 alias_ty o = (alias_ty)_o; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3348 PyObject *result = NULL, *value = NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3349 if (!o) { |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3350 Py_INCREF(Py_None); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3351 return Py_None; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3352 } |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3353 |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3354 result = PyType_GenericNew(alias_type, NULL, NULL); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3355 if (!result) return NULL; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3356 value = ast2obj_identifier(o->name); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3357 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3358 if (PyObject_SetAttrString(result, "name", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3359 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3360 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3361 value = ast2obj_identifier(o->asname); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3362 if (!value) goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3363 if (PyObject_SetAttrString(result, "asname", value) == -1) |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3364 goto failed; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3365 Py_DECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3366 return result; |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3367 failed: |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3368 Py_XDECREF(value); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3369 Py_XDECREF(result); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
3370 return NULL; |
|
35866
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3371 } |
|
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3372 |
|
9f73dc0953d2
Whoops, checkin consistent versions of *all* files to stop polluting
Neal Norwitz <nnorwitz@gmail.com>
parents:
35862
diff
changeset
|
3373 |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3374 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3375 obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3376 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3377 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3378 int isinstance; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3379 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3380 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3381 if (obj == Py_None) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3382 *out = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3383 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3384 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3385 isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3386 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3387 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3388 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3389 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3390 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3391 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3392 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3393 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3394 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3395 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3396 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3397 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3398 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3399 PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3400 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3401 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3402 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3403 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3404 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3405 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3406 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3407 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3408 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3409 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3410 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3411 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3412 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3413 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3414 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Module"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3415 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3416 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3417 *out = Module(body, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3418 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3419 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3420 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3421 isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3422 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3423 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3424 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3425 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3426 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3427 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3428 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3429 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3430 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3431 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3432 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3433 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3434 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3435 PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3436 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3437 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3438 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3439 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3440 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3441 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3442 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3443 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3444 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3445 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3446 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3447 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3448 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3449 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3450 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Interactive"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3451 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3452 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3453 *out = Interactive(body, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3454 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3455 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3456 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3457 isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3458 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3459 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3460 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3461 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3462 expr_ty body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3463 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3464 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3465 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3466 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3467 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3468 res = obj2ast_expr(tmp, &body, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3469 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3470 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3471 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3472 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3473 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Expression"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3474 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3475 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3476 *out = Expression(body, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3477 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3478 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3479 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3480 isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3481 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3482 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3483 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3484 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3485 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3486 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3487 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3488 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3489 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3490 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3491 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3492 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3493 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3494 PyErr_Format(PyExc_TypeError, "Suite field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3495 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3496 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3497 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3498 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3499 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3500 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3501 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3502 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3503 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3504 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3505 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3506 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3507 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3508 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3509 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Suite"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3510 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3511 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3512 *out = Suite(body, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3513 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3514 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3515 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3516 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3517 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3518 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
3519 PyErr_Format(PyExc_TypeError, "expected some sort of mod, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3520 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3521 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3522 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3523 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3524 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3525 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3526 obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3527 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3528 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3529 int isinstance; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3530 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3531 int lineno; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3532 int col_offset; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3533 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3534 if (obj == Py_None) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3535 *out = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3536 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3537 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3538 if (PyObject_HasAttrString(obj, "lineno")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3539 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3540 tmp = PyObject_GetAttrString(obj, "lineno"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3541 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3542 res = obj2ast_int(tmp, &lineno, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3543 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3544 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3545 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3546 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3547 PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from stmt"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3548 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3549 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3550 if (PyObject_HasAttrString(obj, "col_offset")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3551 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3552 tmp = PyObject_GetAttrString(obj, "col_offset"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3553 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3554 res = obj2ast_int(tmp, &col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3555 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3556 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3557 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3558 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3559 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3560 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3561 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3562 isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3563 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3564 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3565 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3566 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3567 identifier name; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3568 arguments_ty args; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3569 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3570 asdl_seq* decorator_list; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3571 expr_ty returns; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3572 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3573 if (PyObject_HasAttrString(obj, "name")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3574 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3575 tmp = PyObject_GetAttrString(obj, "name"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3576 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3577 res = obj2ast_identifier(tmp, &name, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3578 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3579 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3580 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3581 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3582 PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from FunctionDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3583 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3584 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3585 if (PyObject_HasAttrString(obj, "args")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3586 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3587 tmp = PyObject_GetAttrString(obj, "args"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3588 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3589 res = obj2ast_arguments(tmp, &args, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3590 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3591 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3592 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3593 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3594 PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from FunctionDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3595 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3596 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3597 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3598 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3599 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3600 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3601 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3602 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3603 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3604 PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3605 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3606 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3607 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3608 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3609 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3610 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3611 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3612 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3613 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3614 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3615 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3616 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3617 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3618 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3619 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from FunctionDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3620 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3621 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3622 if (PyObject_HasAttrString(obj, "decorator_list")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3623 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3624 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3625 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3626 tmp = PyObject_GetAttrString(obj, "decorator_list"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3627 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3628 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3629 PyErr_Format(PyExc_TypeError, "FunctionDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3630 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3631 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3632 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3633 decorator_list = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3634 if (decorator_list == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3635 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3636 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3637 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3638 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3639 asdl_seq_SET(decorator_list, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3640 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3641 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3642 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3643 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3644 PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from FunctionDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3645 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3646 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3647 if (PyObject_HasAttrString(obj, "returns")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3648 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3649 tmp = PyObject_GetAttrString(obj, "returns"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3650 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3651 res = obj2ast_expr(tmp, &returns, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3652 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3653 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3654 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3655 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3656 returns = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3657 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3658 *out = FunctionDef(name, args, body, decorator_list, returns, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3659 lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3660 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3661 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3662 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3663 isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3664 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3665 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3666 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3667 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3668 identifier name; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3669 asdl_seq* bases; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3670 asdl_seq* keywords; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3671 expr_ty starargs; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3672 expr_ty kwargs; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3673 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3674 asdl_seq* decorator_list; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3675 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3676 if (PyObject_HasAttrString(obj, "name")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3677 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3678 tmp = PyObject_GetAttrString(obj, "name"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3679 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3680 res = obj2ast_identifier(tmp, &name, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3681 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3682 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3683 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3684 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3685 PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from ClassDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3686 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3687 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3688 if (PyObject_HasAttrString(obj, "bases")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3689 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3690 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3691 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3692 tmp = PyObject_GetAttrString(obj, "bases"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3693 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3694 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3695 PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3696 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3697 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3698 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3699 bases = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3700 if (bases == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3701 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3702 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3703 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3704 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3705 asdl_seq_SET(bases, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3706 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3707 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3708 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3709 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3710 PyErr_SetString(PyExc_TypeError, "required field \"bases\" missing from ClassDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3711 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3712 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3713 if (PyObject_HasAttrString(obj, "keywords")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3714 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3715 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3716 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3717 tmp = PyObject_GetAttrString(obj, "keywords"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3718 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3719 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3720 PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3721 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3722 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3723 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3724 keywords = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3725 if (keywords == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3726 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3727 keyword_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3728 res = obj2ast_keyword(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3729 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3730 asdl_seq_SET(keywords, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3731 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3732 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3733 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3734 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3735 PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from ClassDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3736 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3737 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3738 if (PyObject_HasAttrString(obj, "starargs")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3739 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3740 tmp = PyObject_GetAttrString(obj, "starargs"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3741 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3742 res = obj2ast_expr(tmp, &starargs, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3743 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3744 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3745 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3746 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3747 starargs = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3748 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3749 if (PyObject_HasAttrString(obj, "kwargs")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3750 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3751 tmp = PyObject_GetAttrString(obj, "kwargs"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3752 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3753 res = obj2ast_expr(tmp, &kwargs, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3754 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3755 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3756 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3757 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3758 kwargs = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3759 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3760 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3761 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3762 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3763 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3764 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3765 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3766 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3767 PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3768 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3769 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3770 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3771 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3772 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3773 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3774 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3775 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3776 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3777 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3778 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3779 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3780 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3781 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3782 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ClassDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3783 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3784 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3785 if (PyObject_HasAttrString(obj, "decorator_list")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3786 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3787 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3788 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3789 tmp = PyObject_GetAttrString(obj, "decorator_list"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3790 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3791 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3792 PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3793 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3794 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3795 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3796 decorator_list = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3797 if (decorator_list == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3798 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3799 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3800 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3801 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3802 asdl_seq_SET(decorator_list, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3803 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3804 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3805 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3806 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3807 PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from ClassDef"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3808 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3809 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3810 *out = ClassDef(name, bases, keywords, starargs, kwargs, body, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3811 decorator_list, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3812 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3813 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3814 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3815 isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3816 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3817 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3818 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3819 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3820 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3821 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3822 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3823 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3824 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3825 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3826 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3827 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3828 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3829 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3830 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3831 value = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3832 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3833 *out = Return(value, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3834 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3835 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3836 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3837 isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3838 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3839 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3840 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3841 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3842 asdl_seq* targets; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3843 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3844 if (PyObject_HasAttrString(obj, "targets")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3845 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3846 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3847 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3848 tmp = PyObject_GetAttrString(obj, "targets"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3849 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3850 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3851 PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3852 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3853 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3854 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3855 targets = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3856 if (targets == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3857 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3858 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3859 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3860 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3861 asdl_seq_SET(targets, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3862 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3863 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3864 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3865 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3866 PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Delete"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3867 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3868 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3869 *out = Delete(targets, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3870 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3871 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3872 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3873 isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3874 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3875 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3876 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3877 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3878 asdl_seq* targets; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3879 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3880 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3881 if (PyObject_HasAttrString(obj, "targets")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3882 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3883 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3884 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3885 tmp = PyObject_GetAttrString(obj, "targets"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3886 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3887 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3888 PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3889 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3890 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3891 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3892 targets = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3893 if (targets == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3894 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3895 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3896 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3897 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3898 asdl_seq_SET(targets, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3899 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3900 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3901 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3902 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3903 PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Assign"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3904 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3905 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3906 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3907 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3908 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3909 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3910 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3911 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3912 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3913 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3914 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3915 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Assign"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3916 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3917 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3918 *out = Assign(targets, value, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3919 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3920 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3921 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3922 isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3923 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3924 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3925 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3926 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3927 expr_ty target; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3928 operator_ty op; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3929 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3930 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3931 if (PyObject_HasAttrString(obj, "target")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3932 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3933 tmp = PyObject_GetAttrString(obj, "target"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3934 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3935 res = obj2ast_expr(tmp, &target, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3936 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3937 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3938 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3939 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3940 PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AugAssign"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3941 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3942 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3943 if (PyObject_HasAttrString(obj, "op")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3944 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3945 tmp = PyObject_GetAttrString(obj, "op"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3946 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3947 res = obj2ast_operator(tmp, &op, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3948 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3949 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3950 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3951 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3952 PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from AugAssign"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3953 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3954 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3955 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3956 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3957 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3958 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3959 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3960 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3961 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3962 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3963 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3964 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from AugAssign"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3965 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3966 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3967 *out = AugAssign(target, op, value, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3968 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3969 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3970 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3971 isinstance = PyObject_IsInstance(obj, (PyObject*)For_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3972 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3973 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3974 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
3975 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3976 expr_ty target; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3977 expr_ty iter; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3978 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3979 asdl_seq* orelse; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3980 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3981 if (PyObject_HasAttrString(obj, "target")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3982 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3983 tmp = PyObject_GetAttrString(obj, "target"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3984 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3985 res = obj2ast_expr(tmp, &target, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3986 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3987 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3988 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3989 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3990 PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from For"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3991 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3992 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3993 if (PyObject_HasAttrString(obj, "iter")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3994 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3995 tmp = PyObject_GetAttrString(obj, "iter"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3996 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3997 res = obj2ast_expr(tmp, &iter, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3998 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
3999 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4000 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4001 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4002 PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from For"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4003 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4004 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4005 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4006 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4007 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4008 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4009 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4010 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4011 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4012 PyErr_Format(PyExc_TypeError, "For field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4013 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4014 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4015 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4016 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4017 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4018 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4019 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4020 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4021 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4022 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4023 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4024 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4025 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4026 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4027 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from For"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4028 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4029 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4030 if (PyObject_HasAttrString(obj, "orelse")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4031 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4032 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4033 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4034 tmp = PyObject_GetAttrString(obj, "orelse"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4035 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4036 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4037 PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4038 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4039 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4040 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4041 orelse = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4042 if (orelse == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4043 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4044 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4045 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4046 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4047 asdl_seq_SET(orelse, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4048 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4049 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4050 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4051 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4052 PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from For"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4053 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4054 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4055 *out = For(target, iter, body, orelse, lineno, col_offset, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4056 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4057 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4058 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4059 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4060 isinstance = PyObject_IsInstance(obj, (PyObject*)While_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4061 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4062 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4063 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4064 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4065 expr_ty test; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4066 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4067 asdl_seq* orelse; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4068 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4069 if (PyObject_HasAttrString(obj, "test")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4070 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4071 tmp = PyObject_GetAttrString(obj, "test"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4072 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4073 res = obj2ast_expr(tmp, &test, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4074 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4075 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4076 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4077 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4078 PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from While"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4079 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4080 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4081 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4082 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4083 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4084 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4085 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4086 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4087 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4088 PyErr_Format(PyExc_TypeError, "While field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4089 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4090 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4091 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4092 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4093 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4094 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4095 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4096 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4097 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4098 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4099 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4100 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4101 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4102 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4103 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from While"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4104 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4105 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4106 if (PyObject_HasAttrString(obj, "orelse")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4107 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4108 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4109 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4110 tmp = PyObject_GetAttrString(obj, "orelse"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4111 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4112 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4113 PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4114 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4115 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4116 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4117 orelse = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4118 if (orelse == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4119 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4120 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4121 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4122 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4123 asdl_seq_SET(orelse, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4124 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4125 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4126 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4127 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4128 PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from While"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4129 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4130 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4131 *out = While(test, body, orelse, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4132 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4133 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4134 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4135 isinstance = PyObject_IsInstance(obj, (PyObject*)If_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4136 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4137 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4138 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4139 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4140 expr_ty test; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4141 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4142 asdl_seq* orelse; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4143 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4144 if (PyObject_HasAttrString(obj, "test")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4145 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4146 tmp = PyObject_GetAttrString(obj, "test"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4147 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4148 res = obj2ast_expr(tmp, &test, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4149 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4150 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4151 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4152 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4153 PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from If"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4154 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4155 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4156 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4157 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4158 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4159 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4160 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4161 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4162 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4163 PyErr_Format(PyExc_TypeError, "If field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4164 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4165 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4166 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4167 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4168 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4169 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4170 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4171 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4172 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4173 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4174 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4175 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4176 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4177 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4178 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from If"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4179 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4180 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4181 if (PyObject_HasAttrString(obj, "orelse")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4182 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4183 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4184 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4185 tmp = PyObject_GetAttrString(obj, "orelse"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4186 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4187 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4188 PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4189 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4190 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4191 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4192 orelse = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4193 if (orelse == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4194 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4195 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4196 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4197 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4198 asdl_seq_SET(orelse, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4199 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4200 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4201 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4202 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4203 PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from If"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4204 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4205 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4206 *out = If(test, body, orelse, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4207 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4208 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4209 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4210 isinstance = PyObject_IsInstance(obj, (PyObject*)With_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4211 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4212 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4213 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4214 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4215 expr_ty context_expr; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4216 expr_ty optional_vars; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4217 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4218 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4219 if (PyObject_HasAttrString(obj, "context_expr")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4220 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4221 tmp = PyObject_GetAttrString(obj, "context_expr"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4222 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4223 res = obj2ast_expr(tmp, &context_expr, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4224 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4225 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4226 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4227 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4228 PyErr_SetString(PyExc_TypeError, "required field \"context_expr\" missing from With"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4229 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4230 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4231 if (PyObject_HasAttrString(obj, "optional_vars")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4232 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4233 tmp = PyObject_GetAttrString(obj, "optional_vars"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4234 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4235 res = obj2ast_expr(tmp, &optional_vars, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4236 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4237 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4238 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4239 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4240 optional_vars = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4241 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4242 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4243 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4244 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4245 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4246 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4247 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4248 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4249 PyErr_Format(PyExc_TypeError, "With field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4250 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4251 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4252 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4253 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4254 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4255 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4256 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4257 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4258 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4259 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4260 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4261 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4262 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4263 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4264 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from With"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4265 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4266 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4267 *out = With(context_expr, optional_vars, body, lineno, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4268 col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4269 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4270 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4271 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4272 isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4273 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4274 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4275 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4276 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4277 expr_ty exc; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4278 expr_ty cause; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4279 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4280 if (PyObject_HasAttrString(obj, "exc")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4281 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4282 tmp = PyObject_GetAttrString(obj, "exc"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4283 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4284 res = obj2ast_expr(tmp, &exc, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4285 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4286 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4287 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4288 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4289 exc = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4290 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4291 if (PyObject_HasAttrString(obj, "cause")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4292 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4293 tmp = PyObject_GetAttrString(obj, "cause"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4294 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4295 res = obj2ast_expr(tmp, &cause, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4296 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4297 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4298 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4299 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4300 cause = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4301 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4302 *out = Raise(exc, cause, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4303 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4304 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4305 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4306 isinstance = PyObject_IsInstance(obj, (PyObject*)TryExcept_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4307 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4308 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4309 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4310 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4311 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4312 asdl_seq* handlers; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4313 asdl_seq* orelse; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4314 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4315 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4316 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4317 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4318 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4319 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4320 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4321 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4322 PyErr_Format(PyExc_TypeError, "TryExcept field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4323 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4324 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4325 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4326 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4327 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4328 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4329 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4330 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4331 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4332 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4333 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4334 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4335 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4336 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4337 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from TryExcept"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4338 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4339 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4340 if (PyObject_HasAttrString(obj, "handlers")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4341 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4342 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4343 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4344 tmp = PyObject_GetAttrString(obj, "handlers"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4345 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4346 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4347 PyErr_Format(PyExc_TypeError, "TryExcept field \"handlers\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4348 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4349 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4350 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4351 handlers = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4352 if (handlers == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4353 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4354 excepthandler_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4355 res = obj2ast_excepthandler(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4356 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4357 asdl_seq_SET(handlers, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4358 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4359 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4360 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4361 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4362 PyErr_SetString(PyExc_TypeError, "required field \"handlers\" missing from TryExcept"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4363 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4364 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4365 if (PyObject_HasAttrString(obj, "orelse")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4366 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4367 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4368 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4369 tmp = PyObject_GetAttrString(obj, "orelse"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4370 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4371 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4372 PyErr_Format(PyExc_TypeError, "TryExcept field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4373 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4374 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4375 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4376 orelse = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4377 if (orelse == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4378 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4379 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4380 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4381 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4382 asdl_seq_SET(orelse, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4383 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4384 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4385 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4386 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4387 PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from TryExcept"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4388 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4389 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4390 *out = TryExcept(body, handlers, orelse, lineno, col_offset, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4391 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4392 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4393 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4394 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4395 isinstance = PyObject_IsInstance(obj, (PyObject*)TryFinally_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4396 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4397 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4398 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4399 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4400 asdl_seq* body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4401 asdl_seq* finalbody; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4402 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4403 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4404 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4405 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4406 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4407 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4408 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4409 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4410 PyErr_Format(PyExc_TypeError, "TryFinally field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4411 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4412 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4413 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4414 body = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4415 if (body == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4416 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4417 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4418 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4419 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4420 asdl_seq_SET(body, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4421 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4422 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4423 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4424 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4425 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from TryFinally"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4426 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4427 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4428 if (PyObject_HasAttrString(obj, "finalbody")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4429 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4430 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4431 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4432 tmp = PyObject_GetAttrString(obj, "finalbody"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4433 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4434 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4435 PyErr_Format(PyExc_TypeError, "TryFinally field \"finalbody\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4436 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4437 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4438 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4439 finalbody = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4440 if (finalbody == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4441 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4442 stmt_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4443 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4444 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4445 asdl_seq_SET(finalbody, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4446 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4447 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4448 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4449 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4450 PyErr_SetString(PyExc_TypeError, "required field \"finalbody\" missing from TryFinally"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4451 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4452 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4453 *out = TryFinally(body, finalbody, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4454 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4455 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4456 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4457 isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4458 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4459 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4460 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4461 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4462 expr_ty test; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4463 expr_ty msg; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4464 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4465 if (PyObject_HasAttrString(obj, "test")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4466 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4467 tmp = PyObject_GetAttrString(obj, "test"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4468 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4469 res = obj2ast_expr(tmp, &test, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4470 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4471 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4472 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4473 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4474 PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from Assert"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4475 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4476 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4477 if (PyObject_HasAttrString(obj, "msg")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4478 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4479 tmp = PyObject_GetAttrString(obj, "msg"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4480 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4481 res = obj2ast_expr(tmp, &msg, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4482 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4483 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4484 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4485 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4486 msg = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4487 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4488 *out = Assert(test, msg, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4489 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4490 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4491 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4492 isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4493 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4494 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4495 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4496 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4497 asdl_seq* names; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4498 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4499 if (PyObject_HasAttrString(obj, "names")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4500 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4501 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4502 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4503 tmp = PyObject_GetAttrString(obj, "names"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4504 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4505 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4506 PyErr_Format(PyExc_TypeError, "Import field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4507 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4508 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4509 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4510 names = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4511 if (names == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4512 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4513 alias_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4514 res = obj2ast_alias(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4515 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4516 asdl_seq_SET(names, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4517 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4518 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4519 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4520 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4521 PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Import"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4522 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4523 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4524 *out = Import(names, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4525 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4526 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4527 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4528 isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4529 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4530 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4531 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4532 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4533 identifier module; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4534 asdl_seq* names; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4535 int level; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4536 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4537 if (PyObject_HasAttrString(obj, "module")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4538 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4539 tmp = PyObject_GetAttrString(obj, "module"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4540 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4541 res = obj2ast_identifier(tmp, &module, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4542 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4543 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4544 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4545 } else { |
|
54918
0704f15b4682
Merged revisions 73376,73393,73398,73400,73404-73405,73409,73419-73421,73432,73457,73460,73485-73486,73488-73489,73501-73502,73513-73514 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51270
diff
changeset
|
4546 module = NULL; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4547 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4548 if (PyObject_HasAttrString(obj, "names")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4549 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4550 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4551 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4552 tmp = PyObject_GetAttrString(obj, "names"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4553 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4554 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4555 PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4556 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4557 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4558 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4559 names = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4560 if (names == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4561 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4562 alias_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4563 res = obj2ast_alias(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4564 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4565 asdl_seq_SET(names, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4566 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4567 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4568 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4569 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4570 PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from ImportFrom"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4571 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4572 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4573 if (PyObject_HasAttrString(obj, "level")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4574 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4575 tmp = PyObject_GetAttrString(obj, "level"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4576 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4577 res = obj2ast_int(tmp, &level, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4578 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4579 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4580 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4581 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4582 level = 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4583 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4584 *out = ImportFrom(module, names, level, lineno, col_offset, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4585 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4586 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4587 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4588 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4589 isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4590 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4591 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4592 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4593 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4594 asdl_seq* names; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4595 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4596 if (PyObject_HasAttrString(obj, "names")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4597 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4598 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4599 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4600 tmp = PyObject_GetAttrString(obj, "names"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4601 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4602 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4603 PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4604 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4605 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4606 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4607 names = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4608 if (names == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4609 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4610 identifier value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4611 res = obj2ast_identifier(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4612 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4613 asdl_seq_SET(names, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4614 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4615 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4616 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4617 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4618 PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Global"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4619 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4620 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4621 *out = Global(names, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4622 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4623 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4624 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4625 isinstance = PyObject_IsInstance(obj, (PyObject*)Nonlocal_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4626 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4627 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4628 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4629 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4630 asdl_seq* names; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4631 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4632 if (PyObject_HasAttrString(obj, "names")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4633 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4634 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4635 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4636 tmp = PyObject_GetAttrString(obj, "names"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4637 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4638 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4639 PyErr_Format(PyExc_TypeError, "Nonlocal field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4640 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4641 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4642 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4643 names = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4644 if (names == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4645 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4646 identifier value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4647 res = obj2ast_identifier(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4648 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4649 asdl_seq_SET(names, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4650 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4651 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4652 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4653 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4654 PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Nonlocal"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4655 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4656 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4657 *out = Nonlocal(names, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4658 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4659 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4660 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4661 isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4662 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4663 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4664 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4665 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4666 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4667 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4668 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4669 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4670 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4671 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4672 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4673 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4674 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4675 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4676 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4677 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Expr"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4678 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4679 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4680 *out = Expr(value, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4681 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4682 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4683 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4684 isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4685 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4686 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4687 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4688 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4689 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4690 *out = Pass(lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4691 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4692 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4693 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4694 isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4695 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4696 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4697 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4698 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4699 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4700 *out = Break(lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4701 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4702 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4703 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4704 isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4705 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4706 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4707 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4708 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4709 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4710 *out = Continue(lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4711 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4712 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4713 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4714 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4715 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4716 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
4717 PyErr_Format(PyExc_TypeError, "expected some sort of stmt, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4718 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4719 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4720 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4721 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4722 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4723 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4724 obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4725 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4726 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4727 int isinstance; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4728 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4729 int lineno; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4730 int col_offset; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4731 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4732 if (obj == Py_None) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4733 *out = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4734 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4735 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4736 if (PyObject_HasAttrString(obj, "lineno")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4737 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4738 tmp = PyObject_GetAttrString(obj, "lineno"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4739 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4740 res = obj2ast_int(tmp, &lineno, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4741 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4742 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4743 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4744 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4745 PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from expr"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4746 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4747 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4748 if (PyObject_HasAttrString(obj, "col_offset")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4749 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4750 tmp = PyObject_GetAttrString(obj, "col_offset"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4751 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4752 res = obj2ast_int(tmp, &col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4753 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4754 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4755 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4756 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4757 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4758 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4759 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4760 isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4761 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4762 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4763 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4764 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4765 boolop_ty op; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4766 asdl_seq* values; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4767 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4768 if (PyObject_HasAttrString(obj, "op")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4769 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4770 tmp = PyObject_GetAttrString(obj, "op"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4771 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4772 res = obj2ast_boolop(tmp, &op, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4773 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4774 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4775 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4776 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4777 PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BoolOp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4778 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4779 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4780 if (PyObject_HasAttrString(obj, "values")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4781 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4782 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4783 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4784 tmp = PyObject_GetAttrString(obj, "values"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4785 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4786 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4787 PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4788 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4789 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4790 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4791 values = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4792 if (values == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4793 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4794 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4795 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4796 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4797 asdl_seq_SET(values, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4798 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4799 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4800 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4801 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4802 PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from BoolOp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4803 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4804 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4805 *out = BoolOp(op, values, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4806 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4807 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4808 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4809 isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4810 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4811 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4812 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4813 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4814 expr_ty left; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4815 operator_ty op; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4816 expr_ty right; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4817 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4818 if (PyObject_HasAttrString(obj, "left")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4819 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4820 tmp = PyObject_GetAttrString(obj, "left"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4821 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4822 res = obj2ast_expr(tmp, &left, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4823 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4824 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4825 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4826 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4827 PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from BinOp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4828 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4829 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4830 if (PyObject_HasAttrString(obj, "op")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4831 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4832 tmp = PyObject_GetAttrString(obj, "op"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4833 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4834 res = obj2ast_operator(tmp, &op, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4835 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4836 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4837 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4838 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4839 PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BinOp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4840 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4841 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4842 if (PyObject_HasAttrString(obj, "right")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4843 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4844 tmp = PyObject_GetAttrString(obj, "right"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4845 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4846 res = obj2ast_expr(tmp, &right, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4847 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4848 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4849 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4850 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4851 PyErr_SetString(PyExc_TypeError, "required field \"right\" missing from BinOp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4852 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4853 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4854 *out = BinOp(left, op, right, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4855 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4856 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4857 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4858 isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4859 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4860 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4861 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4862 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4863 unaryop_ty op; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4864 expr_ty operand; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4865 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4866 if (PyObject_HasAttrString(obj, "op")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4867 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4868 tmp = PyObject_GetAttrString(obj, "op"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4869 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4870 res = obj2ast_unaryop(tmp, &op, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4871 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4872 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4873 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4874 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4875 PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from UnaryOp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4876 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4877 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4878 if (PyObject_HasAttrString(obj, "operand")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4879 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4880 tmp = PyObject_GetAttrString(obj, "operand"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4881 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4882 res = obj2ast_expr(tmp, &operand, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4883 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4884 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4885 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4886 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4887 PyErr_SetString(PyExc_TypeError, "required field \"operand\" missing from UnaryOp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4888 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4889 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4890 *out = UnaryOp(op, operand, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4891 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4892 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4893 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4894 isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4895 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4896 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4897 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4898 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4899 arguments_ty args; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4900 expr_ty body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4901 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4902 if (PyObject_HasAttrString(obj, "args")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4903 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4904 tmp = PyObject_GetAttrString(obj, "args"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4905 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4906 res = obj2ast_arguments(tmp, &args, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4907 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4908 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4909 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4910 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4911 PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Lambda"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4912 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4913 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4914 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4915 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4916 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4917 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4918 res = obj2ast_expr(tmp, &body, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4919 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4920 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4921 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4922 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4923 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Lambda"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4924 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4925 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4926 *out = Lambda(args, body, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4927 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4928 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4929 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4930 isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4931 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4932 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4933 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4934 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4935 expr_ty test; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4936 expr_ty body; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4937 expr_ty orelse; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4938 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4939 if (PyObject_HasAttrString(obj, "test")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4940 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4941 tmp = PyObject_GetAttrString(obj, "test"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4942 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4943 res = obj2ast_expr(tmp, &test, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4944 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4945 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4946 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4947 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4948 PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from IfExp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4949 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4950 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4951 if (PyObject_HasAttrString(obj, "body")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4952 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4953 tmp = PyObject_GetAttrString(obj, "body"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4954 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4955 res = obj2ast_expr(tmp, &body, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4956 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4957 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4958 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4959 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4960 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from IfExp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4961 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4962 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4963 if (PyObject_HasAttrString(obj, "orelse")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4964 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4965 tmp = PyObject_GetAttrString(obj, "orelse"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4966 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4967 res = obj2ast_expr(tmp, &orelse, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4968 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4969 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4970 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4971 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4972 PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from IfExp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4973 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4974 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4975 *out = IfExp(test, body, orelse, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4976 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4977 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4978 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4979 isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4980 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4981 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4982 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
4983 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4984 asdl_seq* keys; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4985 asdl_seq* values; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4986 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4987 if (PyObject_HasAttrString(obj, "keys")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4988 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4989 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4990 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4991 tmp = PyObject_GetAttrString(obj, "keys"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4992 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4993 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4994 PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4995 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4996 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4997 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4998 keys = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
4999 if (keys == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5000 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5001 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5002 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5003 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5004 asdl_seq_SET(keys, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5005 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5006 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5007 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5008 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5009 PyErr_SetString(PyExc_TypeError, "required field \"keys\" missing from Dict"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5010 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5011 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5012 if (PyObject_HasAttrString(obj, "values")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5013 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5014 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5015 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5016 tmp = PyObject_GetAttrString(obj, "values"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5017 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5018 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5019 PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5020 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5021 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5022 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5023 values = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5024 if (values == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5025 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5026 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5027 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5028 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5029 asdl_seq_SET(values, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5030 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5031 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5032 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5033 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5034 PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from Dict"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5035 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5036 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5037 *out = Dict(keys, values, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5038 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5039 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5040 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5041 isinstance = PyObject_IsInstance(obj, (PyObject*)Set_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5042 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5043 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5044 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5045 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5046 asdl_seq* elts; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5047 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5048 if (PyObject_HasAttrString(obj, "elts")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5049 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5050 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5051 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5052 tmp = PyObject_GetAttrString(obj, "elts"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5053 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5054 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5055 PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5056 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5057 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5058 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5059 elts = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5060 if (elts == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5061 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5062 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5063 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5064 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5065 asdl_seq_SET(elts, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5066 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5067 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5068 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5069 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5070 PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Set"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5071 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5072 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5073 *out = Set(elts, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5074 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5075 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5076 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5077 isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5078 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5079 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5080 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5081 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5082 expr_ty elt; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5083 asdl_seq* generators; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5084 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5085 if (PyObject_HasAttrString(obj, "elt")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5086 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5087 tmp = PyObject_GetAttrString(obj, "elt"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5088 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5089 res = obj2ast_expr(tmp, &elt, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5090 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5091 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5092 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5093 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5094 PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from ListComp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5095 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5096 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5097 if (PyObject_HasAttrString(obj, "generators")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5098 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5099 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5100 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5101 tmp = PyObject_GetAttrString(obj, "generators"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5102 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5103 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5104 PyErr_Format(PyExc_TypeError, "ListComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5105 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5106 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5107 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5108 generators = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5109 if (generators == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5110 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5111 comprehension_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5112 res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5113 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5114 asdl_seq_SET(generators, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5115 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5116 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5117 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5118 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5119 PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from ListComp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5120 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5121 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5122 *out = ListComp(elt, generators, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5123 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5124 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5125 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5126 isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5127 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5128 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5129 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5130 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5131 expr_ty elt; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5132 asdl_seq* generators; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5133 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5134 if (PyObject_HasAttrString(obj, "elt")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5135 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5136 tmp = PyObject_GetAttrString(obj, "elt"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5137 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5138 res = obj2ast_expr(tmp, &elt, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5139 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5140 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5141 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5142 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5143 PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from SetComp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5144 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5145 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5146 if (PyObject_HasAttrString(obj, "generators")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5147 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5148 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5149 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5150 tmp = PyObject_GetAttrString(obj, "generators"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5151 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5152 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5153 PyErr_Format(PyExc_TypeError, "SetComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5154 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5155 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5156 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5157 generators = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5158 if (generators == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5159 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5160 comprehension_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5161 res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5162 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5163 asdl_seq_SET(generators, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5164 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5165 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5166 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5167 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5168 PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from SetComp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5169 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5170 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5171 *out = SetComp(elt, generators, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5172 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5173 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5174 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5175 isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5176 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5177 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5178 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5179 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5180 expr_ty key; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5181 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5182 asdl_seq* generators; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5183 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5184 if (PyObject_HasAttrString(obj, "key")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5185 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5186 tmp = PyObject_GetAttrString(obj, "key"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5187 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5188 res = obj2ast_expr(tmp, &key, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5189 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5190 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5191 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5192 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5193 PyErr_SetString(PyExc_TypeError, "required field \"key\" missing from DictComp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5194 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5195 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5196 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5197 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5198 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5199 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5200 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5201 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5202 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5203 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5204 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5205 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from DictComp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5206 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5207 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5208 if (PyObject_HasAttrString(obj, "generators")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5209 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5210 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5211 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5212 tmp = PyObject_GetAttrString(obj, "generators"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5213 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5214 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5215 PyErr_Format(PyExc_TypeError, "DictComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5216 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5217 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5218 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5219 generators = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5220 if (generators == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5221 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5222 comprehension_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5223 res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5224 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5225 asdl_seq_SET(generators, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5226 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5227 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5228 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5229 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5230 PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from DictComp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5231 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5232 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5233 *out = DictComp(key, value, generators, lineno, col_offset, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5234 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5235 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5236 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5237 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5238 isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5239 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5240 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5241 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5242 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5243 expr_ty elt; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5244 asdl_seq* generators; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5245 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5246 if (PyObject_HasAttrString(obj, "elt")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5247 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5248 tmp = PyObject_GetAttrString(obj, "elt"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5249 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5250 res = obj2ast_expr(tmp, &elt, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5251 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5252 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5253 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5254 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5255 PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from GeneratorExp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5256 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5257 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5258 if (PyObject_HasAttrString(obj, "generators")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5259 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5260 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5261 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5262 tmp = PyObject_GetAttrString(obj, "generators"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5263 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5264 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5265 PyErr_Format(PyExc_TypeError, "GeneratorExp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5266 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5267 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5268 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5269 generators = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5270 if (generators == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5271 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5272 comprehension_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5273 res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5274 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5275 asdl_seq_SET(generators, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5276 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5277 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5278 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5279 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5280 PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from GeneratorExp"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5281 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5282 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5283 *out = GeneratorExp(elt, generators, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5284 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5285 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5286 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5287 isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5288 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5289 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5290 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5291 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5292 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5293 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5294 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5295 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5296 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5297 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5298 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5299 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5300 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5301 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5302 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5303 value = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5304 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5305 *out = Yield(value, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5306 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5307 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5308 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5309 isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5310 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5311 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5312 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5313 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5314 expr_ty left; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5315 asdl_int_seq* ops; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5316 asdl_seq* comparators; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5317 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5318 if (PyObject_HasAttrString(obj, "left")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5319 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5320 tmp = PyObject_GetAttrString(obj, "left"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5321 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5322 res = obj2ast_expr(tmp, &left, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5323 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5324 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5325 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5326 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5327 PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from Compare"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5328 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5329 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5330 if (PyObject_HasAttrString(obj, "ops")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5331 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5332 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5333 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5334 tmp = PyObject_GetAttrString(obj, "ops"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5335 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5336 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5337 PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5338 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5339 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5340 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5341 ops = asdl_int_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5342 if (ops == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5343 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5344 cmpop_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5345 res = obj2ast_cmpop(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5346 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5347 asdl_seq_SET(ops, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5348 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5349 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5350 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5351 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5352 PyErr_SetString(PyExc_TypeError, "required field \"ops\" missing from Compare"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5353 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5354 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5355 if (PyObject_HasAttrString(obj, "comparators")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5356 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5357 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5358 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5359 tmp = PyObject_GetAttrString(obj, "comparators"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5360 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5361 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5362 PyErr_Format(PyExc_TypeError, "Compare field \"comparators\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5363 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5364 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5365 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5366 comparators = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5367 if (comparators == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5368 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5369 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5370 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5371 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5372 asdl_seq_SET(comparators, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5373 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5374 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5375 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5376 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5377 PyErr_SetString(PyExc_TypeError, "required field \"comparators\" missing from Compare"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5378 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5379 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5380 *out = Compare(left, ops, comparators, lineno, col_offset, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5381 arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5382 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5383 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5384 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5385 isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5386 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5387 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5388 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5389 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5390 expr_ty func; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5391 asdl_seq* args; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5392 asdl_seq* keywords; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5393 expr_ty starargs; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5394 expr_ty kwargs; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5395 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5396 if (PyObject_HasAttrString(obj, "func")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5397 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5398 tmp = PyObject_GetAttrString(obj, "func"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5399 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5400 res = obj2ast_expr(tmp, &func, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5401 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5402 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5403 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5404 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5405 PyErr_SetString(PyExc_TypeError, "required field \"func\" missing from Call"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5406 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5407 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5408 if (PyObject_HasAttrString(obj, "args")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5409 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5410 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5411 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5412 tmp = PyObject_GetAttrString(obj, "args"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5413 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5414 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5415 PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5416 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5417 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5418 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5419 args = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5420 if (args == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5421 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5422 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5423 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5424 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5425 asdl_seq_SET(args, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5426 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5427 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5428 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5429 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5430 PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Call"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5431 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5432 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5433 if (PyObject_HasAttrString(obj, "keywords")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5434 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5435 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5436 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5437 tmp = PyObject_GetAttrString(obj, "keywords"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5438 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5439 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5440 PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5441 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5442 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5443 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5444 keywords = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5445 if (keywords == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5446 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5447 keyword_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5448 res = obj2ast_keyword(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5449 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5450 asdl_seq_SET(keywords, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5451 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5452 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5453 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5454 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5455 PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from Call"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5456 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5457 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5458 if (PyObject_HasAttrString(obj, "starargs")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5459 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5460 tmp = PyObject_GetAttrString(obj, "starargs"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5461 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5462 res = obj2ast_expr(tmp, &starargs, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5463 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5464 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5465 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5466 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5467 starargs = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5468 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5469 if (PyObject_HasAttrString(obj, "kwargs")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5470 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5471 tmp = PyObject_GetAttrString(obj, "kwargs"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5472 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5473 res = obj2ast_expr(tmp, &kwargs, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5474 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5475 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5476 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5477 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5478 kwargs = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5479 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5480 *out = Call(func, args, keywords, starargs, kwargs, lineno, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5481 col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5482 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5483 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5484 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5485 isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5486 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5487 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5488 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5489 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5490 object n; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5491 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5492 if (PyObject_HasAttrString(obj, "n")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5493 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5494 tmp = PyObject_GetAttrString(obj, "n"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5495 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5496 res = obj2ast_object(tmp, &n, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5497 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5498 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5499 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5500 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5501 PyErr_SetString(PyExc_TypeError, "required field \"n\" missing from Num"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5502 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5503 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5504 *out = Num(n, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5505 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5506 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5507 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5508 isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5509 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5510 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5511 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5512 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5513 string s; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5514 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5515 if (PyObject_HasAttrString(obj, "s")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5516 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5517 tmp = PyObject_GetAttrString(obj, "s"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5518 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5519 res = obj2ast_string(tmp, &s, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5520 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5521 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5522 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5523 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5524 PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Str"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5525 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5526 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5527 *out = Str(s, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5528 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5529 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5530 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5531 isinstance = PyObject_IsInstance(obj, (PyObject*)Bytes_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5532 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5533 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5534 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5535 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5536 string s; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5537 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5538 if (PyObject_HasAttrString(obj, "s")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5539 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5540 tmp = PyObject_GetAttrString(obj, "s"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5541 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5542 res = obj2ast_string(tmp, &s, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5543 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5544 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5545 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5546 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5547 PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Bytes"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5548 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5549 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5550 *out = Bytes(s, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5551 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5552 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5553 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5554 isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5555 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5556 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5557 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5558 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5559 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5560 *out = Ellipsis(lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5561 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5562 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5563 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5564 isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5565 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5566 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5567 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5568 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5569 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5570 identifier attr; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5571 expr_context_ty ctx; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5572 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5573 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5574 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5575 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5576 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5577 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5578 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5579 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5580 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5581 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5582 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Attribute"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5583 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5584 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5585 if (PyObject_HasAttrString(obj, "attr")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5586 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5587 tmp = PyObject_GetAttrString(obj, "attr"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5588 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5589 res = obj2ast_identifier(tmp, &attr, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5590 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5591 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5592 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5593 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5594 PyErr_SetString(PyExc_TypeError, "required field \"attr\" missing from Attribute"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5595 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5596 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5597 if (PyObject_HasAttrString(obj, "ctx")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5598 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5599 tmp = PyObject_GetAttrString(obj, "ctx"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5600 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5601 res = obj2ast_expr_context(tmp, &ctx, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5602 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5603 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5604 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5605 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5606 PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Attribute"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5607 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5608 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5609 *out = Attribute(value, attr, ctx, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5610 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5611 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5612 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5613 isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5614 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5615 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5616 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5617 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5618 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5619 slice_ty slice; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5620 expr_context_ty ctx; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5621 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5622 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5623 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5624 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5625 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5626 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5627 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5628 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5629 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5630 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5631 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Subscript"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5632 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5633 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5634 if (PyObject_HasAttrString(obj, "slice")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5635 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5636 tmp = PyObject_GetAttrString(obj, "slice"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5637 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5638 res = obj2ast_slice(tmp, &slice, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5639 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5640 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5641 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5642 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5643 PyErr_SetString(PyExc_TypeError, "required field \"slice\" missing from Subscript"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5644 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5645 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5646 if (PyObject_HasAttrString(obj, "ctx")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5647 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5648 tmp = PyObject_GetAttrString(obj, "ctx"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5649 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5650 res = obj2ast_expr_context(tmp, &ctx, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5651 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5652 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5653 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5654 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5655 PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Subscript"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5656 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5657 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5658 *out = Subscript(value, slice, ctx, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5659 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5660 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5661 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5662 isinstance = PyObject_IsInstance(obj, (PyObject*)Starred_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5663 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5664 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5665 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5666 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5667 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5668 expr_context_ty ctx; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5669 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5670 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5671 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5672 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5673 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5674 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5675 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5676 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5677 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5678 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5679 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Starred"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5680 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5681 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5682 if (PyObject_HasAttrString(obj, "ctx")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5683 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5684 tmp = PyObject_GetAttrString(obj, "ctx"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5685 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5686 res = obj2ast_expr_context(tmp, &ctx, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5687 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5688 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5689 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5690 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5691 PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Starred"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5692 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5693 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5694 *out = Starred(value, ctx, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5695 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5696 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5697 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5698 isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5699 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5700 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5701 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5702 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5703 identifier id; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5704 expr_context_ty ctx; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5705 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5706 if (PyObject_HasAttrString(obj, "id")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5707 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5708 tmp = PyObject_GetAttrString(obj, "id"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5709 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5710 res = obj2ast_identifier(tmp, &id, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5711 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5712 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5713 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5714 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5715 PyErr_SetString(PyExc_TypeError, "required field \"id\" missing from Name"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5716 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5717 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5718 if (PyObject_HasAttrString(obj, "ctx")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5719 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5720 tmp = PyObject_GetAttrString(obj, "ctx"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5721 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5722 res = obj2ast_expr_context(tmp, &ctx, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5723 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5724 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5725 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5726 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5727 PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Name"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5728 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5729 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5730 *out = Name(id, ctx, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5731 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5732 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5733 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5734 isinstance = PyObject_IsInstance(obj, (PyObject*)List_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5735 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5736 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5737 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5738 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5739 asdl_seq* elts; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5740 expr_context_ty ctx; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5741 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5742 if (PyObject_HasAttrString(obj, "elts")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5743 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5744 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5745 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5746 tmp = PyObject_GetAttrString(obj, "elts"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5747 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5748 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5749 PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5750 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5751 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5752 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5753 elts = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5754 if (elts == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5755 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5756 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5757 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5758 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5759 asdl_seq_SET(elts, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5760 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5761 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5762 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5763 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5764 PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from List"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5765 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5766 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5767 if (PyObject_HasAttrString(obj, "ctx")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5768 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5769 tmp = PyObject_GetAttrString(obj, "ctx"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5770 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5771 res = obj2ast_expr_context(tmp, &ctx, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5772 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5773 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5774 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5775 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5776 PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from List"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5777 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5778 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5779 *out = List(elts, ctx, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5780 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5781 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5782 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5783 isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5784 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5785 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5786 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5787 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5788 asdl_seq* elts; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5789 expr_context_ty ctx; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5790 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5791 if (PyObject_HasAttrString(obj, "elts")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5792 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5793 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5794 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5795 tmp = PyObject_GetAttrString(obj, "elts"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5796 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5797 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5798 PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5799 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5800 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5801 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5802 elts = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5803 if (elts == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5804 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5805 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5806 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5807 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5808 asdl_seq_SET(elts, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5809 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5810 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5811 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5812 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5813 PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Tuple"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5814 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5815 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5816 if (PyObject_HasAttrString(obj, "ctx")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5817 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5818 tmp = PyObject_GetAttrString(obj, "ctx"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5819 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5820 res = obj2ast_expr_context(tmp, &ctx, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5821 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5822 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5823 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5824 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5825 PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Tuple"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5826 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5827 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5828 *out = Tuple(elts, ctx, lineno, col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5829 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5830 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5831 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5832 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5833 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5834 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
5835 PyErr_Format(PyExc_TypeError, "expected some sort of expr, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5836 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5837 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5838 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5839 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5840 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5841 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5842 obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5843 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5844 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5845 int isinstance; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5846 |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5847 isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5848 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5849 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5850 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5851 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5852 *out = Load; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5853 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5854 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5855 isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5856 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5857 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5858 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5859 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5860 *out = Store; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5861 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5862 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5863 isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5864 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5865 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5866 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5867 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5868 *out = Del; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5869 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5870 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5871 isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5872 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5873 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5874 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5875 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5876 *out = AugLoad; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5877 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5878 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5879 isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5880 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5881 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5882 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5883 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5884 *out = AugStore; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5885 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5886 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5887 isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5888 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5889 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5890 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5891 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5892 *out = Param; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5893 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5894 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5895 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5896 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5897 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
5898 PyErr_Format(PyExc_TypeError, "expected some sort of expr_context, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5899 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5900 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5901 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5902 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5903 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5904 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5905 obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5906 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5907 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5908 int isinstance; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5909 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5910 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5911 if (obj == Py_None) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5912 *out = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5913 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5914 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5915 isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5916 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5917 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5918 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5919 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5920 expr_ty lower; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5921 expr_ty upper; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5922 expr_ty step; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5923 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5924 if (PyObject_HasAttrString(obj, "lower")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5925 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5926 tmp = PyObject_GetAttrString(obj, "lower"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5927 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5928 res = obj2ast_expr(tmp, &lower, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5929 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5930 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5931 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5932 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5933 lower = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5934 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5935 if (PyObject_HasAttrString(obj, "upper")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5936 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5937 tmp = PyObject_GetAttrString(obj, "upper"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5938 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5939 res = obj2ast_expr(tmp, &upper, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5940 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5941 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5942 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5943 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5944 upper = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5945 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5946 if (PyObject_HasAttrString(obj, "step")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5947 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5948 tmp = PyObject_GetAttrString(obj, "step"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5949 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5950 res = obj2ast_expr(tmp, &step, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5951 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5952 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5953 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5954 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5955 step = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5956 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5957 *out = Slice(lower, upper, step, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5958 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5959 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5960 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5961 isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5962 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5963 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5964 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5965 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5966 asdl_seq* dims; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5967 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5968 if (PyObject_HasAttrString(obj, "dims")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5969 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5970 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5971 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5972 tmp = PyObject_GetAttrString(obj, "dims"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5973 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5974 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5975 PyErr_Format(PyExc_TypeError, "ExtSlice field \"dims\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5976 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5977 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5978 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5979 dims = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5980 if (dims == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5981 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5982 slice_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5983 res = obj2ast_slice(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5984 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5985 asdl_seq_SET(dims, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5986 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5987 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5988 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5989 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5990 PyErr_SetString(PyExc_TypeError, "required field \"dims\" missing from ExtSlice"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5991 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5992 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5993 *out = ExtSlice(dims, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5994 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5995 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
5996 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5997 isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5998 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
5999 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6000 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6001 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6002 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6003 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6004 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6005 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6006 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6007 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6008 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6009 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6010 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6011 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6012 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6013 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Index"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6014 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6015 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6016 *out = Index(value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6017 if (*out == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6018 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6019 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6020 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6021 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6022 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
6023 PyErr_Format(PyExc_TypeError, "expected some sort of slice, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6024 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6025 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6026 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6027 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6028 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6029 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6030 obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6031 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6032 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6033 int isinstance; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6034 |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6035 isinstance = PyObject_IsInstance(obj, (PyObject *)And_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6036 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6037 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6038 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6039 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6040 *out = And; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6041 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6042 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6043 isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6044 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6045 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6046 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6047 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6048 *out = Or; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6049 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6050 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6051 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6052 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6053 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
6054 PyErr_Format(PyExc_TypeError, "expected some sort of boolop, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6055 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6056 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6057 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6058 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6059 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6060 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6061 obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6062 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6063 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6064 int isinstance; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6065 |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6066 isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6067 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6068 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6069 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6070 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6071 *out = Add; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6072 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6073 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6074 isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6075 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6076 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6077 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6078 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6079 *out = Sub; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6080 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6081 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6082 isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6083 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6084 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6085 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6086 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6087 *out = Mult; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6088 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6089 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6090 isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6091 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6092 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6093 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6094 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6095 *out = Div; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6096 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6097 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6098 isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6099 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6100 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6101 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6102 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6103 *out = Mod; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6104 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6105 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6106 isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6107 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6108 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6109 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6110 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6111 *out = Pow; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6112 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6113 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6114 isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6115 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6116 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6117 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6118 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6119 *out = LShift; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6120 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6121 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6122 isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6123 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6124 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6125 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6126 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6127 *out = RShift; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6128 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6129 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6130 isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6131 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6132 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6133 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6134 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6135 *out = BitOr; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6136 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6137 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6138 isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6139 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6140 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6141 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6142 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6143 *out = BitXor; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6144 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6145 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6146 isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6147 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6148 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6149 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6150 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6151 *out = BitAnd; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6152 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6153 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6154 isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6155 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6156 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6157 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6158 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6159 *out = FloorDiv; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6160 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6161 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6162 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6163 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6164 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
6165 PyErr_Format(PyExc_TypeError, "expected some sort of operator, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6166 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6167 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6168 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6169 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6170 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6171 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6172 obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6173 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6174 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6175 int isinstance; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6176 |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6177 isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6178 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6179 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6180 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6181 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6182 *out = Invert; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6183 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6184 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6185 isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6186 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6187 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6188 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6189 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6190 *out = Not; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6191 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6192 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6193 isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6194 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6195 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6196 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6197 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6198 *out = UAdd; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6199 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6200 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6201 isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6202 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6203 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6204 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6205 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6206 *out = USub; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6207 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6208 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6209 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6210 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6211 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
6212 PyErr_Format(PyExc_TypeError, "expected some sort of unaryop, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6213 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6214 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6215 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6216 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6217 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6218 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6219 obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6220 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6221 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6222 int isinstance; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6223 |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6224 isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6225 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6226 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6227 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6228 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6229 *out = Eq; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6230 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6231 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6232 isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6233 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6234 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6235 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6236 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6237 *out = NotEq; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6238 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6239 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6240 isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6241 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6242 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6243 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6244 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6245 *out = Lt; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6246 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6247 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6248 isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6249 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6250 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6251 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6252 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6253 *out = LtE; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6254 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6255 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6256 isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6257 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6258 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6259 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6260 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6261 *out = Gt; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6262 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6263 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6264 isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6265 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6266 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6267 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6268 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6269 *out = GtE; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6270 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6271 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6272 isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6273 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6274 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6275 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6276 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6277 *out = Is; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6278 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6279 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6280 isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6281 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6282 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6283 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6284 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6285 *out = IsNot; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6286 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6287 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6288 isinstance = PyObject_IsInstance(obj, (PyObject *)In_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6289 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6290 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6291 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6292 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6293 *out = In; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6294 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6295 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6296 isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6297 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6298 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6299 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6300 if (isinstance) { |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6301 *out = NotIn; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6302 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6303 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6304 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6305 tmp = PyObject_Repr(obj); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6306 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
6307 PyErr_Format(PyExc_TypeError, "expected some sort of cmpop, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6308 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6309 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6310 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6311 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6312 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6313 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6314 obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6315 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6316 PyObject* tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6317 expr_ty target; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6318 expr_ty iter; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6319 asdl_seq* ifs; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6320 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6321 if (PyObject_HasAttrString(obj, "target")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6322 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6323 tmp = PyObject_GetAttrString(obj, "target"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6324 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6325 res = obj2ast_expr(tmp, &target, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6326 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6327 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6328 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6329 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6330 PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from comprehension"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6331 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6332 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6333 if (PyObject_HasAttrString(obj, "iter")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6334 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6335 tmp = PyObject_GetAttrString(obj, "iter"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6336 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6337 res = obj2ast_expr(tmp, &iter, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6338 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6339 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6340 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6341 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6342 PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from comprehension"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6343 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6344 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6345 if (PyObject_HasAttrString(obj, "ifs")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6346 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6347 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6348 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6349 tmp = PyObject_GetAttrString(obj, "ifs"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6350 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6351 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6352 PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6353 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6354 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6355 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6356 ifs = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6357 if (ifs == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6358 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6359 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6360 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6361 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6362 asdl_seq_SET(ifs, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6363 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6364 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6365 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6366 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6367 PyErr_SetString(PyExc_TypeError, "required field \"ifs\" missing from comprehension"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6368 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6369 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6370 *out = comprehension(target, iter, ifs, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6371 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6372 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6373 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6374 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6375 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6376 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6377 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6378 obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6379 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6380 PyObject* tmp = NULL; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6381 int isinstance; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6382 |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6383 int lineno; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6384 int col_offset; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6385 |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6386 if (obj == Py_None) { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6387 *out = NULL; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6388 return 0; |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6389 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6390 if (PyObject_HasAttrString(obj, "lineno")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6391 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6392 tmp = PyObject_GetAttrString(obj, "lineno"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6393 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6394 res = obj2ast_int(tmp, &lineno, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6395 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6396 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6397 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6398 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6399 PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from excepthandler"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6400 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6401 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6402 if (PyObject_HasAttrString(obj, "col_offset")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6403 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6404 tmp = PyObject_GetAttrString(obj, "col_offset"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6405 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6406 res = obj2ast_int(tmp, &col_offset, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6407 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6408 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6409 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6410 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6411 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6412 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6413 } |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6414 isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6415 if (isinstance == -1) { |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6416 return 1; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6417 } |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6418 if (isinstance) { |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6419 expr_ty type; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6420 identifier name; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6421 asdl_seq* body; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6422 |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6423 if (PyObject_HasAttrString(obj, "type")) { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6424 int res; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6425 tmp = PyObject_GetAttrString(obj, "type"); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6426 if (tmp == NULL) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6427 res = obj2ast_expr(tmp, &type, arena); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6428 if (res != 0) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6429 Py_XDECREF(tmp); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6430 tmp = NULL; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6431 } else { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6432 type = NULL; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6433 } |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6434 if (PyObject_HasAttrString(obj, "name")) { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6435 int res; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6436 tmp = PyObject_GetAttrString(obj, "name"); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6437 if (tmp == NULL) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6438 res = obj2ast_identifier(tmp, &name, arena); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6439 if (res != 0) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6440 Py_XDECREF(tmp); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6441 tmp = NULL; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6442 } else { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6443 name = NULL; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6444 } |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6445 if (PyObject_HasAttrString(obj, "body")) { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6446 int res; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6447 Py_ssize_t len; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6448 Py_ssize_t i; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6449 tmp = PyObject_GetAttrString(obj, "body"); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6450 if (tmp == NULL) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6451 if (!PyList_Check(tmp)) { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6452 PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6453 goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6454 } |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6455 len = PyList_GET_SIZE(tmp); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6456 body = asdl_seq_new(len, arena); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6457 if (body == NULL) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6458 for (i = 0; i < len; i++) { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6459 stmt_ty value; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6460 res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6461 if (res != 0) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6462 asdl_seq_SET(body, i, value); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6463 } |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6464 Py_XDECREF(tmp); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6465 tmp = NULL; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6466 } else { |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6467 PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ExceptHandler"); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6468 return 1; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6469 } |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6470 *out = ExceptHandler(type, name, body, lineno, col_offset, |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6471 arena); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6472 if (*out == NULL) goto failed; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6473 return 0; |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6474 } |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6475 |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6476 tmp = PyObject_Repr(obj); |
|
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6477 if (tmp == NULL) goto failed; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
46233
diff
changeset
|
6478 PyErr_Format(PyExc_TypeError, "expected some sort of excepthandler, but got %.400s", PyBytes_AS_STRING(tmp)); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6479 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6480 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6481 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6482 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6483 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6484 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6485 obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6486 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6487 PyObject* tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6488 asdl_seq* args; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6489 identifier vararg; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6490 expr_ty varargannotation; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6491 asdl_seq* kwonlyargs; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6492 identifier kwarg; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6493 expr_ty kwargannotation; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6494 asdl_seq* defaults; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6495 asdl_seq* kw_defaults; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6496 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6497 if (PyObject_HasAttrString(obj, "args")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6498 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6499 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6500 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6501 tmp = PyObject_GetAttrString(obj, "args"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6502 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6503 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6504 PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6505 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6506 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6507 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6508 args = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6509 if (args == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6510 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6511 arg_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6512 res = obj2ast_arg(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6513 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6514 asdl_seq_SET(args, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6515 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6516 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6517 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6518 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6519 PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from arguments"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6520 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6521 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6522 if (PyObject_HasAttrString(obj, "vararg")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6523 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6524 tmp = PyObject_GetAttrString(obj, "vararg"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6525 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6526 res = obj2ast_identifier(tmp, &vararg, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6527 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6528 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6529 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6530 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6531 vararg = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6532 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6533 if (PyObject_HasAttrString(obj, "varargannotation")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6534 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6535 tmp = PyObject_GetAttrString(obj, "varargannotation"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6536 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6537 res = obj2ast_expr(tmp, &varargannotation, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6538 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6539 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6540 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6541 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6542 varargannotation = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6543 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6544 if (PyObject_HasAttrString(obj, "kwonlyargs")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6545 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6546 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6547 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6548 tmp = PyObject_GetAttrString(obj, "kwonlyargs"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6549 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6550 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6551 PyErr_Format(PyExc_TypeError, "arguments field \"kwonlyargs\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6552 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6553 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6554 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6555 kwonlyargs = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6556 if (kwonlyargs == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6557 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6558 arg_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6559 res = obj2ast_arg(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6560 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6561 asdl_seq_SET(kwonlyargs, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6562 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6563 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6564 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6565 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6566 PyErr_SetString(PyExc_TypeError, "required field \"kwonlyargs\" missing from arguments"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6567 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6568 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6569 if (PyObject_HasAttrString(obj, "kwarg")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6570 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6571 tmp = PyObject_GetAttrString(obj, "kwarg"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6572 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6573 res = obj2ast_identifier(tmp, &kwarg, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6574 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6575 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6576 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6577 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6578 kwarg = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6579 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6580 if (PyObject_HasAttrString(obj, "kwargannotation")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6581 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6582 tmp = PyObject_GetAttrString(obj, "kwargannotation"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6583 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6584 res = obj2ast_expr(tmp, &kwargannotation, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6585 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6586 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6587 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6588 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6589 kwargannotation = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6590 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6591 if (PyObject_HasAttrString(obj, "defaults")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6592 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6593 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6594 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6595 tmp = PyObject_GetAttrString(obj, "defaults"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6596 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6597 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6598 PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6599 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6600 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6601 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6602 defaults = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6603 if (defaults == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6604 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6605 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6606 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6607 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6608 asdl_seq_SET(defaults, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6609 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6610 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6611 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6612 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6613 PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6614 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6615 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6616 if (PyObject_HasAttrString(obj, "kw_defaults")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6617 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6618 Py_ssize_t len; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6619 Py_ssize_t i; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6620 tmp = PyObject_GetAttrString(obj, "kw_defaults"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6621 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6622 if (!PyList_Check(tmp)) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6623 PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6624 goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6625 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6626 len = PyList_GET_SIZE(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6627 kw_defaults = asdl_seq_new(len, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6628 if (kw_defaults == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6629 for (i = 0; i < len; i++) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6630 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6631 res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6632 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6633 asdl_seq_SET(kw_defaults, i, value); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6634 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6635 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6636 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6637 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6638 PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6639 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6640 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6641 *out = arguments(args, vararg, varargannotation, kwonlyargs, kwarg, |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6642 kwargannotation, defaults, kw_defaults, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6643 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6644 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6645 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6646 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6647 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6648 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6649 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6650 obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6651 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6652 PyObject* tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6653 identifier arg; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6654 expr_ty annotation; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6655 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6656 if (PyObject_HasAttrString(obj, "arg")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6657 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6658 tmp = PyObject_GetAttrString(obj, "arg"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6659 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6660 res = obj2ast_identifier(tmp, &arg, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6661 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6662 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6663 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6664 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6665 PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from arg"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6666 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6667 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6668 if (PyObject_HasAttrString(obj, "annotation")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6669 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6670 tmp = PyObject_GetAttrString(obj, "annotation"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6671 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6672 res = obj2ast_expr(tmp, &annotation, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6673 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6674 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6675 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6676 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6677 annotation = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6678 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6679 *out = arg(arg, annotation, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6680 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6681 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6682 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6683 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6684 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6685 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6686 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6687 obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6688 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6689 PyObject* tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6690 identifier arg; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6691 expr_ty value; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6692 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6693 if (PyObject_HasAttrString(obj, "arg")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6694 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6695 tmp = PyObject_GetAttrString(obj, "arg"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6696 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6697 res = obj2ast_identifier(tmp, &arg, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6698 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6699 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6700 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6701 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6702 PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from keyword"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6703 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6704 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6705 if (PyObject_HasAttrString(obj, "value")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6706 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6707 tmp = PyObject_GetAttrString(obj, "value"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6708 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6709 res = obj2ast_expr(tmp, &value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6710 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6711 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6712 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6713 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6714 PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from keyword"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6715 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6716 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6717 *out = keyword(arg, value, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6718 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6719 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6720 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6721 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6722 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6723 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6724 int |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6725 obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6726 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6727 PyObject* tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6728 identifier name; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6729 identifier asname; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6730 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6731 if (PyObject_HasAttrString(obj, "name")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6732 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6733 tmp = PyObject_GetAttrString(obj, "name"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6734 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6735 res = obj2ast_identifier(tmp, &name, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6736 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6737 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6738 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6739 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6740 PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from alias"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6741 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6742 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6743 if (PyObject_HasAttrString(obj, "asname")) { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6744 int res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6745 tmp = PyObject_GetAttrString(obj, "asname"); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6746 if (tmp == NULL) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6747 res = obj2ast_identifier(tmp, &asname, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6748 if (res != 0) goto failed; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6749 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6750 tmp = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6751 } else { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6752 asname = NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6753 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6754 *out = alias(name, asname, arena); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6755 return 0; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6756 failed: |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6757 Py_XDECREF(tmp); |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6758 return 1; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6759 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6760 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6761 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6762 static struct PyModuleDef _astmodule = { |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6763 PyModuleDef_HEAD_INIT, "_ast" |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6764 }; |
| 36669 | 6765 PyMODINIT_FUNC |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6766 PyInit__ast(void) |
| 36669 | 6767 { |
| 6768 PyObject *m, *d; | |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6769 if (!init_types()) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6770 m = PyModule_Create(&_astmodule); |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6771 if (!m) return NULL; |
| 36669 | 6772 d = PyModule_GetDict(m); |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6773 if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6774 NULL; |
| 36669 | 6775 if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6776 return NULL; |
|
62464
3cf35231f7d3
Issue #9051: Instances of timezone class can now be pickled.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62155
diff
changeset
|
6777 if (PyModule_AddStringConstant(m, "__version__", "82163") < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6778 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6779 if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6780 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6781 if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6782 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6783 if (PyDict_SetItemString(d, "Interactive", (PyObject*)Interactive_type) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6784 < 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6785 if (PyDict_SetItemString(d, "Expression", (PyObject*)Expression_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6786 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6787 if (PyDict_SetItemString(d, "Suite", (PyObject*)Suite_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6788 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6789 if (PyDict_SetItemString(d, "stmt", (PyObject*)stmt_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6790 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6791 if (PyDict_SetItemString(d, "FunctionDef", (PyObject*)FunctionDef_type) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6792 < 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6793 if (PyDict_SetItemString(d, "ClassDef", (PyObject*)ClassDef_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6794 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6795 if (PyDict_SetItemString(d, "Return", (PyObject*)Return_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6796 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6797 if (PyDict_SetItemString(d, "Delete", (PyObject*)Delete_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6798 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6799 if (PyDict_SetItemString(d, "Assign", (PyObject*)Assign_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6800 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6801 if (PyDict_SetItemString(d, "AugAssign", (PyObject*)AugAssign_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6802 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6803 if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6804 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6805 if (PyDict_SetItemString(d, "While", (PyObject*)While_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6806 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6807 if (PyDict_SetItemString(d, "If", (PyObject*)If_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6808 if (PyDict_SetItemString(d, "With", (PyObject*)With_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6809 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6810 if (PyDict_SetItemString(d, "Raise", (PyObject*)Raise_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6811 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6812 if (PyDict_SetItemString(d, "TryExcept", (PyObject*)TryExcept_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6813 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6814 if (PyDict_SetItemString(d, "TryFinally", (PyObject*)TryFinally_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6815 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6816 if (PyDict_SetItemString(d, "Assert", (PyObject*)Assert_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6817 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6818 if (PyDict_SetItemString(d, "Import", (PyObject*)Import_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6819 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6820 if (PyDict_SetItemString(d, "ImportFrom", (PyObject*)ImportFrom_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6821 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6822 if (PyDict_SetItemString(d, "Global", (PyObject*)Global_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6823 return NULL; |
|
40965
30e5cb3a55ac
Provisional implementation of PEP 3104.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
40941
diff
changeset
|
6824 if (PyDict_SetItemString(d, "Nonlocal", (PyObject*)Nonlocal_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6825 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6826 if (PyDict_SetItemString(d, "Expr", (PyObject*)Expr_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6827 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6828 if (PyDict_SetItemString(d, "Pass", (PyObject*)Pass_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6829 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6830 if (PyDict_SetItemString(d, "Break", (PyObject*)Break_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6831 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6832 if (PyDict_SetItemString(d, "Continue", (PyObject*)Continue_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6833 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6834 if (PyDict_SetItemString(d, "expr", (PyObject*)expr_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6835 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6836 if (PyDict_SetItemString(d, "BoolOp", (PyObject*)BoolOp_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6837 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6838 if (PyDict_SetItemString(d, "BinOp", (PyObject*)BinOp_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6839 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6840 if (PyDict_SetItemString(d, "UnaryOp", (PyObject*)UnaryOp_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6841 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6842 if (PyDict_SetItemString(d, "Lambda", (PyObject*)Lambda_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6843 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6844 if (PyDict_SetItemString(d, "IfExp", (PyObject*)IfExp_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6845 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6846 if (PyDict_SetItemString(d, "Dict", (PyObject*)Dict_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6847 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6848 if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6849 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6850 if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6851 return NULL; |
|
41464
060c79f6d919
Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents:
41227
diff
changeset
|
6852 if (PyDict_SetItemString(d, "SetComp", (PyObject*)SetComp_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6853 return NULL; |
|
42193
090588a17490
Merged revisions 56154-56264 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42013
diff
changeset
|
6854 if (PyDict_SetItemString(d, "DictComp", (PyObject*)DictComp_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6855 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6856 if (PyDict_SetItemString(d, "GeneratorExp", |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6857 (PyObject*)GeneratorExp_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6858 if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6859 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6860 if (PyDict_SetItemString(d, "Compare", (PyObject*)Compare_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6861 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6862 if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6863 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6864 if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6865 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6866 if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6867 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6868 if (PyDict_SetItemString(d, "Bytes", (PyObject*)Bytes_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6869 NULL; |
|
39783
7a0ad110e91e
Patch #1550786: ellipsis literal.
Georg Brandl <georg@python.org>
parents:
39782
diff
changeset
|
6870 if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6871 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6872 if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6873 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6874 if (PyDict_SetItemString(d, "Subscript", (PyObject*)Subscript_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6875 0) return NULL; |
|
41699
e16c8e5c5ca4
Merged revisions 55225-55227,55229-55269 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41471
diff
changeset
|
6876 if (PyDict_SetItemString(d, "Starred", (PyObject*)Starred_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6877 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6878 if (PyDict_SetItemString(d, "Name", (PyObject*)Name_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6879 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6880 if (PyDict_SetItemString(d, "List", (PyObject*)List_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6881 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6882 if (PyDict_SetItemString(d, "Tuple", (PyObject*)Tuple_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6883 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6884 if (PyDict_SetItemString(d, "expr_context", |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6885 (PyObject*)expr_context_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6886 if (PyDict_SetItemString(d, "Load", (PyObject*)Load_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6887 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6888 if (PyDict_SetItemString(d, "Store", (PyObject*)Store_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6889 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6890 if (PyDict_SetItemString(d, "Del", (PyObject*)Del_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6891 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6892 if (PyDict_SetItemString(d, "AugLoad", (PyObject*)AugLoad_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6893 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6894 if (PyDict_SetItemString(d, "AugStore", (PyObject*)AugStore_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6895 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6896 if (PyDict_SetItemString(d, "Param", (PyObject*)Param_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6897 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6898 if (PyDict_SetItemString(d, "slice", (PyObject*)slice_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6899 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6900 if (PyDict_SetItemString(d, "Slice", (PyObject*)Slice_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6901 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6902 if (PyDict_SetItemString(d, "ExtSlice", (PyObject*)ExtSlice_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6903 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6904 if (PyDict_SetItemString(d, "Index", (PyObject*)Index_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6905 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6906 if (PyDict_SetItemString(d, "boolop", (PyObject*)boolop_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6907 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6908 if (PyDict_SetItemString(d, "And", (PyObject*)And_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6909 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6910 if (PyDict_SetItemString(d, "Or", (PyObject*)Or_type) < 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6911 if (PyDict_SetItemString(d, "operator", (PyObject*)operator_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6912 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6913 if (PyDict_SetItemString(d, "Add", (PyObject*)Add_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6914 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6915 if (PyDict_SetItemString(d, "Sub", (PyObject*)Sub_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6916 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6917 if (PyDict_SetItemString(d, "Mult", (PyObject*)Mult_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6918 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6919 if (PyDict_SetItemString(d, "Div", (PyObject*)Div_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6920 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6921 if (PyDict_SetItemString(d, "Mod", (PyObject*)Mod_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6922 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6923 if (PyDict_SetItemString(d, "Pow", (PyObject*)Pow_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6924 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6925 if (PyDict_SetItemString(d, "LShift", (PyObject*)LShift_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6926 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6927 if (PyDict_SetItemString(d, "RShift", (PyObject*)RShift_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6928 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6929 if (PyDict_SetItemString(d, "BitOr", (PyObject*)BitOr_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6930 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6931 if (PyDict_SetItemString(d, "BitXor", (PyObject*)BitXor_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6932 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6933 if (PyDict_SetItemString(d, "BitAnd", (PyObject*)BitAnd_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6934 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6935 if (PyDict_SetItemString(d, "FloorDiv", (PyObject*)FloorDiv_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6936 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6937 if (PyDict_SetItemString(d, "unaryop", (PyObject*)unaryop_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6938 return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6939 if (PyDict_SetItemString(d, "Invert", (PyObject*)Invert_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6940 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6941 if (PyDict_SetItemString(d, "Not", (PyObject*)Not_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6942 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6943 if (PyDict_SetItemString(d, "UAdd", (PyObject*)UAdd_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6944 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6945 if (PyDict_SetItemString(d, "USub", (PyObject*)USub_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6946 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6947 if (PyDict_SetItemString(d, "cmpop", (PyObject*)cmpop_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6948 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6949 if (PyDict_SetItemString(d, "Eq", (PyObject*)Eq_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6950 if (PyDict_SetItemString(d, "NotEq", (PyObject*)NotEq_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6951 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6952 if (PyDict_SetItemString(d, "Lt", (PyObject*)Lt_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6953 if (PyDict_SetItemString(d, "LtE", (PyObject*)LtE_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6954 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6955 if (PyDict_SetItemString(d, "Gt", (PyObject*)Gt_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6956 if (PyDict_SetItemString(d, "GtE", (PyObject*)GtE_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6957 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6958 if (PyDict_SetItemString(d, "Is", (PyObject*)Is_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6959 if (PyDict_SetItemString(d, "IsNot", (PyObject*)IsNot_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6960 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6961 if (PyDict_SetItemString(d, "In", (PyObject*)In_type) < 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6962 if (PyDict_SetItemString(d, "NotIn", (PyObject*)NotIn_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6963 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6964 if (PyDict_SetItemString(d, "comprehension", |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6965 (PyObject*)comprehension_type) < 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6966 if (PyDict_SetItemString(d, "excepthandler", |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6967 (PyObject*)excepthandler_type) < 0) return NULL; |
|
46231
81ee270a6eb5
Merged revisions 62047 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46229
diff
changeset
|
6968 if (PyDict_SetItemString(d, "ExceptHandler", |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6969 (PyObject*)ExceptHandler_type) < 0) return NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6970 if (PyDict_SetItemString(d, "arguments", (PyObject*)arguments_type) < |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6971 0) return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6972 if (PyDict_SetItemString(d, "arg", (PyObject*)arg_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6973 NULL; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36794
diff
changeset
|
6974 if (PyDict_SetItemString(d, "keyword", (PyObject*)keyword_type) < 0) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6975 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6976 if (PyDict_SetItemString(d, "alias", (PyObject*)alias_type) < 0) return |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6977 NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
6978 return m; |
| 36669 | 6979 } |
| 6980 | |
| 35742 | 6981 |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
6982 PyObject* PyAST_mod2obj(mod_ty t) |
| 35742 | 6983 { |
|
36660
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
6984 init_types(); |
|
3c0b26113df6
Generate code to recursively copy an AST into
Martin v. Löwis <martin@v.loewis.de>
parents:
36174
diff
changeset
|
6985 return ast2obj_mod(t); |
| 35742 | 6986 } |
|
42013
cd125fe83051
Make identifiers str (not str8) objects throughout.
Martin v. Löwis <martin@v.loewis.de>
parents:
41825
diff
changeset
|
6987 |
|
46227
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6988 /* mode is 0 for "exec", 1 for "eval" and 2 for "single" input */ |
|
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6989 mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6990 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6991 mod_ty res; |
|
46227
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6992 PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type, |
|
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6993 (PyObject*)Interactive_type}; |
|
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6994 char *req_name[] = {"Module", "Expression", "Interactive"}; |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
6995 int isinstance; |
|
46227
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6996 assert(0 <= mode && mode <= 2); |
|
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6997 |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
6998 init_types(); |
|
46227
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
6999 |
|
57676
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
7000 isinstance = PyObject_IsInstance(ast, req_type[mode]); |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
7001 if (isinstance == -1) |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
7002 return NULL; |
|
d8c5e38515b6
regenerate Python-ast.c
Benjamin Peterson <benjamin@python.org>
parents:
55311
diff
changeset
|
7003 if (!isinstance) { |
|
46227
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
7004 PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s", |
|
b2d93a960b98
Merged revisions 62039-62042 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46215
diff
changeset
|
7005 req_name[mode], Py_TYPE(ast)->tp_name); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7006 return NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7007 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7008 if (obj2ast_mod(ast, &res, arena) != 0) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7009 return NULL; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7010 else |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7011 return res; |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7012 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7013 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7014 int PyAST_Check(PyObject* obj) |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7015 { |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7016 init_types(); |
|
46229
07b36d2b7534
Merged revisions 62049,62054 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents:
46227
diff
changeset
|
7017 return PyObject_IsInstance(obj, (PyObject*)&AST_type); |
|
46208
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7018 } |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7019 |
|
ea75b12fe8e7
Merged revisions 62004 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
45495
diff
changeset
|
7020 |
