summaryrefslogtreecommitdiff
path: root/matrix-macros/src/lib.rs
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-02-26 19:00:42 -0500
committerFreya Murphy <freya@freyacat.org>2024-02-26 19:00:42 -0500
commit158bcae00dbe2af50e51468ad003fb594a858e6d (patch)
treed5639b745b2a24e417e8003694a8994354e2d708 /matrix-macros/src/lib.rs
parentfn call fix (diff)
downloadmatrix-158bcae00dbe2af50e51468ad003fb594a858e6d.tar.gz
matrix-158bcae00dbe2af50e51468ad003fb594a858e6d.tar.bz2
matrix-158bcae00dbe2af50e51468ad003fb594a858e6d.zip
changes
Diffstat (limited to 'matrix-macros/src/lib.rs')
-rw-r--r--matrix-macros/src/lib.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/matrix-macros/src/lib.rs b/matrix-macros/src/lib.rs
index 8099fd6..b12d30b 100644
--- a/matrix-macros/src/lib.rs
+++ b/matrix-macros/src/lib.rs
@@ -1,16 +1,15 @@
use proc_macro::TokenStream;
-use syn::{ItemFn, parse::Parse, Token, LitBool, LitInt};
+use syn::{ItemFn, parse::Parse, Token, LitInt};
use quote::quote;
struct NativeFuncParams {
arity: LitInt,
- variadic: LitBool,
+ variadic: Option<Token![..]>,
}
impl Parse for NativeFuncParams {
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
let arity = input.parse()?;
- input.parse::<Token![,]>()?;
let variadic = input.parse()?;
Ok(Self { arity , variadic })
}
@@ -22,7 +21,7 @@ pub fn native_func(input: TokenStream, annotated_item: TokenStream) -> TokenStre
let input: NativeFuncParams = syn::parse(input).unwrap();
let arity = input.arity;
- let variadic = input.variadic;
+ let variadic = input.variadic.is_some();
let visibility = itemfn.vis;
let block = itemfn.block;
@@ -43,7 +42,11 @@ pub fn native_func(input: TokenStream, annotated_item: TokenStream) -> TokenStre
name: ::std::rc::Rc::from( #name_str ),
arity: #arity,
variadic: #variadic,
- fun: ::matrix::chunk::InnerFunction::Native(Box::new(|#inputs| #output #block))
+ fun: ::matrix::chunk::InnerFunction::Native(
+ ::std::rc::Rc::new(
+ |#inputs| #output #block
+ )
+ )
})
}
};