diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2020-12-24 21:53:03 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-24 21:53:03 +1100 |
commit | a4d557126e49108db4c0dc42561ae032d2418b04 (patch) | |
tree | 8ca4edc55071e05a37e0a0da97908abfd2707607 /cli/lsp/language_server.rs | |
parent | 06fa5eb7f332e1a32bb6f13f438bb326413b733c (diff) |
fix(lsp): provide diagnostics for unresolved modules (#8872)
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 33 |
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(); |