Skip to content

Commit 14ac8af

Browse files
authored
[mypyc] Refactor methods into top-level functions in mypyc.genstatement (python#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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy