Class: Optimize::TypeEnv

Inherits:
Object
  • Object
show all
Defined in:
lib/optimize/type_env.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signatures) ⇒ TypeEnv

Returns a new instance of TypeEnv.



10
11
12
13
14
15
# File 'lib/optimize/type_env.rb', line 10

def initialize(signatures)
  @by_key = {}
  signatures.each do |s|
    @by_key[[s.receiver_class, s.method_name]] = s
  end
end

Class Method Details

.from_source(source, file) ⇒ Object



6
7
8
# File 'lib/optimize/type_env.rb', line 6

def self.from_source(source, file)
  new(RbsParser.parse(source, file))
end

Instance Method Details

#empty?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/optimize/type_env.rb', line 21

def empty?
  @by_key.empty?
end

#new_returns?(class_name) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/optimize/type_env.rb', line 30

def new_returns?(class_name)
  class_name
end

#signature_for(receiver_class:, method_name:) ⇒ Object



17
18
19
# File 'lib/optimize/type_env.rb', line 17

def signature_for(receiver_class:, method_name:)
  @by_key[[receiver_class, method_name]]
end

#signature_for_function(function, class_context:) ⇒ Object



25
26
27
28
# File 'lib/optimize/type_env.rb', line 25

def signature_for_function(function, class_context:)
  return nil unless function.type == :method && function.name
  @by_key[[class_context, function.name.to_sym]]
end