Class: RubyModKit::Feature::InstanceVariableParameter::InstanceVariableParameterCorrector

Inherits:
Corrector
  • Object
show all
Defined in:
lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb

Overview

the class to correct ‘def foo(@bar) …` -> `def foo(bar) …`

Instance Method Summary collapse

Methods inherited from Corrector

#setup

Instance Method Details

#correct(parse_error, generation) ⇒ void

This method returns an undefined value.

Parameters:

Raises:

rbs:

  • parse_error: Prism::ParseError

  • generation: Generation

  • return: void



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb', line 22

def correct(parse_error, generation)
  src_offset = parse_error.location.start_offset

  name = parse_error.location.slice[1..]
  raise RubyModKit::Error unless name

  parameter_position_node = generation.root_node.node_at(src_offset)
  raise RubyModKit::Error unless parameter_position_node

  generation[src_offset, parse_error.location.length] = name
  parameter_memo = generation.memo_pad.parameter_memo(parameter_position_node)
  parameter_memo.ivar_parameter = true

  return unless parameter_memo.untyped?

  def_parent_node = generation.root_node.def_parent_node_at(parse_error.location.start_offset) || return
  ivar_memo_type = generation.memo_pad.def_parent_memo(def_parent_node).ivar_memo(name.to_sym).type || return
  parameter_memo.type = ivar_memo_type
end

#correctable_error_typesArray<Symbol>

Returns:

rbs:



12
13
14
# File 'lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb', line 12

def correctable_error_types
  i[argument_formal_ivar]
end