Files
helix/runtime/queries/vala/locals.scm

47 lines
1021 B
Scheme

; Scopes
[
(method_declaration)
(creation_method_declaration)
(constructor_declaration)
(destructor_declaration)
(local_function_declaration)
(lambda_expression)
(block)
(for_statement)
(foreach_statement)
] @local.scope
; Definitions
(parameter
(identifier) @local.definition.variable.parameter)
(lambda_expression
(identifier) @local.definition.variable.parameter)
; `foreach (Type x in ...)` — the identifier after the element type.
(foreach_statement
.
(type)
.
(identifier) @local.definition.variable)
; `Type x = ...;` — first identifier of each assignment in a local declaration.
(local_declaration
(assignment
.
(identifier) @local.definition.variable))
; References
(identifier) @local.reference
; In `a.b`, `b` is a member access rather than a variable reference. A bare name
; is a single-child member_access_expression, so only discard the trailing
; identifier when it follows a receiver expression.
(member_access_expression
(_)
.
(identifier) @_)