Fix file I/O errors to not be engine type errors (#5554)

* Fix file I/O errors to not be engine type errors

* Update output
This commit is contained in:
Jonathan Tran
2025-02-28 12:08:44 -05:00
committed by GitHub
parent 83d22a4f5f
commit 58167deda7
4 changed files with 18 additions and 18 deletions

View File

@ -159,7 +159,7 @@ export class KCLTypeError extends KCLError {
} }
} }
export class KCLUnimplementedError extends KCLError { export class KCLIoError extends KCLError {
constructor( constructor(
msg: string, msg: string,
sourceRange: SourceRange, sourceRange: SourceRange,
@ -169,7 +169,7 @@ export class KCLUnimplementedError extends KCLError {
filenames: { [x: number]: ModulePath | undefined } filenames: { [x: number]: ModulePath | undefined }
) { ) {
super( super(
'unimplemented', 'io',
msg, msg,
sourceRange, sourceRange,
operations, operations,
@ -177,7 +177,7 @@ export class KCLUnimplementedError extends KCLError {
artifactGraph, artifactGraph,
filenames filenames
) )
Object.setPrototypeOf(this, KCLUnimplementedError.prototype) Object.setPrototypeOf(this, KCLIoError.prototype)
} }
} }

View File

@ -87,8 +87,8 @@ pub enum KclError {
ImportCycle(KclErrorDetails), ImportCycle(KclErrorDetails),
#[error("type: {0:?}")] #[error("type: {0:?}")]
Type(KclErrorDetails), Type(KclErrorDetails),
#[error("unimplemented: {0:?}")] #[error("i/o: {0:?}")]
Unimplemented(KclErrorDetails), Io(KclErrorDetails),
#[error("unexpected: {0:?}")] #[error("unexpected: {0:?}")]
Unexpected(KclErrorDetails), Unexpected(KclErrorDetails),
#[error("value already defined: {0:?}")] #[error("value already defined: {0:?}")]
@ -268,7 +268,7 @@ impl miette::Diagnostic for ReportWithOutputs {
KclError::Semantic(_) => "Semantic", KclError::Semantic(_) => "Semantic",
KclError::ImportCycle(_) => "ImportCycle", KclError::ImportCycle(_) => "ImportCycle",
KclError::Type(_) => "Type", KclError::Type(_) => "Type",
KclError::Unimplemented(_) => "Unimplemented", KclError::Io(_) => "I/O",
KclError::Unexpected(_) => "Unexpected", KclError::Unexpected(_) => "Unexpected",
KclError::ValueAlreadyDefined(_) => "ValueAlreadyDefined", KclError::ValueAlreadyDefined(_) => "ValueAlreadyDefined",
KclError::UndefinedValue(_) => "UndefinedValue", KclError::UndefinedValue(_) => "UndefinedValue",
@ -318,7 +318,7 @@ impl miette::Diagnostic for Report {
KclError::Semantic(_) => "Semantic", KclError::Semantic(_) => "Semantic",
KclError::ImportCycle(_) => "ImportCycle", KclError::ImportCycle(_) => "ImportCycle",
KclError::Type(_) => "Type", KclError::Type(_) => "Type",
KclError::Unimplemented(_) => "Unimplemented", KclError::Io(_) => "I/O",
KclError::Unexpected(_) => "Unexpected", KclError::Unexpected(_) => "Unexpected",
KclError::ValueAlreadyDefined(_) => "ValueAlreadyDefined", KclError::ValueAlreadyDefined(_) => "ValueAlreadyDefined",
KclError::UndefinedValue(_) => "UndefinedValue", KclError::UndefinedValue(_) => "UndefinedValue",
@ -377,7 +377,7 @@ impl KclError {
KclError::Semantic(_) => "semantic", KclError::Semantic(_) => "semantic",
KclError::ImportCycle(_) => "import cycle", KclError::ImportCycle(_) => "import cycle",
KclError::Type(_) => "type", KclError::Type(_) => "type",
KclError::Unimplemented(_) => "unimplemented", KclError::Io(_) => "i/o",
KclError::Unexpected(_) => "unexpected", KclError::Unexpected(_) => "unexpected",
KclError::ValueAlreadyDefined(_) => "value already defined", KclError::ValueAlreadyDefined(_) => "value already defined",
KclError::UndefinedValue(_) => "undefined value", KclError::UndefinedValue(_) => "undefined value",
@ -394,7 +394,7 @@ impl KclError {
KclError::Semantic(e) => e.source_ranges.clone(), KclError::Semantic(e) => e.source_ranges.clone(),
KclError::ImportCycle(e) => e.source_ranges.clone(), KclError::ImportCycle(e) => e.source_ranges.clone(),
KclError::Type(e) => e.source_ranges.clone(), KclError::Type(e) => e.source_ranges.clone(),
KclError::Unimplemented(e) => e.source_ranges.clone(), KclError::Io(e) => e.source_ranges.clone(),
KclError::Unexpected(e) => e.source_ranges.clone(), KclError::Unexpected(e) => e.source_ranges.clone(),
KclError::ValueAlreadyDefined(e) => e.source_ranges.clone(), KclError::ValueAlreadyDefined(e) => e.source_ranges.clone(),
KclError::UndefinedValue(e) => e.source_ranges.clone(), KclError::UndefinedValue(e) => e.source_ranges.clone(),
@ -412,7 +412,7 @@ impl KclError {
KclError::Semantic(e) => &e.message, KclError::Semantic(e) => &e.message,
KclError::ImportCycle(e) => &e.message, KclError::ImportCycle(e) => &e.message,
KclError::Type(e) => &e.message, KclError::Type(e) => &e.message,
KclError::Unimplemented(e) => &e.message, KclError::Io(e) => &e.message,
KclError::Unexpected(e) => &e.message, KclError::Unexpected(e) => &e.message,
KclError::ValueAlreadyDefined(e) => &e.message, KclError::ValueAlreadyDefined(e) => &e.message,
KclError::UndefinedValue(e) => &e.message, KclError::UndefinedValue(e) => &e.message,
@ -430,7 +430,7 @@ impl KclError {
KclError::Semantic(e) => e.source_ranges = source_ranges, KclError::Semantic(e) => e.source_ranges = source_ranges,
KclError::ImportCycle(e) => e.source_ranges = source_ranges, KclError::ImportCycle(e) => e.source_ranges = source_ranges,
KclError::Type(e) => e.source_ranges = source_ranges, KclError::Type(e) => e.source_ranges = source_ranges,
KclError::Unimplemented(e) => e.source_ranges = source_ranges, KclError::Io(e) => e.source_ranges = source_ranges,
KclError::Unexpected(e) => e.source_ranges = source_ranges, KclError::Unexpected(e) => e.source_ranges = source_ranges,
KclError::ValueAlreadyDefined(e) => e.source_ranges = source_ranges, KclError::ValueAlreadyDefined(e) => e.source_ranges = source_ranges,
KclError::UndefinedValue(e) => e.source_ranges = source_ranges, KclError::UndefinedValue(e) => e.source_ranges = source_ranges,
@ -450,7 +450,7 @@ impl KclError {
KclError::Semantic(e) => e.source_ranges.extend(source_ranges), KclError::Semantic(e) => e.source_ranges.extend(source_ranges),
KclError::ImportCycle(e) => e.source_ranges.extend(source_ranges), KclError::ImportCycle(e) => e.source_ranges.extend(source_ranges),
KclError::Type(e) => e.source_ranges.extend(source_ranges), KclError::Type(e) => e.source_ranges.extend(source_ranges),
KclError::Unimplemented(e) => e.source_ranges.extend(source_ranges), KclError::Io(e) => e.source_ranges.extend(source_ranges),
KclError::Unexpected(e) => e.source_ranges.extend(source_ranges), KclError::Unexpected(e) => e.source_ranges.extend(source_ranges),
KclError::ValueAlreadyDefined(e) => e.source_ranges.extend(source_ranges), KclError::ValueAlreadyDefined(e) => e.source_ranges.extend(source_ranges),
KclError::UndefinedValue(e) => e.source_ranges.extend(source_ranges), KclError::UndefinedValue(e) => e.source_ranges.extend(source_ranges),

View File

@ -31,7 +31,7 @@ impl FileSystem for FileManager {
source_range: SourceRange, source_range: SourceRange,
) -> Result<Vec<u8>, KclError> { ) -> Result<Vec<u8>, KclError> {
tokio::fs::read(&path).await.map_err(|e| { tokio::fs::read(&path).await.map_err(|e| {
KclError::Engine(KclErrorDetails { KclError::Io(KclErrorDetails {
message: format!("Failed to read file `{}`: {}", path.as_ref().display(), e), message: format!("Failed to read file `{}`: {}", path.as_ref().display(), e),
source_ranges: vec![source_range], source_ranges: vec![source_range],
}) })
@ -44,7 +44,7 @@ impl FileSystem for FileManager {
source_range: SourceRange, source_range: SourceRange,
) -> Result<String, KclError> { ) -> Result<String, KclError> {
tokio::fs::read_to_string(&path).await.map_err(|e| { tokio::fs::read_to_string(&path).await.map_err(|e| {
KclError::Engine(KclErrorDetails { KclError::Io(KclErrorDetails {
message: format!("Failed to read file `{}`: {}", path.as_ref().display(), e), message: format!("Failed to read file `{}`: {}", path.as_ref().display(), e),
source_ranges: vec![source_range], source_ranges: vec![source_range],
}) })
@ -60,7 +60,7 @@ impl FileSystem for FileManager {
if e.kind() == std::io::ErrorKind::NotFound { if e.kind() == std::io::ErrorKind::NotFound {
Ok(false) Ok(false)
} else { } else {
Err(KclError::Engine(KclErrorDetails { Err(KclError::Io(KclErrorDetails {
message: format!("Failed to check if file `{}` exists: {}", path.as_ref().display(), e), message: format!("Failed to check if file `{}` exists: {}", path.as_ref().display(), e),
source_ranges: vec![source_range], source_ranges: vec![source_range],
})) }))
@ -82,7 +82,7 @@ impl FileSystem for FileManager {
} }
let mut read_dir = tokio::fs::read_dir(&path).await.map_err(|e| { let mut read_dir = tokio::fs::read_dir(&path).await.map_err(|e| {
KclError::Engine(KclErrorDetails { KclError::Io(KclErrorDetails {
message: format!("Failed to read directory `{}`: {}", path.display(), e), message: format!("Failed to read directory `{}`: {}", path.display(), e),
source_ranges: vec![source_range], source_ranges: vec![source_range],
}) })

View File

@ -2,9 +2,9 @@
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Error from executing import_file_not_exist_error.kcl description: Error from executing import_file_not_exist_error.kcl
--- ---
KCL Engine error KCL I/O error
× engine: Failed to read file `tests/import_file_not_exist_error/not- × i/o: Failed to read file `tests/import_file_not_exist_error/not-
│ exist.kcl`: No such file or directory (os error 2) │ exist.kcl`: No such file or directory (os error 2)
╭──── ╭────
1 │ import hotdog from "not-exist.kcl" 1 │ import hotdog from "not-exist.kcl"