aboutsummaryrefslogtreecommitdiff
path: root/macros/src/syntax/parse/util.rs
diff options
context:
space:
mode:
authorGravatar Emil Fresk <emil.fresk@gmail.com> 2023-01-03 15:10:59 +0100
committerGravatar Henrik Tjäder <henrik@tjaders.com> 2023-03-01 00:31:04 +0100
commitf8352122a301c30db7c7851ebf50ad1608ebdad3 (patch)
tree54f836f8d055ea8b8bef0c1b7c6a59794b99fc3e /macros/src/syntax/parse/util.rs
parentd7ed7a8b9f78344f6855fa1c2655ae0d85e44068 (diff)
downloadrtic-f8352122a301c30db7c7851ebf50ad1608ebdad3.tar.gz
rtic-f8352122a301c30db7c7851ebf50ad1608ebdad3.tar.zst
rtic-f8352122a301c30db7c7851ebf50ad1608ebdad3.zip
Min codegen
Diffstat (limited to 'macros/src/syntax/parse/util.rs')
-rw-r--r--macros/src/syntax/parse/util.rs26
1 files changed, 10 insertions, 16 deletions
diff --git a/macros/src/syntax/parse/util.rs b/macros/src/syntax/parse/util.rs
index 3fa51ef8..119129c0 100644
--- a/macros/src/syntax/parse/util.rs
+++ b/macros/src/syntax/parse/util.rs
@@ -3,8 +3,8 @@ use syn::{
parse::{self, ParseStream},
punctuated::Punctuated,
spanned::Spanned,
- Abi, AttrStyle, Attribute, Expr, FnArg, ForeignItemFn, Ident, ItemFn, Pat, PatType, Path,
- PathArguments, ReturnType, Token, Type, Visibility,
+ Abi, AttrStyle, Attribute, Expr, FnArg, ForeignItemFn, Ident, ItemFn, Pat, Path, PathArguments,
+ ReturnType, Token, Type, Visibility,
};
use crate::syntax::{
@@ -231,29 +231,23 @@ pub fn parse_local_resources(content: ParseStream<'_>) -> parse::Result<LocalRes
Ok(resources)
}
-type ParseInputResult = Option<(Box<Pat>, Result<Vec<PatType>, FnArg>)>;
-
-pub fn parse_inputs(inputs: Punctuated<FnArg, Token![,]>, name: &str) -> ParseInputResult {
+pub fn parse_inputs(inputs: Punctuated<FnArg, Token![,]>, name: &str) -> Option<Box<Pat>> {
let mut inputs = inputs.into_iter();
match inputs.next() {
Some(FnArg::Typed(first)) => {
if type_is_path(&first.ty, &[name, "Context"]) {
- let rest = inputs
- .map(|arg| match arg {
- FnArg::Typed(arg) => Ok(arg),
- _ => Err(arg),
- })
- .collect::<Result<Vec<_>, _>>();
-
- Some((first.pat, rest))
- } else {
- None
+ // No more inputs
+ if inputs.next().is_none() {
+ return Some(first.pat);
+ }
}
}
- _ => None,
+ _ => {}
}
+
+ None
}
pub fn type_is_bottom(ty: &ReturnType) -> bool {