Skip to content

Commit 14ac8af

Browse files
authored
[mypyc] Refactor methods into top-level functions in mypyc.genstatement (#8432)
Also experiment with formatting long import statements with one name per line. Work on mypyc/mypyc#714.
1 parent ce24783 commit 14ac8af

File tree

3 files changed

+559
-504
lines changed

3 files changed

+559
-504
lines changed

mypyc/genfunc.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from mypyc.sametype import is_same_method_signature
3030
from mypyc.genopsutil import concrete_arg_kind, is_constant, add_self_to_env
3131
from mypyc.genopscontext import FuncInfo, GeneratorClass, ImplicitClass
32-
from mypyc.genstatement import BuildStatementIR
32+
from mypyc.genstatement import transform_try_except
3333
from mypyc.genops import IRBuilder
3434

3535

@@ -852,8 +852,8 @@ def else_body() -> None:
852852
self.builder.nonlocal_control[-1].gen_break(self.builder, o.line)
853853

854854
self.builder.push_loop_stack(loop_block, done_block)
855-
BuildStatementIR(self.builder).visit_try_except(
856-
try_body, [(None, None, except_body)], else_body, o.line
855+
transform_try_except(
856+
self.builder, try_body, [(None, None, except_body)], else_body, o.line
857857
)
858858
self.builder.pop_loop_stack()
859859

mypyc/genopsvisitor.py

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,23 @@
2323
from mypyc.genops import IRVisitor, IRBuilder, UnsupportedException
2424
from mypyc.genclass import BuildClassIR
2525
from mypyc.genfunc import BuildFuncIR
26-
from mypyc.genstatement import BuildStatementIR
26+
from mypyc.genstatement import (
27+
transform_block,
28+
transform_expression_stmt,
29+
transform_return_stmt,
30+
transform_assignment_stmt,
31+
transform_operator_assignment_stmt,
32+
transform_if_stmt,
33+
transform_while_stmt,
34+
transform_for_stmt,
35+
transform_break_stmt,
36+
transform_continue_stmt,
37+
transform_raise_stmt,
38+
transform_try_stmt,
39+
transform_with_stmt,
40+
transform_assert_stmt,
41+
transform_del_stmt,
42+
)
2743
from mypyc.genexpr import BuildExpressionIR
2844

2945

@@ -69,54 +85,54 @@ def visit_decorator(self, dec: Decorator) -> None:
6985
BuildFuncIR(self.builder).visit_decorator(dec)
7086

7187
def visit_block(self, block: Block) -> None:
72-
BuildStatementIR(self.builder).visit_block(block)
88+
transform_block(self.builder, block)
7389

7490
# Statements
7591

7692
def visit_expression_stmt(self, stmt: ExpressionStmt) -> None:
77-
BuildStatementIR(self.builder).visit_expression_stmt(stmt)
93+
transform_expression_stmt(self.builder, stmt)
7894

7995
def visit_return_stmt(self, stmt: ReturnStmt) -> None:
80-
BuildStatementIR(self.builder).visit_return_stmt(stmt)
96+
transform_return_stmt(self.builder, stmt)
8197

8298
def visit_assignment_stmt(self, stmt: AssignmentStmt) -> None:
83-
BuildStatementIR(self.builder).visit_assignment_stmt(stmt)
99+
transform_assignment_stmt(self.builder, stmt)
84100

85101
def visit_operator_assignment_stmt(self, stmt: OperatorAssignmentStmt) -> None:
86-
BuildStatementIR(self.builder).visit_operator_assignment_stmt(stmt)
102+
transform_operator_assignment_stmt(self.builder, stmt)
87103

88104
def visit_if_stmt(self, stmt: IfStmt) -> None:
89-
BuildStatementIR(self.builder).visit_if_stmt(stmt)
105+
transform_if_stmt(self.builder, stmt)
90106

91107
def visit_while_stmt(self, stmt: WhileStmt) -> None:
92-
BuildStatementIR(self.builder).visit_while_stmt(stmt)
108+
transform_while_stmt(self.builder, stmt)
93109

94110
def visit_for_stmt(self, stmt: ForStmt) -> None:
95-
BuildStatementIR(self.builder).visit_for_stmt(stmt)
111+
transform_for_stmt(self.builder, stmt)
96112

97113
def visit_break_stmt(self, stmt: BreakStmt) -> None:
98-
BuildStatementIR(self.builder).visit_break_stmt(stmt)
114+
transform_break_stmt(self.builder, stmt)
99115

100116
def visit_continue_stmt(self, stmt: ContinueStmt) -> None:
101-
BuildStatementIR(self.builder).visit_continue_stmt(stmt)
117+
transform_continue_stmt(self.builder, stmt)
102118

103119
def visit_raise_stmt(self, stmt: RaiseStmt) -> None:
104-
BuildStatementIR(self.builder).visit_raise_stmt(stmt)
120+
transform_raise_stmt(self.builder, stmt)
105121

106122
def visit_try_stmt(self, stmt: TryStmt) -> None:
107-
BuildStatementIR(self.builder).visit_try_stmt(stmt)
123+
transform_try_stmt(self.builder, stmt)
108124

109125
def visit_with_stmt(self, stmt: WithStmt) -> None:
110-
BuildStatementIR(self.builder).visit_with_stmt(stmt)
126+
transform_with_stmt(self.builder, stmt)
111127

112128
def visit_pass_stmt(self, stmt: PassStmt) -> None:
113129
pass
114130

115131
def visit_assert_stmt(self, stmt: AssertStmt) -> None:
116-
BuildStatementIR(self.builder).visit_assert_stmt(stmt)
132+
transform_assert_stmt(self.builder, stmt)
117133

118134
def visit_del_stmt(self, stmt: DelStmt) -> None:
119-
BuildStatementIR(self.builder).visit_del_stmt(stmt)
135+
transform_del_stmt(self.builder, stmt)
120136

121137
def visit_global_decl(self, stmt: GlobalDecl) -> None:
122138
# Pure declaration -- no runtime effect

0 commit comments

Comments
 (0)