# File rbs-1.4.0/lib/rbs/errors.rb, line 67
def self.check!(self_ancestor, ancestors:, location:)
case self_ancestor
when Definition::Ancestor::Instance
if ancestors.any? {|a| a.is_a?(Definition::Ancestor::Instance) && a.name == self_ancestor.name }
raise new(ancestors: ancestors + [self_ancestor], location: location)
end
when Definition::Ancestor::Singleton
if ancestors.include?(self_ancestor)
raise new(ancestors: ancestors + [self_ancestor], location: location)
end
end
end
# File rbs-1.4.0/lib/rbs/errors.rb, line 47
def initialize(ancestors:, location:)
@ancestors = ancestors
@location = location
names = ancestors.map do |ancestor|
case ancestor
when Definition::Ancestor::Singleton
"singleton(#{ancestor.name})"
when Definition::Ancestor::Instance
if ancestor.args.empty?
ancestor.name.to_s
else
"#{ancestor.name}[#{ancestor.args.join(", ")}]"
end
end
end
super "#{Location.to_string location}: Detected recursive ancestors: #{names.join(" < ")}"
end