From 1786b4c835cbce619ddae77ffeebe89b24d50c0e Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 14 Jan 2023 01:47:51 +0300 Subject: chore(tvix/eval): add other required items to public API External implementors of builtins must be able to force values, which necessitates publishing a bunch more items from the crate. Change-Id: I8f6b8ae88156aae417dbe630a698d123d0c1c8d4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7830 Tested-by: BuildkiteCI Reviewed-by: flokli --- tvix/eval/src/lib.rs | 6 +++++- tvix/eval/src/value/mod.rs | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tvix/eval/src/lib.rs b/tvix/eval/src/lib.rs index f623180f1f39..484d3e72e310 100644 --- a/tvix/eval/src/lib.rs +++ b/tvix/eval/src/lib.rs @@ -52,9 +52,13 @@ pub use crate::errors::{Error, ErrorKind, EvalResult}; pub use crate::io::{DummyIO, EvalIO, FileType}; pub use crate::pretty_ast::pretty_print_expr; pub use crate::source::SourceCode; -pub use crate::value::{Builtin, BuiltinArgument, NixAttrs, NixList, NixString, Value}; pub use crate::vm::VM; pub use crate::warnings::{EvalWarning, WarningKind}; +pub use builtin_macros; + +pub use crate::value::{ + Builtin, BuiltinArgument, CoercionKind, NixAttrs, NixList, NixString, Value, +}; #[cfg(feature = "impure")] pub use crate::io::StdIO; diff --git a/tvix/eval/src/value/mod.rs b/tvix/eval/src/value/mod.rs index 357ffa6161ff..af8627bf9b76 100644 --- a/tvix/eval/src/value/mod.rs +++ b/tvix/eval/src/value/mod.rs @@ -139,7 +139,7 @@ pub enum CoercionKind { /// originally a thunk or not. /// /// Implements [`Deref`] to [`Value`], so can generally be used as a [`Value`] -pub(crate) enum ForceResult<'a> { +pub enum ForceResult<'a> { ForcedThunk(Ref<'a, Value>), Immediate(&'a Value), } @@ -395,7 +395,7 @@ impl Value { } /// Ensure `self` is forced if it is a thunk, and return a reference to the resulting value. - pub(crate) fn force(&self, vm: &mut VM) -> Result { + pub fn force(&self, vm: &mut VM) -> Result { match self { Self::Thunk(thunk) => { thunk.force(vm)?; -- cgit 1.4.1