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:
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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),
|
||||||
|
@ -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],
|
||||||
})
|
})
|
||||||
|
@ -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"
|
||||||
|
Reference in New Issue
Block a user