git.delta.rocks / jrsonnet / refs/commits / 50afc8afc49d

difftreelog

feat std.native can return arbitrary Val

oowsvwxwYaroslav Bolyukin2026-05-05parent: #9aabcd4.patch.diff
in: master

2 files changed

modifiedcrates/jrsonnet-stdlib/src/lib.rsdiffbeforeafterboth
485 /// Used for `std.extVar`485 /// Used for `std.extVar`
486 pub ext_vars: HashMap<IStr, TlaArg>,486 pub ext_vars: HashMap<IStr, TlaArg>,
487 /// Used for `std.native`487 /// Used for `std.native`
488 pub ext_natives: HashMap<IStr, FuncVal>,488 pub ext_natives: HashMap<IStr, Val>,
489 /// Used for `std.trace`489 /// Used for `std.trace`
490 pub trace_printer: Rc<dyn TracePrinter>,490 pub trace_printer: Rc<dyn TracePrinter>,
491 /// Used for `std.thisFile`491 /// Used for `std.thisFile`
539 pub fn add_native(&self, name: impl Into<IStr>, cb: impl Into<FuncVal>) {539 pub fn add_native(&self, name: impl Into<IStr>, cb: impl Into<FuncVal>) {
540 self.settings_mut()540 self.settings_mut()
541 .ext_natives541 .ext_natives
542 .insert(name.into(), cb.into());542 .insert(name.into(), Val::Func(cb.into()));
543 }543 }
544}544}
545impl jrsonnet_evaluator::ContextInitializer for ContextInitializer {545impl jrsonnet_evaluator::ContextInitializer for ContextInitializer {
modifiedcrates/jrsonnet-stdlib/src/misc.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/misc.rs
+++ b/crates/jrsonnet-stdlib/src/misc.rs
@@ -68,7 +68,7 @@
 		.ext_natives
 		.get(&x)
 		.cloned()
-		.map_or(Val::Null, Val::Func)
+		.unwrap_or(Val::Null)
 }
 
 #[builtin(fields(