Parse `extern crate self as foo`
diff --git a/src/item.rs b/src/item.rs
index 6200928..0df3045 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -917,7 +917,13 @@
                 vis: input.parse()?,
                 extern_token: input.parse()?,
                 crate_token: input.parse()?,
-                ident: input.parse()?,
+                ident: {
+                    if input.peek(Token![self]) {
+                        input.call(Ident::parse_any)?
+                    } else {
+                        input.parse()?
+                    }
+                },
                 rename: {
                     if input.peek(Token![as]) {
                         let as_token: Token![as] = input.parse()?;