@@ -1010,10 +1010,6 @@ impl<'a> State<'a> {
1010
1010
self . pclose ( )
1011
1011
}
1012
1012
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
-
1017
1013
/// Prints an expr using syntax that's acceptable in a condition position, such as the `cond` in
1018
1014
/// `if cond { ... }`.
1019
1015
fn print_expr_as_cond ( & mut self , expr : & hir:: Expr < ' _ > ) {
@@ -1141,7 +1137,7 @@ impl<'a> State<'a> {
1141
1137
_ => parser:: PREC_UNAMBIGUOUS ,
1142
1138
} ;
1143
1139
1144
- self . print_expr_maybe_paren ( func, prec) ;
1140
+ self . print_expr_cond_paren ( func, func . precedence ( ) < prec) ;
1145
1141
self . print_call_post ( args)
1146
1142
}
1147
1143
@@ -1152,7 +1148,7 @@ impl<'a> State<'a> {
1152
1148
args : & [ hir:: Expr < ' _ > ] ,
1153
1149
) {
1154
1150
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 ) ;
1156
1152
self . word ( "." ) ;
1157
1153
self . print_ident ( segment. ident ) ;
1158
1154
@@ -1188,15 +1184,15 @@ impl<'a> State<'a> {
1188
1184
_ => left_prec,
1189
1185
} ;
1190
1186
1191
- self . print_expr_maybe_paren ( lhs, left_prec) ;
1187
+ self . print_expr_cond_paren ( lhs, lhs . precedence ( ) < left_prec) ;
1192
1188
self . space ( ) ;
1193
1189
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)
1195
1191
}
1196
1192
1197
1193
fn print_expr_unary ( & mut self , op : hir:: UnOp , expr : & hir:: Expr < ' _ > ) {
1198
1194
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 )
1200
1196
}
1201
1197
1202
1198
fn print_expr_addr_of (
@@ -1213,7 +1209,7 @@ impl<'a> State<'a> {
1213
1209
self . print_mutability ( mutability, true ) ;
1214
1210
}
1215
1211
}
1216
- self . print_expr_maybe_paren ( expr, parser:: PREC_PREFIX )
1212
+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_PREFIX )
1217
1213
}
1218
1214
1219
1215
fn print_literal ( & mut self , lit : & hir:: Lit ) {
@@ -1352,7 +1348,7 @@ impl<'a> State<'a> {
1352
1348
}
1353
1349
hir:: ExprKind :: Cast ( expr, ty) => {
1354
1350
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) ;
1356
1352
self . space ( ) ;
1357
1353
self . word_space ( "as" ) ;
1358
1354
self . print_type ( ty) ;
@@ -1454,26 +1450,26 @@ impl<'a> State<'a> {
1454
1450
}
1455
1451
hir:: ExprKind :: Assign ( lhs, rhs, _) => {
1456
1452
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 ) ;
1458
1454
self . space ( ) ;
1459
1455
self . word_space ( "=" ) ;
1460
- self . print_expr_maybe_paren ( rhs, prec) ;
1456
+ self . print_expr_cond_paren ( rhs, rhs . precedence ( ) < prec) ;
1461
1457
}
1462
1458
hir:: ExprKind :: AssignOp ( op, lhs, rhs) => {
1463
1459
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 ) ;
1465
1461
self . space ( ) ;
1466
1462
self . word ( op. node . as_str ( ) ) ;
1467
1463
self . word_space ( "=" ) ;
1468
- self . print_expr_maybe_paren ( rhs, prec) ;
1464
+ self . print_expr_cond_paren ( rhs, rhs . precedence ( ) < prec) ;
1469
1465
}
1470
1466
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 ) ;
1472
1468
self . word ( "." ) ;
1473
1469
self . print_ident ( ident) ;
1474
1470
}
1475
1471
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 ) ;
1477
1473
self . word ( "[" ) ;
1478
1474
self . print_expr ( index) ;
1479
1475
self . word ( "]" ) ;
@@ -1487,7 +1483,7 @@ impl<'a> State<'a> {
1487
1483
}
1488
1484
if let Some ( expr) = opt_expr {
1489
1485
self . space ( ) ;
1490
- self . print_expr_maybe_paren ( expr, parser:: PREC_JUMP ) ;
1486
+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_JUMP ) ;
1491
1487
}
1492
1488
}
1493
1489
hir:: ExprKind :: Continue ( destination) => {
@@ -1501,13 +1497,13 @@ impl<'a> State<'a> {
1501
1497
self . word ( "return" ) ;
1502
1498
if let Some ( expr) = result {
1503
1499
self . word ( " " ) ;
1504
- self . print_expr_maybe_paren ( expr, parser:: PREC_JUMP ) ;
1500
+ self . print_expr_cond_paren ( expr, expr . precedence ( ) < parser:: PREC_JUMP ) ;
1505
1501
}
1506
1502
}
1507
1503
hir:: ExprKind :: Become ( result) => {
1508
1504
self . word ( "become" ) ;
1509
1505
self . word ( " " ) ;
1510
- self . print_expr_maybe_paren ( result, parser:: PREC_JUMP ) ;
1506
+ self . print_expr_cond_paren ( result, result . precedence ( ) < parser:: PREC_JUMP ) ;
1511
1507
}
1512
1508
hir:: ExprKind :: InlineAsm ( asm) => {
1513
1509
self . word ( "asm!" ) ;
@@ -1532,7 +1528,7 @@ impl<'a> State<'a> {
1532
1528
}
1533
1529
hir:: ExprKind :: Yield ( expr, _) => {
1534
1530
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 ) ;
1536
1532
}
1537
1533
hir:: ExprKind :: Err ( _) => {
1538
1534
self . popen ( ) ;
0 commit comments