diff options
author | Vincent Ambo <mail@tazj.in> | 2023-01-13T22·47+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2023-01-16T13·43+0000 |
commit | 1786b4c835cbce619ddae77ffeebe89b24d50c0e (patch) | |
tree | 15fa946455e593f1cbfc9246f07782018a3fb3aa | |
parent | ca0bd84589fa5789ccf5b6e2cb532f8db83d7886 (diff) |
chore(tvix/eval): add other required items to public API r/5663
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 <flokli@flokli.de>
-rw-r--r-- | tvix/eval/src/lib.rs | 6 | ||||
-rw-r--r-- | 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<ForceResult, ErrorKind> { + pub fn force(&self, vm: &mut VM) -> Result<ForceResult, ErrorKind> { match self { Self::Thunk(thunk) => { thunk.force(vm)?; |