Module: Stone::AST::TypeResolver

Defined in:
lib/stone/ast.rb

Overview

Shared type resolution logic for AST nodes

Class Method Summary collapse

Class Method Details

.resolve_node_type(node, mod) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/stone/ast.rb', line 22

module_function def resolve_node_type(node, mod)
  case node
  when Stone::AST::Reference then node.type(mod)
  when Stone::AST::FunctionCall then node.type(mod)
  when Stone::AST::PropertyAccess then resolve_property_type(node, mod)
  else node.type
  end
end

.resolve_property_type(node, mod) ⇒ Object



31
32
33
34
35
36
# File 'lib/stone/ast.rb', line 31

module_function def resolve_property_type(node, mod)
  receiver_type = resolve_node_type(node.receiver, mod)
  return nil unless receiver_type

  receiver_type.property_return_type(node.property)
end