diff --git a/embassy-macros/src/lib.rs b/embassy-macros/src/lib.rs index c2e2d9e2..c46f114a 100644 --- a/embassy-macros/src/lib.rs +++ b/embassy-macros/src/lib.rs @@ -55,9 +55,9 @@ pub fn task(args: TokenStream, item: TokenStream) -> TokenStream { let mut arg_names: syn::punctuated::Punctuated = syn::punctuated::Punctuated::new(); - let args = &task_fn.sig.inputs; + let mut args = task_fn.sig.inputs.clone(); - for arg in args.iter() { + for arg in args.iter_mut() { match arg { syn::FnArg::Receiver(_) => { arg.span() @@ -66,8 +66,11 @@ pub fn task(args: TokenStream, item: TokenStream) -> TokenStream { .emit(); fail = true; } - syn::FnArg::Typed(t) => match t.pat.as_ref() { - syn::Pat::Ident(i) => arg_names.push(i.ident.clone()), + syn::FnArg::Typed(t) => match t.pat.as_mut() { + syn::Pat::Ident(i) => { + arg_names.push(i.ident.clone()); + i.mutability = None; + } _ => { arg.span() .unwrap()