@@ -741,7 +741,7 @@ fn print_expr(&ps s, &@ast::expr expr) {
741
741
word ( s. s , "}" ) ;
742
742
}
743
743
case ( ast:: expr_call ( ?func, ?args) ) {
744
- print_expr ( s, func) ;
744
+ print_expr_parens_if_unary ( s, func) ;
745
745
popen ( s) ;
746
746
commasep_exprs ( s, inconsistent, args) ;
747
747
pclose ( s) ;
@@ -909,12 +909,12 @@ fn print_expr(&ps s, &@ast::expr expr) {
909
909
print_expr ( s, rhs) ;
910
910
}
911
911
case ( ast:: expr_field ( ?expr, ?id) ) {
912
- print_expr ( s, expr) ;
912
+ print_expr_parens_if_unary ( s, expr) ;
913
913
word ( s. s , "." ) ;
914
914
word ( s. s , id) ;
915
915
}
916
916
case ( ast:: expr_index ( ?expr, ?index) ) {
917
- print_expr ( s, expr) ;
917
+ print_expr_parens_if_unary ( s, expr) ;
918
918
word ( s. s , "." ) ;
919
919
popen ( s) ;
920
920
print_expr ( s, index) ;
@@ -1051,6 +1051,16 @@ fn print_expr(&ps s, &@ast::expr expr) {
1051
1051
end( s) ;
1052
1052
}
1053
1053
1054
+ fn print_expr_parens_if_unary( & ps s, & @ast:: expr ex) {
1055
+ auto parens = alt ex. node {
1056
+ ast:: expr_unary ( _, _) { true }
1057
+ _ { false }
1058
+ } ;
1059
+ if parens { popen( s) ; }
1060
+ print_expr( s, ex) ;
1061
+ if parens { pclose( s) ; }
1062
+ }
1063
+
1054
1064
fn print_decl( & ps s, & @ast:: decl decl) {
1055
1065
maybe_print_comment( s, decl. span . lo ) ;
1056
1066
alt ( decl. node ) {
0 commit comments