summaryrefslogtreecommitdiff
path: root/cli/lsp
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp')
-rw-r--r--cli/lsp/config.rs3
-rw-r--r--cli/lsp/documents.rs26
-rw-r--r--cli/lsp/language_server.rs8
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);
}
}