diff options
author | Vincent Ambo <tazjin@tvl.su> | 2024-02-20T08·29+0700 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2024-02-20T09·18+0000 |
commit | 3c87687798a3cfb6c3cfcc231e6c60511e3341ab (patch) | |
tree | 90dd1bb7daefbd09cd308240858689c6a405701f /tvix/eval/src/lib.rs | |
parent | b38badf2063b4eba31abffbeba01c1c8c3212be8 (diff) |
refactor(tvix/eval): add SourceCode directly into error types r/7571
With this change it's no longer necessary to track the SourceCode struct separately from the evaluation for error reporting: It's just stored directly in the errors. This also ends up resolving an issue in compiler::bindings, where we cloned the Arc containing file references way too often. In fact those clones probably compensate for all additional SourceCode clones during error construction now. Change-Id: Ice93bf161e61f8ea3d48103435e20c53e6aa8c3a Reviewed-on: https://cl.tvl.fyi/c/depot/+/10986 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval/src/lib.rs')
-rw-r--r-- | tvix/eval/src/lib.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/tvix/eval/src/lib.rs b/tvix/eval/src/lib.rs index 5bb48baf055d..9c298df60a8f 100644 --- a/tvix/eval/src/lib.rs +++ b/tvix/eval/src/lib.rs @@ -261,7 +261,7 @@ where code.as_ref(), file.clone(), location, - source, + source.clone(), self.builtins, self.src_builtins, self.enable_import, @@ -295,6 +295,7 @@ where nix_path, self.io_handle, runtime_observer, + source, globals, lambda, self.strict, @@ -335,6 +336,7 @@ fn parse_compile_internal( result.errors.push(Error::new( ErrorKind::ParseErrors(parse_errors.to_vec()), file.span, + source, )); return None; } @@ -344,13 +346,15 @@ fn parse_compile_internal( // the result, in case the caller needs it for something. result.expr = parsed.tree().expr(); - let builtins = crate::compiler::prepare_globals(builtins, src_builtins, source, enable_import); + let builtins = + crate::compiler::prepare_globals(builtins, src_builtins, source.clone(), enable_import); let compiler_result = match compiler::compile( result.expr.as_ref().unwrap(), location, - file, builtins, + &source, + &file, compiler_observer, ) { Ok(result) => result, |