Skip to content

Commit

Permalink
Fix a crash in undefined-loop-variable with enumerate() (#9876)
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobtylerwalls authored Aug 16, 2024
1 parent 18f03b7 commit cb6db06
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
3 changes: 3 additions & 0 deletions doc/whatsnew/fragments/9875.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Fix a crash in ``undefined-loop-variable`` when providing the ``iterable`` argument to ``enumerate()``.

Closes #9875
2 changes: 1 addition & 1 deletion pylint/checkers/variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -2667,7 +2667,7 @@ def _loopvar_name(self, node: astroid.Name) -> None:
likely_call = assign.iter
if isinstance(assign.iter, nodes.IfExp):
likely_call = assign.iter.body
if isinstance(likely_call, nodes.Call):
if isinstance(likely_call, nodes.Call) and likely_call.args:
inferred = next(likely_call.args[0].infer())
except astroid.InferenceError:
self.add_message("undefined-loop-variable", args=node.name, node=node)
Expand Down
7 changes: 7 additions & 0 deletions tests/functional/r/regression/regression_9875_enumerate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""https://github.com/pylint-dev/pylint/issues/9875"""
# value = 0
for idx, value in enumerate(iterable=[1, 2, 3]):
print(f'{idx=} {value=}')
# +1: [undefined-loop-variable, undefined-loop-variable]
for idx, value in enumerate(iterable=[value-1, value-2*1]):
print(f'{idx=} {value=}')
2 changes: 2 additions & 0 deletions tests/functional/r/regression/regression_9875_enumerate.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
undefined-loop-variable:6:38:6:43::Using possibly undefined loop variable 'value':UNDEFINED
undefined-loop-variable:6:47:6:52::Using possibly undefined loop variable 'value':UNDEFINED

0 comments on commit cb6db06

Please sign in to comment.