mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
fix(lsp): remove redirect diagnostic (#28988)
This commit is contained in:
parent
104514b06d
commit
d26be98377
2 changed files with 0 additions and 204 deletions
|
@ -1191,12 +1191,6 @@ pub enum DenoDiagnostic {
|
|||
NotInstalledNpm(PackageReq, ModuleSpecifier),
|
||||
/// A local module was not found on the local file system.
|
||||
NoLocal(ModuleSpecifier),
|
||||
/// The specifier resolved to a remote specifier that was redirected to
|
||||
/// another specifier.
|
||||
Redirect {
|
||||
from: ModuleSpecifier,
|
||||
to: ModuleSpecifier,
|
||||
},
|
||||
/// An error occurred when resolving the specifier string.
|
||||
ResolutionError(deno_graph::ResolutionError),
|
||||
/// Invalid `node:` specifier.
|
||||
|
@ -1216,7 +1210,6 @@ impl DenoDiagnostic {
|
|||
Self::NotInstalledJsr(_, _) => "not-installed-jsr",
|
||||
Self::NotInstalledNpm(_, _) => "not-installed-npm",
|
||||
Self::NoLocal(_) => "no-local",
|
||||
Self::Redirect { .. } => "redirect",
|
||||
Self::ResolutionError(err) => {
|
||||
if graph_util::get_resolution_error_bare_node_specifier(err).is_some() {
|
||||
"import-node-prefix-missing"
|
||||
|
@ -1469,7 +1462,6 @@ impl DenoDiagnostic {
|
|||
});
|
||||
(lsp::DiagnosticSeverity::ERROR, no_local_message(specifier, sloppy_resolution.as_ref().map(|(resolved, sloppy_reason)| sloppy_reason.suggestion_message_for_specifier(resolved))), data)
|
||||
},
|
||||
Self::Redirect { from, to} => (lsp::DiagnosticSeverity::INFORMATION, format!("The import of \"{from}\" was redirected to \"{to}\"."), Some(json!({ "specifier": from, "redirect": to }))),
|
||||
Self::ResolutionError(err) => {
|
||||
let mut message;
|
||||
message = enhanced_resolution_error_message(err);
|
||||
|
@ -1589,32 +1581,6 @@ fn diagnose_resolution(
|
|||
referrer_module: &DocumentModule,
|
||||
import_map: Option<&ImportMap>,
|
||||
) -> (Vec<DenoDiagnostic>, Vec<DenoDiagnostic>) {
|
||||
fn check_redirect_diagnostic(
|
||||
specifier: &ModuleSpecifier,
|
||||
module: &DocumentModule,
|
||||
) -> Option<DenoDiagnostic> {
|
||||
// If the module was redirected, we want to issue an informational
|
||||
// diagnostic that indicates this. This then allows us to issue a code
|
||||
// action to replace the specifier with the final redirected one.
|
||||
if specifier.scheme() == "jsr" || specifier == module.specifier.as_ref() {
|
||||
return None;
|
||||
}
|
||||
// don't bother warning about sloppy import redirects from .js to .d.ts
|
||||
// because explaining how to fix this via a diagnostic involves using
|
||||
// @ts-types and that's a bit complicated to explain
|
||||
let is_sloppy_import_dts_redirect = module.specifier.scheme() == "file"
|
||||
&& module.media_type.is_declaration()
|
||||
&& !MediaType::from_specifier(specifier).is_declaration();
|
||||
if is_sloppy_import_dts_redirect {
|
||||
return None;
|
||||
}
|
||||
|
||||
Some(DenoDiagnostic::Redirect {
|
||||
from: specifier.clone(),
|
||||
to: module.specifier.as_ref().clone(),
|
||||
})
|
||||
}
|
||||
|
||||
let mut diagnostics = vec![];
|
||||
let mut deferred_diagnostics = vec![];
|
||||
match resolution {
|
||||
|
@ -1639,10 +1605,6 @@ fn diagnose_resolution(
|
|||
diagnostics.push(DenoDiagnostic::DenoWarn(message.clone()));
|
||||
}
|
||||
}
|
||||
if let Some(diagnostic) = check_redirect_diagnostic(specifier, &module)
|
||||
{
|
||||
diagnostics.push(diagnostic);
|
||||
}
|
||||
if module.media_type == MediaType::Json {
|
||||
match maybe_assert_type {
|
||||
// The module has the correct assertion type, no diagnostic
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// Copyright 2018-2025 the Deno authors. MIT license.
|
||||
|
||||
use std::fs;
|
||||
use std::str::FromStr;
|
||||
|
||||
use ntest_timeout::timeout;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
@ -10875,171 +10874,6 @@ fn lsp_npmrc() {
|
|||
client.shutdown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[timeout(300_000)]
|
||||
fn lsp_diagnostics_warn_redirect() {
|
||||
let context = TestContextBuilder::new()
|
||||
.use_http_server()
|
||||
.use_temp_cwd()
|
||||
.build();
|
||||
let mut client = context.new_lsp_command().build();
|
||||
client.initialize_default();
|
||||
client.did_open(
|
||||
json!({
|
||||
"textDocument": {
|
||||
"uri": "file:///a/file.ts",
|
||||
"languageId": "typescript",
|
||||
"version": 1,
|
||||
"text": "import * as a from \"http://127.0.0.1:4545/x_deno_warning.js\";\n\nconsole.log(a)\n",
|
||||
},
|
||||
}),
|
||||
);
|
||||
client.write_request(
|
||||
"workspace/executeCommand",
|
||||
json!({
|
||||
"command": "deno.cache",
|
||||
"arguments": [
|
||||
["http://127.0.0.1:4545/x_deno_warning.js"],
|
||||
"file:///a/file.ts",
|
||||
],
|
||||
}),
|
||||
);
|
||||
let diagnostics = client.read_diagnostics();
|
||||
assert_eq!(
|
||||
diagnostics.messages_with_source("deno"),
|
||||
lsp::PublishDiagnosticsParams {
|
||||
uri: lsp::Uri::from_str("file:///a/file.ts").unwrap(),
|
||||
diagnostics: vec![
|
||||
lsp::Diagnostic {
|
||||
range: lsp::Range {
|
||||
start: lsp::Position {
|
||||
line: 0,
|
||||
character: 19
|
||||
},
|
||||
end: lsp::Position {
|
||||
line: 0,
|
||||
character: 60
|
||||
}
|
||||
},
|
||||
severity: Some(lsp::DiagnosticSeverity::WARNING),
|
||||
code: Some(lsp::NumberOrString::String("deno-warn".to_string())),
|
||||
source: Some("deno".to_string()),
|
||||
message: "foobar".to_string(),
|
||||
..Default::default()
|
||||
},
|
||||
lsp::Diagnostic {
|
||||
range: lsp::Range {
|
||||
start: lsp::Position {
|
||||
line: 0,
|
||||
character: 19
|
||||
},
|
||||
end: lsp::Position {
|
||||
line: 0,
|
||||
character: 60
|
||||
}
|
||||
},
|
||||
severity: Some(lsp::DiagnosticSeverity::INFORMATION),
|
||||
code: Some(lsp::NumberOrString::String("redirect".to_string())),
|
||||
source: Some("deno".to_string()),
|
||||
message: "The import of \"http://127.0.0.1:4545/x_deno_warning.js\" was redirected to \"http://127.0.0.1:4545/lsp/x_deno_warning_redirect.js\".".to_string(),
|
||||
data: Some(json!({"specifier": "http://127.0.0.1:4545/x_deno_warning.js", "redirect": "http://127.0.0.1:4545/lsp/x_deno_warning_redirect.js"})),
|
||||
..Default::default()
|
||||
}
|
||||
],
|
||||
version: Some(1),
|
||||
}
|
||||
);
|
||||
client.shutdown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[timeout(300_000)]
|
||||
fn lsp_redirect_quick_fix() {
|
||||
let context = TestContextBuilder::new()
|
||||
.use_http_server()
|
||||
.use_temp_cwd()
|
||||
.build();
|
||||
let mut client = context.new_lsp_command().build();
|
||||
client.initialize_default();
|
||||
client.did_open(
|
||||
json!({
|
||||
"textDocument": {
|
||||
"uri": "file:///a/file.ts",
|
||||
"languageId": "typescript",
|
||||
"version": 1,
|
||||
"text": "import * as a from \"http://127.0.0.1:4545/x_deno_warning.js\";\n\nconsole.log(a)\n",
|
||||
},
|
||||
}),
|
||||
);
|
||||
client.write_request(
|
||||
"workspace/executeCommand",
|
||||
json!({
|
||||
"command": "deno.cache",
|
||||
"arguments": [
|
||||
["http://127.0.0.1:4545/x_deno_warning.js"],
|
||||
"file:///a/file.ts",
|
||||
],
|
||||
}),
|
||||
);
|
||||
let diagnostics = client
|
||||
.read_diagnostics()
|
||||
.messages_with_source("deno")
|
||||
.diagnostics;
|
||||
let res = client.write_request(
|
||||
"textDocument/codeAction",
|
||||
json!(json!({
|
||||
"textDocument": {
|
||||
"uri": "file:///a/file.ts"
|
||||
},
|
||||
"range": {
|
||||
"start": { "line": 0, "character": 19 },
|
||||
"end": { "line": 0, "character": 60 }
|
||||
},
|
||||
"context": {
|
||||
"diagnostics": diagnostics,
|
||||
"only": ["quickfix"]
|
||||
}
|
||||
})),
|
||||
);
|
||||
assert_eq!(
|
||||
res,
|
||||
json!([{
|
||||
"title": "Update specifier to its redirected specifier.",
|
||||
"kind": "quickfix",
|
||||
"diagnostics": [
|
||||
{
|
||||
"range": {
|
||||
"start": { "line": 0, "character": 19 },
|
||||
"end": { "line": 0, "character": 60 }
|
||||
},
|
||||
"severity": 3,
|
||||
"code": "redirect",
|
||||
"source": "deno",
|
||||
"message": "The import of \"http://127.0.0.1:4545/x_deno_warning.js\" was redirected to \"http://127.0.0.1:4545/lsp/x_deno_warning_redirect.js\".",
|
||||
"data": {
|
||||
"specifier": "http://127.0.0.1:4545/x_deno_warning.js",
|
||||
"redirect": "http://127.0.0.1:4545/lsp/x_deno_warning_redirect.js"
|
||||
}
|
||||
}
|
||||
],
|
||||
"edit": {
|
||||
"changes": {
|
||||
"file:///a/file.ts": [
|
||||
{
|
||||
"range": {
|
||||
"start": { "line": 0, "character": 19 },
|
||||
"end": { "line": 0, "character": 60 }
|
||||
},
|
||||
"newText": "\"http://127.0.0.1:4545/lsp/x_deno_warning_redirect.js\""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}])
|
||||
);
|
||||
client.shutdown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[timeout(300_000)]
|
||||
fn lsp_lockfile_redirect_resolution() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue