Skip to content

Commit e64e979

Browse files
committed
Make pretty-printer wrap fail/ret/put in parens in call/index/field pos
Closes #764 Closes #891
1 parent bc62b17 commit e64e979

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/comp/syntax/print/pprust.rs

+14-10
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ fn print_expr(s: ps, expr: @ast::expr) {
802802
pclose(s);
803803
}
804804
ast::expr_call(func, args) {
805-
print_expr_parens_if_unary(s, func);
805+
print_expr_parens_if_unary_or_ret(s, func);
806806
popen(s);
807807
commasep_exprs(s, inconsistent, args);
808808
pclose(s);
@@ -826,18 +826,18 @@ fn print_expr(s: ps, expr: @ast::expr) {
826826
}
827827
ast::expr_binary(op, lhs, rhs) {
828828
let prec = operator_prec(op);
829-
print_maybe_parens(s, lhs, prec);
829+
print_op_maybe_parens(s, lhs, prec);
830830
space(s.s);
831831
word_space(s, ast_util::binop_to_str(op));
832-
print_maybe_parens(s, rhs, prec + 1);
832+
print_op_maybe_parens(s, rhs, prec + 1);
833833
}
834834
ast::expr_unary(op, expr) {
835835
word(s.s, ast_util::unop_to_str(op));
836-
print_maybe_parens(s, expr, parse::parser::unop_prec);
836+
print_op_maybe_parens(s, expr, parse::parser::unop_prec);
837837
}
838838
ast::expr_lit(lit) { print_literal(s, lit); }
839839
ast::expr_cast(expr, ty) {
840-
print_maybe_parens(s, expr, parse::parser::as_prec);
840+
print_op_maybe_parens(s, expr, parse::parser::as_prec);
841841
space(s.s);
842842
word_space(s, "as");
843843
print_type(s, ty);
@@ -965,12 +965,12 @@ fn print_expr(s: ps, expr: @ast::expr) {
965965
print_expr(s, rhs);
966966
}
967967
ast::expr_field(expr, id) {
968-
print_expr_parens_if_unary(s, expr);
968+
print_expr_parens_if_unary_or_ret(s, expr);
969969
word(s.s, ".");
970970
word(s.s, id);
971971
}
972972
ast::expr_index(expr, index) {
973-
print_expr_parens_if_unary(s, expr);
973+
print_expr_parens_if_unary_or_ret(s, expr);
974974
word(s.s, "[");
975975
print_expr(s, index);
976976
word(s.s, "]");
@@ -1072,8 +1072,12 @@ fn print_expr(s: ps, expr: @ast::expr) {
10721072
end(s);
10731073
}
10741074

1075-
fn print_expr_parens_if_unary(s: ps, ex: @ast::expr) {
1076-
let parens = alt ex.node { ast::expr_unary(_, _) { true } _ { false } };
1075+
fn print_expr_parens_if_unary_or_ret(s: ps, ex: @ast::expr) {
1076+
let parens = alt ex.node {
1077+
ast::expr_fail(_) | ast::expr_ret(_) | ast::expr_put(_) |
1078+
ast::expr_unary(_, _) { true }
1079+
_ { false }
1080+
};
10771081
if parens { popen(s); }
10781082
print_expr(s, ex);
10791083
if parens { pclose(s); }
@@ -1368,7 +1372,7 @@ fn need_parens(expr: @ast::expr, outer_prec: int) -> bool {
13681372
}
13691373
}
13701374

1371-
fn print_maybe_parens(s: ps, expr: @ast::expr, outer_prec: int) {
1375+
fn print_op_maybe_parens(s: ps, expr: @ast::expr, outer_prec: int) {
13721376
let add_them = need_parens(expr, outer_prec);
13731377
if add_them { popen(s); }
13741378
print_expr(s, expr);

0 commit comments

Comments
 (0)