Support feature(extern_in_paths)
diff --git a/src/item.rs b/src/item.rs
index 7b5a015..222c648 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -832,6 +832,8 @@
         keyword!(super) => { Into::into }
         |
         keyword!(crate) => { Into::into }
+        |
+        keyword!(extern) => { Into::into }
     ));
 
     impl_synom!(UseTree "use tree" alt!(
diff --git a/src/path.rs b/src/path.rs
index 19c1f05..e57c8f4 100644
--- a/src/path.rs
+++ b/src/path.rs
@@ -368,6 +368,8 @@
         keyword!(Self) => { Into::into }
         |
         keyword!(crate) => { Into::into }
+        |
+        keyword!(extern) => { Into::into }
     ));
 
     named!(pub qpath -> (Option<QSelf>, Path), alt!(
diff --git a/src/token.rs b/src/token.rs
index 18250b1..f130552 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -736,6 +736,7 @@
 ident_from_token!(Self);
 ident_from_token!(super);
 ident_from_token!(crate);
+ident_from_token!(extern);
 
 #[cfg(feature = "parsing")]
 mod parsing {
diff --git a/src/ty.rs b/src/ty.rs
index f916505..1ee46d0 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -278,6 +278,9 @@
         // must be before TypePath
         syn!(TypeMacro) => { Type::Macro }
         |
+        // must be before TypePath
+        syn!(TypeBareFn) => { Type::BareFn }
+        |
         // must be before TypeTraitObject
         call!(TypePath::parse, allow_plus) => { Type::Path }
         |
@@ -293,8 +296,6 @@
         |
         syn!(TypeReference) => { Type::Reference }
         |
-        syn!(TypeBareFn) => { Type::BareFn }
-        |
         syn!(TypeNever) => { Type::Never }
         |
         syn!(TypeTuple) => { Type::Tuple }