Parse crate::X in newtype as (crate::X) not crate(::X)
diff --git a/src/data.rs b/src/data.rs
index fbbdb70..3d1924a 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -261,11 +261,13 @@
                 }))
             )
             |
-            keyword!(crate) => { |tok| {
-                Visibility::Crate(VisCrate {
-                    crate_token: tok,
-                })
-            } }
+            do_parse!(
+                crate_token: keyword!(crate) >>
+                not!(punct!(::)) >>
+                (Visibility::Crate(VisCrate {
+                    crate_token: crate_token,
+                }))
+            )
             |
             do_parse!(
                 pub_token: keyword!(pub) >>