Update to proc-macro2 0.3 and tweak apis
diff --git a/src/ident.rs b/src/ident.rs
index 8402420..7b0e532 100644
--- a/src/ident.rs
+++ b/src/ident.rs
@@ -99,7 +99,6 @@
 #[derive(Copy, Clone, Debug)]
 pub struct Ident {
     term: Term,
-    pub span: Span,
 }
 
 impl Ident {
@@ -145,15 +144,22 @@
         }
 
         Ident {
-            term: Term::intern(s),
-            span: span,
+            term: Term::new(s, span),
         }
     }
+
+    pub fn span(&self) -> Span {
+        self.term.span()
+    }
+
+    pub fn set_span(&mut self, span: Span) {
+        self.term.set_span(span);
+    }
 }
 
 impl<'a> From<&'a str> for Ident {
     fn from(s: &str) -> Self {
-        Ident::new(s, Span::def_site())
+        Ident::new(s, Span::call_site())
     }
 }
 
@@ -183,13 +189,13 @@
 
 impl<'a> From<Cow<'a, str>> for Ident {
     fn from(s: Cow<'a, str>) -> Self {
-        Ident::new(&s, Span::def_site())
+        Ident::new(&s, Span::call_site())
     }
 }
 
 impl From<String> for Ident {
     fn from(s: String) -> Self {
-        Ident::new(&s, Span::def_site())
+        Ident::new(&s, Span::call_site())
     }
 }
 
@@ -244,7 +250,7 @@
 
     impl Synom for Ident {
         fn parse(input: Cursor) -> PResult<Self> {
-            let (span, term, rest) = match input.term() {
+            let (term, rest) = match input.term() {
                 Some(term) => term,
                 _ => return parse_error(),
             };
@@ -265,7 +271,6 @@
 
             Ok((
                 Ident {
-                    span: span,
                     term: term,
                 },
                 rest,
@@ -282,14 +287,10 @@
 mod printing {
     use super::*;
     use quote::{ToTokens, Tokens};
-    use proc_macro2::{TokenNode, TokenTree};
 
     impl ToTokens for Ident {
         fn to_tokens(&self, tokens: &mut Tokens) {
-            tokens.append(TokenTree {
-                span: self.span,
-                kind: TokenNode::Term(self.term),
-            })
+            tokens.append(self.term);
         }
     }
 }