diff --git a/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js b/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js index 1bbdec8c673..7c4e6434f9a 100644 --- a/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js +++ b/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js @@ -2,3 +2,6 @@ void 0; function f() { return void 0; } +var foo = void 0; +void(0); + diff --git a/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js.snap b/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js.snap index 124154dba42..1cc7fc6070f 100644 --- a/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js.snap +++ b/crates/rome_js_analyze/tests/specs/nursery/noVoid/invalid.js.snap @@ -8,6 +8,9 @@ void 0; function f() { return void 0; } +var foo = void 0; +void(0); + ``` @@ -35,7 +38,36 @@ invalid.js:3:9 lint/nursery/noVoid ━━━━━━━━━━━━━━━ > 3 │ return void 0; │ ^^^^^^ 4 │ } - 5 │ + 5 │ var foo = void 0; + + +``` + +``` +invalid.js:5:11 lint/nursery/noVoid ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + ! The use of void is not allowed. + + 3 │ return void 0; + 4 │ } + > 5 │ var foo = void 0; + │ ^^^^^^ + 6 │ void(0); + 7 │ + + +``` + +``` +invalid.js:6:1 lint/nursery/noVoid ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + ! The use of void is not allowed. + + 4 │ } + 5 │ var foo = void 0; + > 6 │ void(0); + │ ^^^^^^^ + 7 │ ``` diff --git a/crates/rome_js_analyze/tests/specs/nursery/noVoid/valid.js b/crates/rome_js_analyze/tests/specs/nursery/noVoid/valid.js new file mode 100644 index 00000000000..bb367abd692 --- /dev/null +++ b/crates/rome_js_analyze/tests/specs/nursery/noVoid/valid.js @@ -0,0 +1,4 @@ +var foo = bar(); +foo.void(); +foo.void = bar; +delete foo; diff --git a/crates/rome_js_analyze/tests/specs/nursery/noVoid/valid.js.snap b/crates/rome_js_analyze/tests/specs/nursery/noVoid/valid.js.snap new file mode 100644 index 00000000000..ed71efa201b --- /dev/null +++ b/crates/rome_js_analyze/tests/specs/nursery/noVoid/valid.js.snap @@ -0,0 +1,14 @@ +--- +source: crates/rome_js_analyze/tests/spec_tests.rs +expression: valid.js +--- +# Input +```js +var foo = bar(); +foo.void(); +foo.void = bar; +delete foo; + +``` + + diff --git a/crates/rome_service/src/configuration/linter/rules.rs b/crates/rome_service/src/configuration/linter/rules.rs index 434e1ca103a..cab19b0d4a1 100644 --- a/crates/rome_service/src/configuration/linter/rules.rs +++ b/crates/rome_service/src/configuration/linter/rules.rs @@ -199,15 +199,9 @@ impl Rules { None } } - pub(crate) const fn is_recommended(&self) -> bool { - !matches!(self.recommended, Some(false)) - } - pub(crate) const fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) const fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) const fn is_recommended(&self) -> bool { !matches!(self.recommended, Some(false)) } + pub(crate) const fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) const fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } #[doc = r" It returns a tuple of filters. The first element of the tuple are the enabled rules,"] #[doc = r" while the second element are the disabled rules."] #[doc = r""] @@ -556,18 +550,12 @@ impl A11y { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[20]), ]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_access_key.as_ref() { @@ -787,9 +775,7 @@ impl A11y { index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) @@ -797,9 +783,7 @@ impl A11y { pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 20] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 21] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 21] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, @@ -997,18 +981,12 @@ impl Complexity { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[12]), ]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_extra_boolean_cast.as_ref() { @@ -1154,9 +1132,7 @@ impl Complexity { index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) @@ -1164,9 +1140,7 @@ impl Complexity { pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 11] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 13] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 13] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, @@ -1477,18 +1451,12 @@ impl Correctness { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[24]), ]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_children_prop.as_ref() { @@ -1748,9 +1716,7 @@ impl Correctness { index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) @@ -1758,9 +1724,7 @@ impl Correctness { pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 23] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 25] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 25] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, @@ -1879,6 +1843,10 @@ pub struct Nursery { #[bpaf(long("no-for-each"), argument("on|off|warn"), optional, hide)] #[serde(skip_serializing_if = "Option::is_none")] pub no_for_each: Option, + #[doc = "Use Number.isFinite instead of global isFinite."] + #[bpaf(long("no-global-is-finite"), argument("on|off|warn"), optional, hide)] + #[serde(skip_serializing_if = "Option::is_none")] + pub no_global_is_finite: Option, #[doc = "Use Number.isNaN instead of global isNaN."] #[bpaf(long("no-global-is-nan"), argument("on|off|warn"), optional, hide)] #[serde(skip_serializing_if = "Option::is_none")] @@ -1975,7 +1943,7 @@ pub struct Nursery { } impl Nursery { const GROUP_NAME: &'static str = "nursery"; - pub(crate) const GROUP_RULES: [&'static str; 26] = [ + pub(crate) const GROUP_RULES: [&'static str; 27] = [ "noAccumulatingSpread", "noAriaUnsupportedElements", "noBannedTypes", @@ -1985,6 +1953,7 @@ impl Nursery { "noDuplicateJsonKeys", "noDuplicateJsxProps", "noForEach", + "noGlobalIsFinite", "noGlobalIsNan", "noNoninteractiveTabindex", "noRedundantRoles", @@ -2003,12 +1972,13 @@ impl Nursery { "useNamingConvention", "useSimpleNumberKeys", ]; - const RECOMMENDED_RULES: [&'static str; 14] = [ + const RECOMMENDED_RULES: [&'static str; 15] = [ "noAriaUnsupportedElements", "noBannedTypes", "noConstantCondition", "noDuplicateJsonKeys", "noDuplicateJsxProps", + "noGlobalIsFinite", "noGlobalIsNan", "noRedundantRoles", "noSelfAssign", @@ -2019,23 +1989,24 @@ impl Nursery { "useLiteralEnumMembers", "useLiteralKeys", ]; - const RECOMMENDED_RULES_AS_FILTERS: [RuleFilter<'static>; 14] = [ + const RECOMMENDED_RULES_AS_FILTERS: [RuleFilter<'static>; 15] = [ RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[1]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[2]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[5]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[6]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[7]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[9]), - RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[11]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[10]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[12]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[13]), - RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[17]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[14]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[18]), - RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[21]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[19]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[22]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[23]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[24]), ]; - const ALL_RULES_AS_FILTERS: [RuleFilter<'static>; 26] = [ + const ALL_RULES_AS_FILTERS: [RuleFilter<'static>; 27] = [ RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[0]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[1]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[2]), @@ -2062,20 +2033,15 @@ impl Nursery { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[23]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[24]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[25]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[26]), ]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_accumulating_spread.as_ref() { @@ -2123,91 +2089,96 @@ impl Nursery { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[8])); } } - if let Some(rule) = self.no_global_is_nan.as_ref() { + if let Some(rule) = self.no_global_is_finite.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[9])); } } - if let Some(rule) = self.no_noninteractive_tabindex.as_ref() { + if let Some(rule) = self.no_global_is_nan.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[10])); } } - if let Some(rule) = self.no_redundant_roles.as_ref() { + if let Some(rule) = self.no_noninteractive_tabindex.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[11])); } } - if let Some(rule) = self.no_self_assign.as_ref() { + if let Some(rule) = self.no_redundant_roles.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[12])); } } - if let Some(rule) = self.no_static_only_class.as_ref() { + if let Some(rule) = self.no_self_assign.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[13])); } } - if let Some(rule) = self.no_void.as_ref() { + if let Some(rule) = self.no_static_only_class.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[14])); } } - if let Some(rule) = self.use_aria_prop_types.as_ref() { + if let Some(rule) = self.no_void.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[15])); } } - if let Some(rule) = self.use_camel_case.as_ref() { + if let Some(rule) = self.use_aria_prop_types.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[16])); } } - if let Some(rule) = self.use_exhaustive_dependencies.as_ref() { + if let Some(rule) = self.use_camel_case.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[17])); } } - if let Some(rule) = self.use_grouped_type_import.as_ref() { + if let Some(rule) = self.use_exhaustive_dependencies.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[18])); } } - if let Some(rule) = self.use_heading_content.as_ref() { + if let Some(rule) = self.use_grouped_type_import.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[19])); } } - if let Some(rule) = self.use_hook_at_top_level.as_ref() { + if let Some(rule) = self.use_heading_content.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[20])); } } - if let Some(rule) = self.use_is_nan.as_ref() { + if let Some(rule) = self.use_hook_at_top_level.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[21])); } } - if let Some(rule) = self.use_literal_enum_members.as_ref() { + if let Some(rule) = self.use_is_nan.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[22])); } } - if let Some(rule) = self.use_literal_keys.as_ref() { + if let Some(rule) = self.use_literal_enum_members.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[23])); } } - if let Some(rule) = self.use_naming_convention.as_ref() { + if let Some(rule) = self.use_literal_keys.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[24])); } } - if let Some(rule) = self.use_simple_number_keys.as_ref() { + if let Some(rule) = self.use_naming_convention.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[25])); } } + if let Some(rule) = self.use_simple_number_keys.as_ref() { + if rule.is_enabled() { + index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[26])); + } + } index_set } pub(crate) fn get_disabled_rules(&self) -> IndexSet { @@ -2257,107 +2228,108 @@ impl Nursery { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[8])); } } - if let Some(rule) = self.no_global_is_nan.as_ref() { + if let Some(rule) = self.no_global_is_finite.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[9])); } } - if let Some(rule) = self.no_noninteractive_tabindex.as_ref() { + if let Some(rule) = self.no_global_is_nan.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[10])); } } - if let Some(rule) = self.no_redundant_roles.as_ref() { + if let Some(rule) = self.no_noninteractive_tabindex.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[11])); } } - if let Some(rule) = self.no_self_assign.as_ref() { + if let Some(rule) = self.no_redundant_roles.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[12])); } } - if let Some(rule) = self.no_static_only_class.as_ref() { + if let Some(rule) = self.no_self_assign.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[13])); } } - if let Some(rule) = self.no_void.as_ref() { + if let Some(rule) = self.no_static_only_class.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[14])); } } - if let Some(rule) = self.use_aria_prop_types.as_ref() { + if let Some(rule) = self.no_void.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[15])); } } - if let Some(rule) = self.use_camel_case.as_ref() { + if let Some(rule) = self.use_aria_prop_types.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[16])); } } - if let Some(rule) = self.use_exhaustive_dependencies.as_ref() { + if let Some(rule) = self.use_camel_case.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[17])); } } - if let Some(rule) = self.use_grouped_type_import.as_ref() { + if let Some(rule) = self.use_exhaustive_dependencies.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[18])); } } - if let Some(rule) = self.use_heading_content.as_ref() { + if let Some(rule) = self.use_grouped_type_import.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[19])); } } - if let Some(rule) = self.use_hook_at_top_level.as_ref() { + if let Some(rule) = self.use_heading_content.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[20])); } } - if let Some(rule) = self.use_is_nan.as_ref() { + if let Some(rule) = self.use_hook_at_top_level.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[21])); } } - if let Some(rule) = self.use_literal_enum_members.as_ref() { + if let Some(rule) = self.use_is_nan.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[22])); } } - if let Some(rule) = self.use_literal_keys.as_ref() { + if let Some(rule) = self.use_literal_enum_members.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[23])); } } - if let Some(rule) = self.use_naming_convention.as_ref() { + if let Some(rule) = self.use_literal_keys.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[24])); } } - if let Some(rule) = self.use_simple_number_keys.as_ref() { + if let Some(rule) = self.use_naming_convention.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[25])); } } + if let Some(rule) = self.use_simple_number_keys.as_ref() { + if rule.is_disabled() { + index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[26])); + } + } index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) } - pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 14] { + pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 15] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 26] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 27] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, @@ -2387,6 +2359,7 @@ impl Nursery { "noDuplicateJsonKeys" => self.no_duplicate_json_keys.as_ref(), "noDuplicateJsxProps" => self.no_duplicate_jsx_props.as_ref(), "noForEach" => self.no_for_each.as_ref(), + "noGlobalIsFinite" => self.no_global_is_finite.as_ref(), "noGlobalIsNan" => self.no_global_is_nan.as_ref(), "noNoninteractiveTabindex" => self.no_noninteractive_tabindex.as_ref(), "noRedundantRoles" => self.no_redundant_roles.as_ref(), @@ -2435,18 +2408,12 @@ impl Performance { const ALL_RULES_AS_FILTERS: [RuleFilter<'static>; 1] = [RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[0])]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_delete.as_ref() { @@ -2466,9 +2433,7 @@ impl Performance { index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) @@ -2476,9 +2441,7 @@ impl Performance { pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 1] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 1] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 1] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, @@ -2555,18 +2518,12 @@ impl Security { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[1]), ]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_dangerously_set_inner_html.as_ref() { @@ -2596,9 +2553,7 @@ impl Security { index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) @@ -2606,9 +2561,7 @@ impl Security { pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 2] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 2] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 2] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, @@ -2888,18 +2841,12 @@ impl Style { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[25]), ]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_arguments.as_ref() { @@ -3169,9 +3116,7 @@ impl Style { index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) @@ -3179,9 +3124,7 @@ impl Style { pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 15] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 26] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 26] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, @@ -3548,18 +3491,12 @@ impl Suspicious { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[30]), ]; #[doc = r" Retrieves the recommended rules"] - pub(crate) fn is_recommended(&self) -> bool { - matches!(self.recommended, Some(true)) - } + pub(crate) fn is_recommended(&self) -> bool { matches!(self.recommended, Some(true)) } pub(crate) const fn is_not_recommended(&self) -> bool { matches!(self.recommended, Some(false)) } - pub(crate) fn is_all(&self) -> bool { - matches!(self.all, Some(true)) - } - pub(crate) fn is_not_all(&self) -> bool { - matches!(self.all, Some(false)) - } + pub(crate) fn is_all(&self) -> bool { matches!(self.all, Some(true)) } + pub(crate) fn is_not_all(&self) -> bool { matches!(self.all, Some(false)) } pub(crate) fn get_enabled_rules(&self) -> IndexSet { let mut index_set = IndexSet::new(); if let Some(rule) = self.no_array_index_key.as_ref() { @@ -3879,9 +3816,7 @@ impl Suspicious { index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] - pub(crate) fn has_rule(rule_name: &str) -> bool { - Self::GROUP_RULES.contains(&rule_name) - } + pub(crate) fn has_rule(rule_name: &str) -> bool { Self::GROUP_RULES.contains(&rule_name) } #[doc = r" Checks if, given a rule name, it is marked as recommended"] pub(crate) fn is_recommended_rule(rule_name: &str) -> bool { Self::RECOMMENDED_RULES.contains(&rule_name) @@ -3889,9 +3824,7 @@ impl Suspicious { pub(crate) fn recommended_rules_as_filters() -> [RuleFilter<'static>; 30] { Self::RECOMMENDED_RULES_AS_FILTERS } - pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 31] { - Self::ALL_RULES_AS_FILTERS - } + pub(crate) fn all_rules_as_filters() -> [RuleFilter<'static>; 31] { Self::ALL_RULES_AS_FILTERS } #[doc = r" Select preset rules"] pub(crate) fn collect_preset_rules( &self, diff --git a/npm/backend-jsonrpc/src/workspace.ts b/npm/backend-jsonrpc/src/workspace.ts index a827ef86a63..9939b421983 100644 --- a/npm/backend-jsonrpc/src/workspace.ts +++ b/npm/backend-jsonrpc/src/workspace.ts @@ -565,6 +565,10 @@ export interface Nursery { * This rule reports when a class has no non-static members, such as for a class used exclusively as a static namespace. */ noStaticOnlyClass?: RuleConfiguration; + /** + * Disallow the use of void. + */ + noVoid?: RuleConfiguration; /** * It enables the recommended rules for this group */ @@ -1121,6 +1125,7 @@ export type Category = | "lint/nursery/useNamingConvention" | "lint/nursery/noGlobalIsNan" | "lint/nursery/noGlobalIsFinite" + | "lint/nursery/noVoid" | "lint/performance/noDelete" | "lint/security/noDangerouslySetInnerHtml" | "lint/security/noDangerouslySetInnerHtmlWithChildren" diff --git a/website/src/components/generated/NumberOfRules.astro b/website/src/components/generated/NumberOfRules.astro index 400483b48d7..f57b1c92f67 100644 --- a/website/src/components/generated/NumberOfRules.astro +++ b/website/src/components/generated/NumberOfRules.astro @@ -1,2 +1,2 @@ -

Rome's linter has a total of 145 rules

\ No newline at end of file +

Rome's linter has a total of 146 rules

\ No newline at end of file