Class: RBS::Trace::Builder

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/rbs/trace/builder.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Method Summary collapse

Methods included from Helpers

#new_class_decl, #new_method_definition, #new_module_decl, #type_bool, #type_nil, #type_untyped, #type_void

Instance Method Details

#generics_sizeObject



41
42
43
# File 'lib/rbs/trace/builder.rb', line 41

def generics_size
  @generics_size ||= DEFAULT_GENERICS_SIZE.dup
end

#method_call(bind:, parameters:, void:) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/rbs/trace/builder.rb', line 20

def method_call(bind:, parameters:, void:)
  method_type = parse_parameters(bind, parameters)
  return_type = type_void if void

  [method_type, return_type].tap do |types|
    stack_traces << types
  end
end

#method_return(return_value) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/rbs/trace/builder.rb', line 30

def method_return(return_value)
  method_type, return_type = stack_traces.pop

  type = return_type || parse_object(return_value)
  new_type = method_type.type.with_return_type(type)
  method_type = method_type.update(type: new_type) # rubocop:disable Style/RedundantSelfAssignment

  AST::Members::MethodDefinition::Overload.new(method_type:, annotations: [])
end