[flake8-simplify] Implement enumerate-for-loop (SIM113) (#7777)

Implements SIM113 from #998

Added tests
Limitations 
   - No fix yet
   - Only flag cases where index variable immediately precede `for` loop

@charliermarsh please review and let me know any improvements

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
This commit is contained in:
Chammika Mannakkara 2024-01-15 01:00:59 +09:00 committed by GitHub
parent b6ce4f5f3a
commit 0003c730e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 464 additions and 11 deletions

View file

@ -129,6 +129,11 @@ impl<'a> Scope<'a> {
self.shadowed_bindings.get(&id).copied()
}
/// Returns an iterator over all bindings that the given binding shadows, including itself.
pub fn shadowed_bindings(&self, id: BindingId) -> impl Iterator<Item = BindingId> + '_ {
std::iter::successors(Some(id), |id| self.shadowed_bindings.get(id).copied())
}
/// Adds a reference to a star import (e.g., `from sys import *`) to this scope.
pub fn add_star_import(&mut self, import: StarImport<'a>) {
self.star_imports.push(import);