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.



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

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

Instance Method Details

#kindObject



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

def kind
  @candidates.last&.last
end

#visit_block_node(node) ⇒ Object



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

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

#visit_block_parameter_node(node) ⇒ Object



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

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

#visit_def_node(node) ⇒ Object



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

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

#visit_keyword_rest_parameter_node(node) ⇒ Object



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

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

#visit_lambda_node(node) ⇒ Object



229
230
231
232
233
# File 'lib/ruby_lsp/pink_spoon/hover_listener.rb', line 229

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

#visit_local_variable_and_write_node(node) ⇒ Object



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

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

#visit_local_variable_operator_write_node(node) ⇒ Object



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

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

#visit_local_variable_or_write_node(node) ⇒ Object



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

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

#visit_local_variable_write_node(node) ⇒ Object



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

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

#visit_optional_keyword_parameter_node(node) ⇒ Object



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

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

#visit_optional_parameter_node(node) ⇒ Object



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

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

#visit_required_keyword_parameter_node(node) ⇒ Object



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

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

#visit_required_parameter_node(node) ⇒ Object



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

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

#visit_rest_parameter_node(node) ⇒ Object



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

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