@@ -16,6 +16,7 @@ use crate::{
1616/// Serializable representation for a [Diagnostic](super::Diagnostic).
1717#[ derive( Clone , Debug , Serialize , Deserialize ) ]
1818#[ cfg_attr( not( target_arch = "wasm32" ) , serde( rename_all = "camelCase" ) ) ]
19+ #[ cfg_attr( feature = "schema" , derive( schemars:: JsonSchema ) ) ]
1920#[ cfg_attr( test, derive( Eq , PartialEq ) ) ]
2021pub struct Diagnostic {
2122 category : Option < & ' static Category > ,
@@ -138,6 +139,7 @@ impl<D: super::Diagnostic + ?Sized> std::fmt::Display for PrintDescription<'_, D
138139
139140#[ derive( Clone , Debug , Serialize , Deserialize ) ]
140141#[ cfg_attr( not( target_arch = "wasm32" ) , serde( rename_all = "camelCase" ) ) ]
142+ #[ cfg_attr( feature = "schema" , derive( schemars:: JsonSchema ) ) ]
141143#[ cfg_attr( test, derive( Eq , PartialEq ) ) ]
142144struct Location {
143145 path : Option < Resource < String > > ,
@@ -160,6 +162,7 @@ impl From<super::Location<'_>> for Location {
160162/// Implementation of [Visitor] collecting serializable [Advice] into a vector.
161163#[ derive( Clone , Debug , Serialize , Deserialize ) ]
162164#[ serde( rename_all = "camelCase" ) ]
165+ #[ cfg_attr( feature = "schema" , derive( schemars:: JsonSchema ) ) ]
163166#[ cfg_attr( test, derive( Eq , PartialEq ) ) ]
164167struct Advices {
165168 advices : Vec < Advice > ,
@@ -246,6 +249,7 @@ impl super::Advices for Advices {
246249/// advice types.
247250#[ derive( Clone , Debug , Serialize , Deserialize ) ]
248251#[ serde( rename_all = "camelCase" ) ]
252+ #[ cfg_attr( feature = "schema" , derive( schemars:: JsonSchema ) ) ]
249253#[ cfg_attr( test, derive( Eq , PartialEq ) ) ]
250254enum Advice {
251255 Log ( LogCategory , MarkupBuf ) ,
@@ -354,6 +358,17 @@ impl<'de> Deserialize<'de> for DiagnosticTags {
354358 }
355359}
356360
361+ #[ cfg( feature = "schema" ) ]
362+ impl schemars:: JsonSchema for DiagnosticTags {
363+ fn schema_name ( ) -> String {
364+ String :: from ( "DiagnosticTags" )
365+ }
366+
367+ fn json_schema ( r#gen : & mut schemars:: r#gen:: SchemaGenerator ) -> schemars:: schema:: Schema {
368+ <Vec < DiagnosticTag > >:: json_schema ( r#gen)
369+ }
370+ }
371+
357372#[ cfg( test) ]
358373mod tests {
359374 use std:: io;
0 commit comments