123456789_123456789_123456789_123456789_123456789_

Exception: RBS::MixinClassError

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, DefinitionError, BaseError, StandardError
Instance Chain:
Inherits: RBS::DefinitionError
Defined in: lib/rbs/errors.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(type_name:, member:) ⇒ MixinClassError

[ GitHub ]

  
# File 'lib/rbs/errors.rb', line 449

def initialize(type_name:, member:)
  @type_name = type_name
  @member = member

  super "#{Location.to_string member.location}: Cannot #{mixin_name} a class `#{member.name}` in the definition of `#{type_name}`"
end

Class Method Details

.check!(type_name:, env:, member:)

[ GitHub ]

  
# File 'lib/rbs/errors.rb', line 460

def self.check!(type_name:, env:, member:)
  if env.class_decl?(member.name)
    raise new(type_name: type_name, member: member)
  end
end

Instance Attribute Details

#member (readonly)

[ GitHub ]

  
# File 'lib/rbs/errors.rb', line 447

attr_reader :member

#type_name (readonly)

[ GitHub ]

  
# File 'lib/rbs/errors.rb', line 446

attr_reader :type_name

Instance Method Details

#location

[ GitHub ]

  
# File 'lib/rbs/errors.rb', line 456

def location
  member.location
end

#mixin_name (private)

[ GitHub ]

  
# File 'lib/rbs/errors.rb', line 468

def mixin_name
  case member
  when AST::Members::Prepend
    "prepend"
  when AST::Members::Include
    "include"
  when AST::Members::Extend
    "extend"
  else
    raise
  end
end