Skip to content

Commit e22ec9c

Browse files
committed
WIP refactor generator class creation to a separate pass
1 parent 59e9e7d commit e22ec9c

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

mypyc/irbuild/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def f(x: int) -> int:
3939
from mypyc.irbuild.prebuildvisitor import PreBuildVisitor
4040
from mypyc.irbuild.prepare import (
4141
build_type_map,
42+
gen_generator_types,
4243
create_generator_class_if_needed,
4344
find_singledispatch_register_impls,
4445
)
@@ -68,6 +69,7 @@ def build_ir(
6869
"""
6970

7071
build_type_map(mapper, modules, graph, types, options, errors)
72+
gen_generator_types(mapper, modules)
7173
singledispatch_info = find_singledispatch_register_impls(modules, errors)
7274

7375
result: ModuleIRs = {}

mypyc/irbuild/prepare.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ def prepare_func_def(
196196
mapper: Mapper,
197197
options: CompilerOptions,
198198
) -> FuncDecl:
199-
create_generator_class_if_needed(module_name, class_name, fdef, mapper)
199+
#create_generator_class_if_needed(module_name, class_name, fdef, mapper)
200+
#assert False
200201

201202
kind = (
202203
FUNC_CLASSMETHOD
@@ -811,3 +812,9 @@ def registered_impl_from_possible_register_call(
811812
if isinstance(node, Decorator):
812813
return RegisteredImpl(node.func, dispatch_type)
813814
return None
815+
816+
817+
def gen_generator_types(mapper: Mapper, modules: list[MypyFile]) -> None:
818+
for fdef, ir in mapper.func_to_decl.items():
819+
if isinstance(fdef, FuncDef):
820+
create_generator_class_if_needed(ir.module_name, ir.class_name, fdef, mapper)

0 commit comments

Comments
 (0)