;; Forked from https://github.com/nvim-treesitter/nvim-treesitter/blob/master/queries/javascript/locals.scm ;; Licensed under the Apache License 2.0 ; inherits: ecma ; Both properties are matched here. ; ; class Foo { ; this.#bar = "baz"; ; this.quuz = "qux"; ; } (field_definition property: [ (property_identifier) (private_property_identifier) ] @definition.var ) ; this.foo = "bar" (assignment_expression left: (member_expression object: (this) property: (property_identifier) @definition.var ) ) (formal_parameters (identifier) @definition.parameter ) ; function(arg = []) { (formal_parameters (assignment_pattern left: (identifier) @definition.parameter ) ) ; x => x (arrow_function parameter: (identifier) @definition.parameter ) ;; ({ a }) => null (formal_parameters (object_pattern (shorthand_property_identifier_pattern) @definition.parameter ) ) ;; ({ a: b }) => null (formal_parameters (object_pattern (pair_pattern value: (identifier) @definition.parameter ) ) ) ;; ([ a ]) => null (formal_parameters (array_pattern (identifier) @definition.parameter ) ) (formal_parameters (rest_pattern (identifier) @definition.parameter ) ) ; Both methods are matched here. ; ; class Foo { ; #bar(x) { x } ; baz(y) { y } ; } (method_definition ( [ (property_identifier) (private_property_identifier) ] @definition.function ) (#set! definition.var.scope parent) ) ; this.foo() (member_expression object: (this) property: (property_identifier) @reference )