Sha256: 52cb2b671b52df499184e4e973b154be959750df9c3e2376d03529b587d58d51

Contents?: true

Size: 1.94 KB

Versions: 8

Compression:

Stored size: 1.94 KB

Contents

module Yoda
  module Model
    module FunctionSignatures
      class Overload < Base
        # @return [Store::Objects::MethodObject]
        attr_reader :method_object

        # @return [Store::Objects::Overload]
        attr_reader :overload

        # @param method_object [Store::Objects::MethodObject]
        # @param overload [Store::Objects::Overload]
        def initialize(method_object, overload)
          fail ArgumentError, method_object unless method_object.is_a?(Store::Objects::MethodObject)
          fail ArgumentError, overload unless overload.is_a?(Store::Objects::Overload)
          @method_object = method_object
          @overload = overload
        end

        # @return [Symbol]
        def visibility
          method_object.visibility
        end

        # @return [String]
        def name
          method_object.name
        end

        # @return [String]
        def sep
          method_object.sep
        end

        # @return [String]
        def document
          overload.document || method_object.document
        end

        # @return [Types::FunctionType]
        def type
          @type = type_builder.type
        end

        # @return [Array<(String, Integer, Integer)>]
        def sources
          method_object.sources
        end

        # @abstract
        # @return [String]
        def namespace_path
          method_object.namespace_path
        end

        # @return [(String, Integer, Integer), nil]
        def primary_source
          overload.primary_source || method_object.primary_source
        end

        # @return [ParameterList]
        def parameters
          @parameters ||= ParameterList.new(overload.parameters)
        end

        def parameter_type_of(param)
          type_builder.type_of(param)
        end

        private

        # @return [TypeBuilder]
        def type_builder
          @type_builder ||= TypeBuilder.new(parameters, overload.tag_list)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
yoda-language-server-0.7.2 lib/yoda/model/function_signatures/overload.rb
yoda-language-server-0.7.1 lib/yoda/model/function_signatures/overload.rb
yoda-language-server-0.7.0 lib/yoda/model/function_signatures/overload.rb
yoda-language-server-0.6.2 lib/yoda/model/function_signatures/overload.rb
yoda-language-server-0.6.1 lib/yoda/model/function_signatures/overload.rb
yoda-language-server-0.6.0 lib/yoda/model/function_signatures/overload.rb
yoda-language-server-0.5.0 lib/yoda/model/function_signatures/overload.rb
yoda-language-server-0.4.0 lib/yoda/model/function_signatures/overload.rb