Parse impl qpath
diff --git a/src/item.rs b/src/item.rs
index 39bd3cb..a851560 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -1719,7 +1719,19 @@
let defaultness: Option<Token![default]> = input.parse()?;
let unsafety: Option<Token![unsafe]> = input.parse()?;
let impl_token: Token![impl ] = input.parse()?;
- let generics: Generics = input.parse()?;
+
+ let has_generics = input.peek(Token![<])
+ && (input.peek2(Token![>])
+ || input.peek2(Token![#])
+ || (input.peek2(Ident) || input.peek2(Lifetime))
+ && (input.peek3(Token![:]) || input.peek3(Token![,]) || input.peek3(Token![>]))
+ );
+ let generics: Generics = if has_generics {
+ input.parse()?
+ } else {
+ Generics::default()
+ };
+
let trait_ = {
let ahead = input.fork();
if ahead.parse::<Option<Token![!]>>().is_ok()