about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorDaniel Patterson <dbp@riseup.net>2012-08-13 21:13:41 -0400
committerDaniel Patterson <dbp@riseup.net>2012-08-14 09:40:56 -0400
commit62a9e16cb20b070dba25fed585a14f9e3a62ac3b (patch)
tree7a50a702bcfcfc2ed9eb4e39af84ad7569508de0 /src/libsyntax
parent8271b3f0c89f052612c5bb8262f399995121e061 (diff)
downloadrust-62a9e16cb20b070dba25fed585a14f9e3a62ac3b.tar.gz
rust-62a9e16cb20b070dba25fed585a14f9e3a62ac3b.zip
syntax: fixing pretty printing of brackets in match arms
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/print/pprust.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs
index b42c2dbdcc6..f4b6b74d1b5 100644
--- a/src/libsyntax/print/pprust.rs
+++ b/src/libsyntax/print/pprust.rs
@@ -838,6 +838,11 @@ fn print_block_unclosed(s: ps, blk: ast::blk) {
                                  false);
 }
 
+fn print_block_unclosed_indent(s: ps, blk: ast::blk, indented: uint) {
+    print_possibly_embedded_block_(s, blk, block_normal, indented, ~[],
+                                   false);
+}
+
 fn print_block_with_attrs(s: ps, blk: ast::blk, attrs: ~[ast::attribute]) {
     print_possibly_embedded_block_(s, blk, block_normal, indent_unit, attrs,
                                   true);
@@ -1178,8 +1183,16 @@ fn print_expr(s: ps, &&expr: @ast::expr) {
             assert arm.body.node.rules == ast::default_blk;
             match arm.body.node.expr {
               some(expr) => {
-                end(s); // close the ibox for the pattern
-                print_expr(s, expr);
+                match expr.node {
+                  ast::expr_block(blk) => {
+                    // the block will close the pattern's ibox
+                    print_block_unclosed_indent(s, blk, alt_indent_unit);
+                  }
+                  _ => {
+                    end(s); // close the ibox for the pattern
+                    print_expr(s, expr);
+                  }
+                }
                 if !expr_is_simple_block(expr)
                     && i < len - 1 {
                     word(s.s, ~",");