accept naked exprs with commas in pattern arms
pretty printing will use them, but indentation is slightly off if the expr is long
This commit is contained in:
parent
a89ed49d3d
commit
c206d024eb
6 changed files with 76 additions and 6 deletions
|
@ -6,7 +6,7 @@ import pp::{break_offset, word, printer,
|
|||
inconsistent, eof};
|
||||
import diagnostic;
|
||||
import ast::{required, provided};
|
||||
import ast_util::operator_prec;
|
||||
import ast_util::{operator_prec, lone_block_expr};
|
||||
import dvec::{dvec, extensions};
|
||||
import parse::classify::*;
|
||||
import util::interner;
|
||||
|
@ -1034,7 +1034,8 @@ fn print_expr(s: ps, &&expr: @ast::expr) {
|
|||
print_maybe_parens_discrim(s, expr);
|
||||
space(s.s);
|
||||
bopen(s);
|
||||
for arms.each |arm| {
|
||||
let len = arms.len();
|
||||
for arms.eachi |i, arm| {
|
||||
space(s.s);
|
||||
cbox(s, alt_indent_unit);
|
||||
ibox(s, 0u);
|
||||
|
@ -1050,8 +1051,19 @@ fn print_expr(s: ps, &&expr: @ast::expr) {
|
|||
some(e) { word_space(s, ~"if"); print_expr(s, e); space(s.s); }
|
||||
none { }
|
||||
}
|
||||
print_possibly_embedded_block(s, arm.body, block_normal,
|
||||
alt_indent_unit);
|
||||
word_space(s, ~"=>");
|
||||
alt lone_block_expr(arm.body) {
|
||||
some(expr) => {
|
||||
end(s); // close the ibox for the pattern
|
||||
print_expr(s, expr);
|
||||
if i < len - 1 { word_space(s, ~","); }
|
||||
end(s); // close enclosing cbox
|
||||
}
|
||||
none => {
|
||||
print_possibly_embedded_block(s, arm.body, block_normal,
|
||||
alt_indent_unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
bclose_(s, expr.span, alt_indent_unit);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue