Class: Yoda::Typing::ConstantResolver

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/yoda/typing/constant_resolver.rb,
lib/yoda/typing/constant_resolver/query.rb,
lib/yoda/typing/constant_resolver/code_query.rb,
lib/yoda/typing/constant_resolver/cbase_query.rb,
lib/yoda/typing/constant_resolver/node_tracer.rb,
lib/yoda/typing/constant_resolver/member_query.rb,
lib/yoda/typing/constant_resolver/relative_base_query.rb

Defined Under Namespace

Classes: CbaseQuery, CodeQuery, MemberQuery, NodeTracer, Query, RelativeBaseQuery

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context:) ⇒ ConstantResolver

Returns a new instance of ConstantResolver.

Parameters:

  • context (ContextsBaseContext)


22
23
24
# File 'lib/yoda/typing/constant_resolver.rb', line 22

def initialize(context:)
  @context = context
end

Instance Attribute Details

#context ⇒ Contexts::BaseContext (readonly)



16
17
18
# File 'lib/yoda/typing/constant_resolver.rb', line 16

def context
  @context
end

Instance Method Details

#build_query_for_node(node, tracer:) ⇒ ConstantScope::Query

Parameters:

Returns:

  • (ConstantScope::Query)


29
30
31
# File 'lib/yoda/typing/constant_resolver.rb', line 29

def build_query_for_node(node, tracer:)
  Query.from_node(node, tracer: tracer)
end

#generator ⇒ Types::Generator

Returns:



19
# File 'lib/yoda/typing/constant_resolver.rb', line 19

delegate [:generator] => :context

#resolve(query) ⇒ Types::Base

Parameters:

  • query (ConstantScope::Query)

Returns:



42
43
44
45
46
47
# File 'lib/yoda/typing/constant_resolver.rb', line 42

def resolve(query)
  query.tracer&.bind_context(context: context)
  type = infer(query)
  query.tracer&.bind_type(type: type, context: context)
  type
end

#resolve_path(path) ⇒ Types::Base

Parameters:

  • path (String)

Returns:



35
36
37
38
# File 'lib/yoda/typing/constant_resolver.rb', line 35

def resolve_path(path)
  query = Query.from_string(path.to_s)
  resolve(query)
end