Skip to content

Commit

Permalink
fix undefined-loop-variable with break and continue statements …
Browse files Browse the repository at this point in the history
…in `else` blocks
  • Loading branch information
DetachHead committed Aug 18, 2022
1 parent a2c57ec commit 8cf3f79
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
2 changes: 1 addition & 1 deletion pylint/checkers/variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -2242,7 +2242,7 @@ def _loopvar_name(self, node: astroid.Name) -> None:
self.add_message("undefined-loop-variable", args=node.name, node=node)
return
if any(
isinstance(else_stmt, (nodes.Return, nodes.Raise))
isinstance(else_stmt, (nodes.Return, nodes.Raise, nodes.Break, nodes.Continue))
for else_stmt in assign.orelse
):
return
Expand Down
18 changes: 18 additions & 0 deletions tests/functional/u/undefined/undefined_loop_variable.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,24 @@ def for_else_raises(iterable):
print(thing)


def for_else_break(iterable):
while True:
for thing in iterable:
break
else:
break
print(thing)


def for_else_continue(iterable):
while True:
for thing in iterable:
break
else:
continue
print(thing)


lst = []
lst2 = [1, 2, 3]

Expand Down

0 comments on commit 8cf3f79

Please sign in to comment.