refactor(tvix/eval): use EvalIO::read_to_string in impure builtins

With this change, the behaviour of reading a string from a file path
is controlled by the provided `EvalIO` structure.

This is a huge step towards abstracting away I/O behaviour correctly.

Change-Id: Ifde8e46cd863b16e0301dca45a434ad27560399f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7567
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
Vincent Ambo 2022-12-12 17:57:03 +03:00 committed by tazjin
parent c3c4d752c9
commit 0ef3c2fc2b
3 changed files with 21 additions and 38 deletions

View file

@ -109,12 +109,6 @@ pub enum ErrorKind {
/// literal attribute sets.
UnmergeableValue,
/// Tvix failed to read a file from disk for some reason.
ReadFileError {
path: PathBuf,
error: Rc<std::io::Error>,
},
/// Parse errors occured while importing a file.
ImportParseError {
path: PathBuf,
@ -342,15 +336,6 @@ to a missing value in the attribute set(s) included via `with`."#,
)
}
ErrorKind::ReadFileError { path, error } => {
write!(
f,
"failed to read file '{}': {}",
path.to_string_lossy(),
error
)
}
// Errors themselves ignored here & handled in Self::spans instead
ErrorKind::ImportParseError { path, .. } => {
write!(
@ -676,7 +661,6 @@ impl Error {
| ErrorKind::NegativeLength { .. }
| ErrorKind::UnmergeableInherit { .. }
| ErrorKind::UnmergeableValue
| ErrorKind::ReadFileError { .. }
| ErrorKind::ImportParseError { .. }
| ErrorKind::ImportCompilerError { .. }
| ErrorKind::IO { .. }
@ -716,7 +700,6 @@ impl Error {
ErrorKind::TailEmptyList { .. } => "E023",
ErrorKind::UnmergeableInherit { .. } => "E024",
ErrorKind::UnmergeableValue => "E025",
ErrorKind::ReadFileError { .. } => "E026",
ErrorKind::ImportParseError { .. } => "E027",
ErrorKind::ImportCompilerError { .. } => "E028",
ErrorKind::IO { .. } => "E029",