Class: RubyModKit::Memo::OverloadMemo

Inherits:
OffsetMemo
  • Object
show all
Defined in:
lib/ruby_mod_kit/memo/overload_memo.rb

Overview

The memo for parameter type

Instance Attribute Summary collapse

Attributes inherited from OffsetMemo

#offset

Instance Method Summary collapse

Methods inherited from OffsetMemo

#succ

Constructor Details

#initialize(offset, name) ⇒ void

Parameters:

rbs:

  • offset: Integer

  • name: Symbol

  • return: void



23
24
25
26
27
28
# File 'lib/ruby_mod_kit/memo/overload_memo.rb', line 23

def initialize(offset, name)
  @name = name
  @overload_types = []
  @offset_corrected = false
  super(offset)
end

Instance Attribute Details

#nameObject (readonly)

rbs:

  • @name: Symbol

  • @overload_types: [[Array, String]]

  • @offset_corrected: bool

  • @offset: Integer



14
15
16
# File 'lib/ruby_mod_kit/memo/overload_memo.rb', line 14

def name
  @name
end

#overload_typesObject (readonly)

: [[Array, String]]



15
16
17
# File 'lib/ruby_mod_kit/memo/overload_memo.rb', line 15

def overload_types
  @overload_types
end

Instance Method Details

#add_overload_type(parameter_types, return_value_type) ⇒ void

This method returns an undefined value.

Parameters:

rbs:

  • parameter_types: Array

  • return_value_type: String

  • return: void



50
51
52
# File 'lib/ruby_mod_kit/memo/overload_memo.rb', line 50

def add_overload_type(parameter_types, return_value_type)
  @overload_types << [parameter_types, return_value_type]
end

#correct_offset(root_node) ⇒ Integer

Parameters:

Returns:

Raises:

rbs:

  • root_node: Node::ProgramNode

  • return: Integer



34
35
36
37
38
39
40
41
42
# File 'lib/ruby_mod_kit/memo/overload_memo.rb', line 34

def correct_offset(root_node)
  return @offset if @offset_corrected

  node = root_node.def_node_at(@offset)
  raise RubyModKit::Error unless node.is_a?(Node::DefNode)

  @offset_corrected = true
  @offset = node.offset
end