use crate::lsp_types::Diagnostic;
use serde::{Deserialize, Serialize};
use super::{DocumentIdentifier, ProjectHandle, SnapshotHandle};
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct FileDiagnosticsResponse {
pub file: DocumentIdentifier,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub syntactic: Vec<Diagnostic>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub semantic: Vec<Diagnostic>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub suggestion: Vec<Diagnostic>,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ProjectDiagnosticsResponse {
pub project: ProjectHandle,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub files: Vec<FileDiagnosticsResponse>,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SnapshotDiagnosticsResponse {
pub snapshot: SnapshotHandle,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub projects: Vec<ProjectDiagnosticsResponse>,
}