refactor(tvix/eval): Make strict an EvalMode enum
Refactor the `strict` boolean passed into evaluation at the top-level to be a (two-variant, so far) EvalMode enum of Lazy and Strict. This is more explicit than a boolean, and if we ever add more EvalModes it's a simple extension of the enum. Change-Id: I3de50e74ec971011664f6cd0999d08b792118410 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12186 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de> Autosubmit: aspen <root@gws.fyi>
This commit is contained in:
parent
934e03c0de
commit
b7a6fc2812
8 changed files with 50 additions and 31 deletions
|
|
@ -10,7 +10,7 @@ use tvix_build::buildservice;
|
|||
use tvix_eval::{
|
||||
builtins::impure_builtins,
|
||||
observer::{DisassemblingObserver, TracingObserver},
|
||||
ErrorKind, EvalIO, GlobalsMap, SourceCode, Value,
|
||||
ErrorKind, EvalIO, EvalMode, GlobalsMap, SourceCode, Value,
|
||||
};
|
||||
use tvix_glue::{
|
||||
builtins::{add_derivation_builtins, add_fetcher_builtins, add_import_builtins},
|
||||
|
|
@ -101,9 +101,12 @@ pub fn evaluate(
|
|||
tvix_store_io.clone() as Rc<dyn EvalIO>,
|
||||
)) as Box<dyn EvalIO>)
|
||||
.enable_import()
|
||||
.with_strict(args.strict)
|
||||
.env(env);
|
||||
|
||||
if args.strict {
|
||||
eval_builder = eval_builder.mode(EvalMode::Strict);
|
||||
}
|
||||
|
||||
match globals {
|
||||
Some(globals) => {
|
||||
eval_builder = eval_builder.with_globals(globals);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ use tvix_cli::args::Args;
|
|||
use tvix_cli::repl::Repl;
|
||||
use tvix_cli::{init_io_handle, interpret, AllowIncomplete};
|
||||
use tvix_eval::observer::DisassemblingObserver;
|
||||
use tvix_eval::EvalMode;
|
||||
use tvix_glue::tvix_store_io::TvixStoreIO;
|
||||
|
||||
#[global_allocator]
|
||||
|
|
@ -14,7 +15,11 @@ static GLOBAL: MiMalloc = MiMalloc;
|
|||
/// Interpret the given code snippet, but only run the Tvix compiler
|
||||
/// on it and return errors and warnings.
|
||||
fn lint(code: &str, path: Option<PathBuf>, args: &Args) -> bool {
|
||||
let mut eval_builder = tvix_eval::Evaluation::builder_impure().with_strict(args.strict);
|
||||
let mut eval_builder = tvix_eval::Evaluation::builder_impure();
|
||||
|
||||
if args.strict {
|
||||
eval_builder = eval_builder.mode(EvalMode::Strict);
|
||||
}
|
||||
|
||||
let source_map = eval_builder.source_map().clone();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue