Sha256: cb1486ca3e122ee5766a04ca86b6e3925f5dcc285e8e0113edc8fd10f28d7d7f

Contents?: true

Size: 880 Bytes

Versions: 2

Compression:

Stored size: 880 Bytes

Contents

module Yoda
  module Typing
    module Tree
      class ClassTree < Base
        def type
          infer_namespace_node(node)
        end

        # @param node [::AST::Node]
        # @return [Types::Base]
        def infer_namespace_node(node)
          case node.type
          when :module
            name_node, block_node = node.children
          when :class
            name_node, _, block_node = node.children
          end
          constant_resolver = ConstantResolver.new(context: context, node: name_node)
          type = constant_resolver.resolve_constant_type
          block_context = NamespaceContext.new(objects: [constant_resolver.constant], parent: context, registry: context.registry, receiver: type)

          if block_node
            derive(context: block_context).infer(block_node)
          end

          type
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yoda-language-server-0.9.0 lib/yoda/typing/tree/class_tree.rb
yoda-language-server-0.8.0 lib/yoda/typing/tree/class_tree.rb