class RBS::Types::Bases::Base

def ==(other)

def ==(other)
  other.is_a?(self.class)
end

def has_classish_type?

def has_classish_type?
  self.is_a?(Bases::Instance) || self.is_a?(Bases::Class)
end

def has_self_type?

def has_self_type?
  self.is_a?(Types::Bases::Self)
end

def hash

def hash
  self.class.hash
end

def initialize(location:)

def initialize(location:)
  @location = location
end

def to_json(state = _ = nil)

def to_json(state = _ = nil)
  klass = to_s.to_sym
  { class: klass, location: location }.to_json(state)
end

def to_s(level = 0)

def to_s(level = 0)
  case self
  when Types::Bases::Bool
    'bool'
  when Types::Bases::Void
    'void'
  when Types::Bases::Any
    raise
  when Types::Bases::Nil
    'nil'
  when Types::Bases::Top
    'top'
  when Types::Bases::Bottom
    'bot'
  when Types::Bases::Self
    'self'
  when Types::Bases::Instance
    'instance'
  when Types::Bases::Class
    'class'
  else
    raise "Unexpected base type: #{inspect}"
  end
end

def with_nonreturn_void?

def with_nonreturn_void?
  self.is_a?(Bases::Void)
end