Typedef parsing
diff --git a/src/macro_input.rs b/src/macro_input.rs
index 149b6d7..92a8e79 100644
--- a/src/macro_input.rs
+++ b/src/macro_input.rs
@@ -18,9 +18,10 @@
 #[cfg(feature = "parsing")]
 pub mod parsing {
     use super::*;
+    use Generics;
     use attr::parsing::outer_attr;
     use data::parsing::{visibility, struct_body, enum_body};
-    use generics::parsing::generics;
+    use generics::parsing::{generics, where_clause};
     use space::whitespace;
     use ident::parsing::ident;
 
@@ -30,12 +31,16 @@
         which: alt!(keyword!("struct") | keyword!("enum")) >>
         id: ident >>
         generics: generics >>
+        where_clause: where_clause >>
         item: switch!(value!(which),
             "struct" => map!(struct_body, move |body| MacroInput {
                 ident: id,
                 vis: vis,
                 attrs: attrs,
-                generics: generics,
+                generics: Generics {
+                    where_clause: where_clause,
+                    .. generics
+                },
                 body: Body::Struct(body),
             })
             |
@@ -43,7 +48,10 @@
                 ident: id,
                 vis: vis,
                 attrs: attrs,
-                generics: generics,
+                generics: Generics {
+                    where_clause: where_clause,
+                    .. generics
+                },
                 body: Body::Enum(body),
             })
         ) >>