Class: Yoda::Typing::Inferencer::ObjectResolver
- Inherits:
-
Object
- Object
- Yoda::Typing::Inferencer::ObjectResolver
- Defined in:
- lib/yoda/typing/inferencer/object_resolver.rb
Overview
Find object for the given constraints.
Instance Attribute Summary collapse
- #generator ⇒ Types::Generator readonly
- #registry ⇒ Store::Registry readonly
Instance Method Summary collapse
- #call(type) ⇒ Array<Store::Objects::Base>
- #generate_class_context(instance_type, parent:) ⇒ Contexts::Base
-
#initialize(registry:, generator:) ⇒ ObjectResolver
constructor
A new instance of ObjectResolver.
Constructor Details
#initialize(registry:, generator:) ⇒ ObjectResolver
Returns a new instance of ObjectResolver.
14 15 16 |
# File 'lib/yoda/typing/inferencer/object_resolver.rb', line 14 def initialize(registry:, generator:) @registry = registry end |
Instance Attribute Details
#generator ⇒ Types::Generator (readonly)
10 11 12 |
# File 'lib/yoda/typing/inferencer/object_resolver.rb', line 10 def generator @generator end |
#registry ⇒ Store::Registry (readonly)
7 8 9 |
# File 'lib/yoda/typing/inferencer/object_resolver.rb', line 7 def registry @registry end |
Instance Method Details
#call(type) ⇒ Array<Store::Objects::Base>
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/yoda/typing/inferencer/object_resolver.rb', line 20 def call(type) case type when Types::Any [] when Types::Var type.ref ? call(type.ref) : [] when Types::Instance [type.klass] when Types::Union type.types.map { |type| call(type) }.flatten when Types::Generic call(type.base) when Types::AssociativeArray [generator.hash_type] when Types::Tuple [generator.array_type] else [] end end |
#generate_class_context(instance_type, parent:) ⇒ Contexts::Base
44 45 46 47 48 49 50 |
# File 'lib/yoda/typing/inferencer/object_resolver.rb', line 44 def generate_class_context(instance_type, parent:) Contexts::NamespaceContext.new( receiver_value: instance_value.singleton_class_value, parent: parent, registry: registry, ) end |