@@ -4758,6 +4758,19 @@ pop_inlined_comprehension_state(compiler *c, location loc,
47584758 return SUCCESS ;
47594759}
47604760
4761+ static inline int
4762+ codegen_comprehension_iter (compiler * c , comprehension_ty comp )
4763+ {
4764+ VISIT (c , expr , comp -> iter );
4765+ if (comp -> is_async ) {
4766+ ADDOP (c , LOC (comp -> iter ), GET_AITER );
4767+ }
4768+ else {
4769+ ADDOP (c , LOC (comp -> iter ), GET_ITER );
4770+ }
4771+ return SUCCESS ;
4772+ }
4773+
47614774static int
47624775codegen_comprehension (compiler * c , expr_ty e , int type ,
47634776 identifier name , asdl_comprehension_seq * generators , expr_ty elt ,
@@ -4777,7 +4790,9 @@ codegen_comprehension(compiler *c, expr_ty e, int type,
47774790
47784791 outermost = (comprehension_ty ) asdl_seq_GET (generators , 0 );
47794792 if (is_inlined ) {
4780- VISIT (c , expr , outermost -> iter );
4793+ if (codegen_comprehension_iter (c , outermost )) {
4794+ goto error ;
4795+ }
47814796 if (push_inlined_comprehension_state (c , loc , entry , & inline_state )) {
47824797 goto error ;
47834798 }
@@ -4851,15 +4866,10 @@ codegen_comprehension(compiler *c, expr_ty e, int type,
48514866 }
48524867 Py_CLEAR (co );
48534868
4854- VISIT (c , expr , outermost -> iter );
4855- if (type == COMP_GENEXP ) {
4856- if (outermost -> is_async ) {
4857- ADDOP (c , loc , GET_AITER );
4858- }
4859- else {
4860- ADDOP (c , loc , GET_ITER );
4861- }
4869+ if (codegen_comprehension_iter (c , outermost )) {
4870+ goto error ;
48624871 }
4872+
48634873 ADDOP_I (c , loc , CALL , 0 );
48644874
48654875 if (is_async_comprehension && type != COMP_GENEXP ) {
0 commit comments