Sha256: 25f5fa3df4dac4c069cd1cae05ef74aced5da1e70c818d82fc0a01046a72f3d7

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

module Yoda
  module Typing
    module Tree
      class SingletonMethod < Base
        def receiver
          node.children[0]
        end

        def name
          node.children[1]
        end

        def argument
          @argument ||= build_child(node.children[2])
        end

        def body
          @body ||= node.children[3] && build_child(node.children[3], context: method_context)
        end

        # @return [Types::Base]
        def type
          @type ||= generator.symbol_type
        end

        def receiver_type
          @receiver_type ||= receiver.type
        end

        def method_context
          @method_context ||= method_definition_provider.generate_method_context(context: context, args_node: args_node)
        end

        private

        def method_definition_provider
          @method_definition_provider ||= MethodDefinitionResolver.new(
            receiver_type: receiver_type,
            name: name,
            registry: context.registry,
            generator: generator,
          )
        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/singleton_method.rb
yoda-language-server-0.8.0 lib/yoda/typing/tree/singleton_method.rb