static LanguageServer.Protocol.Diagnostic ConvertToLspDiagnostic(DiagnosticData diagnosticData, SourceText text) { return(new LanguageServer.Protocol.Diagnostic { Code = diagnosticData.Id, Message = diagnosticData.Message, Severity = ProtocolConversions.DiagnosticSeverityToLspDiagnositcSeverity(diagnosticData.Severity), Range = GetDiagnosticRange(diagnosticData.DataLocation, text), // Only the unnecessary diagnostic tag is currently supported via LSP. Tags = diagnosticData.CustomTags.Contains(WellKnownDiagnosticTags.Unnecessary) ? new DiagnosticTag[] { DiagnosticTag.Unnecessary } : Array.Empty <DiagnosticTag>() }); }
private async Task <LSP.Diagnostic[]> GetDiagnosticsAsync(Solution solution, Document document, CancellationToken cancellationToken) { var diagnostics = _diagnosticService.GetDiagnostics(solution.Workspace, document.Project.Id, document.Id, null, false, cancellationToken); var text = await document.GetTextAsync(cancellationToken).ConfigureAwait(false); return(diagnostics.Select(diag => new RoslynDiagnostic { Code = diag.Id, Message = diag.Message, Severity = ProtocolConversions.DiagnosticSeverityToLspDiagnositcSeverity(diag.Severity), Range = ProtocolConversions.TextSpanToRange(diag.GetExistingOrCalculatedTextSpan(text), text), Tags = diag.CustomTags.Where(s => s == "Unnecessary").ToArray() }).ToArray()); }
private async Task <LanguageServer.Protocol.Diagnostic[]> GetDiagnosticsAsync(Solution solution, Document document, CancellationToken cancellationToken) { var diagnostics = _diagnosticService.GetDiagnostics(solution.Workspace, document.Project.Id, document.Id, null, false, cancellationToken); var text = await document.GetTextAsync(cancellationToken).ConfigureAwait(false); return(diagnostics.Select(diagnostic => new LanguageServer.Protocol.Diagnostic { Code = diagnostic.Id, Message = diagnostic.Message, Severity = ProtocolConversions.DiagnosticSeverityToLspDiagnositcSeverity(diagnostic.Severity), Range = ProtocolConversions.TextSpanToRange(DiagnosticData.GetExistingOrCalculatedTextSpan(diagnostic.DataLocation, text), text), // Only the unnecessary diagnostic tag is currently supported via LSP. Tags = diagnostic.CustomTags.Contains("Unnecessary") ? new DiagnosticTag[] { DiagnosticTag.Unnecessary } : Array.Empty <DiagnosticTag>() }).ToArray()); }