diff --git a/.changeset/wicked-bushes-scream.md b/.changeset/wicked-bushes-scream.md new file mode 100644 index 000000000000..eb6912602f93 --- /dev/null +++ b/.changeset/wicked-bushes-scream.md @@ -0,0 +1,11 @@ +--- +"@biomejs/biome": patch +--- + +Fixed [#8079](https://github.com/biomejs/biome/issues/8079): Properly handle `name` and `value` metavariables for `JsxAttribute` GritQL queries. + +The following `biome search` command no longer throws an error: + +``` +biome search 'JsxAttribute($name, $value) as $attr where { $name <: "style" }' +``` diff --git a/crates/biome_grit_patterns/src/grit_target_language/js_target_language/generated_mappings.rs b/crates/biome_grit_patterns/src/grit_target_language/js_target_language/generated_mappings.rs index 916e8ec2808a..9a382fe20bcf 100644 --- a/crates/biome_grit_patterns/src/grit_target_language/js_target_language/generated_mappings.rs +++ b/crates/biome_grit_patterns/src/grit_target_language/js_target_language/generated_mappings.rs @@ -127,7 +127,7 @@ pub const LEGACY_TREESITTER_COMPATIBILITY_PATTERNS: &[LegacyTreeSitterPattern] = LegacyTreeSitterPattern { name: "jsx_attribute", kind: JsSyntaxKind::JSX_ATTRIBUTE, - slots: &[], + slots: &[("name", 0), ("value", 1)], }, LegacyTreeSitterPattern { name: "jsx_element", diff --git a/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.grit b/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.grit new file mode 100644 index 000000000000..07202aefff18 --- /dev/null +++ b/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.grit @@ -0,0 +1,3 @@ +JsxAttribute($name, $value) as $attr where { + $name <: "style" +} diff --git a/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.snap b/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.snap new file mode 100644 index 000000000000..1ab5087a5374 --- /dev/null +++ b/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.snap @@ -0,0 +1,12 @@ +--- +source: crates/biome_grit_patterns/tests/spec_tests.rs +expression: jsx_attributes +--- +SnapshotResult { + messages: [], + matched_ranges: [ + "1:6-1:16", + ], + rewritten_files: [], + created_files: [], +} diff --git a/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.tsx b/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.tsx new file mode 100644 index 000000000000..9957c7fad5a6 --- /dev/null +++ b/crates/biome_grit_patterns/tests/specs/tsx/jsx_attributes.tsx @@ -0,0 +1 @@ +
{children}
; diff --git a/xtask/codegen/src/generate_grit_mappings.rs b/xtask/codegen/src/generate_grit_mappings.rs index b20de1bb5767..ce5f28b8a6ae 100644 --- a/xtask/codegen/src/generate_grit_mappings.rs +++ b/xtask/codegen/src/generate_grit_mappings.rs @@ -275,7 +275,7 @@ const JS_TREESITTER_PATTERNS: &[TreeSitterPattern] = &[ TreeSitterPattern { name: "jsx_attribute", biome_kind: "JSX_ATTRIBUTE", - slots: &[], + slots: &[("name", 0), ("value", 1)], }, TreeSitterPattern { name: "jsx_element",