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.



200
201
202
203
204
205
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 200

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

Instance Method Details

#kindObject



207
208
209
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 207

def kind
  @candidates.last&.last
end

#visit_block_node(node) ⇒ Object



217
218
219
220
221
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 217

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

#visit_block_parameter_node(node) ⇒ Object



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

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

#visit_def_node(node) ⇒ Object



211
212
213
214
215
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 211

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

#visit_keyword_rest_parameter_node(node) ⇒ Object



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

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

#visit_lambda_node(node) ⇒ Object



223
224
225
226
227
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 223

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

#visit_local_variable_and_write_node(node) ⇒ Object



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

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

#visit_local_variable_operator_write_node(node) ⇒ Object



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

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

#visit_local_variable_or_write_node(node) ⇒ Object



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

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

#visit_local_variable_write_node(node) ⇒ Object



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

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

#visit_optional_keyword_parameter_node(node) ⇒ Object



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

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

#visit_optional_parameter_node(node) ⇒ Object



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

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

#visit_required_keyword_parameter_node(node) ⇒ Object



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

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

#visit_required_parameter_node(node) ⇒ Object



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

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

#visit_rest_parameter_node(node) ⇒ Object



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

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