diff --git a/runtime/queries/rust/highlights.scm b/runtime/queries/rust/highlights.scm index de59c9321..babc1ce7d 100644 --- a/runtime/queries/rust/highlights.scm +++ b/runtime/queries/rust/highlights.scm @@ -206,11 +206,6 @@ value: (identifier)? @variable field: (field_identifier) @variable.other.member)) -(parameter - pattern: (identifier) @variable.parameter) -(closure_parameters - (identifier) @variable.parameter) - ; ------- ; Keywords ; ------- diff --git a/runtime/queries/rust/locals.scm b/runtime/queries/rust/locals.scm index 6f8e98f04..0267a55dd 100644 --- a/runtime/queries/rust/locals.scm +++ b/runtime/queries/rust/locals.scm @@ -15,9 +15,29 @@ ; Definitions (parameter - pattern: (identifier) @local.definition.variable.parameter) - -(closure_parameters (identifier) @local.definition.variable.parameter) + pattern: [ + ; `foo` in `fn x(foo: !) {}` + (identifier) @local.definition.variable.parameter @variable.parameter + ; `foo` and `bar` in `fn x((foo, bar): !) {}` + (tuple_pattern (identifier)* (identifier) @local.definition.variable.parameter @variable.parameter) + ; `foo` and `bar` in `fn x(Struct { foo, bar }: !) {}` + (struct_pattern + (field_pattern)* + (field_pattern + name: (shorthand_field_identifier) @local.definition.variable.parameter @variable.parameter) + ) + ; `foo` and `bar` in `fn x(TupleStruct(foo, bar): !) {}` + (tuple_struct_pattern + type: _ + (identifier)* + (identifier) @local.definition.variable.parameter @variable.parameter + ) + ; `foo` and `bar` in `fn x([foo, bar]: !) {}` + (slice_pattern + (identifier)* + (identifier) @local.definition.variable.parameter @variable.parameter + ) + ]) ; References (identifier) @local.reference