Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 664a3d2

Browse files
committed
Add a hacky fallback to lists from generators
1 parent b775b51 commit 664a3d2

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

mypyc/genops.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2716,6 +2716,21 @@ def gen_inner_stmts() -> None:
27162716
self.comprehension_helper(loop_params, gen_inner_stmts, o.line)
27172717
return d
27182718

2719+
def visit_generator_expr(self, o: GeneratorExpr) -> Value:
2720+
print('{}:{}: Warning: treating generator comprehension as list'.format(
2721+
self.module_path, o.line))
2722+
2723+
gen = o
2724+
list_ops = self.primitive_op(new_list_op, [], o.line)
2725+
loop_params = list(zip(gen.indices, gen.sequences, gen.condlists))
2726+
2727+
def gen_inner_stmts() -> None:
2728+
e = self.accept(gen.left_expr)
2729+
self.primitive_op(list_append_op, [list_ops, e], o.line)
2730+
2731+
self.comprehension_helper(loop_params, gen_inner_stmts, o.line)
2732+
return list_ops
2733+
27192734
def comprehension_helper(self,
27202735
loop_params: List[Tuple[Lvalue, Expression, List[Expression]]],
27212736
gen_inner_stmts: Callable[[], None],
@@ -2859,9 +2874,6 @@ def visit_enum_call_expr(self, o: EnumCallExpr) -> Value:
28592874
def visit_exec_stmt(self, o: ExecStmt) -> None:
28602875
raise NotImplementedError
28612876

2862-
def visit_generator_expr(self, o: GeneratorExpr) -> Value:
2863-
raise NotImplementedError
2864-
28652877
def visit_namedtuple_expr(self, o: NamedTupleExpr) -> Value:
28662878
raise NotImplementedError
28672879

0 commit comments

Comments
 (0)