diff --git a/src/expr.rs b/src/expr.rs
index 4b7a76c733e..2498ee653af 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1837,22 +1837,27 @@ pub fn type_annotation_separator(config: &Config) -> &str {
 
 fn rewrite_field(context: &RewriteContext, field: &ast::Field, shape: Shape) -> Option<String> {
     let name = &field.ident.node.to_string();
-    let separator = type_annotation_separator(context.config);
-    let overhead = name.len() + separator.len();
-    let expr = field.expr.rewrite(context,
-                                  Shape::legacy(try_opt!(shape.width.checked_sub(overhead)),
-                                                shape.indent + overhead));
+    if field.is_shorthand {
+        Some(name.to_string())
+    } else {
+        let separator = type_annotation_separator(context.config);
+        let overhead = name.len() + separator.len();
+        let expr = field.expr.rewrite(context,
+                                      Shape::legacy(try_opt!(shape.width.checked_sub(overhead)),
+                                                    shape.indent + overhead));
 
-    match expr {
-        Some(e) => Some(format!("{}{}{}", name, separator, e)),
-        None => {
-            let expr_offset = shape.indent.block_indent(context.config);
-            let expr = field.expr.rewrite(context,
-                                          Shape::legacy(try_opt!(context.config
-                                                            .max_width
-                                                            .checked_sub(expr_offset.width())),
-                                                        expr_offset));
-            expr.map(|s| format!("{}:\n{}{}", name, expr_offset.to_string(&context.config), s))
+        match expr {
+            Some(e) => Some(format!("{}{}{}", name, separator, e)),
+            None => {
+                let expr_offset = shape.indent.block_indent(context.config);
+                let expr = field.expr
+                    .rewrite(context,
+                             Shape::legacy(try_opt!(context.config
+                                               .max_width
+                                               .checked_sub(expr_offset.width())),
+                                           expr_offset));
+                expr.map(|s| format!("{}:\n{}{}", name, expr_offset.to_string(&context.config), s))
+            }
         }
     }
 }
diff --git a/tests/source/struct_lits.rs b/tests/source/struct_lits.rs
index 8d762eed980..c5aaf7ef881 100644
--- a/tests/source/struct_lits.rs
+++ b/tests/source/struct_lits.rs
@@ -133,3 +133,11 @@ fn issue835() {
     };
     MyStruct {}
 }
+
+fn field_init_shorthand() {
+    MyStruct { x, y, z };
+    MyStruct { x, y, z, .. base };
+    Foo { aaaaaaaaaa, bbbbbbbb, cccccccccc, dddddddddd, /* a comment */
+        eeeeeeeee };
+    Record { ffffffffffffffffffffffffffieldsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa };
+}
diff --git a/tests/target/struct_lits.rs b/tests/target/struct_lits.rs
index 5ab8de3f235..05840b703d3 100644
--- a/tests/target/struct_lits.rs
+++ b/tests/target/struct_lits.rs
@@ -169,3 +169,18 @@ fn issue835() {
     };
     MyStruct {}
 }
+
+fn field_init_shorthand() {
+    MyStruct { x, y, z };
+    MyStruct { x, y, z, ..base };
+    Foo {
+        aaaaaaaaaa,
+        bbbbbbbb,
+        cccccccccc,
+        dddddddddd, // a comment
+        eeeeeeeee,
+    };
+    Record {
+        ffffffffffffffffffffffffffieldsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
+    };
+}