class Solargraph::Pin::Closure

def binder

def binder
  @binder || context
end

def context

def context
  @context ||= begin
    result = super
    if scope == :instance
      result.reduce_class_type
    else
      result
    end
  end
end

def gates

Returns:
  • (::Array) -
def gates
  # @todo This check might not be necessary. There should always be a

  #   root pin

  closure ? closure.gates : ['']
end

def generics

Returns:
  • (::Array) -
def generics
  @generics ||= docstring.tags(:generic).map(&:name)
end

def initialize scope: :class, generics: nil, **splat

Parameters:
  • generics (::Array, nil) --
  • scope (::Symbol) -- :class or :instance
def initialize scope: :class, generics: nil, **splat
  super(**splat)
  @scope = scope
  @generics = generics
end

def rbs_generics

Returns:
  • (String) -
def rbs_generics
  return '' if generics.empty?
  '[' + generics.map { |gen| gen.to_s }.join(', ') + '] '
end

def to_rbs

Returns:
  • (String) -
def to_rbs
  rbs_generics + return_type.to_rbs
end