]> git.lizzy.rs Git - rust.git/commitdiff
pprust: increase precedence of block-like exprs
authorStuart Pernsteiner <spernsteiner@galois.com>
Thu, 7 Sep 2017 14:28:31 +0000 (10:28 -0400)
committerStuart Pernsteiner <spernsteiner@galois.com>
Thu, 7 Sep 2017 14:28:31 +0000 (10:28 -0400)
src/librustc/hir/print.rs
src/libsyntax/util/parser.rs

index dce7dd33db4235bb361034fc1c666c7a212f5faa..a06ea0af2a9e65cce8da09ec2f5b808c0bb724df 100644 (file)
@@ -2292,12 +2292,6 @@ fn expr_precedence(expr: &hir::Expr) -> i8 {
         hir::ExprRet(..) |
         hir::ExprYield(..) => PREC_JUMP,
 
-        hir::ExprIf(..) |
-        hir::ExprWhile(..) |
-        hir::ExprLoop(..) |
-        hir::ExprMatch(..) |
-        hir::ExprBlock(..) => PREC_BLOCK,
-
         // Binop-like expr kinds, handled by `AssocOp`.
         hir::ExprBinary(op, _, _) => bin_op_to_assoc_op(op.node).precedence() as i8,
 
@@ -2326,6 +2320,11 @@ fn expr_precedence(expr: &hir::Expr) -> i8 {
         hir::ExprTup(..) |
         hir::ExprLit(..) |
         hir::ExprPath(..) |
+        hir::ExprIf(..) |
+        hir::ExprWhile(..) |
+        hir::ExprLoop(..) |
+        hir::ExprMatch(..) |
+        hir::ExprBlock(..) |
         hir::ExprStruct(..) => PREC_PAREN,
     }
 }
index af42b4be6941a42f343a1ec1c7ee587252d0d6ba..a4f06cb1b45da6fca561a7cba8cdde6f4ada1e9b 100644 (file)
@@ -219,7 +219,6 @@ pub fn to_ast_binop(&self) -> Option<BinOpKind> {
 pub const PREC_RESET: i8 = -100;
 pub const PREC_CLOSURE: i8 = -40;
 pub const PREC_JUMP: i8 = -30;
-pub const PREC_BLOCK: i8 = -20;
 pub const PREC_RANGE: i8 = -10;
 // The range 2 ... 14 is reserved for AssocOp binary operator precedences.
 pub const PREC_PREFIX: i8 = 50;
@@ -236,16 +235,6 @@ pub fn expr_precedence(expr: &ast::Expr) -> i8 {
         ExprKind::Ret(..) |
         ExprKind::Yield(..) => PREC_JUMP,
 
-        ExprKind::If(..) |
-        ExprKind::IfLet(..) |
-        ExprKind::While(..) |
-        ExprKind::WhileLet(..) |
-        ExprKind::ForLoop(..) |
-        ExprKind::Loop(..) |
-        ExprKind::Match(..) |
-        ExprKind::Block(..) |
-        ExprKind::Catch(..) => PREC_BLOCK,
-
         // `Range` claims to have higher precedence than `Assign`, but `x .. x = x` fails to parse,
         // instead of parsing as `(x .. x) = x`.  Giving `Range` a lower precedence ensures that
         // `pprust` will add parentheses in the right places to get the desired parse.
@@ -284,6 +273,15 @@ pub fn expr_precedence(expr: &ast::Expr) -> i8 {
         ExprKind::Lit(..) |
         ExprKind::Path(..) |
         ExprKind::Paren(..) |
+        ExprKind::If(..) |
+        ExprKind::IfLet(..) |
+        ExprKind::While(..) |
+        ExprKind::WhileLet(..) |
+        ExprKind::ForLoop(..) |
+        ExprKind::Loop(..) |
+        ExprKind::Match(..) |
+        ExprKind::Block(..) |
+        ExprKind::Catch(..) |
         ExprKind::Struct(..) => PREC_PAREN,
     }
 }