git.delta.rocks / jrsonnet / refs/commits / 773438d8aef3

difftreelog

feat accept plain functions for std.native outputs

Yaroslav Bolyukin2023-08-13parent: #027693d.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
@@ -237,7 +237,7 @@
 	/// Used for `std.extVar`
 	pub ext_vars: HashMap<IStr, TlaArg>,
 	/// Used for `std.native`
-	pub ext_natives: HashMap<IStr, Cc<TraceBox<dyn Builtin>>>,
+	pub ext_natives: HashMap<IStr, FuncVal>,
 	/// Used for `std.trace`
 	pub trace_printer: Box<dyn TracePrinter>,
 	/// Used for `std.thisFile`
addedtests/tests/std_native.rsdiffbeforeafterboth
after · tests/tests/std_native.rs
1use jrsonnet_evaluator::{function::builtin, trace::PathResolver, State};2use jrsonnet_stdlib::ContextInitializer;34#[builtin]5fn example_native(a: u32, b: u32) -> u32 {6	a + b7}89#[test]10fn std_native() {11	let state = State::default();12	let std = ContextInitializer::new(state.clone(), PathResolver::Absolute);13	std.add_native("example", example_native::INST);14	state.set_context_initializer(std);1516	assert!(state17		.evaluate_snippet("test", "std.native('example')(1, 3) == 4")18		.unwrap()19		.as_bool()20		.expect("boolean output"));21}