diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs
index 4486748a1f0..921df3db635 100644
--- a/src/librustc_typeck/collect.rs
+++ b/src/librustc_typeck/collect.rs
@@ -1010,11 +1010,12 @@ fn convert_struct_variant<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>,
         let fid = ccx.tcx.map.local_def_id(f.id);
         let dup_span = seen_fields.get(&f.name).cloned();
         if let Some(prev_span) = dup_span {
-            let mut err = struct_span_err!(ccx.tcx.sess, f.span, E0124,
-                                           "field `{}` is already declared",
-                                           f.name);
-            span_note!(&mut err, prev_span, "previously declared here");
-            err.emit();
+            struct_span_err!(ccx.tcx.sess, f.span, E0124,
+                             "field `{}` is already declared",
+                             f.name)
+                .span_label(f.span, &"field already declared")
+                .span_label(prev_span, &format!("`{}` first declared here", f.name))
+                .emit();
         } else {
             seen_fields.insert(f.name, f.span);
         }
diff --git a/src/test/compile-fail/E0124.rs b/src/test/compile-fail/E0124.rs
index 414b19ead62..18c50746106 100644
--- a/src/test/compile-fail/E0124.rs
+++ b/src/test/compile-fail/E0124.rs
@@ -9,8 +9,10 @@
 // except according to those terms.
 
 struct Foo {
+    field1: i32, //~ NOTE `field1` first declared here
     field1: i32,
-    field1: i32, //~ ERROR E0124
+    //~^ ERROR field `field1` is already declared [E0124]
+    //~| NOTE field already declared
 }
 
 fn main() {
diff --git a/src/test/compile-fail/struct-fields-decl-dupe.rs b/src/test/compile-fail/struct-fields-decl-dupe.rs
index 049569e8a18..dd9d7d29468 100644
--- a/src/test/compile-fail/struct-fields-decl-dupe.rs
+++ b/src/test/compile-fail/struct-fields-decl-dupe.rs
@@ -9,8 +9,10 @@
 // except according to those terms.
 
 struct BuildData {
+    foo: isize, //~ NOTE `foo` first declared here
     foo: isize,
-    foo: isize, //~ ERROR field `foo` is already declared
+    //~^ ERROR field `foo` is already declared [E0124]
+    //~| NOTE field already declared
 }
 
 fn main() {