difftreelog
test fix NativeCallback usage
in: master
1 file changed
crates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth489pub mod tests {489pub mod tests {490 use super::Val;490 use super::Val;491 use crate::{error::Error::*, primitive_equals, EvaluationState};491 use crate::{492 error::Error::*, native::NativeCallbackHandler, primitive_equals, EvaluationState,493 };494 use gc::Gc;492 use jrsonnet_interner::IStr;495 use jrsonnet_interner::IStr;493 use jrsonnet_parser::*;496 use jrsonnet_parser::*;494 use std::{path::PathBuf, rc::Rc};497 use std::{path::PathBuf, rc::Rc};922 let evaluator = EvaluationState::default();925 let evaluator = EvaluationState::default();923926924 evaluator.with_stdlib();927 evaluator.with_stdlib();925 evaluator.settings_mut().ext_natives.insert(928926 "native_add".into(),929 #[derive(gc::Trace, gc::Finalize)]927 Rc::new(NativeCallback::new(930 struct NativeAdd;928 ParamsDesc(Rc::new(vec![931 impl NativeCallbackHandler for NativeAdd {929 Param("a".into(), None),930 Param("b".into(), None),931 ])),932 |caller, args| {932 fn call(&self, from: Option<Rc<PathBuf>>, args: &[Val]) -> crate::error::Result<Val> {933 assert_eq!(933 assert_eq!(934 caller.unwrap(),934 from.unwrap(),935 Rc::new(PathBuf::from("native_caller.jsonnet"))935 Rc::new(PathBuf::from("native_caller.jsonnet"))936 );936 );937 match (&args[0], &args[1]) {937 match (&args[0], &args[1]) {938 (Val::Num(a), Val::Num(b)) => Ok(Val::Num(a + b)),938 (Val::Num(a), Val::Num(b)) => Ok(Val::Num(a + b)),939 (_, _) => unreachable!(),939 (_, _) => unreachable!(),940 }940 }941 },941 }942 )),942 }943 );943 evaluator.settings_mut().ext_natives.insert(944 "native_add".into(),945 Gc::new(NativeCallback::new(946 ParamsDesc(Rc::new(vec![947 Param("a".into(), None),948 Param("b".into(), None),949 ])),950 Box::new(NativeAdd),951 )),952 );944 evaluator.evaluate_snippet_raw(953 evaluator.evaluate_snippet_raw(945 Rc::new(PathBuf::from("native_caller.jsonnet")),954 Rc::new(PathBuf::from("native_caller.jsonnet")),946 "std.assertEqual(std.native(\"native_add\")(1, 2), 3)".into(),955 "std.assertEqual(std.native(\"native_add\")(1, 2), 3)".into(),