Skip to content

Commit 9d4f550

Browse files
[fix] unnecessary-dict-index-lookup for in-loop deletion of an index from enumerate (#10628)
Closes #10627
1 parent a0bfd3f commit 9d4f550

File tree

4 files changed

+16
-1
lines changed

4 files changed

+16
-1
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Fixed a crash in :ref:`unnecessary-dict-index-lookup` when the index of an enumerated list
2+
was deleted inside a for loop.
3+
4+
Closes #10627

pylint/checkers/refactoring/refactoring_checker.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2358,7 +2358,8 @@ def _check_unnecessary_list_index_lookup(
23582358

23592359
if (
23602360
isinstance(node, nodes.For)
2361-
and index.lookup(index.name)[1][-1].lineno > node.lineno
2361+
and (lookup_results := index.lookup(index.name)[1])
2362+
and lookup_results[-1].lineno > node.lineno
23622363
):
23632364
# Ignore this subscript if it has been redefined after
23642365
# the for loop.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
"""Test for deleted index."""
2+
3+
# pylint: disable=missing-function-docstring
4+
5+
def test_deleted_index(letters: list[str]) -> None:
6+
for index, letter in enumerate(letters): # [unused-variable]
7+
del index
8+
print(letters[index]) # [unnecessary-list-index-lookup]
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
unused-variable:6:15:6:21:test_deleted_index:Unused variable 'letter':UNDEFINED
2+
unnecessary-list-index-lookup:8:14:8:28:test_deleted_index:Unnecessary list index lookup, use 'letter' instead:HIGH

0 commit comments

Comments
 (0)