diff options
Diffstat (limited to 'rtic-macros/src/syntax/parse.rs')
| -rw-r--r-- | rtic-macros/src/syntax/parse.rs | 53 |
1 files changed, 23 insertions, 30 deletions
diff --git a/rtic-macros/src/syntax/parse.rs b/rtic-macros/src/syntax/parse.rs index 823bd82..aae8a50 100644 --- a/rtic-macros/src/syntax/parse.rs +++ b/rtic-macros/src/syntax/parse.rs @@ -8,7 +8,7 @@ mod util; use proc_macro2::TokenStream as TokenStream2; use syn::{ - braced, parenthesized, + braced, parse::{self, Parse, ParseStream, Parser}, token::Brace, Ident, Item, LitInt, Token, @@ -70,15 +70,12 @@ fn init_args(tokens: TokenStream2) -> parse::Result<InitArgs> { let mut local_resources = None; - let content; - parenthesized!(content in input); - - if !content.is_empty() { + if !input.is_empty() { loop { // Parse identifier name - let ident: Ident = content.parse()?; + let ident: Ident = input.parse()?; // Handle equal sign - let _: Token![=] = content.parse()?; + let _: Token![=] = input.parse()?; match &*ident.to_string() { "local" => { @@ -89,18 +86,18 @@ fn init_args(tokens: TokenStream2) -> parse::Result<InitArgs> { )); } - local_resources = Some(util::parse_local_resources(&content)?); + local_resources = Some(util::parse_local_resources(input)?); } _ => { return Err(parse::Error::new(ident.span(), "unexpected argument")); } } - if content.is_empty() { + if input.is_empty() { break; } // Handle comma: , - let _: Token![,] = content.parse()?; + let _: Token![,] = input.parse()?; } } @@ -131,14 +128,12 @@ fn idle_args(tokens: TokenStream2) -> parse::Result<IdleArgs> { let mut shared_resources = None; let mut local_resources = None; - let content; - parenthesized!(content in input); - if !content.is_empty() { + if !input.is_empty() { loop { // Parse identifier name - let ident: Ident = content.parse()?; + let ident: Ident = input.parse()?; // Handle equal sign - let _: Token![=] = content.parse()?; + let _: Token![=] = input.parse()?; match &*ident.to_string() { "shared" => { @@ -149,7 +144,7 @@ fn idle_args(tokens: TokenStream2) -> parse::Result<IdleArgs> { )); } - shared_resources = Some(util::parse_shared_resources(&content)?); + shared_resources = Some(util::parse_shared_resources(input)?); } "local" => { @@ -160,19 +155,19 @@ fn idle_args(tokens: TokenStream2) -> parse::Result<IdleArgs> { )); } - local_resources = Some(util::parse_local_resources(&content)?); + local_resources = Some(util::parse_local_resources(input)?); } _ => { return Err(parse::Error::new(ident.span(), "unexpected argument")); } } - if content.is_empty() { + if input.is_empty() { break; } // Handle comma: , - let _: Token![,] = content.parse()?; + let _: Token![,] = input.parse()?; } } @@ -196,19 +191,17 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof let mut local_resources = None; let mut prio_span = None; - let content; - parenthesized!(content in input); loop { - if content.is_empty() { + if input.is_empty() { break; } // Parse identifier name - let ident: Ident = content.parse()?; + let ident: Ident = input.parse()?; let ident_s = ident.to_string(); // Handle equal sign - let _: Token![=] = content.parse()?; + let _: Token![=] = input.parse()?; match &*ident_s { "binds" => { @@ -220,7 +213,7 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof } // Parse identifier name - let ident = content.parse()?; + let ident = input.parse()?; binds = Some(ident); } @@ -234,7 +227,7 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof } // #lit - let lit: LitInt = content.parse()?; + let lit: LitInt = input.parse()?; if !lit.suffix().is_empty() { return Err(parse::Error::new( @@ -263,7 +256,7 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof )); } - shared_resources = Some(util::parse_shared_resources(&content)?); + shared_resources = Some(util::parse_shared_resources(input)?); } "local" => { @@ -274,7 +267,7 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof )); } - local_resources = Some(util::parse_local_resources(&content)?); + local_resources = Some(util::parse_local_resources(input)?); } _ => { @@ -282,12 +275,12 @@ fn task_args(tokens: TokenStream2) -> parse::Result<Either<HardwareTaskArgs, Sof } } - if content.is_empty() { + if input.is_empty() { break; } // Handle comma: , - let _: Token![,] = content.parse()?; + let _: Token![,] = input.parse()?; } let shared_resources = shared_resources.unwrap_or_default(); let local_resources = local_resources.unwrap_or_default(); |
