class Steep::AST::Types::Literal

def ==(other)

def ==(other)
  other.is_a?(Literal) &&
    other.value == value
end

def back_type

def back_type
  klass = case value
          when Integer
            Builtin::Integer
          when String
            Builtin::String
          when Symbol
            Builtin::Symbol
          else
            raise "Unexpected literal type: #{value.inspect}"
          end
  Name::Instance.new(name: klass.module_name, args: [], location: location)
end

def free_variables

def free_variables
  Set.new
end

def hash

def hash
  self.class.hash
end

def initialize(value:, location: nil)

def initialize(value:, location: nil)
  @location = location
  @value = value
end

def level

def level
  [0]
end

def subst(s)

def subst(s)
  self
end

def to_s

def to_s
  value.inspect
end

def with_location(new_location)

def with_location(new_location)
  self.class.new(location: new_location)
end