From b86960f18c010ef991bc91e93bcff84b44a539fd Mon Sep 17 00:00:00 2001 From: Chandra Kiran G <121796315+kiran-4444@users.noreply.github.com> Date: Sat, 17 May 2025 22:57:59 +0530 Subject: [PATCH] [ty] Add rule link to server diagnostics (#18128) Co-authored-by: Micha Reiser --- .../src/server/api/requests/diagnostic.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/crates/ty_server/src/server/api/requests/diagnostic.rs b/crates/ty_server/src/server/api/requests/diagnostic.rs index bf19181e7c..c52bca1a38 100644 --- a/crates/ty_server/src/server/api/requests/diagnostic.rs +++ b/crates/ty_server/src/server/api/requests/diagnostic.rs @@ -4,7 +4,7 @@ use lsp_types::request::DocumentDiagnosticRequest; use lsp_types::{ Diagnostic, DiagnosticSeverity, DiagnosticTag, DocumentDiagnosticParams, DocumentDiagnosticReport, DocumentDiagnosticReportResult, FullDocumentDiagnosticReport, - NumberOrString, Range, RelatedFullDocumentDiagnosticReport, Url, + NumberOrString, Range, RelatedFullDocumentDiagnosticReport, }; use crate::document::ToRangeExt; @@ -22,7 +22,7 @@ impl RequestHandler for DocumentDiagnosticRequestHandler { } impl BackgroundDocumentRequestHandler for DocumentDiagnosticRequestHandler { - fn document_url(params: &DocumentDiagnosticParams) -> Cow { + fn document_url(params: &DocumentDiagnosticParams) -> Cow { Cow::Borrowed(¶ms.text_document.uri) } @@ -105,12 +105,23 @@ fn to_lsp_diagnostic( }) .filter(|mapped_tags| !mapped_tags.is_empty()); + let code_description = diagnostic + .id() + .is_lint() + .then(|| { + Some(lsp_types::CodeDescription { + href: lsp_types::Url::parse(&format!("https://ty.dev/rules#{}", diagnostic.id())) + .ok()?, + }) + }) + .flatten(); + Diagnostic { range, severity: Some(severity), tags, code: Some(NumberOrString::String(diagnostic.id().to_string())), - code_description: None, + code_description, source: Some("ty".into()), message: diagnostic.concise_message().to_string(), related_information: None,