File: Protocol\Internal\Diagnostics\VSInternalDiagnosticReport.cs
Web Access
Project: src\src\LanguageServer\Protocol\Microsoft.CodeAnalysis.LanguageServer.Protocol.csproj (Microsoft.CodeAnalysis.LanguageServer.Protocol)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
namespace Roslyn.LanguageServer.Protocol
{
    using System;
    using System.Text.Json.Serialization;
 
    /// <summary>
    /// Class representing a diagnostic pull request report.
    /// </summary>
    internal class VSInternalDiagnosticReport
    {
        /// <summary>
        /// Gets or sets the server-generated version number for the diagnostics.
        /// This is treated as a black box by the client: it is stored on the client
        /// for each textDocument and sent back to the server when requesting
        /// diagnostics.The server can use this result ID to avoid resending
        /// diagnostics that had previously been sent.
        /// </summary>
        [JsonPropertyName("_vs_resultId")]
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        public string? ResultId { get; set; }
 
        /// <summary>
        /// Gets or sets a (potentially incomplete) list of Diagnostics for the document.
        /// Subsequent DiagnosticReports for the same document will be appended.
        /// </summary>
        /// <remarks>
        /// Is null if no changes in the diagnostics. Is empty if there is no diagnostic.
        /// </remarks>
        [JsonPropertyName("_vs_diagnostics")]
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        public Diagnostic[]? Diagnostics { get; set; }
 
        /// <summary>
        /// Gets or sets an identifier associated with all the diagnostics in this report.
        ///
        /// If the <see cref="Identifier" /> property matches the supersedes property of another report,
        /// <see cref="Diagnostic" /> entries tagged with <see cref="VSDiagnosticTags.PotentialDuplicate" /> will
        /// be hidden in the editor.
        /// </summary>
        [JsonPropertyName("_vs_identifier")]
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        public int? Identifier { get; set; }
 
        /// <summary>
        /// Gets or sets an indicator of which diagnostic report is superseded by this report.
        /// </summary>
        /// <remarks>
        /// Diagnostics in a superseded report will be hidden if they have the PotentialDuplicate VSDiagnosticTag.
        /// </remarks>
        [JsonPropertyName("_vs_supersedes")]
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        public int? Supersedes { get; set; }
 
        /// <summary>
        /// Gets or sets an optional key used to associate diagnostics with lines
        /// of text in the output window(diagnostics can have an additional
        /// outputId and the (outputKey, outputId) uniquely identify
        /// a line of text in the output window).
        /// </summary>
        [JsonPropertyName("_vs_outputKey")]
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        public Guid? OutputKey { get; set; }
 
        /// <summary>
        /// Gets or sets the document version.
        /// </summary>
        [JsonPropertyName("_vs_version")]
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
        public int? Version { get; set; }
    }
}