Sha256: 0a0a9b08b9ee82e92b91f99d62858a30b136528a85807d51f31fa16c45e82da7

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

module Yoda
  module Typing
    module Tree
      # @abstract
      class Base
        # @return [::AST::Node]
        attr_reader :node

        # @return [BaseContext]
        attr_reader :context

        # @param node [::AST::Node]
        # @param context [BaseContext]
        # @param parent [Base, nil]
        def initialize(node:, context:, parent: nil)
          @node = node
          @context = context
          @parent = parent
        end

        # @abstract
        # @return [Array<Base>]
        def children
          fail NotImplementedError
        end

        # @abstract
        # @return [Types::Base]
        def type
          fail NotImplementedError
        end

        # @return [Types::Generator]
        def generator
          @generator ||= Types::Generator.new(context.registry)
        end

        # @param node [::AST::Node]
        # @return [Base]
        def build_child(node, context: nil)
          Tree.build(node, context: context, parent: self)
        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/base.rb
yoda-language-server-0.8.0 lib/yoda/typing/tree/base.rb