Class: RBS::Definition::InstanceAncestors

Inherits:
Object
  • Object
show all
Defined in:
lib/rbs/definition.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type_name:, params:, ancestors:) ⇒ InstanceAncestors

Returns a new instance of InstanceAncestors.



222
223
224
225
226
# File 'lib/rbs/definition.rb', line 222

def initialize(type_name:, params:, ancestors:)
  @type_name = type_name
  @params = params
  @ancestors = ancestors
end

Instance Attribute Details

#ancestorsObject (readonly)

Returns the value of attribute ancestors.



220
221
222
# File 'lib/rbs/definition.rb', line 220

def ancestors
  @ancestors
end

#paramsObject (readonly)

Returns the value of attribute params.



219
220
221
# File 'lib/rbs/definition.rb', line 219

def params
  @params
end

#type_nameObject (readonly)

Returns the value of attribute type_name.



218
219
220
# File 'lib/rbs/definition.rb', line 218

def type_name
  @type_name
end

Instance Method Details

#apply(args, location:) ⇒ Object



228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
# File 'lib/rbs/definition.rb', line 228

def apply(args, location:)
  InvalidTypeApplicationError.check!(
    type_name: type_name,
    args: args,
    params: params,
    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