diff --git a/perflint/list_checker.py b/perflint/list_checker.py index 068f225..a4dcb60 100644 --- a/perflint/list_checker.py +++ b/perflint/list_checker.py @@ -73,7 +73,7 @@ def _mark_mutated(self, _name: nodes.Name): del self._lists_to_watch[0][_name.name] def visit_subscript(self, node: nodes.Subscript): - if not isinstance(node.parent, nodes.Assign): + if not isinstance(node.parent, (nodes.Assign, nodes.Delete)): return if not isinstance(node.value, nodes.Name): return diff --git a/tests/test_list_checker.py b/tests/test_list_checker.py index 0835f46..d50deb6 100644 --- a/tests/test_list_checker.py +++ b/tests/test_list_checker.py @@ -45,6 +45,16 @@ def test(): #@ with self.assertNoMessages(): self.walk(test_func) + def test_mutated_list_by_del(self): + test_func = astroid.extract_node(""" + def test(): + items = [1,2,3,4] + del items[0] + """) + + with self.assertNoMessages(): + self.walk(test_func) + def test_mutated_global_list_by_index(self): test_func = astroid.extract_node(""" items = [1,2,3,4] @@ -63,4 +73,14 @@ def test(): #@ """) with self.assertNoMessages(): - self.walk(test_func) \ No newline at end of file + self.walk(test_func) + + def test_mutated_global_list_by_del(self): + test_func = astroid.extract_node(""" + items = [1,2,3,4] + def test(): + del items[0] + """) + + with self.assertNoMessages(): + self.walk(test_func)