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:
Aspen Smith 2024-08-11 11:15:47 -04:00 committed by clbot
parent 934e03c0de
commit b7a6fc2812
8 changed files with 50 additions and 31 deletions

View file

@ -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);