difftreelog
fix std.native should return null if not found
in: master
2 files changed
crates/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]
crates/jrsonnet-evaluator/src/error.rsdiffbeforeafterboth636364 #[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),686669 #[error("field name should be string, got {0}")]67 #[error("field name should be string, got {0}")]70 FieldMustBeStringGot(ValType),68 FieldMustBeStringGot(ValType),