git.delta.rocks / jrsonnet / refs/commits / c7e1571e1d28

difftreelog

fix std.native should return null if not found

Yaroslav Bolyukin2022-04-22parent: #94fa86f.patch.diff
in: master

2 files changed

modifiedcrates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/builtin/mod.rs
+++ b/crates/jrsonnet-evaluator/src/builtin/mod.rs
@@ -375,13 +375,14 @@
 }
 
 #[jrsonnet_macros::builtin]
-fn builtin_native(s: State, name: IStr) -> Result<FuncVal> {
-	Ok(s.settings()
+fn builtin_native(s: State, name: IStr) -> Result<Any> {
+	Ok(Any(s
+		.settings()
 		.ext_natives
 		.get(&name)
 		.cloned()
-		.map(|v| FuncVal::Builtin(v.clone()))
-		.ok_or(UndefinedExternalFunction(name))?)
+		.map(|v| Val::Func(FuncVal::Builtin(v.clone())))
+		.unwrap_or(Val::Null)))
 }
 
 #[jrsonnet_macros::builtin]
modifiedcrates/jrsonnet-evaluator/src/error.rsdiffbeforeafterboth
6363
64 #[error("external variable is not defined: {0}")]64 #[error("external variable is not defined: {0}")]
65 UndefinedExternalVariable(IStr),65 UndefinedExternalVariable(IStr),
66 #[error("native is not defined: {0}")]
67 UndefinedExternalFunction(IStr),
6866
69 #[error("field name should be string, got {0}")]67 #[error("field name should be string, got {0}")]
70 FieldMustBeStringGot(ValType),68 FieldMustBeStringGot(ValType),