class RBS::Definition::InstanceAncestors

Attributes

ancestors[R]
params[R]
type_name[R]

Public Class Methods

new(type_name:, params:, ancestors:) click to toggle source
# File rbs-3.7.0/lib/rbs/definition.rb, line 236
def initialize(type_name:, params:, ancestors:)
  @type_name = type_name
  @params = params
  @ancestors = ancestors
end

Public Instance Methods

apply(args, env:, location:) click to toggle source
# File rbs-3.7.0/lib/rbs/definition.rb, line 242
def apply(args, env:, location:)
  InvalidTypeApplicationError.check2!(env: env, type_name: type_name, args: args, location: location)

  subst = Substitution.build(params, args)

  ancestors.map do |ancestor|
    case ancestor
    when Ancestor::Instance
      if ancestor.args.empty?
        ancestor
      else
        Ancestor::Instance.new(
          name: ancestor.name,
          args: ancestor.args.map {|type| type.sub(subst) },
          source: ancestor.source
        )
      end
    when Ancestor::Singleton
      ancestor
    end
  end
end