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
--- a/crates/jrsonnet-stdlib/src/lib.rs
+++ b/crates/jrsonnet-stdlib/src/lib.rs
@@ -485,7 +485,7 @@
 	/// Used for `std.extVar`
 	pub ext_vars: HashMap<IStr, TlaArg>,
 	/// Used for `std.native`
-	pub ext_natives: HashMap<IStr, FuncVal>,
+	pub ext_natives: HashMap<IStr, Val>,
 	/// Used for `std.trace`
 	pub trace_printer: Rc<dyn TracePrinter>,
 	/// Used for `std.thisFile`
@@ -539,7 +539,7 @@
 	pub fn add_native(&self, name: impl Into<IStr>, cb: impl Into<FuncVal>) {
 		self.settings_mut()
 			.ext_natives
-			.insert(name.into(), cb.into());
+			.insert(name.into(), Val::Func(cb.into()));
 	}
 }
 impl jrsonnet_evaluator::ContextInitializer for ContextInitializer {
modifiedcrates/jrsonnet-stdlib/src/misc.rsdiffbeforeafterboth
68 .ext_natives68 .ext_natives
69 .get(&x)69 .get(&x)
70 .cloned()70 .cloned()
71 .map_or(Val::Null, Val::Func)71 .unwrap_or(Val::Null)
72}72}
7373
74#[builtin(fields(74#[builtin(fields(