Set all documentation examples to 2018 edition
diff --git a/src/parse.rs b/src/parse.rs
index 03513c8..1b7e947 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -25,7 +25,7 @@
 //!
 //! [`parse_macro_input!`]: ../macro.parse_macro_input.html
 //!
-//! ```
+//! ```edition2018
 //! extern crate proc_macro;
 //!
 //! use proc_macro::TokenStream;
@@ -101,7 +101,7 @@
 //! [`syn::parse_str`]: ../fn.parse_str.html
 //! [`Parse`]: trait.Parse.html
 //!
-//! ```
+//! ```edition2018
 //! use syn::Type;
 //!
 //! # fn run_parser() -> syn::Result<()> {
@@ -132,7 +132,7 @@
 //! The `Parse` trait is not implemented in these cases because there is no good
 //! behavior to consider the default.
 //!
-//! ```compile_fail
+//! ```edition2018,compile_fail
 //! # extern crate proc_macro;
 //! #
 //! # use syn::punctuated::Punctuated;
@@ -154,7 +154,7 @@
 //!
 //! [`Parser`]: trait.Parser.html
 //!
-//! ```
+//! ```edition2018
 //! extern crate proc_macro;
 //!
 //! use proc_macro::TokenStream;
@@ -293,7 +293,7 @@
 ///
 /// # Example
 ///
-/// ```
+/// ```edition2018
 /// # extern crate proc_macro2;
 /// #
 /// use proc_macro2::TokenTree;
@@ -429,7 +429,7 @@
     ///
     /// [`Attribute::parse_outer`]: ../struct.Attribute.html#method.parse_outer
     ///
-    /// ```
+    /// ```edition2018
     /// use syn::{Attribute, Ident, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
@@ -480,7 +480,7 @@
     /// In this example we finish parsing the list of supertraits when the next
     /// token in the input is either `where` or an opening curly brace.
     ///
-    /// ```
+    /// ```edition2018
     /// use syn::{braced, token, Generics, Ident, Result, Token, TypeParamBound};
     /// use syn::parse::{Parse, ParseStream};
     /// use syn::punctuated::Punctuated;
@@ -547,7 +547,7 @@
     /// union` and a macro invocation that looks like `union::some_macro! { ...
     /// }`. In other words `union` is a contextual keyword.
     ///
-    /// ```
+    /// ```edition2018
     /// use syn::{Ident, ItemUnion, Macro, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
@@ -588,7 +588,7 @@
     ///
     /// # Example
     ///
-    /// ```rust
+    /// ```edition2018
     /// # extern crate quote;
     /// # use quote::quote;
     /// #
@@ -641,7 +641,7 @@
     ///
     /// # Example
     ///
-    /// ```rust
+    /// ```edition2018
     /// use syn::{braced, token, Ident, Item, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
@@ -680,7 +680,7 @@
     ///
     /// # Example
     ///
-    /// ```
+    /// ```edition2018
     /// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};
     /// use syn::parse::{Parse, ParseStream};
     ///
@@ -730,7 +730,7 @@
     /// is if your macro ends up parsing a large amount of content more than
     /// once.
     ///
-    /// ```
+    /// ```edition2018
     /// # use syn::{Expr, Result};
     /// # use syn::parse::ParseStream;
     /// #
@@ -767,7 +767,7 @@
     /// needs to distinguish parentheses that specify visibility restrictions
     /// from parentheses that form part of a tuple type.
     ///
-    /// ```
+    /// ```edition2018
     /// # struct A;
     /// # struct B;
     /// # struct C;
@@ -784,7 +784,7 @@
     /// parentheses after the `pub` keyword. This is a small bounded amount of
     /// work performed against the forked parse stream.
     ///
-    /// ```
+    /// ```edition2018
     /// use syn::{parenthesized, token, Ident, Path, Result, Token};
     /// use syn::ext::IdentExt;
     /// use syn::parse::{Parse, ParseStream};
@@ -855,7 +855,7 @@
     ///
     /// # Example
     ///
-    /// ```
+    /// ```edition2018
     /// use syn::{Expr, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
@@ -892,7 +892,7 @@
     ///
     /// # Example
     ///
-    /// ```
+    /// ```edition2018
     /// # extern crate proc_macro2;
     /// #
     /// use proc_macro2::TokenTree;