Unnamed repository; edit this file 'description' to name the repository.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
(identifier) @local.reference

[
  (namespace)
  (named_module)
  (function_or_value_defn)
  (fun_expression)
  (for_expression)
  (match_expression)
  (rule)
] @local.scope

(function_declaration_left
  .
  ((_) @local.definition.function))

; Parameters live in `argument_patterns`, which appears under function
; declarations, lambdas (`fun_expression`) and property accessors alike. The
; identifier can sit several pattern wrappers deep (paren/typed/tuple/as), so
; match it at any of those depths.
(argument_patterns
  [
   (_ (identifier) @local.definition.variable.parameter)
   (_ (_ (identifier) @local.definition.variable.parameter))
   (_ (_ (_ (identifier) @local.definition.variable.parameter)))
   (_ (_ (_ (_ (identifier) @local.definition.variable.parameter))))
   (_ (_ (_ (_ (_ (identifier) @local.definition.variable.parameter)))))
   (_ (_ (_ (_ (_ (_ (identifier) @local.definition.variable.parameter))))))
  ])

; `for i in ...` loop variable.
(for_expression
  (identifier) @local.definition.variable)

; The `field` of `a.b` is member access, not a value reference.
(dot_expression
  field: (long_identifier_or_op (identifier) @_))
(dot_expression
  field: (long_identifier_or_op (long_identifier (identifier) @_)))