about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/comp/syntax/print/pprust.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs
index f5cf6ba1072..c196e57662e 100644
--- a/src/comp/syntax/print/pprust.rs
+++ b/src/comp/syntax/print/pprust.rs
@@ -292,7 +292,15 @@ fn print_type(&ps s, &ast::ty ty) {
             word(s.s, "]");
         }
         case (ast::ty_ivec(?mt)) {
+            auto parens = alt mt.ty.node {
+              ast::ty_box(_) | ast::ty_vec(_) | ast::ty_ptr(_) |
+              ast::ty_port(_) | ast::ty_chan(_) { true }
+              ast::ty_path(?pt, _) { ivec::len(pt.node.types) > 0u }
+              _ { false }
+            };
+            if parens { popen(s); }
             print_type(s, *mt.ty);
+            if parens { pclose(s); }
             word(s.s, "[");
             print_mutability(s, mt.mut);
             word(s.s, "]");