about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2023-01-13T22·47+0300
committertazjin <tazjin@tvl.su>2023-01-16T13·43+0000
commit1786b4c835cbce619ddae77ffeebe89b24d50c0e (patch)
tree15fa946455e593f1cbfc9246f07782018a3fb3aa
parentca0bd84589fa5789ccf5b6e2cb532f8db83d7886 (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.rs6
-rw-r--r--tvix/eval/src/value/mod.rs4
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)?;