refactor(tvix/eval): directly return builtin tuples from macro

All invocations of the builtin macro had to previously filter through
the `builtin_tuple` function, but it's more sensible to directly
return these from the macro.

Change-Id: I45600ba84d56c9528d3e92570461c319eea595ce
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7825
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
Vincent Ambo 2023-01-13 14:18:01 +03:00 committed by tazjin
parent 972c867b36
commit f12f938166
5 changed files with 23 additions and 34 deletions

View file

@ -1,11 +1,9 @@
pub use tvix_eval::internal;
pub use tvix_eval::Value;
pub use tvix_eval::{Builtin, BuiltinArgument, Value, VM};
use tvix_eval_builtin_macros::builtins;
#[builtins]
mod builtins {
use tvix_eval::internal::VM;
use tvix_eval::{ErrorKind, Value};
use tvix_eval::{ErrorKind, Value, VM};
/// Test docstring.
///
@ -26,13 +24,21 @@ 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.
let (_, identity) = builtins
.iter()
.find(|(name, _)| *name == "identity")
.unwrap();
match identity {
Value::Builtin(identity) => assert_eq!(
identity.documentation(),
Some(
r#" Test docstring.
It has multiple lines!"#
)
);
)
),
_ => panic!("builtin was not a builtin"),
}
}