aboutsummaryrefslogtreecommitdiff
path: root/rtic-macros/src/syntax/parse.rs
diff options
context:
space:
mode:
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2024-01-16 08:03:49 +0100
committerGitHub <noreply@github.com>2024-01-16 07:03:49 +0000
commitf74f38a4f764fd017812ff351906b64cbb239767 (patch)
treec45ee74cfb3510071f2aa9a69acb882eb82ac852 /rtic-macros/src/syntax/parse.rs
parentc63065700994f7215d3613b0dbb43b40a49c2d26 (diff)
Update syn requirement from 1.0.107 to 2.0.48 (#881)
* Update syn requirement from 1.0.107 to 2.0.48 Updates the requirements on [syn](https://github.com/dtolnay/syn) to permit the latest version. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.107...2.0.48) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * rtic-macros: attr.path -> attr.path() * rtic-macros: tokens -> parse_args() Fix parsing of InitArgs, IdleArgs, *Args Including HardwareTaskArgs, SoftwareTaskArgs * rtic-macros: Rename content to input As syn2 removes the surrounding parenthesis as part of parse_args() the distinction between input and content is redundant * rtic-macros: Handle removal of Expr::Type Manually parse local_resources With type ascription de-RFCd syn2 dropped Expr::Type * rtic-macros: Syn upgrade CHANGELOG * rtic-macro: Retain most old errors as they were Spans are not equal, but good enough * rtic-macros: syn2 changed some error messages Additionally some spans were not retained with the manual parsing workaround * rtic-macros: clippy fixes --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
Diffstat (limited to 'rtic-macros/src/syntax/parse.rs')
-rw-r--r--rtic-macros/src/syntax/parse.rs53
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();