@@ -1010,10 +1010,6 @@ impl<'a> State<'a> {
10101010 self . pclose ( )
10111011 }
10121012
1013- fn print_expr_maybe_paren ( & mut self , expr : & hir:: Expr < ' _ > , prec : i8 ) {
1014- self . print_expr_cond_paren ( expr, expr. precedence ( ) < prec)
1015- }
1016-
10171013 /// Prints an expr using syntax that's acceptable in a condition position, such as the `cond` in
10181014 /// `if cond { ... }`.
10191015 fn print_expr_as_cond ( & mut self , expr : & hir:: Expr < ' _ > ) {
@@ -1141,7 +1137,7 @@ impl<'a> State<'a> {
11411137 _ => parser:: PREC_UNAMBIGUOUS ,
11421138 } ;
11431139
1144- self . print_expr_maybe_paren ( func, prec) ;
1140+ self . print_expr_cond_paren ( func, func . precedence ( ) < prec) ;
11451141 self . print_call_post ( args)
11461142 }
11471143
@@ -1152,7 +1148,7 @@ impl<'a> State<'a> {
11521148 args : & [ hir:: Expr < ' _ > ] ,
11531149 ) {
11541150 let base_args = args;
1155- self . print_expr_maybe_paren ( receiver, parser:: PREC_UNAMBIGUOUS ) ;
1151+ self . print_expr_cond_paren ( receiver, receiver . precedence ( ) < parser:: PREC_UNAMBIGUOUS ) ;
11561152 self . word ( "." ) ;
11571153 self . print_ident ( segment. ident ) ;
11581154
@@ -1188,15 +1184,15 @@ impl<'a> State<'a> {
11881184 _ => left_prec,
11891185 } ;
11901186
1191- self . print_expr_maybe_paren ( lhs, left_prec) ;
1187+ self . print_expr_cond_paren ( lhs, lhs . precedence ( ) < left_prec) ;
11921188 self . space ( ) ;
11931189 self . word_space ( op. node . as_str ( ) ) ;
1194- self . print_expr_maybe_paren ( rhs, right_prec)
1190+ self . print_expr_cond_paren ( rhs, rhs . precedence ( ) < right_prec)
11951191 }
11961192
11971193 fn print_expr_unary ( & mut self , op : hir:: UnOp , expr : & hir:: Expr < ' _ > ) {
11981194 self . word ( op. as_str ( ) ) ;
1199- self . print_expr_maybe_paren ( expr, parser:: PREC_PREFIX )
1195+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_PREFIX )
12001196 }
12011197
12021198 fn print_expr_addr_of (
@@ -1213,7 +1209,7 @@ impl<'a> State<'a> {
12131209 self . print_mutability ( mutability, true ) ;
12141210 }
12151211 }
1216- self . print_expr_maybe_paren ( expr, parser:: PREC_PREFIX )
1212+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_PREFIX )
12171213 }
12181214
12191215 fn print_literal ( & mut self , lit : & hir:: Lit ) {
@@ -1352,7 +1348,7 @@ impl<'a> State<'a> {
13521348 }
13531349 hir:: ExprKind :: Cast ( expr, ty) => {
13541350 let prec = AssocOp :: As . precedence ( ) as i8 ;
1355- self . print_expr_maybe_paren ( expr, prec) ;
1351+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < prec) ;
13561352 self . space ( ) ;
13571353 self . word_space ( "as" ) ;
13581354 self . print_type ( ty) ;
@@ -1454,26 +1450,26 @@ impl<'a> State<'a> {
14541450 }
14551451 hir:: ExprKind :: Assign ( lhs, rhs, _) => {
14561452 let prec = AssocOp :: Assign . precedence ( ) as i8 ;
1457- self . print_expr_maybe_paren ( lhs, prec + 1 ) ;
1453+ self . print_expr_cond_paren ( lhs, lhs . precedence ( ) <= prec ) ;
14581454 self . space ( ) ;
14591455 self . word_space ( "=" ) ;
1460- self . print_expr_maybe_paren ( rhs, prec) ;
1456+ self . print_expr_cond_paren ( rhs, rhs . precedence ( ) < prec) ;
14611457 }
14621458 hir:: ExprKind :: AssignOp ( op, lhs, rhs) => {
14631459 let prec = AssocOp :: Assign . precedence ( ) as i8 ;
1464- self . print_expr_maybe_paren ( lhs, prec + 1 ) ;
1460+ self . print_expr_cond_paren ( lhs, lhs . precedence ( ) <= prec ) ;
14651461 self . space ( ) ;
14661462 self . word ( op. node . as_str ( ) ) ;
14671463 self . word_space ( "=" ) ;
1468- self . print_expr_maybe_paren ( rhs, prec) ;
1464+ self . print_expr_cond_paren ( rhs, rhs . precedence ( ) < prec) ;
14691465 }
14701466 hir:: ExprKind :: Field ( expr, ident) => {
1471- self . print_expr_maybe_paren ( expr, parser:: PREC_UNAMBIGUOUS ) ;
1467+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_UNAMBIGUOUS ) ;
14721468 self . word ( "." ) ;
14731469 self . print_ident ( ident) ;
14741470 }
14751471 hir:: ExprKind :: Index ( expr, index, _) => {
1476- self . print_expr_maybe_paren ( expr, parser:: PREC_UNAMBIGUOUS ) ;
1472+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_UNAMBIGUOUS ) ;
14771473 self . word ( "[" ) ;
14781474 self . print_expr ( index) ;
14791475 self . word ( "]" ) ;
@@ -1487,7 +1483,7 @@ impl<'a> State<'a> {
14871483 }
14881484 if let Some ( expr) = opt_expr {
14891485 self . space ( ) ;
1490- self . print_expr_maybe_paren ( expr, parser:: PREC_JUMP ) ;
1486+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_JUMP ) ;
14911487 }
14921488 }
14931489 hir:: ExprKind :: Continue ( destination) => {
@@ -1501,13 +1497,13 @@ impl<'a> State<'a> {
15011497 self . word ( "return" ) ;
15021498 if let Some ( expr) = result {
15031499 self . word ( " " ) ;
1504- self . print_expr_maybe_paren ( expr, parser:: PREC_JUMP ) ;
1500+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_JUMP ) ;
15051501 }
15061502 }
15071503 hir:: ExprKind :: Become ( result) => {
15081504 self . word ( "become" ) ;
15091505 self . word ( " " ) ;
1510- self . print_expr_maybe_paren ( result, parser:: PREC_JUMP ) ;
1506+ self . print_expr_cond_paren ( result, result . precedence ( ) < parser:: PREC_JUMP ) ;
15111507 }
15121508 hir:: ExprKind :: InlineAsm ( asm) => {
15131509 self . word ( "asm!" ) ;
@@ -1532,7 +1528,7 @@ impl<'a> State<'a> {
15321528 }
15331529 hir:: ExprKind :: Yield ( expr, _) => {
15341530 self . word_space ( "yield" ) ;
1535- self . print_expr_maybe_paren ( expr, parser:: PREC_JUMP ) ;
1531+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_JUMP ) ;
15361532 }
15371533 hir:: ExprKind :: Err ( _) => {
15381534 self . popen ( ) ;
0 commit comments