summaryrefslogtreecommitdiff
path: root/cli/lsp/language_server.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-12-24 21:53:03 +1100
committerGitHub <noreply@github.com>2020-12-24 21:53:03 +1100
commita4d557126e49108db4c0dc42561ae032d2418b04 (patch)
tree8ca4edc55071e05a37e0a0da97908abfd2707607 /cli/lsp/language_server.rs
parent06fa5eb7f332e1a32bb6f13f438bb326413b733c (diff)
fix(lsp): provide diagnostics for unresolved modules (#8872)
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r--cli/lsp/language_server.rs33
1 files changed, 32 insertions, 1 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 7834cab7f..72d1b1ad3 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -178,9 +178,35 @@ impl LanguageServer {
Ok::<(), AnyError>(())
};
- let (lint_res, ts_res) = tokio::join!(lint, ts);
+ let deps = async {
+ if enabled {
+ let diagnostics_collection = self.diagnostics.read().unwrap().clone();
+ let diagnostics = diagnostics::generate_dependency_diagnostics(
+ self.snapshot(),
+ diagnostics_collection,
+ )
+ .await?;
+ {
+ let mut diagnostics_collection = self.diagnostics.write().unwrap();
+ for (file_id, version, diagnostics) in diagnostics {
+ diagnostics_collection.set(
+ file_id,
+ DiagnosticSource::Deno,
+ version,
+ diagnostics,
+ );
+ }
+ }
+ self.publish_diagnostics().await?
+ };
+
+ Ok::<(), AnyError>(())
+ };
+
+ let (lint_res, ts_res, deps_res) = tokio::join!(lint, ts, deps);
lint_res?;
ts_res?;
+ deps_res?;
Ok(())
}
@@ -213,6 +239,11 @@ impl LanguageServer {
.diagnostics_for(file_id, DiagnosticSource::TypeScript)
.cloned(),
);
+ diagnostics.extend(
+ diagnostics_collection
+ .diagnostics_for(file_id, DiagnosticSource::Deno)
+ .cloned(),
+ );
}
let specifier = {
let file_cache = self.file_cache.read().unwrap();