--- a/crates/jrsonnet-evaluator/src/function/builtin.rs +++ b/crates/jrsonnet-evaluator/src/function/builtin.rs @@ -1,4 +1,4 @@ -use std::borrow::Cow; +use std::{any::Any, borrow::Cow}; use jrsonnet_gcmodule::Trace; @@ -25,6 +25,8 @@ fn params(&self) -> &[BuiltinParam]; /// Call the builtin fn call(&self, ctx: Context, loc: CallLocation<'_>, args: &dyn ArgsLike) -> Result; + + fn as_any(&self) -> &dyn Any; } pub trait StaticBuiltin: Builtin + Send + Sync @@ -76,6 +78,10 @@ .collect::>>()?; self.handler.call(&args) } + + fn as_any(&self) -> &dyn Any { + self + } } pub trait NativeCallbackHandler: Trace { --- a/crates/jrsonnet-macros/src/lib.rs +++ b/crates/jrsonnet-macros/src/lib.rs @@ -380,6 +380,9 @@ let result: #result = #name(#(#pass)*); <_ as Typed>::into_result(result) } + fn as_any(&self) -> &dyn ::std::any::Any { + self + } } }; })