diff --git a/src/types.rs b/src/types.rs
index 28980174314..333c0164d83 100644
--- a/src/types.rs
+++ b/src/types.rs
@@ -482,6 +482,27 @@ impl Rewrite for ast::Ty {
                 let budget = try_opt!(width.checked_sub(2));
                 ty.rewrite(context, budget, offset + 1).map(|ty_str| format!("({})", ty_str))
             }
+            ast::TyTup(ref tup_ret) => {
+                let inner = try_opt!(tup_ret.iter()
+                                            .map(|item| item.rewrite(context, width, offset))
+                                            .fold(Some("".to_owned()),
+                                                  |sum, x| {
+                                                      match (sum, x) {
+                                                          (Some(sum), Some(x)) => {
+                                                              if sum == "" {
+                                                                  // First item.
+                                                                  Some(x)
+                                                              } else {
+                                                                  Some(sum + ", " + &x)
+                                                              }
+                                                          }
+                                                          _ => None,
+                                                      }
+                                                  }));
+
+                let ret = format!("({})", inner);
+                wrap_str(ret, context.config.max_width, width, offset)
+            }
             _ => wrap_str(pprust::ty_to_string(self),
                           context.config.max_width,
                           width,
diff --git a/tests/target/fn.rs b/tests/target/fn.rs
index f9ea3f0c0c5..d8a705fb39b 100644
--- a/tests/target/fn.rs
+++ b/tests/target/fn.rs
@@ -79,6 +79,9 @@ fn homura<T: Deref<Target = i32>>(_: T) {
 
 }
 
+fn issue377() -> (Box<CompositorProxy + Send>, Box<CompositorReceiver>) {
+}
+
 fn main() {
     let _ = function(move || 5);
     let _ = move || 42;