From 137f33733d365026903d40e7cde6e34ac6c36dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sat, 24 Aug 2019 17:31:14 +0200 Subject: port more ops to JSON (#2809) --- cli/deno_error.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'cli/deno_error.rs') diff --git a/cli/deno_error.rs b/cli/deno_error.rs index e024a396c..3b7dbcde8 100644 --- a/cli/deno_error.rs +++ b/cli/deno_error.rs @@ -205,6 +205,18 @@ impl GetErrorKind for ReadlineError { } } +impl GetErrorKind for serde_json::error::Error { + fn kind(&self) -> ErrorKind { + use serde_json::error::*; + match self.classify() { + Category::Io => ErrorKind::InvalidInput, + Category::Syntax => ErrorKind::InvalidInput, + Category::Data => ErrorKind::InvalidData, + Category::Eof => ErrorKind::UnexpectedEof, + } + } +} + #[cfg(unix)] mod unix { use super::{ErrorKind, GetErrorKind}; @@ -251,6 +263,11 @@ impl GetErrorKind for dyn AnyError { .or_else(|| self.downcast_ref::().map(Get::kind)) .or_else(|| self.downcast_ref::().map(Get::kind)) .or_else(|| self.downcast_ref::().map(Get::kind)) + .or_else(|| { + self + .downcast_ref::() + .map(Get::kind) + }) .or_else(|| unix_error_kind(self)) .unwrap_or_else(|| { panic!("Can't get ErrorKind for {:?}", self); -- cgit v1.2.3