refactor(tvix/eval): use light spans in builtins.import

Change-Id: I05732073155b430575babb6f076bf465aef98857
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7581
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
Vincent Ambo 2022-12-12 23:26:20 +03:00 committed by tazjin
parent 947a56c4b6
commit edd13573f5
2 changed files with 8 additions and 12 deletions

View file

@ -13,7 +13,6 @@ use crate::{
errors::ErrorKind,
io::FileType,
observer::NoOpObserver,
spans::LightSpan,
value::{Builtin, BuiltinArgument, NixAttrs, Thunk},
vm::VM,
SourceCode, Value,
@ -123,7 +122,7 @@ pub fn builtins_import(globals: &Weak<GlobalsMap>, source: SourceCode) -> Builti
path.push("default.nix");
}
let current_span = vm.current_span();
let current_span = vm.current_light_span();
if let Some(cached) = vm.import_cache.get(&path) {
return Ok(cached.clone());
@ -172,10 +171,7 @@ pub fn builtins_import(globals: &Weak<GlobalsMap>, source: SourceCode) -> Builti
// Compilation succeeded, we can construct a thunk from whatever it spat
// out and return that.
let res = Value::Thunk(Thunk::new_suspended(
result.lambda,
LightSpan::new_actual(current_span),
));
let res = Value::Thunk(Thunk::new_suspended(result.lambda, current_span));
vm.import_cache.insert(path, res.clone());

View file

@ -220,17 +220,17 @@ impl<'o> VM<'o> {
self.chunk().get_span(self.frame().ip - 1)
}
/// Returns the information needed to calculate the current span,
/// but without performing that calculation.
pub(crate) fn current_light_span(&self) -> LightSpan {
LightSpan::new_delayed(self.frame().lambda.clone(), self.frame().ip - 1)
}
/// Access the I/O handle used for filesystem access in this VM.
pub(crate) fn io(&self) -> &Box<dyn EvalIO> {
&self.io_handle
}
/// Returns the information needed to calculate the current span,
/// but without performing that calculation.
fn current_light_span(&self) -> LightSpan {
LightSpan::new_delayed(self.frame().lambda.clone(), self.frame().ip - 1)
}
/// Construct an error from the given ErrorKind and the source
/// span of the current instruction.
pub fn error(&self, kind: ErrorKind) -> Error {