From 68d21bad7683e10c45b53f6eab53b458aba92d7f Mon Sep 17 00:00:00 2001 From: ryo-ebata Date: Mon, 12 Aug 2024 21:20:14 +0900 Subject: [PATCH 1/6] chore: run just new-js-lintrule useAriaPropsSupportedByRole --- .../src/analyzer/linter/rules.rs | 112 +++++++++++------- .../src/categories.rs | 1 + crates/biome_js_analyze/src/lint/nursery.rs | 2 + .../use_aria_props_supported_by_role.rs | 67 +++++++++++ crates/biome_js_analyze/src/options.rs | 1 + .../useAriaPropsSupportedByRole/invalid.js | 3 + .../useAriaPropsSupportedByRole/valid.js | 2 + .../@biomejs/backend-jsonrpc/src/workspace.ts | 5 + .../@biomejs/biome/configuration_schema.json | 7 ++ 9 files changed, 154 insertions(+), 46 deletions(-) create mode 100644 crates/biome_js_analyze/src/lint/nursery/use_aria_props_supported_by_role.rs create mode 100644 crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js create mode 100644 crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/valid.js diff --git a/crates/biome_configuration/src/analyzer/linter/rules.rs b/crates/biome_configuration/src/analyzer/linter/rules.rs index 2ea6524cb4dd..add07f8286ab 100644 --- a/crates/biome_configuration/src/analyzer/linter/rules.rs +++ b/crates/biome_configuration/src/analyzer/linter/rules.rs @@ -3018,6 +3018,10 @@ pub struct Nursery { #[serde(skip_serializing_if = "Option::is_none")] pub use_adjacent_overload_signatures: Option>, + #[doc = "Succinct description of the rule."] + #[serde(skip_serializing_if = "Option::is_none")] + pub use_aria_props_supported_by_role: + Option>, #[doc = "Enforce the use of new for all builtins, except String, Number, Boolean, Symbol and BigInt."] #[serde(skip_serializing_if = "Option::is_none")] pub use_consistent_builtin_instantiation: @@ -3155,6 +3159,7 @@ impl Nursery { "noValueAtRule", "noYodaExpression", "useAdjacentOverloadSignatures", + "useAriaPropsSupportedByRole", "useConsistentBuiltinInstantiation", "useConsistentCurlyBraces", "useConsistentGridAreas", @@ -3225,11 +3230,11 @@ impl Nursery { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[30]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[31]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[33]), - RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[44]), - RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[47]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[45]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[48]), - RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[52]), - RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[54]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[49]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[53]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[55]), ]; const ALL_RULES_AS_FILTERS: &'static [RuleFilter<'static>] = &[ RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[0]), @@ -3292,6 +3297,7 @@ impl Nursery { RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[57]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[58]), RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[59]), + RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[60]), ]; #[doc = r" Retrieves the recommended rules"] pub(crate) fn is_recommended_true(&self) -> bool { @@ -3503,111 +3509,116 @@ impl Nursery { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[38])); } } - if let Some(rule) = self.use_consistent_builtin_instantiation.as_ref() { + if let Some(rule) = self.use_aria_props_supported_by_role.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[39])); } } - if let Some(rule) = self.use_consistent_curly_braces.as_ref() { + if let Some(rule) = self.use_consistent_builtin_instantiation.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[40])); } } - if let Some(rule) = self.use_consistent_grid_areas.as_ref() { + if let Some(rule) = self.use_consistent_curly_braces.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[41])); } } - if let Some(rule) = self.use_date_now.as_ref() { + if let Some(rule) = self.use_consistent_grid_areas.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[42])); } } - if let Some(rule) = self.use_default_switch_clause.as_ref() { + if let Some(rule) = self.use_date_now.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[43])); } } - if let Some(rule) = self.use_deprecated_reason.as_ref() { + if let Some(rule) = self.use_default_switch_clause.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[44])); } } - if let Some(rule) = self.use_error_message.as_ref() { + if let Some(rule) = self.use_deprecated_reason.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[45])); } } - if let Some(rule) = self.use_explicit_length_check.as_ref() { + if let Some(rule) = self.use_error_message.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[46])); } } - if let Some(rule) = self.use_focusable_interactive.as_ref() { + if let Some(rule) = self.use_explicit_length_check.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[47])); } } - if let Some(rule) = self.use_generic_font_names.as_ref() { + if let Some(rule) = self.use_focusable_interactive.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[48])); } } - if let Some(rule) = self.use_import_extensions.as_ref() { + if let Some(rule) = self.use_generic_font_names.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[49])); } } - if let Some(rule) = self.use_import_restrictions.as_ref() { + if let Some(rule) = self.use_import_extensions.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[50])); } } - if let Some(rule) = self.use_number_to_fixed_digits_argument.as_ref() { + if let Some(rule) = self.use_import_restrictions.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[51])); } } - if let Some(rule) = self.use_semantic_elements.as_ref() { + if let Some(rule) = self.use_number_to_fixed_digits_argument.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[52])); } } - if let Some(rule) = self.use_sorted_classes.as_ref() { + if let Some(rule) = self.use_semantic_elements.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[53])); } } - if let Some(rule) = self.use_strict_mode.as_ref() { + if let Some(rule) = self.use_sorted_classes.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[54])); } } - if let Some(rule) = self.use_throw_new_error.as_ref() { + if let Some(rule) = self.use_strict_mode.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[55])); } } - if let Some(rule) = self.use_throw_only_error.as_ref() { + if let Some(rule) = self.use_throw_new_error.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[56])); } } - if let Some(rule) = self.use_top_level_regex.as_ref() { + if let Some(rule) = self.use_throw_only_error.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[57])); } } - if let Some(rule) = self.use_trim_start_end.as_ref() { + if let Some(rule) = self.use_top_level_regex.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[58])); } } - if let Some(rule) = self.use_valid_autocomplete.as_ref() { + if let Some(rule) = self.use_trim_start_end.as_ref() { if rule.is_enabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[59])); } } + if let Some(rule) = self.use_valid_autocomplete.as_ref() { + if rule.is_enabled() { + index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[60])); + } + } index_set } pub(crate) fn get_disabled_rules(&self) -> FxHashSet> { @@ -3807,111 +3818,116 @@ impl Nursery { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[38])); } } - if let Some(rule) = self.use_consistent_builtin_instantiation.as_ref() { + if let Some(rule) = self.use_aria_props_supported_by_role.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[39])); } } - if let Some(rule) = self.use_consistent_curly_braces.as_ref() { + if let Some(rule) = self.use_consistent_builtin_instantiation.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[40])); } } - if let Some(rule) = self.use_consistent_grid_areas.as_ref() { + if let Some(rule) = self.use_consistent_curly_braces.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[41])); } } - if let Some(rule) = self.use_date_now.as_ref() { + if let Some(rule) = self.use_consistent_grid_areas.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[42])); } } - if let Some(rule) = self.use_default_switch_clause.as_ref() { + if let Some(rule) = self.use_date_now.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[43])); } } - if let Some(rule) = self.use_deprecated_reason.as_ref() { + if let Some(rule) = self.use_default_switch_clause.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[44])); } } - if let Some(rule) = self.use_error_message.as_ref() { + if let Some(rule) = self.use_deprecated_reason.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[45])); } } - if let Some(rule) = self.use_explicit_length_check.as_ref() { + if let Some(rule) = self.use_error_message.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[46])); } } - if let Some(rule) = self.use_focusable_interactive.as_ref() { + if let Some(rule) = self.use_explicit_length_check.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[47])); } } - if let Some(rule) = self.use_generic_font_names.as_ref() { + if let Some(rule) = self.use_focusable_interactive.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[48])); } } - if let Some(rule) = self.use_import_extensions.as_ref() { + if let Some(rule) = self.use_generic_font_names.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[49])); } } - if let Some(rule) = self.use_import_restrictions.as_ref() { + if let Some(rule) = self.use_import_extensions.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[50])); } } - if let Some(rule) = self.use_number_to_fixed_digits_argument.as_ref() { + if let Some(rule) = self.use_import_restrictions.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[51])); } } - if let Some(rule) = self.use_semantic_elements.as_ref() { + if let Some(rule) = self.use_number_to_fixed_digits_argument.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[52])); } } - if let Some(rule) = self.use_sorted_classes.as_ref() { + if let Some(rule) = self.use_semantic_elements.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[53])); } } - if let Some(rule) = self.use_strict_mode.as_ref() { + if let Some(rule) = self.use_sorted_classes.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[54])); } } - if let Some(rule) = self.use_throw_new_error.as_ref() { + if let Some(rule) = self.use_strict_mode.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[55])); } } - if let Some(rule) = self.use_throw_only_error.as_ref() { + if let Some(rule) = self.use_throw_new_error.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[56])); } } - if let Some(rule) = self.use_top_level_regex.as_ref() { + if let Some(rule) = self.use_throw_only_error.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[57])); } } - if let Some(rule) = self.use_trim_start_end.as_ref() { + if let Some(rule) = self.use_top_level_regex.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[58])); } } - if let Some(rule) = self.use_valid_autocomplete.as_ref() { + if let Some(rule) = self.use_trim_start_end.as_ref() { if rule.is_disabled() { index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[59])); } } + if let Some(rule) = self.use_valid_autocomplete.as_ref() { + if rule.is_disabled() { + index_set.insert(RuleFilter::Rule(Self::GROUP_NAME, Self::GROUP_RULES[60])); + } + } index_set } #[doc = r" Checks if, given a rule name, matches one of the rules contained in this category"] @@ -4104,6 +4120,10 @@ impl Nursery { .use_adjacent_overload_signatures .as_ref() .map(|conf| (conf.level(), conf.get_options())), + "useAriaPropsSupportedByRole" => self + .use_aria_props_supported_by_role + .as_ref() + .map(|conf| (conf.level(), conf.get_options())), "useConsistentBuiltinInstantiation" => self .use_consistent_builtin_instantiation .as_ref() diff --git a/crates/biome_diagnostics_categories/src/categories.rs b/crates/biome_diagnostics_categories/src/categories.rs index 9303c63272ac..36bf86b7c87c 100644 --- a/crates/biome_diagnostics_categories/src/categories.rs +++ b/crates/biome_diagnostics_categories/src/categories.rs @@ -155,6 +155,7 @@ define_categories! { "lint/nursery/noValueAtRule": "https://biomejs.dev/linter/rules/no-value-at-rule", "lint/nursery/noYodaExpression": "https://biomejs.dev/linter/rules/no-yoda-expression", "lint/nursery/useAdjacentOverloadSignatures": "https://biomejs.dev/linter/rules/use-adjacent-overload-signatures", + "lint/nursery/useAriaPropsSupportedByRole": "https://biomejs.dev/linter/rules/use-aria-props-supported-by-role", "lint/nursery/useBiomeSuppressionComment": "https://biomejs.dev/linter/rules/use-biome-suppression-comment", "lint/nursery/useConsistentBuiltinInstantiation": "https://biomejs.dev/linter/rules/use-consistent-new-builtin", "lint/nursery/useConsistentCurlyBraces": "https://biomejs.dev/linter/rules/use-consistent-curly-braces", diff --git a/crates/biome_js_analyze/src/lint/nursery.rs b/crates/biome_js_analyze/src/lint/nursery.rs index 2b5312c53465..ca46454181e6 100644 --- a/crates/biome_js_analyze/src/lint/nursery.rs +++ b/crates/biome_js_analyze/src/lint/nursery.rs @@ -22,6 +22,7 @@ pub mod no_useless_string_concat; pub mod no_useless_undefined_initialization; pub mod no_yoda_expression; pub mod use_adjacent_overload_signatures; +pub mod use_aria_props_supported_by_role; pub mod use_consistent_builtin_instantiation; pub mod use_consistent_curly_braces; pub mod use_date_now; @@ -65,6 +66,7 @@ declare_lint_group! { self :: no_useless_undefined_initialization :: NoUselessUndefinedInitialization , self :: no_yoda_expression :: NoYodaExpression , self :: use_adjacent_overload_signatures :: UseAdjacentOverloadSignatures , + self :: use_aria_props_supported_by_role :: UseAriaPropsSupportedByRole , self :: use_consistent_builtin_instantiation :: UseConsistentBuiltinInstantiation , self :: use_consistent_curly_braces :: UseConsistentCurlyBraces , self :: use_date_now :: UseDateNow , diff --git a/crates/biome_js_analyze/src/lint/nursery/use_aria_props_supported_by_role.rs b/crates/biome_js_analyze/src/lint/nursery/use_aria_props_supported_by_role.rs new file mode 100644 index 000000000000..4f6170476ced --- /dev/null +++ b/crates/biome_js_analyze/src/lint/nursery/use_aria_props_supported_by_role.rs @@ -0,0 +1,67 @@ +use biome_analyze::{context::RuleContext, declare_lint_rule, Ast, Rule, RuleDiagnostic}; +use biome_console::markup; +use biome_js_syntax::JsIdentifierBinding; +use biome_rowan::AstNode; + +declare_lint_rule! { + /// Succinct description of the rule. + /// + /// Put context and details about the rule. + /// As a starting point, you can take the description of the corresponding _ESLint_ rule (if any). + /// + /// Try to stay consistent with the descriptions of implemented rules. + /// + /// ## Examples + /// + /// ### Invalid + /// + /// ```js,expect_diagnostic + /// var a = 1; + /// a = 2; + /// ``` + /// + /// ### Valid + /// + /// ```js + /// // var a = 1; + /// ``` + /// + pub UseAriaPropsSupportedByRole { + version: "next", + name: "useAriaPropsSupportedByRole", + language: "js", + recommended: false, + } +} + +impl Rule for UseAriaPropsSupportedByRole { + type Query = Ast; + type State = (); + type Signals = Option; + type Options = (); + + fn run(ctx: &RuleContext) -> Self::Signals { + let _binding = ctx.query(); + Some(()) + } + + fn diagnostic(ctx: &RuleContext, _state: &Self::State) -> Option { + // + // Read our guidelines to write great diagnostics: + // https://docs.rs/biome_analyze/latest/biome_analyze/#what-a-rule-should-say-to-the-user + // + let node = ctx.query(); + Some( + RuleDiagnostic::new( + rule_category!(), + node.range(), + markup! { + "Variable is read here." + }, + ) + .note(markup! { + "This note will give you more information." + }), + ) + } +} diff --git a/crates/biome_js_analyze/src/options.rs b/crates/biome_js_analyze/src/options.rs index ec27bf46b6bd..814899e66ee5 100644 --- a/crates/biome_js_analyze/src/options.rs +++ b/crates/biome_js_analyze/src/options.rs @@ -263,6 +263,7 @@ pub type UseAnchorContent = pub type UseAriaActivedescendantWithTabindex = < lint :: a11y :: use_aria_activedescendant_with_tabindex :: UseAriaActivedescendantWithTabindex as biome_analyze :: Rule > :: Options ; pub type UseAriaPropsForRole = ::Options; +pub type UseAriaPropsSupportedByRole = < lint :: nursery :: use_aria_props_supported_by_role :: UseAriaPropsSupportedByRole as biome_analyze :: Rule > :: Options ; pub type UseArrayLiterals = ::Options; pub type UseArrowFunction = diff --git a/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js b/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js new file mode 100644 index 000000000000..d58e4390e601 --- /dev/null +++ b/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js @@ -0,0 +1,3 @@ +var a = 1; +a = 2; +a = 3; \ No newline at end of file diff --git a/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/valid.js b/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/valid.js new file mode 100644 index 000000000000..f299f876959a --- /dev/null +++ b/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/valid.js @@ -0,0 +1,2 @@ +/* should not generate diagnostics */ +// var a = 1; \ No newline at end of file diff --git a/packages/@biomejs/backend-jsonrpc/src/workspace.ts b/packages/@biomejs/backend-jsonrpc/src/workspace.ts index bdd1100965f5..c57b50770b0f 100644 --- a/packages/@biomejs/backend-jsonrpc/src/workspace.ts +++ b/packages/@biomejs/backend-jsonrpc/src/workspace.ts @@ -1282,6 +1282,10 @@ export interface Nursery { * Disallow the use of overload signatures that are not next to each other. */ useAdjacentOverloadSignatures?: RuleConfiguration_for_Null; + /** + * Succinct description of the rule. + */ + useAriaPropsSupportedByRole?: RuleConfiguration_for_Null; /** * Enforce the use of new for all builtins, except String, Number, Boolean, Symbol and BigInt. */ @@ -2639,6 +2643,7 @@ export type Category = | "lint/nursery/noValueAtRule" | "lint/nursery/noYodaExpression" | "lint/nursery/useAdjacentOverloadSignatures" + | "lint/nursery/useAriaPropsSupportedByRole" | "lint/nursery/useBiomeSuppressionComment" | "lint/nursery/useConsistentBuiltinInstantiation" | "lint/nursery/useConsistentCurlyBraces" diff --git a/packages/@biomejs/biome/configuration_schema.json b/packages/@biomejs/biome/configuration_schema.json index d0c3bc9f1e3d..43d6e746700f 100644 --- a/packages/@biomejs/biome/configuration_schema.json +++ b/packages/@biomejs/biome/configuration_schema.json @@ -2112,6 +2112,13 @@ { "type": "null" } ] }, + "useAriaPropsSupportedByRole": { + "description": "Succinct description of the rule.", + "anyOf": [ + { "$ref": "#/definitions/RuleConfiguration" }, + { "type": "null" } + ] + }, "useConsistentBuiltinInstantiation": { "description": "Enforce the use of new for all builtins, except String, Number, Boolean, Symbol and BigInt.", "anyOf": [ From 05b42b9a8b3a51afb9f5c2c7ba94a2854fbbe2d2 Mon Sep 17 00:00:00 2001 From: ryo-ebata Date: Mon, 12 Aug 2024 21:28:31 +0900 Subject: [PATCH 2/6] copied testcase from eslint-plugin-jsx-a11y --- .../useAriaPropsSupportedByRole/invalid.js | 3 - .../useAriaPropsSupportedByRole/invalid.jsx | 39 ++++++++ .../useAriaPropsSupportedByRole/valid.js | 2 - .../useAriaPropsSupportedByRole/valid.jsx | 99 +++++++++++++++++++ 4 files changed, 138 insertions(+), 5 deletions(-) delete mode 100644 crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js create mode 100644 crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.jsx delete mode 100644 crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/valid.js create mode 100644 crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/valid.jsx diff --git a/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js b/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js deleted file mode 100644 index d58e4390e601..000000000000 --- a/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = 1; -a = 2; -a = 3; \ No newline at end of file diff --git a/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.jsx b/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.jsx new file mode 100644 index 000000000000..5f684e200def --- /dev/null +++ b/crates/biome_js_analyze/tests/specs/nursery/useAriaPropsSupportedByRole/invalid.jsx @@ -0,0 +1,39 @@ +<> + + + +foobar + +