Skip to content

Commit 2eb0341

Browse files
authored
fix(lsp): set lockfile_skip_write unconditionally (#31191)
1 parent 42cca89 commit 2eb0341

File tree

2 files changed

+15
-49
lines changed

2 files changed

+15
-49
lines changed

cli/lsp/language_server.rs

Lines changed: 14 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,6 @@ impl LanguageServer {
379379
specifiers: Vec<ModuleSpecifier>,
380380
referrer: ModuleSpecifier,
381381
force_global_cache: bool,
382-
lockfile_skip_write: bool,
383382
) -> LspResult<Option<Value>> {
384383
async fn create_graph_for_caching(
385384
factory: CliFactory,
@@ -419,15 +418,6 @@ impl LanguageServer {
419418
allow_unknown_jsr_exports: false,
420419
},
421420
)?;
422-
423-
// Update the lockfile on the file system with anything new
424-
// found after caching
425-
if let Ok(Some(lockfile)) = factory.maybe_lockfile().await
426-
&& let Err(err) = &lockfile.write_if_changed()
427-
{
428-
lsp_warn!("{:#}", err);
429-
}
430-
431421
Ok(())
432422
}
433423

@@ -442,7 +432,6 @@ impl LanguageServer {
442432
specifiers,
443433
referrer,
444434
force_global_cache,
445-
lockfile_skip_write,
446435
);
447436

448437
match prepare_cache_result {
@@ -462,12 +451,7 @@ impl LanguageServer {
462451

463452
// now get the lock back to update with the new information
464453
*self.did_change_batch_queue.borrow_mut() = None;
465-
self
466-
.inner
467-
.write()
468-
.await
469-
.post_cache(!lockfile_skip_write)
470-
.await;
454+
self.inner.write().await.post_cache().await;
471455
self.performance.measure(mark);
472456
}
473457
Err(err) => {
@@ -1278,9 +1262,7 @@ impl Inner {
12781262
};
12791263
specifier
12801264
};
1281-
if let Err(err) =
1282-
ls.cache(vec![specifier], referrer, false, true).await
1283-
{
1265+
if let Err(err) = ls.cache(vec![specifier], referrer, false).await {
12841266
lsp_warn!("{:#}", err);
12851267
}
12861268
});
@@ -1477,7 +1459,7 @@ impl Inner {
14771459
self.task_queue.queue_task(Box::new(|ls: LanguageServer| {
14781460
spawn(async move {
14791461
if let Err(err) = ls
1480-
.cache(vec![], module.specifier.as_ref().clone(), false, true)
1462+
.cache(vec![], module.specifier.as_ref().clone(), false)
14811463
.await
14821464
{
14831465
lsp_warn!(
@@ -4175,7 +4157,7 @@ impl tower_lsp::LanguageServer for LanguageServer {
41754157
serde_json::from_value(json!(params.arguments))
41764158
.map_err(|err| LspError::invalid_params(err.to_string()))?;
41774159
self
4178-
.cache(specifiers, referrer, options.force_global_cache, false)
4160+
.cache(specifiers, referrer, options.force_global_cache)
41794161
.await
41804162
} else if params.command == "deno.reloadImportRegistries" {
41814163
*self.did_change_batch_queue.borrow_mut() = None;
@@ -4784,7 +4766,6 @@ impl Inner {
47844766
specifiers: Vec<ModuleSpecifier>,
47854767
referrer: ModuleSpecifier,
47864768
force_global_cache: bool,
4787-
lockfile_skip_write: bool,
47884769
) -> Result<PrepareCacheResult, AnyError> {
47894770
let config_data = self.config.tree.data_for_specifier(&referrer);
47904771
let scope = config_data.map(|d| d.scope.clone());
@@ -4816,7 +4797,7 @@ impl Inner {
48164797
let mut cli_factory = CliFactory::from_flags(Arc::new(Flags {
48174798
internal: InternalFlags {
48184799
cache_path: Some(self.cache.deno_dir().root.clone()),
4819-
lockfile_skip_write,
4800+
lockfile_skip_write: true,
48204801
..Default::default()
48214802
},
48224803
ca_stores: workspace_settings.certificate_stores.clone(),
@@ -4868,22 +4849,15 @@ impl Inner {
48684849
}
48694850

48704851
#[cfg_attr(feature = "lsp-tracing", tracing::instrument(skip_all))]
4871-
async fn post_cache(&mut self, did_write_lockfile: bool) {
4872-
if did_write_lockfile {
4873-
// Most of the refresh steps will happen in `did_change_watched_files()`,
4874-
// since the lockfile was written.
4875-
self.resolver.did_cache();
4876-
self.refresh_dep_info();
4877-
} else {
4878-
self.refresh_config_tree().await;
4879-
self.update_cache();
4880-
self.refresh_resolver().await;
4881-
self.refresh_compiler_options_resolver();
4882-
self.refresh_linter_resolver();
4883-
self.refresh_documents_config();
4884-
self.resolver.did_cache();
4885-
self.refresh_dep_info();
4886-
}
4852+
async fn post_cache(&mut self) {
4853+
self.refresh_config_tree().await;
4854+
self.update_cache();
4855+
self.refresh_resolver().await;
4856+
self.refresh_compiler_options_resolver();
4857+
self.refresh_linter_resolver();
4858+
self.refresh_documents_config();
4859+
self.resolver.did_cache();
4860+
self.refresh_dep_info();
48874861
self.project_changed(vec![], ProjectScopesChange::Config);
48884862
self.ts_server.cleanup_semantic_cache(self.snapshot()).await;
48894863
self.send_diagnostics_update();

tests/integration/lsp_tests.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15579,14 +15579,9 @@ fn lsp_node_modules_dir() {
1557915579

1558015580
assert!(!temp_dir.path().join("node_modules").exists());
1558115581

15582-
// a lockfile will be created here because someone did an explicit cache
15583-
let lockfile_path = temp_dir.path().join("deno.lock");
15584-
assert!(lockfile_path.exists());
15585-
lockfile_path.remove_file();
15586-
1558715582
temp_dir.write(
1558815583
temp_dir.path().join("deno.json"),
15589-
"{ \"nodeModulesDir\": \"auto\", \"lock\": false }\n",
15584+
"{ \"nodeModulesDir\": \"auto\" }\n",
1559015585
);
1559115586
let refresh_config = |client: &mut LspClient| {
1559215587
client.change_configuration(json!({ "deno": {
@@ -15616,7 +15611,6 @@ fn lsp_node_modules_dir() {
1561615611

1561715612
assert!(temp_dir.path().join("node_modules/chalk").exists());
1561815613
assert!(temp_dir.path().join("node_modules/@types/node").exists());
15619-
assert!(!lockfile_path.exists()); // was disabled
1562015614

1562115615
// now add a lockfile and cache
1562215616
temp_dir.write(
@@ -15627,8 +15621,6 @@ fn lsp_node_modules_dir() {
1562715621
let diagnostics = cache(&mut client);
1562815622
assert_eq!(diagnostics.all().len(), 0, "{:#?}", diagnostics);
1562915623

15630-
assert!(lockfile_path.exists());
15631-
1563215624
// the declaration should be found in the node_modules directory
1563315625
let res = client.write_request(
1563415626
"textDocument/references",

0 commit comments

Comments
 (0)