From d4a7e75d92d05d0e8aafff86b539ad30df7122c7 Mon Sep 17 00:00:00 2001 From: kawaemon Date: Mon, 16 May 2022 23:05:20 +0900 Subject: [PATCH] Fix #177 --- src/expand.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/expand.rs b/src/expand.rs index ed0818e..9129c0e 100644 --- a/src/expand.rs +++ b/src/expand.rs @@ -10,7 +10,7 @@ use syn::visit_mut::{self, VisitMut}; use syn::{ parse_quote, parse_quote_spanned, Attribute, Block, FnArg, GenericParam, Generics, Ident, ImplItem, Lifetime, LifetimeDef, Pat, PatIdent, Receiver, ReturnType, Signature, Stmt, Token, - TraitItem, Type, TypeParamBound, TypePath, WhereClause, + TraitItem, Type, TypeImplTrait, TypeParamBound, TypePath, WhereClause, }; impl ToTokens for Item { @@ -275,6 +275,13 @@ fn transform_sig( }) => {} FnArg::Receiver(arg) => arg.mutability = None, FnArg::Typed(arg) => { + use syn::spanned::Spanned; + if let Type::ImplTrait(TypeImplTrait { ref mut bounds, .. }) = *arg.ty { + let span = bounds.span(); + let lifetime = Lifetime::new("'async_trait", span); + bounds.push(TypeParamBound::Lifetime(lifetime)); + } + if let Pat::Ident(ident) = &mut *arg.pat { ident.by_ref = None; ident.mutability = None;