diff --git a/tests/test_expr.rs b/tests/test_expr.rs
index f761618..411bcd3 100644
--- a/tests/test_expr.rs
+++ b/tests/test_expr.rs
@@ -9,7 +9,9 @@
 #![cfg(feature = "extra-traits")]
 
 extern crate syn;
+extern crate proc_macro2;
 use syn::*;
+use proc_macro2::*;
 
 macro_rules! assert_let {
     ($p:pat = $e:expr) => {
@@ -97,7 +99,7 @@
     let actual: File = syn::parse_str(raw).unwrap();
 
     assert_let!(Item::Struct(ItemStruct { ref ident, .. }) = actual.items[0]; {
-        assert_eq!(ident, "catch");
+        assert_eq!(ident.to_string(), "catch");
     });
 
     assert_let!(Item::Fn(ItemFn { ref block, .. }) = actual.items[1]; {
@@ -109,14 +111,15 @@
 
         assert_let!(Stmt::Local(ref local) = block.stmts[2]; {
             assert_let!(Pat::Ident(PatIdent { by_ref: None, mutability: Some(_), ref ident, .. }) = local.pats.iter().next().unwrap(); {
-                assert_eq!(ident, "catch");
+                assert_eq!(ident.to_string(), "catch");
             });
         });
 
         assert_let!(Stmt::Expr(ref expr) = block.stmts[3]; {
             assert_let!(Expr::While(ExprWhile { ref cond, .. }) = *expr; {
                 assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **cond; {
-                    assert_eq!(*path, "catch".into());
+                    let name = Ident::new("catch", Span::call_site());
+                    assert_eq!(*path, name.into());
                 });
             });
         });
@@ -124,12 +127,14 @@
         assert_let!(Stmt::Semi(ref expr, _) = block.stmts[5]; {
             assert_let!(Expr::Assign(ExprAssign { ref left, ref right, .. }) = *expr; {
                 assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **left; {
-                    assert_eq!(*path, "catch".into());
+                    let name = Ident::new("catch", Span::call_site());
+                    assert_eq!(*path, name.into());
                 });
 
                 assert_let!(Expr::If(ExprIf { ref cond, .. }) = **right; {
                     assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **cond; {
-                        assert_eq!(*path, "catch".into());
+                        let name = Ident::new("catch", Span::call_site());
+                        assert_eq!(*path, name.into());
                     });
                 });
             });
@@ -138,7 +143,8 @@
         assert_let!(Stmt::Semi(ref expr, _) = block.stmts[7]; {
             assert_let!(Expr::Match(ExprMatch { ref expr, .. }) = *expr; {
                 assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **expr; {
-                    assert_eq!(*path, "catch".into());
+                    let name = Ident::new("catch", Span::call_site());
+                    assert_eq!(*path, name.into());
                 });
             });
         });
