pub use tvix_eval::internal; pub use tvix_eval::Value; use tvix_eval_builtin_macros::builtins; #[builtins] mod builtins { use tvix_eval::internal::VM; use tvix_eval::{ErrorKind, Value}; /// Test docstring. /// /// It has multiple lines! #[builtin("identity")] pub fn builtin_identity(_vm: &mut VM, x: Value) -> Result { Ok(x) } #[builtin("tryEval")] pub fn builtin_try_eval(_: &mut VM, #[lazy] _x: Value) -> Result { todo!() } } #[test] fn builtins() { let builtins = builtins::builtins(); assert_eq!(builtins.len(), 2); let identity = builtins.iter().find(|b| b.name() == "identity").unwrap(); assert_eq!( identity.documentation(), Some( r#" Test docstring. It has multiple lines!"# ) ); }