def _perform(environment)
literal1 = @operand1.perform(environment)
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