From e31f9286f23b6b112e74ca42afdad59dd095885b Mon Sep 17 00:00:00 2001 From: Gary Yendell Date: Sat, 6 Sep 2025 17:43:53 +0100 Subject: [PATCH] fixup! Add warning for using R and S as selectors --- crates/ruff_linter/src/rule_redirects.rs | 16 ++++++++++++++++ crates/ruff_linter/src/rule_selector.rs | 9 --------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/ruff_linter/src/rule_redirects.rs b/crates/ruff_linter/src/rule_redirects.rs index 953074e10d..fda35577c2 100644 --- a/crates/ruff_linter/src/rule_redirects.rs +++ b/crates/ruff_linter/src/rule_redirects.rs @@ -1,14 +1,30 @@ use std::collections::HashMap; use std::sync::LazyLock; +use crate::warn_user_once; + +const DEPRECATED_SELECTORS: [&str; 3] = ["R", "U", "IC"]; + +fn check_for_deprecation(code: &str) { + if DEPRECATED_SELECTORS.contains(&code) { + warn_user_once!( + "Using `{code}` as a selector is deprecated and will be removed in a future version." + ); + } +} + /// Returns the redirect target for the given code. pub(crate) fn get_redirect_target(code: &str) -> Option<&'static str> { + check_for_deprecation(code); + REDIRECTS.get(code).copied() } /// Returns the code and the redirect target if the given code is a redirect. /// (The same code is returned to obtain it with a static lifetime). pub(crate) fn get_redirect(code: &str) -> Option<(&'static str, &'static str)> { + check_for_deprecation(code); + REDIRECTS.get_key_value(code).map(|(k, v)| (*k, *v)) } diff --git a/crates/ruff_linter/src/rule_selector.rs b/crates/ruff_linter/src/rule_selector.rs index e2648c9f67..74f069b976 100644 --- a/crates/ruff_linter/src/rule_selector.rs +++ b/crates/ruff_linter/src/rule_selector.rs @@ -10,9 +10,6 @@ use crate::codes::{RuleCodePrefix, RuleGroup}; use crate::registry::{Linter, Rule, RuleNamespace}; use crate::rule_redirects::get_redirect; use crate::settings::types::PreviewMode; -use crate::warn_user_once; - -const DEPRECATED_SELECTORS: [&str; 2] = ["R", "U"]; #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum RuleSelector { @@ -68,12 +65,6 @@ impl FromStr for RuleSelector { "C" => Ok(Self::C), "T" => Ok(Self::T), _ => { - if DEPRECATED_SELECTORS.contains(&s) { - warn_user_once!( - "Using `{s}` as a selector is deprecated and will be removed in a future version." - ); - } - let (s, redirected_from) = match get_redirect(s) { Some((from, target)) => (target, Some(from)), None => (s, None),