diff options
Diffstat (limited to 'cli/diagnostics.rs')
-rw-r--r-- | cli/diagnostics.rs | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/cli/diagnostics.rs b/cli/diagnostics.rs index 1cd4ea234..ba21e5aa9 100644 --- a/cli/diagnostics.rs +++ b/cli/diagnostics.rs @@ -2,9 +2,11 @@ use crate::colors; +use deno_core::serde::Deserialize; +use deno_core::serde::Deserializer; +use deno_core::serde::Serialize; +use deno_core::serde::Serializer; use regex::Regex; -use serde::Deserialize; -use serde::Deserializer; use std::error::Error; use std::fmt; @@ -157,6 +159,21 @@ impl<'de> Deserialize<'de> for DiagnosticCategory { } } +impl Serialize for DiagnosticCategory { + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: Serializer, + { + let value = match self { + DiagnosticCategory::Warning => 0 as i32, + DiagnosticCategory::Error => 1 as i32, + DiagnosticCategory::Suggestion => 2 as i32, + DiagnosticCategory::Message => 3 as i32, + }; + Serialize::serialize(&value, serializer) + } +} + impl From<i64> for DiagnosticCategory { fn from(value: i64) -> Self { match value { @@ -169,7 +186,7 @@ impl From<i64> for DiagnosticCategory { } } -#[derive(Debug, Deserialize, Clone, Eq, PartialEq)] +#[derive(Debug, Deserialize, Serialize, Clone, Eq, PartialEq)] #[serde(rename_all = "camelCase")] pub struct DiagnosticMessageChain { message_text: String, @@ -196,14 +213,14 @@ impl DiagnosticMessageChain { } } -#[derive(Debug, Deserialize, Clone, Eq, PartialEq)] +#[derive(Debug, Deserialize, Serialize, Clone, Eq, PartialEq)] #[serde(rename_all = "camelCase")] pub struct Position { pub line: u64, pub character: u64, } -#[derive(Debug, Deserialize, Clone, Eq, PartialEq)] +#[derive(Debug, Deserialize, Serialize, Clone, Eq, PartialEq)] #[serde(rename_all = "camelCase")] pub struct Diagnostic { pub category: DiagnosticCategory, @@ -367,6 +384,15 @@ impl<'de> Deserialize<'de> for Diagnostics { } } +impl Serialize for Diagnostics { + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: Serializer, + { + Serialize::serialize(&self.0, serializer) + } +} + impl fmt::Display for Diagnostics { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let mut i = 0; |