refactor(tvix/eval): use internal SourceCode field in error printers

Makes use of the SourceCode field now being stored directly in
errors (see parent CL). With this change, the default `Display`
implementation can now format errors correctly, and there is no need
to keep a `SourceCode` around just for error formatting.

Updates dependent crates (CLI, serde, tvixbolt) to use this correctly.

Change-Id: Iddc5d7a6b4bab391f30a999e4c68aca34304c059
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10987
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
Vincent Ambo 2024-02-20 15:38:33 +07:00 committed by tazjin
parent 3c87687798
commit 94f582341e
5 changed files with 22 additions and 33 deletions

View file

@ -51,13 +51,11 @@ where
config(&mut eval);
eval.strict = true;
let source = eval.source_map();
let result = eval.evaluate(src, None);
if !result.errors.is_empty() {
return Err(Error::NixErrors {
errors: result.errors,
source,
});
}

View file

@ -27,10 +27,7 @@ pub enum Error {
/// Evaluation of the supplied Nix code failed while computing the
/// value for deserialisation.
NixErrors {
errors: Vec<tvix_eval::Error>,
source: tvix_eval::SourceCode,
},
NixErrors { errors: Vec<tvix_eval::Error> },
/// Could not determine an externally tagged enum representation.
AmbiguousEnum,
@ -56,7 +53,7 @@ impl Display for Error {
write!(f, "expected type {}, but got Nix type {}", expected, got)
}
Error::NixErrors { errors, source } => {
Error::NixErrors { errors } => {
writeln!(
f,
"{} occured during Nix evaluation: ",
@ -64,7 +61,7 @@ impl Display for Error {
)?;
for err in errors {
writeln!(f, "{}", err.fancy_format_str(source))?;
writeln!(f, "{}", err.fancy_format_str())?;
}
Ok(())