lib/rbs/errors.rb in rbs-1.2.1 vs lib/rbs/errors.rb in rbs-1.3.0

- old
+ new

@@ -348,6 +348,42 @@ first_def = defs.first or raise original = first_def.original or raise original.location end end + + class MixinClassError < DefinitionError + attr_reader :type_name + attr_reader :member + + 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 + + def location + member.location + end + + def self.check!(type_name:, env:, member:) + case env.class_decls[member.name] + when Environment::ClassEntry + raise new(type_name: type_name, member: member) + end + end + + private + + def mixin_name + case member + when AST::Members::Prepend + "prepend" + when AST::Members::Include + "include" + when AST::Members::Extend + "extend" + end + end + end end