tinymist_query/
check.rs

1use tinymist_lint::KnownIssues;
2use tinymist_project::LspCompiledArtifact;
3
4use crate::{DiagWorker, DiagnosticsMap, SemanticRequest, prelude::*};
5
6/// A request to check the document for errors and lints.
7#[derive(Clone)]
8pub struct CheckRequest {
9    /// The compilation result of the document.
10    pub snap: LspCompiledArtifact,
11}
12
13impl SemanticRequest for CheckRequest {
14    type Response = DiagnosticsMap;
15
16    fn request(self, ctx: &mut LocalContext) -> Option<Self::Response> {
17        let worker = DiagWorker::new(ctx);
18        let compiler_diags = || self.snap.diagnostics();
19
20        let known_issues = KnownIssues::from_compiler_diagnostics(compiler_diags());
21        Some(worker.check(&known_issues).convert_all(compiler_diags()))
22    }
23}