Class: Yoda::Typing::Inferencer::AstTraverser

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/yoda/typing/inferencer/ast_traverser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tracer:, context:) ⇒ AstTraverser

Returns a new instance of AstTraverser.

Parameters:

  • tracer (Tracer)
  • context (ContextsBaseContext)


22
23
24
25
# File 'lib/yoda/typing/inferencer/ast_traverser.rb', line 22

def initialize(tracer:, context:)
  @tracer = tracer
  @context = context
end

Instance Attribute Details

#contextContexts::BaseContext (readonly)



13
14
15
# File 'lib/yoda/typing/inferencer/ast_traverser.rb', line 13

def context
  @context
end

#tracerTracer (readonly)

Returns:



10
11
12
# File 'lib/yoda/typing/inferencer/ast_traverser.rb', line 10

def tracer
  @tracer
end

Instance Method Details

#generatorTypes::Generator

Returns:



18
# File 'lib/yoda/typing/inferencer/ast_traverser.rb', line 18

delegate [:generator] => :context

#traverse(node) ⇒ RBS::Types::t

Parameters:

Returns:

  • (RBS::Types::t)


29
30
31
32
33
34
35
36
37
# File 'lib/yoda/typing/inferencer/ast_traverser.rb', line 29

def traverse(node)
  bind_context(node: node, context: context)
  Logger.trace("Traversing #{node}")
  type = infer_node(node)
  Logger.trace("Traversed #{node} -> #{type.to_s}")
  bind_type(node: node, type: type, context: context)

  type
end