diff --git a/.travis.yml b/.travis.yml
index 3f95f84..fa153d9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -44,7 +44,7 @@
           ;;
         clippy)
           cargo install clippy --debug --force || exit
-          cargo clippy --features 'full fold visit visit-mut' -- -Dclippy
+          cargo clippy --all-features -- -Dclippy
           ;;
         codegen)
           (cd codegen && cargo run) &&
@@ -62,4 +62,4 @@
     - ROLE=clippy
     - ROLE=codegen
   global:
-    - RUST_MIN_STACK=16000000
+    - RUST_MIN_STACK=20000000
diff --git a/Cargo.toml b/Cargo.toml
index b447ac2..2793250 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "syn"
-version = "0.12.13" # don't forget to update html_root_url
+version = "0.12.14" # don't forget to update html_root_url
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 license = "MIT/Apache-2.0"
 description = "Nom parser for Rust source code"
@@ -33,7 +33,7 @@
 
 [dev-dependencies]
 rayon = "1.0.0"
-walkdir = "1.0.1"
+walkdir = "2"
 
 [package.metadata.docs.rs]
 all-features = true
diff --git a/src/generics.rs b/src/generics.rs
index b86f77d..13a850b 100644
--- a/src/generics.rs
+++ b/src/generics.rs
@@ -950,8 +950,10 @@
 
     impl ToTokens for WhereClause {
         fn to_tokens(&self, tokens: &mut Tokens) {
-            self.where_token.to_tokens(tokens);
-            self.predicates.to_tokens(tokens);
+            if !self.predicates.is_empty() {
+                self.where_token.to_tokens(tokens);
+                self.predicates.to_tokens(tokens);
+            }
         }
     }
 
diff --git a/src/lib.rs b/src/lib.rs
index e6e716a..ee7e8de 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -256,10 +256,10 @@
 //!   types.
 
 // Syn types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/syn/0.12.13")]
+#![doc(html_root_url = "https://docs.rs/syn/0.12.14")]
 #![cfg_attr(feature = "cargo-clippy",
             allow(const_static_lifetime, doc_markdown, large_enum_variant, match_bool,
-                  redundant_closure, needless_pass_by_value))]
+                  redundant_closure, needless_pass_by_value, redundant_field_names))]
 
 extern crate proc_macro2;
 extern crate proc_macro;
diff --git a/tests/common/respan.rs b/tests/common/respan.rs
index bc59965..6d1e75a 100644
--- a/tests/common/respan.rs
+++ b/tests/common/respan.rs
@@ -128,7 +128,7 @@
                         // default fold_fn_decl does not fold this span
                         FunctionRetTy::Default(span) => FunctionRetTy::Default(self.new_span(span)),
                     },
-                    variadic: variadic,
+                    variadic,
                 }
             },
         )
@@ -192,7 +192,7 @@
     fn fold_meta_item(&mut self, meta_item: MetaItem) -> MetaItem {
         let MetaItem { name, node, span } = meta_item;
         MetaItem {
-            name: name,
+            name,
             node: match node {
                 MetaItemKind::Word => MetaItemKind::Word,
                 MetaItemKind::List(nested) => {
diff --git a/tests/test_precedence.rs b/tests/test_precedence.rs
index 0a2ee15..6c2d74c 100644
--- a/tests/test_precedence.rs
+++ b/tests/test_precedence.rs
@@ -30,7 +30,7 @@
 use rayon::iter::{IntoParallelIterator, ParallelIterator};
 use syntax::ast;
 use syntax::ptr::P;
-use walkdir::{DirEntry, WalkDir, WalkDirIterator};
+use walkdir::{DirEntry, WalkDir};
 
 use std::fs::File;
 use std::io::Read;
@@ -97,7 +97,7 @@
     let failed = AtomicUsize::new(0);
 
     WalkDir::new("tests/rust")
-        .sort_by(|a, b| a.cmp(b))
+        .sort_by(|a, b| a.file_name().cmp(b.file_name()))
         .into_iter()
         .filter_entry(common::base_dir_filter)
         .collect::<Result<Vec<DirEntry>, walkdir::Error>>()
@@ -162,7 +162,7 @@
     let mut passed = 0;
     let mut failed = 0;
 
-    for expr in exprs {
+    syntax::with_globals(|| for expr in exprs {
         let raw = quote!(#expr).to_string();
 
         let libsyntax_ast = if let Some(e) = libsyntax_parse_and_rewrite(&raw) {
@@ -191,7 +191,7 @@
             failed += 1;
             errorf!("\nFAIL\n{:?}\n!=\n{:?}\n", syn_ast, libsyntax_ast);
         }
-    }
+    });
 
     (passed, failed)
 }
@@ -216,7 +216,7 @@
     fn expr(node: ExprKind) -> P<Expr> {
         P(Expr {
             id: ast::DUMMY_NODE_ID,
-            node: node,
+            node,
             span: DUMMY_SP,
             attrs: ThinVec::new(),
         })
@@ -274,7 +274,7 @@
                 s => s,
             };
 
-            SmallVector::one(Stmt { node: node, ..stmt })
+            SmallVector::one(Stmt { node, ..stmt })
         }
 
         fn fold_mac(&mut self, mac: Mac) -> Mac {
@@ -306,7 +306,7 @@
     fn paren(folder: &mut ParenthesizeEveryExpr, mut node: Expr) -> Expr {
         let attrs = node.replace_attrs(Vec::new());
         Expr::Paren(ExprParen {
-            attrs: attrs,
+            attrs,
             expr: Box::new(fold_expr(folder, node)),
             paren_token: token::Paren::default(),
         })
diff --git a/tests/test_round_trip.rs b/tests/test_round_trip.rs
index 527a0e2..3313acb 100644
--- a/tests/test_round_trip.rs
+++ b/tests/test_round_trip.rs
@@ -22,7 +22,7 @@
 use syntax::parse::{self, PResult, ParseSess};
 use syntax::codemap::FilePathMapping;
 use syntax_pos::FileName;
-use walkdir::{DirEntry, WalkDir, WalkDirIterator};
+use walkdir::{DirEntry, WalkDir};
 
 use std::fs::File;
 use std::io::Read;
@@ -49,7 +49,7 @@
     let failed = AtomicUsize::new(0);
 
     WalkDir::new("tests/rust")
-        .sort_by(|a, b| a.cmp(b))
+        .sort_by(|a, b| a.file_name().cmp(b.file_name()))
         .into_iter()
         .filter_entry(common::base_dir_filter)
         .collect::<Result<Vec<DirEntry>, walkdir::Error>>()
@@ -146,5 +146,7 @@
 
 fn libsyntax_parse(content: String, sess: &ParseSess) -> PResult<ast::Crate> {
     let name = FileName::Custom("test_round_trip".to_string());
-    parse::parse_crate_from_source_str(name, content, sess).map(common::respan::respan_crate)
+    syntax::with_globals(|| {
+        parse::parse_crate_from_source_str(name, content, sess).map(common::respan::respan_crate)
+    })
 }
diff --git a/tests/test_token_trees.rs b/tests/test_token_trees.rs
index 398e630..0047ae2 100644
--- a/tests/test_token_trees.rs
+++ b/tests/test_token_trees.rs
@@ -93,7 +93,7 @@
             pound_token: Default::default(),
             bracket_token: Default::default(),
             path: "test".into(),
-            tts: tts,
+            tts,
             is_sugared_doc: false,
         }
     }
