diff --git a/tests/common/mod.rs b/tests/common/mod.rs
index 4665ef7..723fab4 100644
--- a/tests/common/mod.rs
+++ b/tests/common/mod.rs
@@ -9,16 +9,6 @@
 
 use self::walkdir::DirEntry;
 
-macro_rules! errorf {
-    ($($tt:tt)*) => {
-        {
-            use ::std::io::Write;
-            let stderr = ::std::io::stderr();
-            write!(stderr.lock(), $($tt)*).unwrap();
-        }
-    };
-}
-
 pub mod parse;
 pub mod respan;
 
diff --git a/tests/macros/mod.rs b/tests/macros/mod.rs
new file mode 100644
index 0000000..86d40ca
--- /dev/null
+++ b/tests/macros/mod.rs
@@ -0,0 +1,27 @@
+#[macro_export]
+macro_rules! errorf {
+    ($($tt:tt)*) => {{
+        use ::std::io::Write;
+        let stderr = ::std::io::stderr();
+        write!(stderr.lock(), $($tt)*).unwrap();
+    }};
+}
+
+#[macro_export]
+macro_rules! delimited {
+    ($first:expr, $($rest:expr,)*) => {{
+        let mut d = ::syn::delimited::Delimited::new();
+        let mut last = $first;
+        $(
+            d.push(::std::mem::replace(&mut last, $rest));
+            d.push_trailing(::std::default::Default::default());
+        )*
+        last = last;
+        d.push(last);
+        d
+    }};
+
+    ($($e:expr),+) => {
+        delimited!($($e,)+)
+    };
+}
diff --git a/tests/test_derive_input.rs b/tests/test_derive_input.rs
index 8884137..4003263 100644
--- a/tests/test_derive_input.rs
+++ b/tests/test_derive_input.rs
@@ -9,6 +9,9 @@
 
 use std::iter::FromIterator;
 
+#[macro_use]
+mod macros;
+
 fn op(c: char) -> TokenTree {
     proc_macro2::TokenTree {
         span: Default::default(),
@@ -88,7 +91,7 @@
             semi_token: None,
             struct_token: Default::default(),
             data: VariantData::Struct(
-                vec![
+                delimited![
                     Field {
                         ident: Some("ident".into()),
                         colon_token: Some(Default::default()),
@@ -112,28 +115,28 @@
                             qself: None,
                             path: Path {
                                 leading_colon: None,
-                                segments: vec![
-                                PathSegment {
-                                    ident: "Vec".into(),
-                                    arguments: PathArguments::AngleBracketed(
-                                        AngleBracketedGenericArguments {
-                                            colon2_token: None,
-                                            lt_token: Default::default(),
-                                            args: vec![
-                                                GenericArgument::Type(Type::from(TypePath {
-                                                    qself: None,
-                                                    path: "Attribute".into(),
-                                                })),
-                                            ].into(),
-                                            gt_token: Default::default(),
-                                        },
-                                    ),
-                                }
-                            ].into(),
+                                segments: delimited![
+                                    PathSegment {
+                                        ident: "Vec".into(),
+                                        arguments: PathArguments::AngleBracketed(
+                                            AngleBracketedGenericArguments {
+                                                colon2_token: None,
+                                                lt_token: Default::default(),
+                                                args: delimited![
+                                                    GenericArgument::Type(Type::from(TypePath {
+                                                        qself: None,
+                                                        path: "Attribute".into(),
+                                                    })),
+                                                ],
+                                                gt_token: Default::default(),
+                                            },
+                                        ),
+                                    }
+                                ],
                             },
                         }.into(),
                     },
-                ].into(),
+                ],
                 Default::default(),
             ),
         }),
@@ -146,10 +149,10 @@
     let expected_meta_item: MetaItem = MetaItemList {
         ident: "derive".into(),
         paren_token: Default::default(),
-        nested: vec![
+        nested: delimited![
             NestedMetaItem::MetaItem(MetaItem::Term("Debug".into())),
             NestedMetaItem::MetaItem(MetaItem::Term("Clone".into())),
-        ].into(),
+        ],
     }.into();
 
     assert_eq!(expected_meta_item, actual.attrs[0].meta_item().unwrap());
@@ -202,7 +205,7 @@
         ],
         generics: Generics {
             lt_token: Some(Default::default()),
-            params: vec![
+            params: delimited![
                 GenericParam::Type(TypeParam {
                     attrs: Vec::new(),
                     ident: "T".into(),
@@ -219,17 +222,17 @@
                     eq_token: None,
                     default: None,
                 }),
-            ].into(),
+            ],
             gt_token: Some(Default::default()),
             where_clause: None,
         },
         body: Body::Enum(BodyEnum {
-            variants: vec![
+            variants: delimited![
                 Variant {
                     ident: "Ok".into(),
                     attrs: Vec::new(),
                     data: VariantData::Tuple(
-                        vec![
+                        delimited![
                             Field {
                                 colon_token: None,
                                 ident: None,
@@ -240,7 +243,7 @@
                                     path: "T".into(),
                                 }.into(),
                             },
-                        ].into(),
+                        ],
                         Default::default(),
                     ),
                     discriminant: None,
@@ -249,7 +252,7 @@
                     ident: "Err".into(),
                     attrs: Vec::new(),
                     data: VariantData::Tuple(
-                        vec![
+                        delimited![
                             Field {
                                 ident: None,
                                 colon_token: None,
@@ -260,7 +263,7 @@
                                     path: "E".into(),
                                 }.into(),
                             },
-                        ].into(),
+                        ],
                         Default::default(),
                     ),
                     discriminant: None,
@@ -291,7 +294,7 @@
                             base: Box::new(Expr::Tuple(ExprTuple {
                                 attrs: Vec::new(),
                                 paren_token: Default::default(),
-                                elems: vec![
+                                elems: delimited![
                                     Expr::Lit(ExprLit {
                                         attrs: Vec::new(),
                                         lit: Lit {
@@ -306,7 +309,7 @@
                                             span: Default::default(),
                                         },
                                     }),
-                                ].into(),
+                                ],
                             })),
                             dot_token: Default::default(),
                             member: Member::Unnamed(Index {
@@ -316,7 +319,7 @@
                         }),
                     )),
                 },
-            ].into(),
+            ],
             brace_token: Default::default(),
             enum_token: Default::default(),
         }),
@@ -367,10 +370,10 @@
                 style: AttrStyle::Outer,
                 path: Path {
                     leading_colon: Some(Default::default()),
-                    segments: vec![
+                    segments: delimited![
                         PathSegment::from("attr_args"),
                         PathSegment::from("identity"),
-                    ].into(),
+                    ],
                 },
                 tts: TokenStream::from_iter(vec![
                     word("fn"),
@@ -429,7 +432,7 @@
                 style: AttrStyle::Outer,
                 path: Path {
                     leading_colon: None,
-                    segments: vec![PathSegment::from("inert")].into(),
+                    segments: delimited![PathSegment::from("inert")],
                 },
                 tts: TokenStream::from_iter(vec![op('<'), word("T"), op('>')]),
                 is_sugared_doc: false,
@@ -467,7 +470,7 @@
                 style: AttrStyle::Outer,
                 path: Path {
                     leading_colon: None,
-                    segments: vec![PathSegment::from("foo"), PathSegment::from("self")].into(),
+                    segments: delimited![PathSegment::from("foo"), PathSegment::from("self")],
                 },
                 tts: TokenStream::empty(),
                 is_sugared_doc: false,
@@ -507,14 +510,13 @@
         generics: Generics::default(),
         body: Body::Struct(BodyStruct {
             data: VariantData::Tuple(
-                vec![
+                delimited![
                     Field {
                         ident: None,
                         vis: Visibility::Restricted(VisRestricted {
                             path: Box::new(Path {
                                 leading_colon: None,
-                                segments: vec![PathSegment::from("m"), PathSegment::from("n")]
-                                    .into(),
+                                segments: delimited![PathSegment::from("m"), PathSegment::from("n")],
                             }),
                             in_token: Some(Default::default()),
                             paren_token: Default::default(),
@@ -527,7 +529,7 @@
                             path: "u8".into(),
                         }.into(),
                     },
-                ].into(),
+                ],
                 Default::default(),
             ),
             semi_token: Some(Default::default()),
diff --git a/tests/test_generics.rs b/tests/test_generics.rs
index 8cdb4a2..4b55b15 100644
--- a/tests/test_generics.rs
+++ b/tests/test_generics.rs
@@ -10,6 +10,9 @@
 extern crate proc_macro2;
 use proc_macro2::{Span, Term, TokenStream};
 
+#[macro_use]
+mod macros;
+
 mod common;
 
 #[test]
@@ -18,7 +21,7 @@
     let generics = Generics {
         gt_token: Some(Default::default()),
         lt_token: Some(Default::default()),
-        params: vec![
+        params: delimited![
             GenericParam::Lifetime(LifetimeDef {
                 attrs: Default::default(),
                 lifetime: Lifetime::new(Term::intern("'a"), Span::default()),
@@ -28,7 +31,7 @@
             GenericParam::Lifetime(LifetimeDef {
                 attrs: Default::default(),
                 lifetime: Lifetime::new(Term::intern("'b"), Span::default()),
-                bounds: vec![Lifetime::new(Term::intern("'a"), Span::default())].into(),
+                bounds: delimited![Lifetime::new(Term::intern("'a"), Span::default())],
                 colon_token: Some(token::Colon::default()),
             }),
             GenericParam::Type(TypeParam {
@@ -43,9 +46,9 @@
                     },
                 ],
                 ident: "T".into(),
-                bounds: vec![
+                bounds: delimited![
                     TypeParamBound::Region(Lifetime::new(Term::intern("'a"), Span::default())),
-                ].into(),
+                ],
                 default: Some(
                     TypeTuple {
                         elems: Default::default(),
@@ -55,10 +58,10 @@
                 colon_token: Some(Default::default()),
                 eq_token: Default::default(),
             }),
-        ].into(),
+        ],
         where_clause: Some(WhereClause {
             where_token: Default::default(),
-            predicates: vec![
+            predicates: delimited![
                 WherePredicate::BoundPredicate(WhereBoundPredicate {
                     bound_lifetimes: None,
                     colon_token: Default::default(),
@@ -66,7 +69,7 @@
                         qself: None,
                         path: "T".into(),
                     }.into(),
-                    bounds: vec![
+                    bounds: delimited![
                         TypeParamBound::Trait(
                             PolyTraitRef {
                                 bound_lifetimes: None,
@@ -74,9 +77,9 @@
                             },
                             TraitBoundModifier::None,
                         ),
-                    ].into(),
+                    ],
                 }),
-            ].into(),
+            ],
         }),
     };
 
diff --git a/tests/test_grouping.rs b/tests/test_grouping.rs
index b09225e..7d031d2 100644
--- a/tests/test_grouping.rs
+++ b/tests/test_grouping.rs
@@ -9,6 +9,9 @@
 extern crate proc_macro2;
 use proc_macro2::*;
 
+#[macro_use]
+mod macros;
+
 mod common;
 
 fn tt(k: TokenNode) -> TokenTree {
diff --git a/tests/test_meta_item.rs b/tests/test_meta_item.rs
index efb11ae..4784edd 100644
--- a/tests/test_meta_item.rs
+++ b/tests/test_meta_item.rs
@@ -7,6 +7,9 @@
 use syn::synom::SynomBuffer;
 use proc_macro2::{Literal, TokenStream};
 
+#[macro_use]
+mod macros;
+
 fn lit<T: Into<Literal>>(t: T) -> Lit {
     Lit {
         value: LitKind::Other(t.into()),
@@ -38,7 +41,7 @@
         MetaItemList {
             ident: "foo".into(),
             paren_token: Default::default(),
-            nested: vec![NestedMetaItem::Literal(lit(Literal::integer(5)))].into(),
+            nested: delimited![NestedMetaItem::Literal(lit(Literal::integer(5)))],
         },
     )
 }
@@ -50,7 +53,7 @@
         MetaItemList {
             ident: "foo".into(),
             paren_token: Default::default(),
-            nested: vec![NestedMetaItem::MetaItem(MetaItem::Term("bar".into()))].into(),
+            nested: delimited![NestedMetaItem::MetaItem(MetaItem::Term("bar".into()))],
         },
     )
 }
@@ -62,7 +65,7 @@
         MetaItemList {
             ident: "foo".into(),
             paren_token: Default::default(),
-            nested: vec![
+            nested: delimited![
                 NestedMetaItem::MetaItem(
                     MetaNameValue {
                         ident: "bar".into(),
@@ -70,7 +73,7 @@
                         lit: lit(Literal::integer(5)),
                     }.into(),
                 ),
-            ].into(),
+            ],
         },
     )
 }
@@ -82,7 +85,7 @@
         MetaItemList {
             ident: "foo".into(),
             paren_token: Default::default(),
-            nested: vec![
+            nested: delimited![
                 NestedMetaItem::MetaItem(MetaItem::Term("word".into())),
                 NestedMetaItem::MetaItem(
                     MetaNameValue {
@@ -95,7 +98,7 @@
                     MetaItemList {
                         ident: "list".into(),
                         paren_token: Default::default(),
-                        nested: vec![
+                        nested: delimited![
                             NestedMetaItem::MetaItem(
                                 MetaNameValue {
                                     ident: "name2".into(),
@@ -103,11 +106,11 @@
                                     lit: lit(Literal::integer(6)),
                                 }.into(),
                             ),
-                        ].into(),
+                        ],
                     }.into(),
                 ),
                 NestedMetaItem::MetaItem(MetaItem::Term("word2".into())),
-            ].into(),
+            ],
         },
     )
 }
diff --git a/tests/test_precedence.rs b/tests/test_precedence.rs
index fbe27e8..8af0941 100644
--- a/tests/test_precedence.rs
+++ b/tests/test_precedence.rs
@@ -31,8 +31,10 @@
 
 use common::{parse, respan};
 
-#[allow(dead_code)]
 #[macro_use]
+mod macros;
+
+#[allow(dead_code)]
 mod common;
 
 /// Test some pre-set expressions chosen by us.
diff --git a/tests/test_round_trip.rs b/tests/test_round_trip.rs
index c5b82f9..b1a5164 100644
--- a/tests/test_round_trip.rs
+++ b/tests/test_round_trip.rs
@@ -23,8 +23,10 @@
 use std::sync::atomic::{AtomicUsize, Ordering};
 use std::time::Instant;
 
-#[allow(dead_code)]
 #[macro_use]
+mod macros;
+
+#[allow(dead_code)]
 mod common;
 
 #[test]
