# File lib/sass/script/operation.rb, line 73
    def _perform(environment)
      literal1 = @operand1.perform(environment)

      # Special-case :and and :or to support short-circuiting.
      if @operator == :and
        return literal1.to_bool ? @operand2.perform(environment) : literal1
      elsif @operator == :or
        return literal1.to_bool ? literal1 : @operand2.perform(environment)
      end

      literal2 = @operand2.perform(environment)

      if (literal1.is_a?(Null) || literal2.is_a?(Null)) && @operator != :eq && @operator != :neq
        raise Sass::SyntaxError.new("Invalid null operation: \"#{literal1.inspect} #{@operator} #{literal2.inspect}\".")
      end

      begin
        opts(literal1.send(@operator, literal2))
      rescue NoMethodError => e
        raise e unless e.name.to_s == @operator.to_s
        raise Sass::SyntaxError.new("Undefined operation: \"#{literal1} #{@operator} #{literal2}\".")
      end
    end