1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
---
source: crates/codegen/src/compile.rs
expression: "compile_exec(\"\\\nasync def test():\n for stop_exc in (StopIteration('spam'), StopAsyncIteration('ham')):\n with self.subTest(type=type(stop_exc)):\n try:\n async with egg():\n raise stop_exc\n except Exception as ex:\n self.assertIs(ex, stop_exc)\n else:\n self.fail(f'{stop_exc} was suppressed')\n\")"
---
1 0 RESUME (0)
1 LOAD_CONST (<code object test at ??? file "source_path", line 1>): 1 0 RETURN_GENERATOR
1 POP_TOP
>> 2 RESUME (0)
2 >> 3 LOAD_GLOBAL (1, NULL + StopIteration)
>> 4 CACHE
>> 5 CACHE
6 CACHE
7 CACHE
8 LOAD_CONST ("spam")
9 CALL (1)
>> 10 CACHE
11 CACHE
12 CACHE
13 LOAD_GLOBAL (3, NULL + StopAsyncIteration)
14 CACHE
15 CACHE
16 CACHE
17 CACHE
18 LOAD_CONST ("ham")
19 CALL (1)
20 CACHE
21 CACHE
22 CACHE
23 BUILD_TUPLE (2)
24 GET_ITER
25 FOR_ITER (71)
26 CACHE
27 STORE_FAST (0, stop_exc)
3 28 LOAD_GLOBAL (4, self)
29 CACHE
30 CACHE
31 CACHE
>> 32 CACHE
33 LOAD_ATTR (7, subTest, method=true)
34 CACHE
35 CACHE
36 CACHE
37 CACHE
38 CACHE
39 CACHE
40 CACHE
41 CACHE
42 CACHE
43 LOAD_GLOBAL (9, NULL + type)
44 CACHE
45 CACHE
46 CACHE
47 CACHE
>> 48 LOAD_FAST (0, stop_exc)
49 CALL (1)
50 CACHE
51 CACHE
52 CACHE
53 LOAD_CONST (("type"))
54 CALL_KW (1)
55 CACHE
56 CACHE
57 CACHE
58 COPY (1)
59 LOAD_SPECIAL (__exit__)
60 SWAP (2)
61 SWAP (3)
62 LOAD_SPECIAL (__enter__)
63 CALL (0)
64 CACHE
65 CACHE
66 CACHE
67 POP_TOP
4 68 NOP
5 69 LOAD_GLOBAL (11, NULL + egg)
70 CACHE
>> 71 CACHE
72 CACHE
73 CACHE
74 CALL (0)
75 CACHE
76 CACHE
77 CACHE
78 COPY (1)
79 LOAD_SPECIAL (__aexit__)
80 SWAP (2)
81 SWAP (3)
82 LOAD_SPECIAL (__aenter__)
83 CALL (0)
84 CACHE
85 CACHE
86 CACHE
87 GET_AWAITABLE (1)
88 LOAD_CONST (None)
89 SEND (3)
90 CACHE
91 YIELD_VALUE (1)
92 RESUME (3)
93 JUMP_BACKWARD_NO_INTERRUPT(5)
94 END_SEND
95 POP_TOP
6 96 LOAD_FAST (0, stop_exc)
97 RAISE_VARARGS (Raise)
2 98 END_FOR
99 POP_ITER
100 LOAD_CONST (None)
101 RETURN_VALUE
5 102 CLEANUP_THROW
103 JUMP_BACKWARD_NO_INTERRUPT(10)
104 PUSH_EXC_INFO
105 WITH_EXCEPT_START
106 GET_AWAITABLE (2)
107 LOAD_CONST (None)
108 SEND (4)
109 CACHE
110 YIELD_VALUE (1)
111 RESUME (3)
112 JUMP_BACKWARD_NO_INTERRUPT(5)
113 CLEANUP_THROW
114 END_SEND
115 TO_BOOL
116 CACHE
117 CACHE
118 CACHE
119 POP_JUMP_IF_TRUE (2)
120 CACHE
121 NOT_TAKEN
122 RERAISE (2)
123 POP_TOP
124 POP_EXCEPT
125 POP_TOP
126 POP_TOP
127 POP_TOP
128 JUMP_FORWARD (48)
129 COPY (3)
130 POP_EXCEPT
131 RERAISE (1)
132 PUSH_EXC_INFO
7 133 LOAD_GLOBAL (12, Exception)
134 CACHE
135 CACHE
136 CACHE
137 CACHE
138 CHECK_EXC_MATCH
139 POP_JUMP_IF_FALSE (32)
140 CACHE
141 NOT_TAKEN
142 STORE_FAST (1, ex)
8 143 LOAD_GLOBAL (4, self)
144 CACHE
145 CACHE
146 CACHE
147 CACHE
148 LOAD_ATTR (15, assertIs, method=true)
149 CACHE
150 CACHE
151 CACHE
152 CACHE
153 CACHE
154 CACHE
155 CACHE
156 CACHE
157 CACHE
158 LOAD_FAST_LOAD_FAST (ex, stop_exc)
159 CALL (2)
160 CACHE
161 CACHE
162 CACHE
163 POP_TOP
164 POP_EXCEPT
165 LOAD_CONST (None)
166 STORE_FAST (1, ex)
167 DELETE_FAST (1, ex)
168 JUMP_FORWARD (32)
169 LOAD_CONST (None)
170 STORE_FAST (1, ex)
171 DELETE_FAST (1, ex)
172 RERAISE (1)
173 RERAISE (0)
174 COPY (3)
175 POP_EXCEPT
176 RERAISE (1)
10 177 LOAD_GLOBAL (4, self)
178 CACHE
179 CACHE
180 CACHE
181 CACHE
182 LOAD_ATTR (17, fail, method=true)
183 CACHE
184 CACHE
185 CACHE
186 CACHE
>> 187 CACHE
188 CACHE
189 CACHE
190 CACHE
191 CACHE
192 LOAD_FAST_BORROW (0, stop_exc)
193 FORMAT_SIMPLE
194 LOAD_CONST (" was suppressed")
195 BUILD_STRING (2)
196 CALL (1)
197 CACHE
198 CACHE
199 CACHE
200 POP_TOP
201 NOP
3 202 LOAD_CONST (None)
203 LOAD_CONST (None)
>> 204 LOAD_CONST (None)
205 CALL (3)
206 CACHE
207 CACHE
208 CACHE
209 POP_TOP
210 JUMP_BACKWARD (187)
211 CACHE
212 PUSH_EXC_INFO
213 WITH_EXCEPT_START
214 TO_BOOL
215 CACHE
216 CACHE
217 CACHE
218 POP_JUMP_IF_TRUE (2)
219 CACHE
220 NOT_TAKEN
221 RERAISE (2)
222 POP_TOP
223 POP_EXCEPT
224 POP_TOP
225 POP_TOP
226 POP_TOP
227 JUMP_BACKWARD (204)
228 CACHE
229 COPY (3)
230 POP_EXCEPT
231 RERAISE (1)
2 232 CALL_INTRINSIC_1 (StopIterationError)
233 RERAISE (1)
2 MAKE_FUNCTION
3 STORE_NAME (0, test)
4 LOAD_CONST (None)
5 RETURN_VALUE