Skip to content

Commit 8871844

Browse files
elazarggvanrossum
authored andcommitted
Add missing methods to TraverserVisitor and SubexpressionFinder (#3287)
Branched out of #3164.
1 parent 8293f40 commit 8871844

File tree

3 files changed

+44
-4
lines changed

3 files changed

+44
-4
lines changed

mypy/server/subexpr.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from mypy.nodes import (
66
Expression, Node, MemberExpr, YieldFromExpr, YieldExpr, CallExpr, OpExpr, ComparisonExpr,
77
SliceExpr, CastExpr, RevealTypeExpr, UnaryExpr, ListExpr, TupleExpr, DictExpr, SetExpr,
8-
IndexExpr, GeneratorExpr, ListComprehension, ConditionalExpr, TypeApplication, LambdaExpr,
9-
StarExpr, BackquoteExpr, AwaitExpr
8+
IndexExpr, GeneratorExpr, ListComprehension, SetComprehension, DictionaryComprehension,
9+
ConditionalExpr, TypeApplication, LambdaExpr, StarExpr, BackquoteExpr, AwaitExpr,
1010
)
1111
from mypy.traverser import TraverserVisitor
1212

@@ -104,10 +104,18 @@ def visit_generator_expr(self, e: GeneratorExpr) -> None:
104104
self.add(e)
105105
super().visit_generator_expr(e)
106106

107+
def visit_dictionary_comprehension(self, e: DictionaryComprehension) -> None:
108+
self.add(e)
109+
super().visit_dictionary_comprehension(e)
110+
107111
def visit_list_comprehension(self, e: ListComprehension) -> None:
108112
self.add(e)
109113
super().visit_list_comprehension(e)
110114

115+
def visit_set_comprehension(self, e: SetComprehension) -> None:
116+
self.add(e)
117+
super().visit_set_comprehension(e)
118+
111119
def visit_conditional_expr(self, e: ConditionalExpr) -> None:
112120
self.add(e)
113121
super().visit_conditional_expr(e)

mypy/strconv.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,9 @@ def visit_slice_expr(self, o: 'mypy.nodes.SliceExpr') -> str:
505505
def visit_backquote_expr(self, o: 'mypy.nodes.BackquoteExpr') -> str:
506506
return self.dump([o.expr], o)
507507

508+
def visit_temp_node(self, o: 'mypy.nodes.TempNode') -> str:
509+
return self.dump([o.type], o)
510+
508511

509512
def dump_tagged(nodes: Sequence[object], tag: Optional[str], str_conv: 'StrConv') -> str:
510513
"""Convert an array into a pretty-printed multiline string representation.

mypy/traverser.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
ForStmt, ReturnStmt, AssertStmt, DelStmt, IfStmt, RaiseStmt,
88
TryStmt, WithStmt, MemberExpr, OpExpr, SliceExpr, CastExpr, RevealTypeExpr,
99
UnaryExpr, ListExpr, TupleExpr, DictExpr, SetExpr, IndexExpr,
10-
GeneratorExpr, ListComprehension, ConditionalExpr, TypeApplication,
10+
GeneratorExpr, ListComprehension, SetComprehension, DictionaryComprehension,
11+
ConditionalExpr, TypeApplication, ExecStmt, Import, ImportFrom,
1112
LambdaExpr, ComparisonExpr, OverloadedFuncDef, YieldFromExpr,
12-
YieldExpr, StarExpr, BackquoteExpr, AwaitExpr
13+
YieldExpr, StarExpr, BackquoteExpr, AwaitExpr, PrintStmt,
1314
)
1415

1516

@@ -211,9 +212,22 @@ def visit_generator_expr(self, o: GeneratorExpr) -> None:
211212
cond.accept(self)
212213
o.left_expr.accept(self)
213214

215+
def visit_dictionary_comprehension(self, o: DictionaryComprehension) -> None:
216+
for index, sequence, conditions in zip(o.indices, o.sequences,
217+
o.condlists):
218+
sequence.accept(self)
219+
index.accept(self)
220+
for cond in conditions:
221+
cond.accept(self)
222+
o.key.accept(self)
223+
o.value.accept(self)
224+
214225
def visit_list_comprehension(self, o: ListComprehension) -> None:
215226
o.generator.accept(self)
216227

228+
def visit_set_comprehension(self, o: SetComprehension) -> None:
229+
o.generator.accept(self)
230+
217231
def visit_conditional_expr(self, o: ConditionalExpr) -> None:
218232
o.cond.accept(self)
219233
o.if_expr.accept(self)
@@ -233,3 +247,18 @@ def visit_backquote_expr(self, o: BackquoteExpr) -> None:
233247

234248
def visit_await_expr(self, o: AwaitExpr) -> None:
235249
o.expr.accept(self)
250+
251+
def visit_import(self, o: Import) -> None:
252+
for a in o.assignments:
253+
a.accept(self)
254+
255+
def visit_import_from(self, o: ImportFrom) -> None:
256+
for a in o.assignments:
257+
a.accept(self)
258+
259+
def visit_print_stmt(self, o: PrintStmt) -> None:
260+
for arg in o.args:
261+
arg.accept(self)
262+
263+
def visit_exec_stmt(self, o: ExecStmt) -> None:
264+
o.expr.accept(self)

0 commit comments

Comments
 (0)