Skip to content

Commit d54fc8e

Browse files
authored
Fix line numbers for variables bound by except (#8628)
1 parent d28b396 commit d54fc8e

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

mypy/fastparse.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ def visit(self, node: Optional[AST]) -> Any:
315315
self.visitor_cache[typeobj] = visitor
316316
return visitor(node)
317317

318-
def set_line(self, node: N, n: Union[ast3.expr, ast3.stmt]) -> N:
318+
def set_line(self, node: N, n: Union[ast3.expr, ast3.stmt, ast3.ExceptHandler]) -> N:
319319
node.line = n.lineno
320320
node.column = n.col_offset
321321
node.end_line = getattr(n, "end_lineno", None) if isinstance(n, ast3.expr) else None
@@ -838,7 +838,9 @@ def visit_Raise(self, n: ast3.Raise) -> RaiseStmt:
838838

839839
# Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)
840840
def visit_Try(self, n: ast3.Try) -> TryStmt:
841-
vs = [NameExpr(h.name) if h.name is not None else None for h in n.handlers]
841+
vs = [
842+
self.set_line(NameExpr(h.name), h) if h.name is not None else None for h in n.handlers
843+
]
842844
types = [self.visit(h.type) for h in n.handlers]
843845
handlers = [self.as_required_block(h.body, h.lineno) for h in n.handlers]
844846

mypy/fastparse2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def visit(self, node: Optional[AST]) -> Any: # same as in typed_ast stub
187187
self.visitor_cache[typeobj] = visitor
188188
return visitor(node)
189189

190-
def set_line(self, node: N, n: Union[ast27.expr, ast27.stmt]) -> N:
190+
def set_line(self, node: N, n: Union[ast27.expr, ast27.stmt, ast27.ExceptHandler]) -> N:
191191
node.line = n.lineno
192192
node.column = n.col_offset
193193
return node
@@ -694,7 +694,7 @@ def try_handler(self,
694694
if item.name is None:
695695
vs.append(None)
696696
elif isinstance(item.name, Name):
697-
vs.append(NameExpr(item.name.id))
697+
vs.append(self.set_line(NameExpr(item.name.id), item))
698698
else:
699699
self.fail("Sorry, `except <expr>, <anything but a name>` is not supported",
700700
item.lineno, item.col_offset)

0 commit comments

Comments
 (0)