From 4cb8c3771fa5448efd82a0c16413d62e334bd140 Mon Sep 17 00:00:00 2001 From: Don Isaac Date: Sat, 17 Aug 2024 14:09:58 -0400 Subject: [PATCH] refactor(linter): move default_true to utils (#4947) --- .../oxc_linter/src/config/settings/jsdoc.rs | 7 +----- .../src/rules/jsdoc/require_param.rs | 5 +--- .../src/rules/jsdoc/require_returns.rs | 7 ++---- crates/oxc_linter/src/utils/config.rs | 25 +++++++++++++++++++ crates/oxc_linter/src/utils/mod.rs | 5 ++-- 5 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 crates/oxc_linter/src/utils/config.rs diff --git a/crates/oxc_linter/src/config/settings/jsdoc.rs b/crates/oxc_linter/src/config/settings/jsdoc.rs index 3bf3c590dec2f..8b1c47c10203d 100644 --- a/crates/oxc_linter/src/config/settings/jsdoc.rs +++ b/crates/oxc_linter/src/config/settings/jsdoc.rs @@ -1,5 +1,6 @@ use std::borrow::Cow; +use crate::utils::default_true; use rustc_hash::FxHashMap; use schemars::JsonSchema; use serde::Deserialize; @@ -178,12 +179,6 @@ impl JSDocPluginSettings { } } -// Deserialize helper types - -fn default_true() -> bool { - true -} - #[derive(Clone, Debug, Deserialize, JsonSchema)] #[serde(untagged)] enum TagNamePreference { diff --git a/crates/oxc_linter/src/rules/jsdoc/require_param.rs b/crates/oxc_linter/src/rules/jsdoc/require_param.rs index 63697e028eae8..8d669be3e3b28 100644 --- a/crates/oxc_linter/src/rules/jsdoc/require_param.rs +++ b/crates/oxc_linter/src/rules/jsdoc/require_param.rs @@ -13,7 +13,7 @@ use crate::{ context::LintContext, rule::Rule, utils::{ - collect_params, get_function_nearest_jsdoc_node, should_ignore_as_avoid, + collect_params, default_true, get_function_nearest_jsdoc_node, should_ignore_as_avoid, should_ignore_as_internal, should_ignore_as_private, ParamKind, }, }; @@ -81,9 +81,6 @@ impl Default for RequireParamConfig { fn default_exempted_by() -> Vec { vec!["inheritdoc".to_string()] } -fn default_true() -> bool { - true -} fn default_check_types_pattern() -> String { "^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$".to_string() // spellchecker:disable-line } diff --git a/crates/oxc_linter/src/rules/jsdoc/require_returns.rs b/crates/oxc_linter/src/rules/jsdoc/require_returns.rs index dbe7f1beda26e..562791dd5c9f1 100644 --- a/crates/oxc_linter/src/rules/jsdoc/require_returns.rs +++ b/crates/oxc_linter/src/rules/jsdoc/require_returns.rs @@ -14,8 +14,8 @@ use crate::{ context::LintContext, rule::Rule, utils::{ - get_function_nearest_jsdoc_node, should_ignore_as_avoid, should_ignore_as_internal, - should_ignore_as_private, + default_true, get_function_nearest_jsdoc_node, should_ignore_as_avoid, + should_ignore_as_internal, should_ignore_as_private, }, }; @@ -84,9 +84,6 @@ impl Default for RequireReturnsConfig { } } } -fn default_true() -> bool { - true -} fn default_exempted_by() -> Vec { vec!["inheritdoc".to_string()] } diff --git a/crates/oxc_linter/src/utils/config.rs b/crates/oxc_linter/src/utils/config.rs new file mode 100644 index 0000000000000..71b44c816e1d8 --- /dev/null +++ b/crates/oxc_linter/src/utils/config.rs @@ -0,0 +1,25 @@ +/// Always returns `true`. +/// +/// Useful for default values in rule configs that use serde. +/// See [serde documentation](https://serde.rs/field-attrs.html#default--path) +/// for more information +/// +/// ## Example +/// ```ignore +/// use serde::Deserialize; +/// use oxc_linter::utils::default_true; +/// +/// #[derive(Debug, Clone, Deserialize)] +/// pub struct RuleConfig { +/// // default to true +/// #[serde(default = "default_true")] +/// pub foo: bool, +/// // default to false +/// #[serde(default)] +/// pub bar: bool, +/// } +/// ``` +#[inline] +pub const fn default_true() -> bool { + true +} diff --git a/crates/oxc_linter/src/utils/mod.rs b/crates/oxc_linter/src/utils/mod.rs index e8a2fb2fba40c..5a9586f78015b 100644 --- a/crates/oxc_linter/src/utils/mod.rs +++ b/crates/oxc_linter/src/utils/mod.rs @@ -1,3 +1,4 @@ +mod config; mod jest; mod jsdoc; mod nextjs; @@ -9,8 +10,8 @@ mod unicorn; mod vitest; pub use self::{ - jest::*, jsdoc::*, nextjs::*, promise::*, react::*, react_perf::*, tree_shaking::*, unicorn::*, - vitest::*, + config::*, jest::*, jsdoc::*, nextjs::*, promise::*, react::*, react_perf::*, tree_shaking::*, + unicorn::*, vitest::*, }; /// Check if the Jest rule is adapted to Vitest.