]> git.lizzy.rs Git - rust.git/commitdiff
add make::expr_op
authorYoshua Wuyts <yoshuawuyts@gmail.com>
Tue, 10 Aug 2021 17:48:32 +0000 (19:48 +0200)
committerYoshua Wuyts <yoshuawuyts@gmail.com>
Tue, 10 Aug 2021 17:48:32 +0000 (19:48 +0200)
crates/syntax/src/ast/expr_ext.rs
crates/syntax/src/ast/make.rs

index 01ab562c7ee5936976fb22c057c7da978cc697bd..b615037b7e391b85ec530e94b6c43b627866f279 100644 (file)
@@ -350,6 +350,42 @@ pub fn sub_exprs(&self) -> (Option<ast::Expr>, Option<ast::Expr>) {
     }
 }
 
+impl std::fmt::Display for BinOp {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        match self {
+            BinOp::BooleanOr => write!(f, "||"),
+            BinOp::BooleanAnd => write!(f, "&&"),
+            BinOp::EqualityTest => write!(f, "=="),
+            BinOp::NegatedEqualityTest => write!(f, "!="),
+            BinOp::LesserEqualTest => write!(f, "<="),
+            BinOp::GreaterEqualTest => write!(f, ">="),
+            BinOp::LesserTest => write!(f, "<"),
+            BinOp::GreaterTest => write!(f, ">"),
+            BinOp::Addition => write!(f, "+"),
+            BinOp::Multiplication => write!(f, "*"),
+            BinOp::Subtraction => write!(f, "-"),
+            BinOp::Division => write!(f, "/"),
+            BinOp::Remainder => write!(f, "%"),
+            BinOp::LeftShift => write!(f, "<<"),
+            BinOp::RightShift => write!(f, ">>"),
+            BinOp::BitwiseXor => write!(f, "^"),
+            BinOp::BitwiseOr => write!(f, "|"),
+            BinOp::BitwiseAnd => write!(f, "&"),
+            BinOp::Assignment => write!(f, "="),
+            BinOp::AddAssign => write!(f, "+="),
+            BinOp::DivAssign => write!(f, "/="),
+            BinOp::MulAssign => write!(f, "*="),
+            BinOp::RemAssign => write!(f, "%="),
+            BinOp::ShrAssign => write!(f, ">>="),
+            BinOp::ShlAssign => write!(f, "<<="),
+            BinOp::SubAssign => write!(f, "-"),
+            BinOp::BitOrAssign => write!(f, "|="),
+            BinOp::BitAndAssign => write!(f, "&="),
+            BinOp::BitXorAssign => write!(f, "^="),
+        }
+    }
+}
+
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
 pub enum RangeOp {
     /// `..`
index ec90be35a6ee92b78f0b91db60ccb1a104b4531e..74f2e5c314cd7ba29c768183d3e5b13d736d84b2 100644 (file)
@@ -264,6 +264,9 @@ pub fn expr_path(path: ast::Path) -> ast::Expr {
 pub fn expr_continue() -> ast::Expr {
     expr_from_text("continue")
 }
+pub fn expr_op(op: ast::BinOp, lhs: ast::Expr, rhs: ast::Expr) -> ast::Expr {
+    expr_from_text(&format!("{} {} {}", lhs, op, rhs))
+}
 pub fn expr_break(expr: Option<ast::Expr>) -> ast::Expr {
     match expr {
         Some(expr) => expr_from_text(&format!("break {}", expr)),