Fix bug where selection included deprecated rules during preview

This commit is contained in:
Zanie 2024-01-30 16:04:05 -06:00
parent 204c000e20
commit 4a5d711a6e
2 changed files with 7 additions and 21 deletions

View File

@ -1235,16 +1235,9 @@ fn deprecated_indirect_redirect() {
.pass_stdin(r###" .pass_stdin(r###"
x = eval(input("Enter a number: ")) x = eval(input("Enter a number: "))
"###), @r###" "###), @r###"
success: false success: true
exit_code: 1 exit_code: 0
----- stdout ----- ----- stdout -----
-:2:5: PGH001 No builtin `eval()` allowed
|
2 | x = eval(input("Enter a number: "))
| ^^^^ PGH001
|
Found 1 error.
----- stderr ----- ----- stderr -----
"###); "###);
@ -1325,16 +1318,9 @@ fn deprecated_indirect_redirect_preview_enabled() {
.pass_stdin(r###" .pass_stdin(r###"
x = eval(input("Enter a number: ")) x = eval(input("Enter a number: "))
"###), @r###" "###), @r###"
success: false success: true
exit_code: 1 exit_code: 0
----- stdout ----- ----- stdout -----
-:2:5: PGH001 No builtin `eval()` allowed
|
2 | x = eval(input("Enter a number: "))
| ^^^^ PGH001
|
Found 1 error.
----- stderr ----- ----- stderr -----
"###); "###);

View File

@ -207,7 +207,7 @@ impl Visitor<'_> for SelectorVisitor {
} }
impl RuleSelector { impl RuleSelector {
/// Return all matching rules, regardless of whether they're in preview. /// Return all matching rules, regardless of rule group filters like preview and deprecated.
pub fn all_rules(&self) -> impl Iterator<Item = Rule> + '_ { pub fn all_rules(&self) -> impl Iterator<Item = Rule> + '_ {
match self { match self {
RuleSelector::All => RuleSelectorIter::All(Rule::iter()), RuleSelector::All => RuleSelectorIter::All(Rule::iter()),
@ -233,7 +233,7 @@ impl RuleSelector {
} }
} }
/// Returns rules matching the selector, taking into account preview options enabled. /// Returns rules matching the selector, taking into account rule groups like preview and deprecated.
pub fn rules<'a>(&'a self, preview: &PreviewOptions) -> impl Iterator<Item = Rule> + 'a { pub fn rules<'a>(&'a self, preview: &PreviewOptions) -> impl Iterator<Item = Rule> + 'a {
let preview_enabled = preview.mode.is_enabled(); let preview_enabled = preview.mode.is_enabled();
let preview_require_explicit = preview.require_explicit; let preview_require_explicit = preview.require_explicit;
@ -245,7 +245,7 @@ impl RuleSelector {
|| ((self.is_exact() || matches!(self, RuleSelector::Nursery { .. })) && rule.is_nursery()) || ((self.is_exact() || matches!(self, RuleSelector::Nursery { .. })) && rule.is_nursery())
// Enabling preview includes all preview or nursery rules unless explicit selection // Enabling preview includes all preview or nursery rules unless explicit selection
// is turned on // is turned on
|| (preview_enabled && (self.is_exact() || !preview_require_explicit)) || ((rule.is_preview() || rule.is_nursery()) && preview_enabled && (self.is_exact() || !preview_require_explicit))
// Deprecated rules are excluded in preview mode unless explicitly selected // Deprecated rules are excluded in preview mode unless explicitly selected
|| (rule.is_deprecated() && (!preview_enabled || self.is_exact())) || (rule.is_deprecated() && (!preview_enabled || self.is_exact()))
// Removed rules are included if explicitly selected but will error downstream // Removed rules are included if explicitly selected but will error downstream