Skip to content

Commit 13fda30

Browse files
Refactor flake8_tidy_imports rules to consistently take Checker (#4023)
1 parent a3146ab commit 13fda30

File tree

2 files changed

+22
-49
lines changed

2 files changed

+22
-49
lines changed

crates/ruff/src/checkers/ast/mod.rs

+9-27
Original file line numberDiff line numberDiff line change
@@ -970,15 +970,11 @@ where
970970

971971
// flake8_tidy_imports
972972
if self.settings.rules.enabled(Rule::BannedApi) {
973-
if let Some(diagnostic) =
974-
flake8_tidy_imports::banned_api::name_or_parent_is_banned(
975-
alias,
976-
&alias.node.name,
977-
&self.settings.flake8_tidy_imports.banned_api,
978-
)
979-
{
980-
self.diagnostics.push(diagnostic);
981-
}
973+
flake8_tidy_imports::banned_api::name_or_parent_is_banned(
974+
self,
975+
&alias.node.name,
976+
alias,
977+
);
982978
}
983979

984980
// pylint
@@ -1161,25 +1157,11 @@ where
11611157
if self.settings.rules.enabled(Rule::BannedApi) {
11621158
if let Some(module) = module {
11631159
for name in names {
1164-
if let Some(diagnostic) =
1165-
flake8_tidy_imports::banned_api::name_is_banned(
1166-
module,
1167-
name,
1168-
&self.settings.flake8_tidy_imports.banned_api,
1169-
)
1170-
{
1171-
self.diagnostics.push(diagnostic);
1172-
}
1173-
}
1174-
if let Some(diagnostic) =
1175-
flake8_tidy_imports::banned_api::name_or_parent_is_banned(
1176-
stmt,
1177-
module,
1178-
&self.settings.flake8_tidy_imports.banned_api,
1179-
)
1180-
{
1181-
self.diagnostics.push(diagnostic);
1160+
flake8_tidy_imports::banned_api::name_is_banned(self, module, name);
11821161
}
1162+
flake8_tidy_imports::banned_api::name_or_parent_is_banned(
1163+
self, module, stmt,
1164+
);
11831165
}
11841166
}
11851167

crates/ruff/src/rules/flake8_tidy_imports/banned_api.rs

+13-22
Original file line numberDiff line numberDiff line change
@@ -51,57 +51,49 @@ impl Violation for BannedApi {
5151
}
5252

5353
/// TID251
54-
pub fn name_is_banned(
55-
module: &str,
56-
name: &Alias,
57-
api_bans: &FxHashMap<String, ApiBan>,
58-
) -> Option<Diagnostic> {
54+
pub fn name_is_banned(checker: &mut Checker, module: &str, name: &Alias) {
55+
let banned_api = &checker.settings.flake8_tidy_imports.banned_api;
5956
let full_name = format!("{module}.{}", &name.node.name);
60-
if let Some(ban) = api_bans.get(&full_name) {
61-
return Some(Diagnostic::new(
57+
if let Some(ban) = banned_api.get(&full_name) {
58+
checker.diagnostics.push(Diagnostic::new(
6259
BannedApi {
6360
name: full_name,
6461
message: ban.msg.to_string(),
6562
},
6663
Range::from(name),
6764
));
6865
}
69-
None
7066
}
7167

7268
/// TID251
73-
pub fn name_or_parent_is_banned<T>(
74-
located: &Located<T>,
75-
name: &str,
76-
api_bans: &FxHashMap<String, ApiBan>,
77-
) -> Option<Diagnostic> {
69+
pub fn name_or_parent_is_banned<T>(checker: &mut Checker, name: &str, located: &Located<T>) {
70+
let banned_api = &checker.settings.flake8_tidy_imports.banned_api;
7871
let mut name = name;
7972
loop {
80-
if let Some(ban) = api_bans.get(name) {
81-
return Some(Diagnostic::new(
73+
if let Some(ban) = banned_api.get(name) {
74+
checker.diagnostics.push(Diagnostic::new(
8275
BannedApi {
8376
name: name.to_string(),
8477
message: ban.msg.to_string(),
8578
},
8679
Range::from(located),
8780
));
81+
return;
8882
}
8983
match name.rfind('.') {
9084
Some(idx) => {
9185
name = &name[..idx];
9286
}
93-
None => return None,
87+
None => return,
9488
}
9589
}
9690
}
9791

9892
/// TID251
9993
pub fn banned_attribute_access(checker: &mut Checker, expr: &Expr) {
94+
let banned_api = &checker.settings.flake8_tidy_imports.banned_api;
10095
if let Some((banned_path, ban)) = checker.ctx.resolve_call_path(expr).and_then(|call_path| {
101-
checker
102-
.settings
103-
.flake8_tidy_imports
104-
.banned_api
96+
banned_api
10597
.iter()
10698
.find(|(banned_path, ..)| call_path == from_qualified_name(banned_path))
10799
}) {
@@ -119,11 +111,10 @@ pub fn banned_attribute_access(checker: &mut Checker, expr: &Expr) {
119111
mod tests {
120112
use std::path::Path;
121113

122-
use crate::assert_messages;
123114
use anyhow::Result;
124-
125115
use rustc_hash::FxHashMap;
126116

117+
use crate::assert_messages;
127118
use crate::registry::Rule;
128119
use crate::settings::Settings;
129120
use crate::test::test_path;

0 commit comments

Comments
 (0)