summaryrefslogtreecommitdiff
path: root/cli/lsp/language_server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r--cli/lsp/language_server.rs22
1 files changed, 14 insertions, 8 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 38d07fb52..9b3500361 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -105,6 +105,7 @@ use crate::lsp::urls::LspUrlKind;
use crate::npm::create_npm_fs_resolver;
use crate::npm::CliNpmRegistryApi;
use crate::npm::CliNpmResolver;
+use crate::npm::ManagedCliNpmResolver;
use crate::npm::NpmCache;
use crate::npm::NpmCacheDir;
use crate::npm::NpmResolution;
@@ -137,7 +138,7 @@ struct LspNpmServices {
/// Npm resolution that is stored in memory.
resolution: Arc<NpmResolution>,
/// Resolver for npm packages.
- resolver: Arc<CliNpmResolver>,
+ resolver: Arc<dyn CliNpmResolver>,
}
#[derive(Debug, PartialEq, Eq)]
@@ -161,7 +162,7 @@ pub struct LanguageServer(Arc<tokio::sync::RwLock<Inner>>);
#[derive(Debug)]
pub struct StateNpmSnapshot {
pub node_resolver: Arc<NodeResolver>,
- pub npm_resolver: Arc<CliNpmResolver>,
+ pub npm_resolver: Arc<dyn CliNpmResolver>,
}
/// Snapshot of the state used by TSC.
@@ -506,7 +507,7 @@ fn create_npm_resolver_and_resolution(
npm_cache: Arc<NpmCache>,
node_modules_dir_path: Option<PathBuf>,
maybe_snapshot: Option<ValidSerializedNpmResolutionSnapshot>,
-) -> (Arc<CliNpmResolver>, Arc<NpmResolution>) {
+) -> (Arc<dyn CliNpmResolver>, Arc<NpmResolution>) {
let resolution = Arc::new(NpmResolution::from_serialized(
api,
maybe_snapshot,
@@ -525,7 +526,7 @@ fn create_npm_resolver_and_resolution(
NpmSystemInfo::default(),
);
(
- Arc::new(CliNpmResolver::new(
+ Arc::new(ManagedCliNpmResolver::new(
fs,
resolution.clone(),
fs_resolver,
@@ -802,7 +803,7 @@ impl Inner {
self.config.maybe_lockfile().cloned(),
));
let node_fs = Arc::new(deno_fs::RealFs);
- let npm_resolver = Arc::new(CliNpmResolver::new(
+ let npm_resolver = Arc::new(ManagedCliNpmResolver::new(
node_fs.clone(),
npm_resolution.clone(),
create_npm_fs_resolver(
@@ -1440,8 +1441,13 @@ impl Inner {
let package_reqs = self.documents.npm_package_reqs();
let npm_resolver = self.npm.resolver.clone();
// spawn to avoid the LSP's Send requirements
- let handle =
- spawn(async move { npm_resolver.set_package_reqs(&package_reqs).await });
+ let handle = spawn(async move {
+ if let Some(npm_resolver) = npm_resolver.as_managed() {
+ npm_resolver.set_package_reqs(&package_reqs).await
+ } else {
+ Ok(())
+ }
+ });
if let Err(err) = handle.await.unwrap() {
lsp_warn!("Could not set npm package requirements. {:#}", err);
}
@@ -2156,7 +2162,7 @@ impl Inner {
&self.documents,
self.maybe_import_map.as_deref(),
&self.npm.resolution,
- &self.npm.resolver,
+ self.npm.resolver.as_ref(),
)
}