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
- #member readonly
- #type_name readonly
Instance Method Summary
- #location
- #member_name(member) private
- #mixin_name private
DetailedMessageable - Included
Constructor Details
.new(type_name:, member:) ⇒ MixinClassError
# File 'lib/rbs/errors.rb', line 474
def initialize(type_name:, member:) @type_name = type_name @member = member super "#{Location.to_string member.location}: Cannot #{mixin_name} a class `#{member_name(member)}` in the definition of `#{type_name}`" end
Class Method Details
.check!(type_name:, env:, member:)
[ GitHub ]# File 'lib/rbs/errors.rb', line 485
def self.check!(type_name:, env:, member:) name = case member when AST::Members::Include, AST::Members::Extend, AST::Members::Prepend member.name when AST::Ruby::Members::IncludeMember, AST::Ruby::Members::ExtendMember, AST::Ruby::Members::PrependMember member.module_name else raise "Unknown member type: #{member.class}" end if env.class_decl?(name) raise new(type_name: type_name, member: member) end end
Instance Attribute Details
#member (readonly)
[ GitHub ]# File 'lib/rbs/errors.rb', line 472
attr_reader :member
#type_name (readonly)
[ GitHub ]# File 'lib/rbs/errors.rb', line 471
attr_reader :type_name
Instance Method Details
#location
[ GitHub ]# File 'lib/rbs/errors.rb', line 481
def location member.location end
#member_name(member) (private)
[ GitHub ]# File 'lib/rbs/errors.rb', line 502
def member_name(member) case member when AST::Members::Include, AST::Members::Extend, AST::Members::Prepend member.name when AST::Ruby::Members::IncludeMember, AST::Ruby::Members::ExtendMember, AST::Ruby::Members::PrependMember member.module_name else raise "Unknown member type: #{member.class}" end end
#mixin_name (private)
[ GitHub ]# File 'lib/rbs/errors.rb', line 513
def mixin_name case member when AST::Members::Prepend, AST::Ruby::Members::PrependMember "prepend" when AST::Members::Include, AST::Ruby::Members::IncludeMember "include" when AST::Members::Extend, AST::Ruby::Members::ExtendMember "extend" else raise "Unknown member type: #{member.class}" end end