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

34 lines
1.2 KiB
Scheme

; Method, class, module and singleton-class bodies don't see locals from the
; enclosing scope in Ruby, so they must not inherit.
([
(method)
(singleton_method)
(class)
(module)
(singleton_class)
] @local.scope
(#set! local.scope-inherits false))
[
(lambda)
(block)
(do_block)
] @local.scope
(block_parameter (identifier) @local.definition.variable.parameter)
(block_parameters (identifier) @local.definition.variable.parameter)
(destructured_parameter (identifier) @local.definition.variable.parameter)
(hash_splat_parameter (identifier) @local.definition.variable.parameter)
(lambda_parameters (identifier) @local.definition.variable.parameter)
(method_parameters (identifier) @local.definition.variable.parameter)
(splat_parameter (identifier) @local.definition.variable.parameter)
(keyword_parameter name: (identifier) @local.definition.variable.parameter)
(optional_parameter name: (identifier) @local.definition.variable.parameter)
(identifier) @local.reference
; A method-call name is not a variable reference (the grammar only forms `call`
; when it's syntactically a call), so a same-named local must not capture it.
(call
method: (identifier) @_)