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:
parent
3c87687798
commit
94f582341e
5 changed files with 22 additions and 33 deletions
|
@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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(())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue