summaryrefslogtreecommitdiff
path: root/cli/op_error.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-07-28 21:08:13 +0200
committerGitHub <noreply@github.com>2020-07-28 15:08:13 -0400
commit315efbc0e86d9d848efa4b889aefbc665508598a (patch)
treeb9f4b941a8bed34bae1766d2dd3b3045eb523f68 /cli/op_error.rs
parentb7942bf0f6f151e172db9b1e08cf4436e8365e8b (diff)
fix: downcast from SwcDiagnosticBuffer to OpError (#6909)
Diffstat (limited to 'cli/op_error.rs')
-rw-r--r--cli/op_error.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/cli/op_error.rs b/cli/op_error.rs
index 73f7640a8..3cbe27a06 100644
--- a/cli/op_error.rs
+++ b/cli/op_error.rs
@@ -15,6 +15,7 @@
//! exceptions.
use crate::import_map::ImportMapError;
+use crate::swc_util::SwcDiagnosticBuffer;
use deno_core::ErrBox;
use deno_core::ModuleResolutionError;
use rustyline::error::ReadlineError;
@@ -382,6 +383,21 @@ impl From<&notify::Error> for OpError {
}
}
+impl From<SwcDiagnosticBuffer> for OpError {
+ fn from(error: SwcDiagnosticBuffer) -> Self {
+ OpError::from(&error)
+ }
+}
+
+impl From<&SwcDiagnosticBuffer> for OpError {
+ fn from(error: &SwcDiagnosticBuffer) -> Self {
+ Self {
+ kind: ErrorKind::Other,
+ msg: error.diagnostics.join(", "),
+ }
+ }
+}
+
impl From<ErrBox> for OpError {
fn from(error: ErrBox) -> Self {
#[cfg(unix)]
@@ -418,6 +434,11 @@ impl From<ErrBox> for OpError {
})
.or_else(|| error.downcast_ref::<dlopen::Error>().map(|e| e.into()))
.or_else(|| error.downcast_ref::<notify::Error>().map(|e| e.into()))
+ .or_else(|| {
+ error
+ .downcast_ref::<SwcDiagnosticBuffer>()
+ .map(|e| e.into())
+ })
.or_else(|| unix_error_kind(&error))
.unwrap_or_else(|| {
panic!("Can't downcast {:?} to OpError", error);