The changes in this commit were generated by running: for f in $(find src -name '*.rs'); do sed -Ei 's/use crate::registry::.*;/\0use crate::violations;/g' $f; done for f in $(find src -name '*.rs'); do sed -Ei 's/CheckKind::([A-Z])/violations::\1/g' $f; done git checkout src/registry.rs src/lib.rs src/lib_wasm.rs src/violations.rs cargo +nightly fmt
38 lines
1.2 KiB
Rust
38 lines
1.2 KiB
Rust
use rustpython_ast::{Excepthandler, ExcepthandlerKind, ExprKind};
|
|
|
|
use crate::ast::types::Range;
|
|
use crate::autofix::Fix;
|
|
use crate::checkers::ast::Checker;
|
|
use crate::registry::{Check, CheckKind};
|
|
use crate::source_code_generator::SourceCodeGenerator;
|
|
use crate::violations;
|
|
|
|
/// B013
|
|
pub fn redundant_tuple_in_exception_handler(checker: &mut Checker, handlers: &[Excepthandler]) {
|
|
for handler in handlers {
|
|
let ExcepthandlerKind::ExceptHandler { type_: Some(type_), .. } = &handler.node else {
|
|
continue;
|
|
};
|
|
let ExprKind::Tuple { elts, .. } = &type_.node else {
|
|
continue;
|
|
};
|
|
let [elt] = &elts[..] else {
|
|
continue;
|
|
};
|
|
let mut check = Check::new(
|
|
violations::RedundantTupleInExceptionHandler(elt.to_string()),
|
|
Range::from_located(type_),
|
|
);
|
|
if checker.patch(check.kind.code()) {
|
|
let mut generator: SourceCodeGenerator = checker.style.into();
|
|
generator.unparse_expr(elt, 0);
|
|
check.amend(Fix::replacement(
|
|
generator.generate(),
|
|
type_.location,
|
|
type_.end_location.unwrap(),
|
|
));
|
|
}
|
|
checker.checks.push(check);
|
|
}
|
|
}
|