From 4f6e03ced8aa569ccad1e8e2bb1bce3ca428e46a Mon Sep 17 00:00:00 2001 From: Zanie Date: Tue, 26 Dec 2023 12:43:35 -0600 Subject: [PATCH] Do not take `explicit-preview-rules` into account when selecting `fixable` rules --- crates/ruff_linter/src/rule_selector.rs | 10 ++++++++++ crates/ruff_workspace/src/configuration.rs | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/crates/ruff_linter/src/rule_selector.rs b/crates/ruff_linter/src/rule_selector.rs index ea83c058ed..9c3b6d9371 100644 --- a/crates/ruff_linter/src/rule_selector.rs +++ b/crates/ruff_linter/src/rule_selector.rs @@ -243,6 +243,16 @@ pub struct PreviewOptions { pub require_explicit: bool, } +impl PreviewOptions { + /// Return a copy with the same preview mode setting but require explicit disabled. + pub fn without_require_explicit(&self) -> Self { + Self { + mode: self.mode, + require_explicit: false, + } + } +} + #[cfg(feature = "schemars")] mod schema { use itertools::Itertools; diff --git a/crates/ruff_workspace/src/configuration.rs b/crates/ruff_workspace/src/configuration.rs index b0f5f8bb7c..9ceddd8d1e 100644 --- a/crates/ruff_workspace/src/configuration.rs +++ b/crates/ruff_workspace/src/configuration.rs @@ -714,7 +714,9 @@ impl LintConfiguration { .collect(); // The fixable set keeps track of which rules are fixable. - let mut fixable_set: RuleSet = RuleSelector::All.rules(&preview).collect(); + let mut fixable_set: RuleSet = RuleSelector::All + .rules(&preview.without_require_explicit()) + .collect(); // Ignores normally only subtract from the current set of selected // rules. By that logic the ignore in `select = [], ignore = ["E501"]`