1 // Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution.
4 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7 // option. This file may not be copied, modified, or distributed
8 // except according to those terms.
10 //! Utility functions about comparison operators.
12 #![deny(clippy::missing_docs_in_private_items)]
14 use rustc::hir::{BinOpKind, Expr};
16 #[derive(PartialEq, Eq, Debug, Copy, Clone)]
17 /// Represent a normalized comparison operator.
29 /// Put the expression in the form `lhs < rhs`, `lhs <= rhs`, `lhs == rhs` or
31 pub fn normalize_comparison<'a>(op: BinOpKind, lhs: &'a Expr, rhs: &'a Expr) -> Option<(Rel, &'a Expr, &'a Expr)> {
33 BinOpKind::Lt => Some((Rel::Lt, lhs, rhs)),
34 BinOpKind::Le => Some((Rel::Le, lhs, rhs)),
35 BinOpKind::Gt => Some((Rel::Lt, rhs, lhs)),
36 BinOpKind::Ge => Some((Rel::Le, rhs, lhs)),
37 BinOpKind::Eq => Some((Rel::Eq, rhs, lhs)),
38 BinOpKind::Ne => Some((Rel::Ne, rhs, lhs)),