diff options
Diffstat (limited to 'tvix/eval/src/eval.rs')
-rw-r--r-- | tvix/eval/src/eval.rs | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/tvix/eval/src/eval.rs b/tvix/eval/src/eval.rs index 8973c1a95c19..4787b55fe475 100644 --- a/tvix/eval/src/eval.rs +++ b/tvix/eval/src/eval.rs @@ -25,11 +25,28 @@ pub struct Options { #[cfg_attr(feature = "repl", clap(long, env = "TVIX_TRACE_RUNTIME"))] trace_runtime: bool, + /// Print warnings + #[cfg_attr( + feature = "repl", + clap(long, env = "TVIX_WARNINGS", default_value = "true") + )] + warnings: bool, + /// A colon-separated list of directories to use to resolve `<...>`-style paths #[cfg_attr(feature = "repl", clap(long, short = 'I', env = "NIX_PATH"))] nix_search_path: Option<NixSearchPath>, } +impl Options { + #[cfg(test)] + pub(crate) fn test_options() -> Options { + Options { + warnings: false, + ..Options::default() + } + } +} + pub fn interpret(code: &str, location: Option<PathBuf>, options: Options) -> EvalResult<Value> { let source = SourceCode::new(); let file = source.add_file( @@ -97,8 +114,10 @@ pub fn interpret(code: &str, location: Option<PathBuf>, options: Options) -> Eva ) }?; - for warning in result.warnings { - warning.fancy_format_stderr(&source); + if options.warnings { + for warning in result.warnings { + warning.fancy_format_stderr(&source); + } } for error in &result.errors { @@ -128,10 +147,11 @@ pub fn interpret(code: &str, location: Option<PathBuf>, options: Options) -> Eva } result.map(|r| { - for warning in r.warnings { - warning.fancy_format_stderr(&source); + if options.warnings { + for warning in r.warnings { + warning.fancy_format_stderr(&source); + } } - r.value }) } |