diff options
Diffstat (limited to 'macros/src/func.rs')
| -rw-r--r-- | macros/src/func.rs | 9 |
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, |
