Sha256: 752b14bbee5f5aa8aa0c436cb574069a97e4b2b4c3e435c680eb7ca1b4c910c9

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

require 'forwardable'

module Yoda
  module Model
    module FunctionSignatures
      # Wrap {FunctionSignature::Base} and allow it access to environment.
      # TODO: Merge this with connected store
      class Wrapper
        extend Forwardable

        # @return [Environment]
        attr_reader :environment

        # @return [FunctionSignature::Base]
        attr_reader :signature

        delegate [:name, :visibility, :sep, :namespace_path, :document, :tags, :sources, :parameters, :primary_source] => :signature

        # @param environment [Environment]
        # @param signature [FunctionSignature::Base]
        def initialize(environment:, signature:)
          @environment = environment
          @signature = signature
        end

        # @param env [Environment]
        # @return [RBS::MethodType]
        def rbs_type
          signature.rbs_type(environment)
        end

        def to_s(include_namespace: false)
          if include_namespace
            "#{namespace_path}#{sep}#{name}#{rbs_type.to_s}"
          else
            "#{name}#{rbs_type.to_s}"
          end
        end

        def wrapper(env)
          Wrapper.new(environment: env, signature: signature)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/model/function_signatures/wrapper.rb
yoda-language-server-0.10.0 lib/yoda/model/function_signatures/wrapper.rb
yoda-language-server-0.9.0 lib/yoda/model/function_signatures/wrapper.rb
yoda-language-server-0.8.0 lib/yoda/model/function_signatures/wrapper.rb