Class: RubyLsp::PinkSpoon::LocalVarKindFinder

Inherits:
Prism::Visitor
  • Object
show all
Defined in:
lib/ruby_lsp/pink_spoon/hover_listener.rb

Overview

Determines whether a local variable is a method parameter, block parameter, or a plain local variable assignment.

Instance Method Summary collapse

Constructor Details

#initialize(var_name, before_line) ⇒ LocalVarKindFinder

Returns a new instance of LocalVarKindFinder.



119
120
121
122
123
124
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 119

def initialize(var_name, before_line)
  @var_name    = var_name
  @before_line = before_line
  @candidates  = []
  @context     = []
end

Instance Method Details

#kindObject



126
127
128
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 126

def kind
  @candidates.last&.last
end

#visit_block_node(node) ⇒ Object



136
137
138
139
140
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 136

def visit_block_node(node)
  @context.push(:block)
  super
  @context.pop
end

#visit_block_parameter_node(node) ⇒ Object



157
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 157

def visit_block_parameter_node(node)            = record_param(node) || super

#visit_def_node(node) ⇒ Object



130
131
132
133
134
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 130

def visit_def_node(node)
  @context.push(:method)
  super
  @context.pop
end

#visit_keyword_rest_parameter_node(node) ⇒ Object



156
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 156

def visit_keyword_rest_parameter_node(node)     = record_param(node) || super

#visit_lambda_node(node) ⇒ Object



142
143
144
145
146
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 142

def visit_lambda_node(node)
  @context.push(:block)
  super
  @context.pop
end

#visit_local_variable_and_write_node(node) ⇒ Object



151
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 151

def visit_local_variable_and_write_node(node)      = record(node, :local_var) || super

#visit_local_variable_operator_write_node(node) ⇒ Object



149
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 149

def visit_local_variable_operator_write_node(node) = record(node, :local_var) || super

#visit_local_variable_or_write_node(node) ⇒ Object



150
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 150

def visit_local_variable_or_write_node(node)       = record(node, :local_var) || super

#visit_local_variable_write_node(node) ⇒ Object



148
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 148

def visit_local_variable_write_node(node)          = record(node, :local_var) || super

#visit_optional_keyword_parameter_node(node) ⇒ Object



159
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 159

def visit_optional_keyword_parameter_node(node) = record_param(node) || super

#visit_optional_parameter_node(node) ⇒ Object



154
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 154

def visit_optional_parameter_node(node)         = record_param(node) || super

#visit_required_keyword_parameter_node(node) ⇒ Object



158
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 158

def visit_required_keyword_parameter_node(node) = record_param(node) || super

#visit_required_parameter_node(node) ⇒ Object



153
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 153

def visit_required_parameter_node(node)         = record_param(node) || super

#visit_rest_parameter_node(node) ⇒ Object



155
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 155

def visit_rest_parameter_node(node)             = record_param(node) || super