aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2020-12-31 16:32:44 +0100
committerGitHub <[email protected]>2020-12-31 16:32:44 +0100
commitffb92731cdb42db418bd9d7c54410e0ecfc7b718 (patch)
tree807c8cded53b7b9cdc1de7f42d3294ece729b22f
parentcd56d2621a4f081f7c7467a2a0aa74e1d2ca49ef (diff)
parentc17954ccbaefbcf755ad819f76eb3c9f83ef325f (diff)
Merge pull request #12 from timokroeger/task-macro-warning
Fix warnings for tasks that take mutable parameters
-rw-r--r--embassy-macros/src/lib.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/embassy-macros/src/lib.rs b/embassy-macros/src/lib.rs
index c2e2d9e27..c46f114a0 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 {
55 55
56 let mut arg_names: syn::punctuated::Punctuated<syn::Ident, syn::Token![,]> = 56 let mut arg_names: syn::punctuated::Punctuated<syn::Ident, syn::Token![,]> =
57 syn::punctuated::Punctuated::new(); 57 syn::punctuated::Punctuated::new();
58 let args = &task_fn.sig.inputs; 58 let mut args = task_fn.sig.inputs.clone();
59 59
60 for arg in args.iter() { 60 for arg in args.iter_mut() {
61 match arg { 61 match arg {
62 syn::FnArg::Receiver(_) => { 62 syn::FnArg::Receiver(_) => {
63 arg.span() 63 arg.span()
@@ -66,8 +66,11 @@ pub fn task(args: TokenStream, item: TokenStream) -> TokenStream {
66 .emit(); 66 .emit();
67 fail = true; 67 fail = true;
68 } 68 }
69 syn::FnArg::Typed(t) => match t.pat.as_ref() { 69 syn::FnArg::Typed(t) => match t.pat.as_mut() {
70 syn::Pat::Ident(i) => arg_names.push(i.ident.clone()), 70 syn::Pat::Ident(i) => {
71 arg_names.push(i.ident.clone());
72 i.mutability = None;
73 }
71 _ => { 74 _ => {
72 arg.span() 75 arg.span()
73 .unwrap() 76 .unwrap()