diff options
Diffstat (limited to 'cli/lsp')
-rw-r--r-- | cli/lsp/config.rs | 3 | ||||
-rw-r--r-- | cli/lsp/documents.rs | 26 | ||||
-rw-r--r-- | cli/lsp/language_server.rs | 8 |
3 files changed, 22 insertions, 15 deletions
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index 89ecb84d8..543200ad1 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -1,6 +1,7 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. use super::logging::lsp_log; +use crate::args::read_lockfile_at_path; use crate::args::ConfigFile; use crate::args::FmtOptions; use crate::args::LintOptions; @@ -1685,7 +1686,7 @@ fn resolve_node_modules_dir( } fn resolve_lockfile_from_path(lockfile_path: PathBuf) -> Option<Lockfile> { - match Lockfile::new(lockfile_path, false) { + match read_lockfile_at_path(lockfile_path) { Ok(value) => { if let Ok(specifier) = ModuleSpecifier::from_file_path(&value.filename) { lsp_log!(" Resolved lockfile: \"{}\"", specifier); diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs index ab053336f..b30217bcb 100644 --- a/cli/lsp/documents.rs +++ b/cli/lsp/documents.rs @@ -310,7 +310,7 @@ impl Document { let (maybe_parsed_source, maybe_module) = if media_type_is_diagnosable(media_type) { parse_and_analyze_module( - &specifier, + specifier.clone(), text_info.clone(), maybe_headers.as_ref(), media_type, @@ -370,10 +370,13 @@ impl Document { let maybe_parsed_source; let maybe_test_module_fut; if media_type != self.media_type { - let parsed_source_result = - parse_source(&self.specifier, self.text_info.clone(), media_type); + let parsed_source_result = parse_source( + self.specifier.clone(), + self.text_info.clone(), + media_type, + ); let maybe_module = analyze_module( - &self.specifier, + self.specifier.clone(), &parsed_source_result, self.maybe_headers.as_ref(), self.file_referrer.as_ref(), @@ -481,7 +484,7 @@ impl Document { .unwrap_or(false) { parse_and_analyze_module( - &self.specifier, + self.specifier.clone(), text_info.clone(), self.maybe_headers.as_ref(), media_type, @@ -1455,14 +1458,15 @@ impl<'a> deno_graph::source::Loader for OpenDocumentsGraphLoader<'a> { } fn parse_and_analyze_module( - specifier: &ModuleSpecifier, + specifier: ModuleSpecifier, text_info: SourceTextInfo, maybe_headers: Option<&HashMap<String, String>>, media_type: MediaType, file_referrer: Option<&ModuleSpecifier>, resolver: &LspResolver, ) -> (Option<ParsedSourceResult>, Option<ModuleResult>) { - let parsed_source_result = parse_source(specifier, text_info, media_type); + let parsed_source_result = + parse_source(specifier.clone(), text_info, media_type); let module_result = analyze_module( specifier, &parsed_source_result, @@ -1474,12 +1478,12 @@ fn parse_and_analyze_module( } fn parse_source( - specifier: &ModuleSpecifier, + specifier: ModuleSpecifier, text_info: SourceTextInfo, media_type: MediaType, ) -> ParsedSourceResult { deno_ast::parse_module(deno_ast::ParseParams { - specifier: specifier.clone(), + specifier, text_info, media_type, capture_tokens: true, @@ -1489,7 +1493,7 @@ fn parse_source( } fn analyze_module( - specifier: &ModuleSpecifier, + specifier: ModuleSpecifier, parsed_source_result: &ParsedSourceResult, maybe_headers: Option<&HashMap<String, String>>, file_referrer: Option<&ModuleSpecifier>, @@ -1511,7 +1515,7 @@ fn analyze_module( }, )), Err(err) => Err(deno_graph::ModuleGraphError::ModuleError( - deno_graph::ModuleError::ParseErr(specifier.clone(), err.clone()), + deno_graph::ModuleError::ParseErr(specifier, err.clone()), )), } } diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 8f37d8b9c..621f45f96 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -85,6 +85,7 @@ use super::tsc::TsServer; use super::urls; use crate::args::create_default_npmrc; use crate::args::get_root_cert_store; +use crate::args::write_lockfile_if_has_changes; use crate::args::CaData; use crate::args::CacheSetting; use crate::args::CliOptions; @@ -247,12 +248,13 @@ impl LanguageServer { .await?; graph_util::graph_valid( &graph, - factory.fs().clone(), + factory.fs(), &roots, graph_util::GraphValidOptions { is_vendoring: false, follow_type_only: true, check_js: false, + exit_lockfile_errors: false, }, )?; @@ -260,8 +262,8 @@ impl LanguageServer { // found after caching if let Some(lockfile) = cli_options.maybe_lockfile() { let lockfile = lockfile.lock(); - if let Err(err) = lockfile.write() { - lsp_warn!("Error writing lockfile: {:#}", err); + if let Err(err) = write_lockfile_if_has_changes(&lockfile) { + lsp_warn!("{:#}", err); } } |