summaryrefslogtreecommitdiff
path: root/macros/src/func.rs
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/func.rs')
-rw-r--r--macros/src/func.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/macros/src/func.rs b/macros/src/func.rs
index 2d38c01a..2e63ee75 100644
--- a/macros/src/func.rs
+++ b/macros/src/func.rs
@@ -152,6 +152,14 @@ fn create_param_info(param: &Param) -> TokenStream {
let Param { name, docs, named, variadic, ty, default, .. } = param;
let positional = !named;
let required = default.is_none();
+ let default = quote_option(&default.as_ref().map(|_default| {
+ quote! {
+ || {
+ let typed: #ty = #default;
+ ::typst::eval::Value::from(typed)
+ }
+ }
+ }));
let ty = if *variadic {
quote! { <#ty as ::typst::eval::Variadics>::Inner }
} else {
@@ -164,6 +172,7 @@ fn create_param_info(param: &Param) -> TokenStream {
cast: <#ty as ::typst::eval::Cast<
::typst::syntax::Spanned<::typst::eval::Value>
>>::describe(),
+ default: #default,
positional: #positional,
named: #named,
variadic: #variadic,