Fix some feature combinations

Without this `--no-default-features --features full,extra-traits` does
not compile.
diff --git a/src/lib.rs b/src/lib.rs
index 55d898a..ff5d62c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -382,7 +382,7 @@
 #[cfg(feature = "parsing")]
 pub mod synom;
 pub mod punctuated;
-#[cfg(all(any(feature = "full", feature = "derive"), feature = "parsing"))]
+#[cfg(any(feature = "full", feature = "derive"))]
 mod tt;
 
 #[cfg(all(feature = "parsing", feature = "printing"))]
diff --git a/src/tt.rs b/src/tt.rs
index 11c3e3c..19ebedd 100644
--- a/src/tt.rs
+++ b/src/tt.rs
@@ -6,16 +6,22 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use proc_macro2::{Delimiter, TokenNode, TokenStream, TokenTree};
+#[cfg(feature = "parsing")]
 use buffer::Cursor;
-use parse_error;
+#[cfg(feature = "parsing")]
 use synom::PResult;
-use MacroDelimiter;
+#[cfg(feature = "parsing")]
 use token::{Brace, Bracket, Paren};
+#[cfg(feature = "parsing")]
+use {parse_error, MacroDelimiter};
 
 #[cfg(feature = "extra-traits")]
 use std::hash::{Hash, Hasher};
 
+#[cfg(any(feature = "parsing", feature = "extra-traits"))]
+use proc_macro2::{Delimiter, TokenNode, TokenStream, TokenTree};
+
+#[cfg(feature = "parsing")]
 pub fn delimited(input: Cursor) -> PResult<(MacroDelimiter, TokenStream)> {
     match input.token_tree() {
         Some((
@@ -37,7 +43,7 @@
     }
 }
 
-#[cfg(feature = "full")]
+#[cfg(all(feature = "full", feature = "parsing"))]
 pub fn braced(input: Cursor) -> PResult<(Brace, TokenStream)> {
     match input.token_tree() {
         Some((
@@ -51,7 +57,7 @@
     }
 }
 
-#[cfg(feature = "full")]
+#[cfg(all(feature = "full", feature = "parsing"))]
 pub fn parenthesized(input: Cursor) -> PResult<(Paren, TokenStream)> {
     match input.token_tree() {
         Some((