diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-08-01 16:16:53 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-08-01 17:57:03 -0700 |
| commit | 507fba57d1bb82589b22f23ae9dbe8abcee18286 (patch) | |
| tree | 64dbe2936c18e17469cd1cb85488c8d392ba501b /src/libsyntax/print | |
| parent | fd17d347b08e2a42a62069e3474832f615036130 (diff) | |
| download | rust-507fba57d1bb82589b22f23ae9dbe8abcee18286.tar.gz rust-507fba57d1bb82589b22f23ae9dbe8abcee18286.zip | |
syntax: Allow any block-like expr to be used as alt arm w/o comma separator
Diffstat (limited to 'src/libsyntax/print')
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index b0ef87a8cca..b02bebf58b7 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -6,7 +6,7 @@ import pp::{break_offset, word, printer, inconsistent, eof}; import diagnostic; import ast::{required, provided}; -import ast_util::{operator_prec, lone_block_expr}; +import ast_util::{operator_prec}; import dvec::{dvec, extensions}; import parse::classify::*; import util::interner; @@ -1052,17 +1052,21 @@ fn print_expr(s: ps, &&expr: @ast::expr) { none { } } word_space(s, ~"=>"); - alt lone_block_expr(arm.body) { + // Extract the expression from the extra block the parser adds + assert arm.body.node.view_items.is_empty(); + assert arm.body.node.stmts.is_empty(); + assert arm.body.node.rules == ast::default_blk; + alt arm.body.node.expr { some(expr) => { end(s); // close the ibox for the pattern print_expr(s, expr); - if i < len - 1 { word(s.s, ~","); } + if expr_requires_semi_to_be_stmt(expr) + && i < len - 1 { + word(s.s, ~","); + } end(s); // close enclosing cbox } - none => { - print_possibly_embedded_block(s, arm.body, block_normal, - alt_indent_unit); - } + none => fail } } bclose_(s, expr.span, alt_indent_unit); |
