mirror of https://github.com/astral-sh/ruff
Move comprehension rules into shared analyze method (#6042)
This commit is contained in:
parent
c3ecdb8783
commit
c535e10fff
|
|
@ -0,0 +1,16 @@
|
||||||
|
use rustpython_parser::ast::Comprehension;
|
||||||
|
|
||||||
|
use crate::checkers::ast::Checker;
|
||||||
|
use crate::codes::Rule;
|
||||||
|
use crate::rules::flake8_simplify;
|
||||||
|
|
||||||
|
/// Run lint rules over a [`Comprehension`] syntax nodes.
|
||||||
|
pub(crate) fn comprehension(comprehension: &Comprehension, checker: &mut Checker) {
|
||||||
|
if checker.enabled(Rule::InDictKeys) {
|
||||||
|
flake8_simplify::rules::key_in_dict_for(
|
||||||
|
checker,
|
||||||
|
&comprehension.target,
|
||||||
|
&comprehension.iter,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1305,15 +1305,6 @@ pub(crate) fn expression(expr: &Expr, checker: &mut Checker) {
|
||||||
if checker.enabled(Rule::FunctionUsesLoopVariable) {
|
if checker.enabled(Rule::FunctionUsesLoopVariable) {
|
||||||
flake8_bugbear::rules::function_uses_loop_variable(checker, &Node::Expr(expr));
|
flake8_bugbear::rules::function_uses_loop_variable(checker, &Node::Expr(expr));
|
||||||
}
|
}
|
||||||
if checker.enabled(Rule::InDictKeys) {
|
|
||||||
for generator in generators {
|
|
||||||
flake8_simplify::rules::key_in_dict_for(
|
|
||||||
checker,
|
|
||||||
&generator.target,
|
|
||||||
&generator.iter,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if checker.enabled(Rule::IterationOverSet) {
|
if checker.enabled(Rule::IterationOverSet) {
|
||||||
for generator in generators {
|
for generator in generators {
|
||||||
pylint::rules::iteration_over_set(checker, &generator.iter);
|
pylint::rules::iteration_over_set(checker, &generator.iter);
|
||||||
|
|
@ -1334,15 +1325,6 @@ pub(crate) fn expression(expr: &Expr, checker: &mut Checker) {
|
||||||
if checker.enabled(Rule::FunctionUsesLoopVariable) {
|
if checker.enabled(Rule::FunctionUsesLoopVariable) {
|
||||||
flake8_bugbear::rules::function_uses_loop_variable(checker, &Node::Expr(expr));
|
flake8_bugbear::rules::function_uses_loop_variable(checker, &Node::Expr(expr));
|
||||||
}
|
}
|
||||||
if checker.enabled(Rule::InDictKeys) {
|
|
||||||
for generator in generators {
|
|
||||||
flake8_simplify::rules::key_in_dict_for(
|
|
||||||
checker,
|
|
||||||
&generator.target,
|
|
||||||
&generator.iter,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if checker.enabled(Rule::IterationOverSet) {
|
if checker.enabled(Rule::IterationOverSet) {
|
||||||
for generator in generators {
|
for generator in generators {
|
||||||
pylint::rules::iteration_over_set(checker, &generator.iter);
|
pylint::rules::iteration_over_set(checker, &generator.iter);
|
||||||
|
|
@ -1360,15 +1342,6 @@ pub(crate) fn expression(expr: &Expr, checker: &mut Checker) {
|
||||||
if checker.enabled(Rule::FunctionUsesLoopVariable) {
|
if checker.enabled(Rule::FunctionUsesLoopVariable) {
|
||||||
flake8_bugbear::rules::function_uses_loop_variable(checker, &Node::Expr(expr));
|
flake8_bugbear::rules::function_uses_loop_variable(checker, &Node::Expr(expr));
|
||||||
}
|
}
|
||||||
if checker.enabled(Rule::InDictKeys) {
|
|
||||||
for generator in generators {
|
|
||||||
flake8_simplify::rules::key_in_dict_for(
|
|
||||||
checker,
|
|
||||||
&generator.target,
|
|
||||||
&generator.iter,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if checker.enabled(Rule::IterationOverSet) {
|
if checker.enabled(Rule::IterationOverSet) {
|
||||||
for generator in generators {
|
for generator in generators {
|
||||||
pylint::rules::iteration_over_set(checker, &generator.iter);
|
pylint::rules::iteration_over_set(checker, &generator.iter);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
pub(super) use argument::argument;
|
pub(super) use argument::argument;
|
||||||
pub(super) use arguments::arguments;
|
pub(super) use arguments::arguments;
|
||||||
pub(super) use bindings::bindings;
|
pub(super) use bindings::bindings;
|
||||||
|
pub(super) use comprehension::comprehension;
|
||||||
pub(super) use deferred_for_loops::deferred_for_loops;
|
pub(super) use deferred_for_loops::deferred_for_loops;
|
||||||
pub(super) use deferred_scopes::deferred_scopes;
|
pub(super) use deferred_scopes::deferred_scopes;
|
||||||
pub(super) use definitions::definitions;
|
pub(super) use definitions::definitions;
|
||||||
|
|
@ -14,6 +15,7 @@ pub(super) use unresolved_references::unresolved_references;
|
||||||
mod argument;
|
mod argument;
|
||||||
mod arguments;
|
mod arguments;
|
||||||
mod bindings;
|
mod bindings;
|
||||||
|
mod comprehension;
|
||||||
mod deferred_for_loops;
|
mod deferred_for_loops;
|
||||||
mod deferred_scopes;
|
mod deferred_scopes;
|
||||||
mod definitions;
|
mod definitions;
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) {
|
||||||
pycodestyle::rules::ambiguous_variable_name(name, name.range())
|
pycodestyle::rules::ambiguous_variable_name(name, name.range())
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if checker.enabled(Rule::NonlocalWithoutBinding) {
|
if checker.enabled(Rule::NonlocalWithoutBinding) {
|
||||||
if !checker.semantic.scope_id.is_global() {
|
if !checker.semantic.scope_id.is_global() {
|
||||||
for name in names {
|
for name in names {
|
||||||
|
|
|
||||||
|
|
@ -1343,6 +1343,10 @@ impl<'a> Checker<'a> {
|
||||||
/// Visit a list of [`Comprehension`] nodes, assumed to be the comprehensions that compose a
|
/// Visit a list of [`Comprehension`] nodes, assumed to be the comprehensions that compose a
|
||||||
/// generator expression, like a list or set comprehension.
|
/// generator expression, like a list or set comprehension.
|
||||||
fn visit_generators(&mut self, generators: &'a [Comprehension]) {
|
fn visit_generators(&mut self, generators: &'a [Comprehension]) {
|
||||||
|
for generator in generators {
|
||||||
|
analyze::comprehension(generator, self);
|
||||||
|
}
|
||||||
|
|
||||||
let mut generators = generators.iter();
|
let mut generators = generators.iter();
|
||||||
|
|
||||||
let Some(generator) = generators.next() else {
|
let Some(generator) = generators.next() else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue