From a4acc8328265ca3c274d98bb6b35f4cfdc106f9c Mon Sep 17 00:00:00 2001
From: David Tolnay <dtolnay@gmail.com>
Date: Sat, 2 Jun 2018 22:19:39 -0700
Subject: [PATCH] Place compile-fail expected errors on their own line

---
 test_suite/tests/compile-fail/borrow/bad_lifetimes.rs       | 3 ++-
 test_suite/tests/compile-fail/borrow/duplicate_lifetime.rs  | 3 ++-
 test_suite/tests/compile-fail/borrow/duplicate_variant.rs   | 3 ++-
 test_suite/tests/compile-fail/borrow/empty_lifetimes.rs     | 3 ++-
 test_suite/tests/compile-fail/borrow/no_lifetimes.rs        | 3 ++-
 test_suite/tests/compile-fail/borrow/struct_variant.rs      | 3 ++-
 test_suite/tests/compile-fail/borrow/wrong_lifetime.rs      | 3 ++-
 test_suite/tests/compile-fail/conflict/adjacent-tag.rs      | 3 ++-
 .../tests/compile-fail/conflict/flatten-newtype-struct.rs   | 3 ++-
 .../compile-fail/conflict/flatten-skip-deserializing.rs     | 3 ++-
 .../compile-fail/conflict/flatten-skip-serializing-if.rs    | 3 ++-
 .../tests/compile-fail/conflict/flatten-skip-serializing.rs | 3 ++-
 .../tests/compile-fail/conflict/flatten-tuple-struct.rs     | 3 ++-
 test_suite/tests/compile-fail/conflict/internal-tag.rs      | 3 ++-
 test_suite/tests/compile-fail/default-attribute/enum.rs     | 3 ++-
 .../default-attribute/nameless_struct_fields.rs             | 3 ++-
 .../compile-fail/duplicate-attribute/rename-and-ser.rs      | 3 ++-
 .../compile-fail/duplicate-attribute/rename-rename-de.rs    | 3 ++-
 .../duplicate-attribute/rename-ser-rename-ser.rs            | 3 ++-
 .../compile-fail/duplicate-attribute/rename-ser-rename.rs   | 3 ++-
 .../compile-fail/duplicate-attribute/rename-ser-ser.rs      | 3 ++-
 .../compile-fail/duplicate-attribute/two-rename-ser.rs      | 3 ++-
 .../duplicate-attribute/with-and-serialize-with.rs          | 3 ++-
 .../enum-representation/internal-tuple-variant.rs           | 3 ++-
 .../enum-representation/internally-tagged-struct.rs         | 3 ++-
 .../enum-representation/untagged-and-internal.rs            | 3 ++-
 .../compile-fail/enum-representation/untagged-struct.rs     | 3 ++-
 test_suite/tests/compile-fail/identifier/both.rs            | 3 ++-
 test_suite/tests/compile-fail/identifier/field_struct.rs    | 3 ++-
 test_suite/tests/compile-fail/identifier/field_tuple.rs     | 3 ++-
 .../tests/compile-fail/identifier/newtype_not_last.rs       | 3 ++-
 test_suite/tests/compile-fail/identifier/not_identifier.rs  | 3 ++-
 test_suite/tests/compile-fail/identifier/not_unit.rs        | 3 ++-
 test_suite/tests/compile-fail/identifier/other_not_last.rs  | 3 ++-
 test_suite/tests/compile-fail/identifier/serialize.rs       | 3 ++-
 test_suite/tests/compile-fail/identifier/variant_struct.rs  | 3 ++-
 test_suite/tests/compile-fail/identifier/variant_tuple.rs   | 3 ++-
 .../compile-fail/precondition/deserialize_de_lifetime.rs    | 3 ++-
 .../tests/compile-fail/precondition/deserialize_dst.rs      | 3 ++-
 test_suite/tests/compile-fail/remote/bad_getter.rs          | 3 ++-
 test_suite/tests/compile-fail/remote/bad_remote.rs          | 3 ++-
 test_suite/tests/compile-fail/remote/enum_getter.rs         | 3 ++-
 test_suite/tests/compile-fail/remote/missing_field.rs       | 3 ++-
 test_suite/tests/compile-fail/remote/nonremote_getter.rs    | 3 ++-
 test_suite/tests/compile-fail/remote/unknown_field.rs       | 3 ++-
 test_suite/tests/compile-fail/remote/wrong_de.rs            | 6 ++++--
 test_suite/tests/compile-fail/remote/wrong_getter.rs        | 6 ++++--
 test_suite/tests/compile-fail/remote/wrong_ser.rs           | 6 ++++--
 test_suite/tests/compile-fail/transparent/at_most_one.rs    | 3 ++-
 .../tests/compile-fail/transparent/de_at_least_one.rs       | 3 ++-
 .../tests/compile-fail/transparent/ser_at_least_one.rs      | 3 ++-
 test_suite/tests/compile-fail/type-attribute/from.rs        | 3 ++-
 test_suite/tests/compile-fail/type-attribute/into.rs        | 3 ++-
 .../tests/compile-fail/unknown-attribute/container.rs       | 3 ++-
 test_suite/tests/compile-fail/unknown-attribute/field.rs    | 3 ++-
 test_suite/tests/compile-fail/unknown-attribute/variant.rs  | 3 ++-
 .../compile-fail/with-variant/skip_de_newtype_field.rs      | 3 ++-
 .../tests/compile-fail/with-variant/skip_de_struct_field.rs | 3 ++-
 .../tests/compile-fail/with-variant/skip_de_tuple_field.rs  | 3 ++-
 .../compile-fail/with-variant/skip_de_whole_variant.rs      | 3 ++-
 .../compile-fail/with-variant/skip_ser_newtype_field.rs     | 3 ++-
 .../compile-fail/with-variant/skip_ser_newtype_field_if.rs  | 3 ++-
 .../compile-fail/with-variant/skip_ser_struct_field.rs      | 3 ++-
 .../compile-fail/with-variant/skip_ser_struct_field_if.rs   | 3 ++-
 .../tests/compile-fail/with-variant/skip_ser_tuple_field.rs | 3 ++-
 .../compile-fail/with-variant/skip_ser_tuple_field_if.rs    | 3 ++-
 .../compile-fail/with-variant/skip_ser_whole_variant.rs     | 3 ++-
 67 files changed, 140 insertions(+), 70 deletions(-)

diff --git a/test_suite/tests/compile-fail/borrow/bad_lifetimes.rs b/test_suite/tests/compile-fail/borrow/bad_lifetimes.rs
index f2ab9de0..174998cd 100644
--- a/test_suite/tests/compile-fail/borrow/bad_lifetimes.rs
+++ b/test_suite/tests/compile-fail/borrow/bad_lifetimes.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: failed to parse borrowed lifetimes: "zzz"
+#[derive(Deserialize)]
 struct Test<'a> {
     #[serde(borrow = "zzz")]
+    //~^^^ ERROR: failed to parse borrowed lifetimes: "zzz"
     s: &'a str,
 }
 
diff --git a/test_suite/tests/compile-fail/borrow/duplicate_lifetime.rs b/test_suite/tests/compile-fail/borrow/duplicate_lifetime.rs
index e575e070..b32160a6 100644
--- a/test_suite/tests/compile-fail/borrow/duplicate_lifetime.rs
+++ b/test_suite/tests/compile-fail/borrow/duplicate_lifetime.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: duplicate borrowed lifetime `'a`
+#[derive(Deserialize)]
 struct Test<'a> {
     #[serde(borrow = "'a + 'a")]
+    //~^^^ ERROR: duplicate borrowed lifetime `'a`
     s: &'a str,
 }
 
diff --git a/test_suite/tests/compile-fail/borrow/duplicate_variant.rs b/test_suite/tests/compile-fail/borrow/duplicate_variant.rs
index 07e28667..a501caf1 100644
--- a/test_suite/tests/compile-fail/borrow/duplicate_variant.rs
+++ b/test_suite/tests/compile-fail/borrow/duplicate_variant.rs
@@ -12,9 +12,10 @@ extern crate serde_derive;
 #[derive(Deserialize)]
 struct Str<'a>(&'a str);
 
-#[derive(Deserialize)] //~ ERROR: 15:10: 15:21: duplicate serde attribute `borrow`
+#[derive(Deserialize)]
 enum Test<'a> {
     #[serde(borrow)]
+    //~^^^ ERROR: duplicate serde attribute `borrow`
     S(#[serde(borrow)] Str<'a>)
 }
 
diff --git a/test_suite/tests/compile-fail/borrow/empty_lifetimes.rs b/test_suite/tests/compile-fail/borrow/empty_lifetimes.rs
index a18c5177..a19028da 100644
--- a/test_suite/tests/compile-fail/borrow/empty_lifetimes.rs
+++ b/test_suite/tests/compile-fail/borrow/empty_lifetimes.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: at least one lifetime must be borrowed
+#[derive(Deserialize)]
 struct Test<'a> {
     #[serde(borrow = "")]
+    //~^^^ ERROR: at least one lifetime must be borrowed
     s: &'a str,
 }
 
diff --git a/test_suite/tests/compile-fail/borrow/no_lifetimes.rs b/test_suite/tests/compile-fail/borrow/no_lifetimes.rs
index ee9d5fcd..b883997c 100644
--- a/test_suite/tests/compile-fail/borrow/no_lifetimes.rs
+++ b/test_suite/tests/compile-fail/borrow/no_lifetimes.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: field `s` has no lifetimes to borrow
+#[derive(Deserialize)]
 struct Test {
     #[serde(borrow)]
+    //~^^^ ERROR: field `s` has no lifetimes to borrow
     s: String,
 }
 
diff --git a/test_suite/tests/compile-fail/borrow/struct_variant.rs b/test_suite/tests/compile-fail/borrow/struct_variant.rs
index b4827dec..d7341f2c 100644
--- a/test_suite/tests/compile-fail/borrow/struct_variant.rs
+++ b/test_suite/tests/compile-fail/borrow/struct_variant.rs
@@ -12,9 +12,10 @@ extern crate serde_derive;
 #[derive(Deserialize)]
 struct Str<'a>(&'a str);
 
-#[derive(Deserialize)] //~ ERROR: 15:10: 15:21: #[serde(borrow)] may only be used on newtype variants
+#[derive(Deserialize)]
 enum Test<'a> {
     #[serde(borrow)]
+    //~^^^ ERROR: #[serde(borrow)] may only be used on newtype variants
     S { s: Str<'a> }
 }
 
diff --git a/test_suite/tests/compile-fail/borrow/wrong_lifetime.rs b/test_suite/tests/compile-fail/borrow/wrong_lifetime.rs
index a42e90c4..42144953 100644
--- a/test_suite/tests/compile-fail/borrow/wrong_lifetime.rs
+++ b/test_suite/tests/compile-fail/borrow/wrong_lifetime.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: field `s` does not have lifetime 'b
+#[derive(Deserialize)]
 struct Test<'a> {
     #[serde(borrow = "'b")]
+    //~^^^ ERROR: field `s` does not have lifetime 'b
     s: &'a str,
 }
 
diff --git a/test_suite/tests/compile-fail/conflict/adjacent-tag.rs b/test_suite/tests/compile-fail/conflict/adjacent-tag.rs
index c8c6fea1..e4d308c6 100644
--- a/test_suite/tests/compile-fail/conflict/adjacent-tag.rs
+++ b/test_suite/tests/compile-fail/conflict/adjacent-tag.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: enum tags `conflict` for type and content conflict with each other
+#[derive(Serialize)]
 #[serde(tag = "conflict", content = "conflict")]
+//~^^ ERROR: enum tags `conflict` for type and content conflict with each other
 enum E {
     A,
     B,
diff --git a/test_suite/tests/compile-fail/conflict/flatten-newtype-struct.rs b/test_suite/tests/compile-fail/conflict/flatten-newtype-struct.rs
index bd5089ab..46fdf691 100644
--- a/test_suite/tests/compile-fail/conflict/flatten-newtype-struct.rs
+++ b/test_suite/tests/compile-fail/conflict/flatten-newtype-struct.rs
@@ -9,7 +9,8 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(flatten)] cannot be used on newtype structs
+#[derive(Serialize)]
 struct Foo(#[serde(flatten)] HashMap<String, String>);
+//~^^ ERROR: #[serde(flatten)] cannot be used on newtype structs
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/conflict/flatten-skip-deserializing.rs b/test_suite/tests/compile-fail/conflict/flatten-skip-deserializing.rs
index 0b10ea53..f2e1482d 100644
--- a/test_suite/tests/compile-fail/conflict/flatten-skip-deserializing.rs
+++ b/test_suite/tests/compile-fail/conflict/flatten-skip-deserializing.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: #[serde(flatten] can not be combined with #[serde(skip_deserializing)]
+#[derive(Deserialize)]
 struct Foo {
     #[serde(flatten, skip_deserializing)]
+    //~^^^ ERROR: #[serde(flatten] can not be combined with #[serde(skip_deserializing)]
     other: Other,
 }
 
diff --git a/test_suite/tests/compile-fail/conflict/flatten-skip-serializing-if.rs b/test_suite/tests/compile-fail/conflict/flatten-skip-serializing-if.rs
index 273902e4..addf2c17 100644
--- a/test_suite/tests/compile-fail/conflict/flatten-skip-serializing-if.rs
+++ b/test_suite/tests/compile-fail/conflict/flatten-skip-serializing-if.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(flatten] can not be combined with #[serde(skip_serializing_if = "...")]
+#[derive(Serialize)]
 struct Foo {
     #[serde(flatten, skip_serializing_if="Option::is_none")]
+    //~^^^ ERROR: #[serde(flatten] can not be combined with #[serde(skip_serializing_if = "...")]
     other: Option<Other>,
 }
 
diff --git a/test_suite/tests/compile-fail/conflict/flatten-skip-serializing.rs b/test_suite/tests/compile-fail/conflict/flatten-skip-serializing.rs
index ba6ae7a7..5d6ba69a 100644
--- a/test_suite/tests/compile-fail/conflict/flatten-skip-serializing.rs
+++ b/test_suite/tests/compile-fail/conflict/flatten-skip-serializing.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(flatten] can not be combined with #[serde(skip_serializing)]
+#[derive(Serialize)]
 struct Foo {
     #[serde(flatten, skip_serializing)]
+    //~^^^ ERROR: #[serde(flatten] can not be combined with #[serde(skip_serializing)]
     other: Other,
 }
 
diff --git a/test_suite/tests/compile-fail/conflict/flatten-tuple-struct.rs b/test_suite/tests/compile-fail/conflict/flatten-tuple-struct.rs
index 311ea37d..392139be 100644
--- a/test_suite/tests/compile-fail/conflict/flatten-tuple-struct.rs
+++ b/test_suite/tests/compile-fail/conflict/flatten-tuple-struct.rs
@@ -9,7 +9,8 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(flatten)] cannot be used on tuple structs
+#[derive(Serialize)]
 struct Foo(u32, #[serde(flatten)] HashMap<String, String>);
+//~^^ ERROR: #[serde(flatten)] cannot be used on tuple structs
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/conflict/internal-tag.rs b/test_suite/tests/compile-fail/conflict/internal-tag.rs
index 75941922..2b95d19a 100644
--- a/test_suite/tests/compile-fail/conflict/internal-tag.rs
+++ b/test_suite/tests/compile-fail/conflict/internal-tag.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant field name `conflict` conflicts with internal tag
+#[derive(Serialize)]
 #[serde(tag = "conflict")]
+//~^^ ERROR: variant field name `conflict` conflicts with internal tag
 enum E {
     A {
         #[serde(rename = "conflict")]
diff --git a/test_suite/tests/compile-fail/default-attribute/enum.rs b/test_suite/tests/compile-fail/default-attribute/enum.rs
index 989519a0..d05bbd48 100644
--- a/test_suite/tests/compile-fail/default-attribute/enum.rs
+++ b/test_suite/tests/compile-fail/default-attribute/enum.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: #[serde(default)] can only be used on structs with named fields
+#[derive(Deserialize)]
 #[serde(default)]
+//~^^ ERROR: #[serde(default)] can only be used on structs
 enum E {
     S { f: u8 },
 }
diff --git a/test_suite/tests/compile-fail/default-attribute/nameless_struct_fields.rs b/test_suite/tests/compile-fail/default-attribute/nameless_struct_fields.rs
index cff48b5c..01ac28e7 100644
--- a/test_suite/tests/compile-fail/default-attribute/nameless_struct_fields.rs
+++ b/test_suite/tests/compile-fail/default-attribute/nameless_struct_fields.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: #[serde(default)] can only be used on structs with named fields
+#[derive(Deserialize)]
 #[serde(default)]
+//~^^ ERROR: #[serde(default)] can only be used on structs
 struct T(u8, u8);
 
 fn main() { }
diff --git a/test_suite/tests/compile-fail/duplicate-attribute/rename-and-ser.rs b/test_suite/tests/compile-fail/duplicate-attribute/rename-and-ser.rs
index ac34d5cb..ac73fd62 100644
--- a/test_suite/tests/compile-fail/duplicate-attribute/rename-and-ser.rs
+++ b/test_suite/tests/compile-fail/duplicate-attribute/rename-and-ser.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: unknown serde field attribute `serialize`
+#[derive(Serialize)]
 struct S {
     #[serde(rename="x", serialize="y")]
+    //~^^^ ERROR: unknown serde field attribute `serialize`
     x: (),
 }
 
diff --git a/test_suite/tests/compile-fail/duplicate-attribute/rename-rename-de.rs b/test_suite/tests/compile-fail/duplicate-attribute/rename-rename-de.rs
index 039b46ca..ffd31bc1 100644
--- a/test_suite/tests/compile-fail/duplicate-attribute/rename-rename-de.rs
+++ b/test_suite/tests/compile-fail/duplicate-attribute/rename-rename-de.rs
@@ -9,10 +9,11 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: duplicate serde attribute `rename`
+#[derive(Serialize)]
 struct S {
     #[serde(rename="x")]
     #[serde(rename(deserialize="y"))]
+    //~^^^^ ERROR: duplicate serde attribute `rename`
     x: (),
 }
 
diff --git a/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename-ser.rs b/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename-ser.rs
index 08efbe5f..e03d2896 100644
--- a/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename-ser.rs
+++ b/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename-ser.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: duplicate serde attribute `rename`
+#[derive(Serialize)]
 struct S {
     #[serde(rename(serialize="x"), rename(serialize="y"))]
+    //~^^^ ERROR: duplicate serde attribute `rename`
     x: (),
 }
 
diff --git a/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename.rs b/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename.rs
index 9e4b32d7..e6b5fb15 100644
--- a/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename.rs
+++ b/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-rename.rs
@@ -9,10 +9,11 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: duplicate serde attribute `rename`
+#[derive(Serialize)]
 struct S {
     #[serde(rename(serialize="x"))]
     #[serde(rename="y")]
+    //~^^^^ ERROR: duplicate serde attribute `rename`
     x: (),
 }
 
diff --git a/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-ser.rs b/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-ser.rs
index 57d595d1..a4790e16 100644
--- a/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-ser.rs
+++ b/test_suite/tests/compile-fail/duplicate-attribute/rename-ser-ser.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: duplicate serde attribute `rename`
+#[derive(Serialize)]
 struct S {
     #[serde(rename(serialize="x", serialize="y"))]
+    //~^^^ ERROR: duplicate serde attribute `rename`
     x: (),
 }
 
diff --git a/test_suite/tests/compile-fail/duplicate-attribute/two-rename-ser.rs b/test_suite/tests/compile-fail/duplicate-attribute/two-rename-ser.rs
index 313877b3..0585211b 100644
--- a/test_suite/tests/compile-fail/duplicate-attribute/two-rename-ser.rs
+++ b/test_suite/tests/compile-fail/duplicate-attribute/two-rename-ser.rs
@@ -9,10 +9,11 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: duplicate serde attribute `rename`
+#[derive(Serialize)]
 struct S {
     #[serde(rename(serialize="x"))]
     #[serde(rename(serialize="y"))]
+    //~^^^^ ERROR: duplicate serde attribute `rename`
     x: (),
 }
 
diff --git a/test_suite/tests/compile-fail/duplicate-attribute/with-and-serialize-with.rs b/test_suite/tests/compile-fail/duplicate-attribute/with-and-serialize-with.rs
index a6fe4f64..c128ef10 100644
--- a/test_suite/tests/compile-fail/duplicate-attribute/with-and-serialize-with.rs
+++ b/test_suite/tests/compile-fail/duplicate-attribute/with-and-serialize-with.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: duplicate serde attribute `serialize_with`
+#[derive(Serialize)]
 struct S {
     #[serde(with = "w", serialize_with = "s")]
+    //~^^^ ERROR: duplicate serde attribute `serialize_with`
     x: (),
 }
 
diff --git a/test_suite/tests/compile-fail/enum-representation/internal-tuple-variant.rs b/test_suite/tests/compile-fail/enum-representation/internal-tuple-variant.rs
index 45b4f3d5..eb778633 100644
--- a/test_suite/tests/compile-fail/enum-representation/internal-tuple-variant.rs
+++ b/test_suite/tests/compile-fail/enum-representation/internal-tuple-variant.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(tag = "...")] cannot be used with tuple variants
+#[derive(Serialize)]
 #[serde(tag = "type")]
+//~^^ ERROR: #[serde(tag = "...")] cannot be used with tuple variants
 enum E {
     Tuple(u8, u8),
 }
diff --git a/test_suite/tests/compile-fail/enum-representation/internally-tagged-struct.rs b/test_suite/tests/compile-fail/enum-representation/internally-tagged-struct.rs
index f88a4683..e9660e1b 100644
--- a/test_suite/tests/compile-fail/enum-representation/internally-tagged-struct.rs
+++ b/test_suite/tests/compile-fail/enum-representation/internally-tagged-struct.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(tag = "...")] can only be used on enums
+#[derive(Serialize)]
 #[serde(tag = "type")]
+//~^^ ERROR: #[serde(tag = "...")] can only be used on enums
 struct S;
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/enum-representation/untagged-and-internal.rs b/test_suite/tests/compile-fail/enum-representation/untagged-and-internal.rs
index c7d41992..b272c0b7 100644
--- a/test_suite/tests/compile-fail/enum-representation/untagged-and-internal.rs
+++ b/test_suite/tests/compile-fail/enum-representation/untagged-and-internal.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: enum cannot be both untagged and internally tagged
+#[derive(Serialize)]
 #[serde(untagged)]
 #[serde(tag = "type")]
+//~^^^ ERROR: enum cannot be both untagged and internally tagged
 enum E {
     A(u8),
     B(String),
diff --git a/test_suite/tests/compile-fail/enum-representation/untagged-struct.rs b/test_suite/tests/compile-fail/enum-representation/untagged-struct.rs
index 784d0691..6a7dd3e2 100644
--- a/test_suite/tests/compile-fail/enum-representation/untagged-struct.rs
+++ b/test_suite/tests/compile-fail/enum-representation/untagged-struct.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(untagged)] can only be used on enums
+#[derive(Serialize)]
 #[serde(untagged)]
+//~^^ ERROR: #[serde(untagged)] can only be used on enums
 struct S;
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/identifier/both.rs b/test_suite/tests/compile-fail/identifier/both.rs
index c7b75f84..c6fda3d6 100644
--- a/test_suite/tests/compile-fail/identifier/both.rs
+++ b/test_suite/tests/compile-fail/identifier/both.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: `field_identifier` and `variant_identifier` cannot both be set
+#[derive(Deserialize)]
 #[serde(field_identifier, variant_identifier)]
+//~^^ ERROR: `field_identifier` and `variant_identifier` cannot both be set
 enum F {
     A,
     B,
diff --git a/test_suite/tests/compile-fail/identifier/field_struct.rs b/test_suite/tests/compile-fail/identifier/field_struct.rs
index dddcf170..e6a8dc37 100644
--- a/test_suite/tests/compile-fail/identifier/field_struct.rs
+++ b/test_suite/tests/compile-fail/identifier/field_struct.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: `field_identifier` can only be used on an enum
+#[derive(Deserialize)]
 #[serde(field_identifier)]
+//~^^ ERROR: `field_identifier` can only be used on an enum
 struct S;
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/identifier/field_tuple.rs b/test_suite/tests/compile-fail/identifier/field_tuple.rs
index b55925a7..e1dc5343 100644
--- a/test_suite/tests/compile-fail/identifier/field_tuple.rs
+++ b/test_suite/tests/compile-fail/identifier/field_tuple.rs
@@ -9,11 +9,12 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: field_identifier may only contain unit variants
+#[derive(Deserialize)]
 #[serde(field_identifier)]
 enum F {
     A,
     B(u8, u8),
+    //~^^^^^ ERROR: field_identifier may only contain unit variants
 }
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/identifier/newtype_not_last.rs b/test_suite/tests/compile-fail/identifier/newtype_not_last.rs
index 71d8ac3e..f9c1f470 100644
--- a/test_suite/tests/compile-fail/identifier/newtype_not_last.rs
+++ b/test_suite/tests/compile-fail/identifier/newtype_not_last.rs
@@ -9,11 +9,12 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: `Other` must be the last variant
+#[derive(Deserialize)]
 #[serde(field_identifier)]
 enum F {
     A,
     Other(String),
+    //~^^^^^ ERROR: `Other` must be the last variant
     B,
 }
 
diff --git a/test_suite/tests/compile-fail/identifier/not_identifier.rs b/test_suite/tests/compile-fail/identifier/not_identifier.rs
index 3bc96175..7a240d53 100644
--- a/test_suite/tests/compile-fail/identifier/not_identifier.rs
+++ b/test_suite/tests/compile-fail/identifier/not_identifier.rs
@@ -9,10 +9,11 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: #[serde(other)] may only be used inside a field_identifier
+#[derive(Deserialize)]
 enum F {
     A,
     #[serde(other)]
+    //~^^^^ ERROR: #[serde(other)] may only be used inside a field_identifier
     B,
 }
 
diff --git a/test_suite/tests/compile-fail/identifier/not_unit.rs b/test_suite/tests/compile-fail/identifier/not_unit.rs
index e94a0592..a80d8bf2 100644
--- a/test_suite/tests/compile-fail/identifier/not_unit.rs
+++ b/test_suite/tests/compile-fail/identifier/not_unit.rs
@@ -9,11 +9,12 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: #[serde(other)] must be on a unit variant
+#[derive(Deserialize)]
 #[serde(field_identifier)]
 enum F {
     A,
     #[serde(other)]
+    //~^^^^^ ERROR: #[serde(other)] must be on a unit variant
     Other(u8, u8),
 }
 
diff --git a/test_suite/tests/compile-fail/identifier/other_not_last.rs b/test_suite/tests/compile-fail/identifier/other_not_last.rs
index 31e2675b..b8c81432 100644
--- a/test_suite/tests/compile-fail/identifier/other_not_last.rs
+++ b/test_suite/tests/compile-fail/identifier/other_not_last.rs
@@ -9,11 +9,12 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: #[serde(other)] must be the last variant
+#[derive(Deserialize)]
 #[serde(field_identifier)]
 enum F {
     A,
     #[serde(other)]
+    //~^^^^^ ERROR: #[serde(other)] must be the last variant
     Other,
     B,
 }
diff --git a/test_suite/tests/compile-fail/identifier/serialize.rs b/test_suite/tests/compile-fail/identifier/serialize.rs
index 33e7eb75..111f8875 100644
--- a/test_suite/tests/compile-fail/identifier/serialize.rs
+++ b/test_suite/tests/compile-fail/identifier/serialize.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: field identifiers cannot be serialized
+#[derive(Serialize)]
 #[serde(field_identifier)]
+//~^^ ERROR: field identifiers cannot be serialized
 enum F {
     A,
     B,
diff --git a/test_suite/tests/compile-fail/identifier/variant_struct.rs b/test_suite/tests/compile-fail/identifier/variant_struct.rs
index b14edebd..fdb7484f 100644
--- a/test_suite/tests/compile-fail/identifier/variant_struct.rs
+++ b/test_suite/tests/compile-fail/identifier/variant_struct.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: `variant_identifier` can only be used on an enum
+#[derive(Deserialize)]
 #[serde(variant_identifier)]
+//~^^ ERROR: `variant_identifier` can only be used on an enum
 struct S;
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/identifier/variant_tuple.rs b/test_suite/tests/compile-fail/identifier/variant_tuple.rs
index 597df172..a5c708b2 100644
--- a/test_suite/tests/compile-fail/identifier/variant_tuple.rs
+++ b/test_suite/tests/compile-fail/identifier/variant_tuple.rs
@@ -9,11 +9,12 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: variant_identifier may only contain unit variants
+#[derive(Deserialize)]
 #[serde(variant_identifier)]
 enum F {
     A,
     B(u8, u8),
+    //~^^^^^ ERROR: variant_identifier may only contain unit variants
 }
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/precondition/deserialize_de_lifetime.rs b/test_suite/tests/compile-fail/precondition/deserialize_de_lifetime.rs
index 19ecdbaa..90d6aa6b 100644
--- a/test_suite/tests/compile-fail/precondition/deserialize_de_lifetime.rs
+++ b/test_suite/tests/compile-fail/precondition/deserialize_de_lifetime.rs
@@ -9,7 +9,8 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: cannot deserialize when there is a lifetime parameter called 'de
+#[derive(Deserialize)]
 struct S<'de> {
+    //~^^ ERROR: cannot deserialize when there is a lifetime parameter called 'de
     s: &'de str,
 }
diff --git a/test_suite/tests/compile-fail/precondition/deserialize_dst.rs b/test_suite/tests/compile-fail/precondition/deserialize_dst.rs
index ed12a001..2ff159f1 100644
--- a/test_suite/tests/compile-fail/precondition/deserialize_dst.rs
+++ b/test_suite/tests/compile-fail/precondition/deserialize_dst.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: cannot deserialize a dynamically sized struct
+#[derive(Deserialize)]
 struct S {
     string: String,
     slice: [u8],
+    //~^^^^ ERROR: cannot deserialize a dynamically sized struct
 }
diff --git a/test_suite/tests/compile-fail/remote/bad_getter.rs b/test_suite/tests/compile-fail/remote/bad_getter.rs
index 3d62d4b4..a20ebd74 100644
--- a/test_suite/tests/compile-fail/remote/bad_getter.rs
+++ b/test_suite/tests/compile-fail/remote/bad_getter.rs
@@ -15,10 +15,11 @@ mod remote {
     }
 }
 
-#[derive(Serialize)] //~ ERROR: 18:10: 18:19: failed to parse path: "~~~"
+#[derive(Serialize)]
 #[serde(remote = "remote::S")]
 struct S {
     #[serde(getter = "~~~")]
+    //~^^^^ ERROR: failed to parse path: "~~~"
     a: u8,
 }
 
diff --git a/test_suite/tests/compile-fail/remote/bad_remote.rs b/test_suite/tests/compile-fail/remote/bad_remote.rs
index 6fca32f8..62578a2d 100644
--- a/test_suite/tests/compile-fail/remote/bad_remote.rs
+++ b/test_suite/tests/compile-fail/remote/bad_remote.rs
@@ -15,8 +15,9 @@ mod remote {
     }
 }
 
-#[derive(Serialize)] //~ ERROR: 18:10: 18:19: failed to parse path: "~~~"
+#[derive(Serialize)]
 #[serde(remote = "~~~")]
+//~^^ ERROR: failed to parse path: "~~~"
 struct S {
     a: u8,
 }
diff --git a/test_suite/tests/compile-fail/remote/enum_getter.rs b/test_suite/tests/compile-fail/remote/enum_getter.rs
index 603badce..c2b9ad96 100644
--- a/test_suite/tests/compile-fail/remote/enum_getter.rs
+++ b/test_suite/tests/compile-fail/remote/enum_getter.rs
@@ -15,11 +15,12 @@ mod remote {
     }
 }
 
-#[derive(Serialize)] //~ ERROR: 18:10: 18:19: #[serde(getter = "...")] is not allowed in an enum
+#[derive(Serialize)]
 #[serde(remote = "remote::E")]
 pub enum E {
     A {
         #[serde(getter = "get_a")]
+        //~^^^^^ ERROR: #[serde(getter = "...")] is not allowed in an enum
         a: u8,
     }
 }
diff --git a/test_suite/tests/compile-fail/remote/missing_field.rs b/test_suite/tests/compile-fail/remote/missing_field.rs
index 03cfa649..8b94027b 100644
--- a/test_suite/tests/compile-fail/remote/missing_field.rs
+++ b/test_suite/tests/compile-fail/remote/missing_field.rs
@@ -19,7 +19,8 @@ mod remote {
 #[derive(Serialize, Deserialize)]
 #[serde(remote = "remote::S")]
 struct S {
-    a: u8, //~^^^ ERROR: missing field `b` in initializer of `remote::S`
+    a: u8,
+    //~^^^^ ERROR: missing field `b` in initializer of `remote::S`
 }
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/remote/nonremote_getter.rs b/test_suite/tests/compile-fail/remote/nonremote_getter.rs
index fbd26ad6..541e7986 100644
--- a/test_suite/tests/compile-fail/remote/nonremote_getter.rs
+++ b/test_suite/tests/compile-fail/remote/nonremote_getter.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(getter = "...")] can only be used in structs that have #[serde(remote = "...")]
+#[derive(Serialize)]
 struct S {
     #[serde(getter = "S::get")]
+    //~^^^ ERROR: #[serde(getter = "...")] can only be used in structs that have #[serde(remote = "...")]
     a: u8,
 }
 
diff --git a/test_suite/tests/compile-fail/remote/unknown_field.rs b/test_suite/tests/compile-fail/remote/unknown_field.rs
index 2b65290f..662f53dd 100644
--- a/test_suite/tests/compile-fail/remote/unknown_field.rs
+++ b/test_suite/tests/compile-fail/remote/unknown_field.rs
@@ -19,7 +19,8 @@ mod remote {
 #[serde(remote = "remote::S")]
 struct S {
     //~^^^ ERROR: struct `remote::S` has no field named `b`
-    b: u8, //~^^^^ ERROR: no field `b` on type `&remote::S`
+    b: u8,
+    //~^^^^^ ERROR: no field `b` on type `&remote::S`
 }
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/remote/wrong_de.rs b/test_suite/tests/compile-fail/remote/wrong_de.rs
index 10e97986..c154d932 100644
--- a/test_suite/tests/compile-fail/remote/wrong_de.rs
+++ b/test_suite/tests/compile-fail/remote/wrong_de.rs
@@ -13,8 +13,10 @@ mod remote {
     pub struct S(pub u16);
 }
 
-#[derive(Deserialize)] //~ ERROR: mismatched types
+#[derive(Deserialize)]
 #[serde(remote = "remote::S")]
-struct S(u8); //~^^ expected u16, found u8
+struct S(u8);
+//~^^^ ERROR: mismatched types
+//~^^^^ expected u16, found u8
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/remote/wrong_getter.rs b/test_suite/tests/compile-fail/remote/wrong_getter.rs
index e939928a..51107687 100644
--- a/test_suite/tests/compile-fail/remote/wrong_getter.rs
+++ b/test_suite/tests/compile-fail/remote/wrong_getter.rs
@@ -21,11 +21,13 @@ mod remote {
     }
 }
 
-#[derive(Serialize)] //~ ERROR: mismatched types
+#[derive(Serialize)]
 #[serde(remote = "remote::S")]
 struct S {
     #[serde(getter = "remote::S::get")]
-    a: u8, //~^^^^ expected u8, found u16
+    //~^^^^ ERROR: mismatched types
+    a: u8,
+    //~^^^^^^ expected u8, found u16
 }
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/remote/wrong_ser.rs b/test_suite/tests/compile-fail/remote/wrong_ser.rs
index ac3c7c24..22513da7 100644
--- a/test_suite/tests/compile-fail/remote/wrong_ser.rs
+++ b/test_suite/tests/compile-fail/remote/wrong_ser.rs
@@ -15,10 +15,12 @@ mod remote {
     }
 }
 
-#[derive(Serialize)] //~ ERROR: mismatched types
+#[derive(Serialize)]
 #[serde(remote = "remote::S")]
 struct S {
-    a: u8, //~^^^ expected u8, found u16
+    a: u8,
+    //~^^^^ ERROR: mismatched types
+    //~^^^^^ expected u8, found u16
 }
 
 fn main() {}
diff --git a/test_suite/tests/compile-fail/transparent/at_most_one.rs b/test_suite/tests/compile-fail/transparent/at_most_one.rs
index bade8ce8..0ec4e083 100644
--- a/test_suite/tests/compile-fail/transparent/at_most_one.rs
+++ b/test_suite/tests/compile-fail/transparent/at_most_one.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(transparent)] requires struct to have at most one transparent field
+#[derive(Serialize)]
 #[serde(transparent)]
+//~^^ ERROR: #[serde(transparent)] requires struct to have at most one transparent field
 struct S {
     a: u8,
     b: u8,
diff --git a/test_suite/tests/compile-fail/transparent/de_at_least_one.rs b/test_suite/tests/compile-fail/transparent/de_at_least_one.rs
index 3de29924..a911e0cb 100644
--- a/test_suite/tests/compile-fail/transparent/de_at_least_one.rs
+++ b/test_suite/tests/compile-fail/transparent/de_at_least_one.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: #[serde(transparent)] requires at least one field that is neither skipped nor has a default
+#[derive(Deserialize)]
 #[serde(transparent)]
+//~^^ ERROR: #[serde(transparent)] requires at least one field that is neither skipped nor has a default
 struct S {
     #[serde(skip)]
     a: u8,
diff --git a/test_suite/tests/compile-fail/transparent/ser_at_least_one.rs b/test_suite/tests/compile-fail/transparent/ser_at_least_one.rs
index b13b1ee4..ae392e8e 100644
--- a/test_suite/tests/compile-fail/transparent/ser_at_least_one.rs
+++ b/test_suite/tests/compile-fail/transparent/ser_at_least_one.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: #[serde(transparent)] requires at least one field that is not skipped
+#[derive(Serialize)]
 #[serde(transparent)]
+//~^^ ERROR: #[serde(transparent)] requires at least one field that is not skipped
 struct S {
     #[serde(skip)]
     a: u8,
diff --git a/test_suite/tests/compile-fail/type-attribute/from.rs b/test_suite/tests/compile-fail/type-attribute/from.rs
index 550d0973..ce51c436 100644
--- a/test_suite/tests/compile-fail/type-attribute/from.rs
+++ b/test_suite/tests/compile-fail/type-attribute/from.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: failed to parse type: from = "Option<T"
+#[derive(Deserialize)]
 #[serde(from = "Option<T")]
+//~^^ ERROR: failed to parse type: from = "Option<T"
 enum TestOne {
     Testing,
     One,
diff --git a/test_suite/tests/compile-fail/type-attribute/into.rs b/test_suite/tests/compile-fail/type-attribute/into.rs
index f1b2ae57..9fe72733 100644
--- a/test_suite/tests/compile-fail/type-attribute/into.rs
+++ b/test_suite/tests/compile-fail/type-attribute/into.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: failed to parse type: into = "Option<T"
+#[derive(Serialize)]
 #[serde(into = "Option<T")]
+//~^^ ERROR: failed to parse type: into = "Option<T"
 enum TestOne {
     Testing,
     One,
diff --git a/test_suite/tests/compile-fail/unknown-attribute/container.rs b/test_suite/tests/compile-fail/unknown-attribute/container.rs
index dfce43aa..8f02d037 100644
--- a/test_suite/tests/compile-fail/unknown-attribute/container.rs
+++ b/test_suite/tests/compile-fail/unknown-attribute/container.rs
@@ -9,8 +9,9 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: unknown serde container attribute `abc`
+#[derive(Serialize)]
 #[serde(abc="xyz")]
+//~^^ ERROR: unknown serde container attribute `abc`
 struct A {
     x: u32,
 }
diff --git a/test_suite/tests/compile-fail/unknown-attribute/field.rs b/test_suite/tests/compile-fail/unknown-attribute/field.rs
index e4e96cbc..93e474a6 100644
--- a/test_suite/tests/compile-fail/unknown-attribute/field.rs
+++ b/test_suite/tests/compile-fail/unknown-attribute/field.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: unknown serde field attribute `abc`
+#[derive(Serialize)]
 struct C {
     #[serde(abc="xyz")]
+    //~^^^ ERROR: unknown serde field attribute `abc`
     x: u32,
 }
 
diff --git a/test_suite/tests/compile-fail/unknown-attribute/variant.rs b/test_suite/tests/compile-fail/unknown-attribute/variant.rs
index 9d179b20..13e6e0c1 100644
--- a/test_suite/tests/compile-fail/unknown-attribute/variant.rs
+++ b/test_suite/tests/compile-fail/unknown-attribute/variant.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: unknown serde variant attribute `abc`
+#[derive(Serialize)]
 enum E {
     #[serde(abc="xyz")]
+    //~^^^ ERROR: unknown serde variant attribute `abc`
     V,
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_de_newtype_field.rs b/test_suite/tests/compile-fail/with-variant/skip_de_newtype_field.rs
index f783ca8b..ccab207f 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_de_newtype_field.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_de_newtype_field.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: variant `Newtype` cannot have both #[serde(deserialize_with)] and a field 0 marked with #[serde(skip_deserializing)]
+#[derive(Deserialize)]
 enum Enum {
     #[serde(deserialize_with = "deserialize_some_newtype_variant")]
+    //~^^^ ERROR: variant `Newtype` cannot have both #[serde(deserialize_with)] and a field 0 marked with #[serde(skip_deserializing)]
     Newtype(#[serde(skip_deserializing)] String),
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_de_struct_field.rs b/test_suite/tests/compile-fail/with-variant/skip_de_struct_field.rs
index eb96456f..69fdff7b 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_de_struct_field.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_de_struct_field.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: variant `Struct` cannot have both #[serde(deserialize_with)] and a field `f1` marked with #[serde(skip_deserializing)]
+#[derive(Deserialize)]
 enum Enum {
     #[serde(deserialize_with = "deserialize_some_other_variant")]
+    //~^^^ ERROR: variant `Struct` cannot have both #[serde(deserialize_with)] and a field `f1` marked with #[serde(skip_deserializing)]
     Struct {
         #[serde(skip_deserializing)]
         f1: String,
diff --git a/test_suite/tests/compile-fail/with-variant/skip_de_tuple_field.rs b/test_suite/tests/compile-fail/with-variant/skip_de_tuple_field.rs
index 5b5408d5..140a8284 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_de_tuple_field.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_de_tuple_field.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: variant `Tuple` cannot have both #[serde(deserialize_with)] and a field 0 marked with #[serde(skip_deserializing)]
+#[derive(Deserialize)]
 enum Enum {
     #[serde(deserialize_with = "deserialize_some_other_variant")]
+    //~^^^ ERROR: variant `Tuple` cannot have both #[serde(deserialize_with)] and a field 0 marked with #[serde(skip_deserializing)]
     Tuple(#[serde(skip_deserializing)] String, u8),
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_de_whole_variant.rs b/test_suite/tests/compile-fail/with-variant/skip_de_whole_variant.rs
index d70b36a8..e7e62d4c 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_de_whole_variant.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_de_whole_variant.rs
@@ -9,10 +9,11 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Deserialize)] //~ ERROR: 12:10: 12:21: variant `Unit` cannot have both #[serde(deserialize_with)] and #[serde(skip_deserializing)]
+#[derive(Deserialize)]
 enum Enum {
     #[serde(deserialize_with = "deserialize_some_unit_variant")]
     #[serde(skip_deserializing)]
+    //~^^^^ ERROR: variant `Unit` cannot have both #[serde(deserialize_with)] and #[serde(skip_deserializing)]
     Unit,
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field.rs b/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field.rs
index fbebcc84..b8e92a3e 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant `Newtype` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing)]
+#[derive(Serialize)]
 enum Enum {
     #[serde(serialize_with = "serialize_some_newtype_variant")]
+    //~^^^ ERROR: variant `Newtype` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing)]
     Newtype(#[serde(skip_serializing)] String),
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field_if.rs b/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field_if.rs
index d46d2ccd..5a020ec4 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field_if.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_ser_newtype_field_if.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant `Newtype` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing_if)]
+#[derive(Serialize)]
 enum Enum {
     #[serde(serialize_with = "serialize_some_newtype_variant")]
+    //~^^^ ERROR: variant `Newtype` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing_if)]
     Newtype(#[serde(skip_serializing_if = "always")] String),
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field.rs b/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field.rs
index 29997d05..93636ac6 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant `Struct` cannot have both #[serde(serialize_with)] and a field `f1` marked with #[serde(skip_serializing)]
+#[derive(Serialize)]
 enum Enum {
     #[serde(serialize_with = "serialize_some_other_variant")]
+    //~^^^ ERROR: variant `Struct` cannot have both #[serde(serialize_with)] and a field `f1` marked with #[serde(skip_serializing)]
     Struct {
         #[serde(skip_serializing)]
         f1: String,
diff --git a/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field_if.rs b/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field_if.rs
index 6a2a58bc..9ea047a7 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field_if.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_ser_struct_field_if.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant `Struct` cannot have both #[serde(serialize_with)] and a field `f1` marked with #[serde(skip_serializing_if)]
+#[derive(Serialize)]
 enum Enum {
     #[serde(serialize_with = "serialize_some_newtype_variant")]
+    //~^^^ ERROR: variant `Struct` cannot have both #[serde(serialize_with)] and a field `f1` marked with #[serde(skip_serializing_if)]
     Struct {
         #[serde(skip_serializing_if = "always")]
         f1: String,
diff --git a/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field.rs b/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field.rs
index eaf318ac..53f3545d 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant `Tuple` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing)]
+#[derive(Serialize)]
 enum Enum {
     #[serde(serialize_with = "serialize_some_other_variant")]
+    //~^^^ ERROR: variant `Tuple` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing)]
     Tuple(#[serde(skip_serializing)] String, u8),
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field_if.rs b/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field_if.rs
index cae191a5..cccb1742 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field_if.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_ser_tuple_field_if.rs
@@ -9,9 +9,10 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant `Tuple` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing_if)]
+#[derive(Serialize)]
 enum Enum {
     #[serde(serialize_with = "serialize_some_other_variant")]
+    //~^^^ ERROR: variant `Tuple` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing_if)]
     Tuple(#[serde(skip_serializing_if = "always")] String, u8),
 }
 
diff --git a/test_suite/tests/compile-fail/with-variant/skip_ser_whole_variant.rs b/test_suite/tests/compile-fail/with-variant/skip_ser_whole_variant.rs
index 55c5d27d..2cca3a0c 100644
--- a/test_suite/tests/compile-fail/with-variant/skip_ser_whole_variant.rs
+++ b/test_suite/tests/compile-fail/with-variant/skip_ser_whole_variant.rs
@@ -9,10 +9,11 @@
 #[macro_use]
 extern crate serde_derive;
 
-#[derive(Serialize)] //~ ERROR: 12:10: 12:19: variant `Unit` cannot have both #[serde(serialize_with)] and #[serde(skip_serializing)]
+#[derive(Serialize)]
 enum Enum {
     #[serde(serialize_with = "serialize_some_unit_variant")]
     #[serde(skip_serializing)]
+    //~^^^^ ERROR: variant `Unit` cannot have both #[serde(serialize_with)] and #[serde(skip_serializing)]
     Unit,
 }