about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2023-01-03T23·21+0300
committertazjin <tazjin@tvl.su>2023-01-06T12·15+0000
commit88432235ae34d853f57842a862d7c7ea40793f2d (patch)
tree2d43ac05fcbdcd534afccbaab8f1bab872c313c4
parent5634172a7fa97807f2e20cb12e33d2f6275649b6 (diff)
fix(tvix/eval): VM & Builtin* types have to be public r/5597
... without them, using the new Builtins API is basically impossible
for library consumers.

Change-Id: Ice0557a2e55e12d812f51bf5a99e6b8c91ad1b91
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7755
Autosubmit: tazjin <tazjin@tvl.su>
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
-rw-r--r--tvix/eval/builtin-macros/src/lib.rs8
-rw-r--r--tvix/eval/src/lib.rs11
2 files changed, 6 insertions, 13 deletions
diff --git a/tvix/eval/builtin-macros/src/lib.rs b/tvix/eval/builtin-macros/src/lib.rs
index ac994954ba..ff1c52e03f 100644
--- a/tvix/eval/builtin-macros/src/lib.rs
+++ b/tvix/eval/builtin-macros/src/lib.rs
@@ -167,7 +167,7 @@ pub fn builtins(_args: TokenStream, item: TokenStream) -> TokenStream {
                         };
 
                         Ok(quote_spanned!(arg.span() => {
-                            crate::internal::BuiltinArgument {
+                            crate::BuiltinArgument {
                                 strict: #strict,
                                 name: #name,
                             }
@@ -194,11 +194,11 @@ pub fn builtins(_args: TokenStream, item: TokenStream) -> TokenStream {
                 };
 
                 builtins.push(quote_spanned! { builtin_attr.span() => {
-                    crate::internal::Builtin::new(
+                    crate::Builtin::new(
                         #name,
                         &[#(#builtin_arguments),*],
                         #docstring,
-                        |mut args: Vec<crate::Value>, vm: &mut crate::internal::VM| {
+                        |mut args: Vec<crate::Value>, vm: &mut crate::VM| {
                             #(let #reversed_args = args.pop().unwrap();)*
                             #fn_name(vm, #(#args),*)
                         }
@@ -209,7 +209,7 @@ pub fn builtins(_args: TokenStream, item: TokenStream) -> TokenStream {
     }
 
     items.push(parse_quote! {
-        pub fn builtins() -> Vec<crate::internal::Builtin> {
+        pub fn builtins() -> Vec<crate::Builtin> {
             vec![#(#builtins),*]
         }
     });
diff --git a/tvix/eval/src/lib.rs b/tvix/eval/src/lib.rs
index e2a7283f44..8980814fc1 100644
--- a/tvix/eval/src/lib.rs
+++ b/tvix/eval/src/lib.rs
@@ -47,20 +47,13 @@ pub use crate::io::{DummyIO, EvalIO, FileType};
 use crate::observer::{CompilerObserver, RuntimeObserver};
 pub use crate::pretty_ast::pretty_print_expr;
 pub use crate::source::SourceCode;
-pub use crate::value::{NixAttrs, NixList, NixString, Value};
-pub use crate::vm::run_lambda;
+pub use crate::value::{Builtin, BuiltinArgument, NixAttrs, NixList, NixString, Value};
+pub use crate::vm::{run_lambda, VM};
 pub use crate::warnings::{EvalWarning, WarningKind};
 
 #[cfg(feature = "impure")]
 pub use crate::io::StdIO;
 
-/// Internal-only parts of `tvix-eval`, exported for use in macros, but not part of the public
-/// interface of the crate.
-pub mod internal {
-    pub use crate::value::{Builtin, BuiltinArgument};
-    pub use crate::vm::VM;
-}
-
 /// An `Evaluation` represents how a piece of Nix code is evaluated. It can be
 /// instantiated and configured directly, or it can be accessed through the
 /// various simplified helper methods available below.