From 0c5c70517b141351a159c8b35ddb732b968a9515 Mon Sep 17 00:00:00 2001 From: David Driscoll Date: Sat, 1 Aug 2020 15:44:21 -0400 Subject: [PATCH 1/2] Added JsonConverter attributes where appropriate to allow for more adhoc serialziation in things like commands for example --- src/Protocol/DocumentUri.cs | 3 ++ src/Protocol/Models/BooleanNumberString.cs | 4 ++ src/Protocol/Models/BooleanString.cs | 4 ++ src/Protocol/Models/CommandOrCodeAction.cs | 3 ++ src/Protocol/Models/CompletionList.cs | 3 ++ src/Protocol/Models/DiagnosticCode.cs | 4 ++ src/Protocol/Models/LocationOrLocationLink.cs | 4 ++ .../Models/LocationOrLocationLinks.cs | 3 ++ src/Protocol/Models/MarkedString.cs | 3 ++ .../Models/MarkedStringsOrMarkupContent.cs | 3 ++ .../Models/ParameterInformationLabel.cs | 3 ++ src/Protocol/Models/ProgressToken.cs | 1 + .../Proposals/SemanticTokensFullOrDelta.cs | 3 ++ .../SemanticTokensFullOrDeltaPartialResult.cs | 2 + .../Models/RangeOrPlaceholderRange.cs | 4 ++ src/Protocol/Models/StringOrMarkupContent.cs | 2 + .../SymbolInformationOrDocumentSymbol.cs | 3 ++ .../Models/WorkspaceEditDocumentChange.cs | 4 ++ .../Converters/DiagnosticCodeConverter.cs | 34 ---------------- ...onverter.cs => EnumLikeStringConverter.cs} | 0 .../NullableDiagnosticCodeConverter.cs | 40 +++++++++++++++++++ .../Converters/ValueTupleContractResolver.cs | 20 ++++++++++ .../WorkspaceEditDocumentChangeConverter.cs | 14 ------- .../Server/Capabilities/TextDocumentSync.cs | 4 ++ 24 files changed, 120 insertions(+), 48 deletions(-) rename src/Protocol/Serialization/Converters/{CodeActionKindConverter.cs => EnumLikeStringConverter.cs} (100%) create mode 100644 src/Protocol/Serialization/Converters/NullableDiagnosticCodeConverter.cs create mode 100644 src/Protocol/Serialization/Converters/ValueTupleContractResolver.cs diff --git a/src/Protocol/DocumentUri.cs b/src/Protocol/DocumentUri.cs index f9ff6a183..355459275 100644 --- a/src/Protocol/DocumentUri.cs +++ b/src/Protocol/DocumentUri.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; +using Newtonsoft.Json; using OmniSharp.Extensions.LanguageServer.Protocol.Models; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol { @@ -25,6 +27,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol /// This class describes a document uri as defined by https://microsoft.github.io/language-server-protocol/specifications/specification-current/#uri /// /// This exists because of some non-standard serialization in vscode around uris and .NET's behavior when deserializing those uris + [JsonConverter(typeof(DocumentUriConverter))] public partial class DocumentUri : IEquatable { /// diff --git a/src/Protocol/Models/BooleanNumberString.cs b/src/Protocol/Models/BooleanNumberString.cs index d820e4698..ced9ddc9d 100644 --- a/src/Protocol/Models/BooleanNumberString.cs +++ b/src/Protocol/Models/BooleanNumberString.cs @@ -1,5 +1,9 @@ +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; + namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(BooleanNumberStringConverter))] public struct BooleanNumberString { private long? _long; diff --git a/src/Protocol/Models/BooleanString.cs b/src/Protocol/Models/BooleanString.cs index 327ef9f17..9023ab47b 100644 --- a/src/Protocol/Models/BooleanString.cs +++ b/src/Protocol/Models/BooleanString.cs @@ -1,5 +1,9 @@ +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; + namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(BooleanStringConverter))] public struct BooleanString { private string _string; diff --git a/src/Protocol/Models/CommandOrCodeAction.cs b/src/Protocol/Models/CommandOrCodeAction.cs index 435901924..1ef3c106d 100644 --- a/src/Protocol/Models/CommandOrCodeAction.cs +++ b/src/Protocol/Models/CommandOrCodeAction.cs @@ -1,7 +1,10 @@ using System.Diagnostics; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(CommandOrCodeActionConverter))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public struct CommandOrCodeAction { diff --git a/src/Protocol/Models/CompletionList.cs b/src/Protocol/Models/CompletionList.cs index 2f4704124..024cd3375 100644 --- a/src/Protocol/Models/CompletionList.cs +++ b/src/Protocol/Models/CompletionList.cs @@ -2,7 +2,9 @@ using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; +using Newtonsoft.Json; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { @@ -10,6 +12,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Models /// Represents a collection of [completion items](#CompletionItem) to be presented /// in the editor. /// + [JsonConverter(typeof(CompletionListConverter))] public class CompletionList : Container { public CompletionList() : base(Enumerable.Empty()) { } diff --git a/src/Protocol/Models/DiagnosticCode.cs b/src/Protocol/Models/DiagnosticCode.cs index 9a253b58a..a9252b968 100644 --- a/src/Protocol/Models/DiagnosticCode.cs +++ b/src/Protocol/Models/DiagnosticCode.cs @@ -1,5 +1,9 @@ +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; + namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(DiagnosticCodeConverter))] public struct DiagnosticCode { public DiagnosticCode(long value) diff --git a/src/Protocol/Models/LocationOrLocationLink.cs b/src/Protocol/Models/LocationOrLocationLink.cs index 667f7362a..23e21652b 100644 --- a/src/Protocol/Models/LocationOrLocationLink.cs +++ b/src/Protocol/Models/LocationOrLocationLink.cs @@ -1,5 +1,9 @@ +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; + namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(LocationOrLocationLinkConverter))] public struct LocationOrLocationLink { public LocationOrLocationLink(Location location) diff --git a/src/Protocol/Models/LocationOrLocationLinks.cs b/src/Protocol/Models/LocationOrLocationLinks.cs index b91c2fb85..8538610a4 100644 --- a/src/Protocol/Models/LocationOrLocationLinks.cs +++ b/src/Protocol/Models/LocationOrLocationLinks.cs @@ -1,9 +1,12 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(LocationOrLocationLinksConverter))] public class LocationOrLocationLinks : Container { public LocationOrLocationLinks() : this(Enumerable.Empty()) diff --git a/src/Protocol/Models/MarkedString.cs b/src/Protocol/Models/MarkedString.cs index 23855b972..ec299ec20 100644 --- a/src/Protocol/Models/MarkedString.cs +++ b/src/Protocol/Models/MarkedString.cs @@ -1,5 +1,7 @@ using System.Diagnostics; +using Newtonsoft.Json; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { @@ -16,6 +18,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Models /// /// Note that markdown strings will be sanitized - that means html will be escaped. /// + [JsonConverter(typeof(MarkedStringConverter))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public class MarkedString { diff --git a/src/Protocol/Models/MarkedStringsOrMarkupContent.cs b/src/Protocol/Models/MarkedStringsOrMarkupContent.cs index db6aabdc1..5adec3d77 100644 --- a/src/Protocol/Models/MarkedStringsOrMarkupContent.cs +++ b/src/Protocol/Models/MarkedStringsOrMarkupContent.cs @@ -1,9 +1,12 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(MarkedStringsOrMarkupContentConverter))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public class MarkedStringsOrMarkupContent { diff --git a/src/Protocol/Models/ParameterInformationLabel.cs b/src/Protocol/Models/ParameterInformationLabel.cs index 3530dc53a..557b85f20 100644 --- a/src/Protocol/Models/ParameterInformationLabel.cs +++ b/src/Protocol/Models/ParameterInformationLabel.cs @@ -1,7 +1,10 @@ using System.Diagnostics; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(ParameterInformationLabelConverter))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public class ParameterInformationLabel { diff --git a/src/Protocol/Models/ProgressToken.cs b/src/Protocol/Models/ProgressToken.cs index baec40177..0d5c824d8 100644 --- a/src/Protocol/Models/ProgressToken.cs +++ b/src/Protocol/Models/ProgressToken.cs @@ -5,6 +5,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(ProgressToken))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public class ProgressToken : IEquatable, IEquatable, IEquatable { diff --git a/src/Protocol/Models/Proposals/SemanticTokensFullOrDelta.cs b/src/Protocol/Models/Proposals/SemanticTokensFullOrDelta.cs index 711f7d130..671874273 100644 --- a/src/Protocol/Models/Proposals/SemanticTokensFullOrDelta.cs +++ b/src/Protocol/Models/Proposals/SemanticTokensFullOrDelta.cs @@ -1,8 +1,11 @@ using System; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals { [Obsolete(Constants.Proposal)] + [JsonConverter(typeof(SemanticTokensFullOrDeltaConverter))] public struct SemanticTokensFullOrDelta { public SemanticTokensFullOrDelta(SemanticTokensDelta delta) diff --git a/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs b/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs index f4502b4ca..84b667fce 100644 --- a/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs +++ b/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs @@ -1,8 +1,10 @@ using System; +using Newtonsoft.Json; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals { [Obsolete(Constants.Proposal)] + [JsonConverter(typeof(SemanticTokensFullOrDeltaPartialResult))] public struct SemanticTokensFullOrDeltaPartialResult { public SemanticTokensFullOrDeltaPartialResult( diff --git a/src/Protocol/Models/RangeOrPlaceholderRange.cs b/src/Protocol/Models/RangeOrPlaceholderRange.cs index bb3194d5f..a6a124e20 100644 --- a/src/Protocol/Models/RangeOrPlaceholderRange.cs +++ b/src/Protocol/Models/RangeOrPlaceholderRange.cs @@ -1,5 +1,9 @@ +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; + namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(RangeOrPlaceholderRangeConverter))] public class RangeOrPlaceholderRange { diff --git a/src/Protocol/Models/StringOrMarkupContent.cs b/src/Protocol/Models/StringOrMarkupContent.cs index 2ce8afc3f..606cd1cdf 100644 --- a/src/Protocol/Models/StringOrMarkupContent.cs +++ b/src/Protocol/Models/StringOrMarkupContent.cs @@ -1,7 +1,9 @@ using System.Diagnostics; +using Newtonsoft.Json; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(StringOrMarkupContent))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public class StringOrMarkupContent { diff --git a/src/Protocol/Models/SymbolInformationOrDocumentSymbol.cs b/src/Protocol/Models/SymbolInformationOrDocumentSymbol.cs index 51ec8c4de..f5475f9bb 100644 --- a/src/Protocol/Models/SymbolInformationOrDocumentSymbol.cs +++ b/src/Protocol/Models/SymbolInformationOrDocumentSymbol.cs @@ -1,7 +1,10 @@ using System.Diagnostics; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(SymbolInformationOrDocumentSymbolConverter))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public struct SymbolInformationOrDocumentSymbol { diff --git a/src/Protocol/Models/WorkspaceEditDocumentChange.cs b/src/Protocol/Models/WorkspaceEditDocumentChange.cs index c6aef3833..0f604c438 100644 --- a/src/Protocol/Models/WorkspaceEditDocumentChange.cs +++ b/src/Protocol/Models/WorkspaceEditDocumentChange.cs @@ -1,5 +1,9 @@ +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; + namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { + [JsonConverter(typeof(WorkspaceEditDocumentChangeConverter))] public struct WorkspaceEditDocumentChange { public WorkspaceEditDocumentChange(TextDocumentEdit textDocumentEdit) diff --git a/src/Protocol/Serialization/Converters/DiagnosticCodeConverter.cs b/src/Protocol/Serialization/Converters/DiagnosticCodeConverter.cs index 64f85a358..aa84db5df 100644 --- a/src/Protocol/Serialization/Converters/DiagnosticCodeConverter.cs +++ b/src/Protocol/Serialization/Converters/DiagnosticCodeConverter.cs @@ -30,38 +30,4 @@ public override DiagnosticCode ReadJson(JsonReader reader, Type objectType, Diag public override bool CanRead => true; } - - class NullableDiagnosticCodeConverter : JsonConverter - { - public override void WriteJson(JsonWriter writer, DiagnosticCode? value, JsonSerializer serializer) - { - if (!value.HasValue) - { - writer.WriteNull(); - } - else - { - if (value.Value.IsLong) serializer.Serialize(writer, value.Value.Long); - if (value.Value.IsString) serializer.Serialize(writer, value.Value.String); - } - } - - public override DiagnosticCode? ReadJson(JsonReader reader, Type objectType, DiagnosticCode? existingValue, - bool hasExistingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.String) - { - return new DiagnosticCode((string) reader.Value); - } - - if (reader.TokenType == JsonToken.Integer) - { - return new DiagnosticCode((long) reader.Value); - } - - return null; - } - - public override bool CanRead => true; - } } diff --git a/src/Protocol/Serialization/Converters/CodeActionKindConverter.cs b/src/Protocol/Serialization/Converters/EnumLikeStringConverter.cs similarity index 100% rename from src/Protocol/Serialization/Converters/CodeActionKindConverter.cs rename to src/Protocol/Serialization/Converters/EnumLikeStringConverter.cs diff --git a/src/Protocol/Serialization/Converters/NullableDiagnosticCodeConverter.cs b/src/Protocol/Serialization/Converters/NullableDiagnosticCodeConverter.cs new file mode 100644 index 000000000..902adc7de --- /dev/null +++ b/src/Protocol/Serialization/Converters/NullableDiagnosticCodeConverter.cs @@ -0,0 +1,40 @@ +using System; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters +{ + class NullableDiagnosticCodeConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, DiagnosticCode? value, JsonSerializer serializer) + { + if (!value.HasValue) + { + writer.WriteNull(); + } + else + { + if (value.Value.IsLong) serializer.Serialize(writer, value.Value.Long); + if (value.Value.IsString) serializer.Serialize(writer, value.Value.String); + } + } + + public override DiagnosticCode? ReadJson(JsonReader reader, Type objectType, DiagnosticCode? existingValue, + bool hasExistingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.String) + { + return new DiagnosticCode((string) reader.Value); + } + + if (reader.TokenType == JsonToken.Integer) + { + return new DiagnosticCode((long) reader.Value); + } + + return null; + } + + public override bool CanRead => true; + } +} \ No newline at end of file diff --git a/src/Protocol/Serialization/Converters/ValueTupleContractResolver.cs b/src/Protocol/Serialization/Converters/ValueTupleContractResolver.cs new file mode 100644 index 000000000..754a53ba4 --- /dev/null +++ b/src/Protocol/Serialization/Converters/ValueTupleContractResolver.cs @@ -0,0 +1,20 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters +{ + class ValueTupleContractResolver : JsonConverter<(T1, T2)> + { + public override void WriteJson(JsonWriter writer, (T1, T2) value, JsonSerializer serializer) + { + serializer.Serialize(writer, new object[] { value.Item1, value.Item2 }); + } + + public override (T1, T2) ReadJson(JsonReader reader, Type objectType, (T1, T2) existingValue, bool hasExistingValue, JsonSerializer serializer) + { + var a = JArray.Load(reader); + return (a.ToObject(), a.ToObject()); + } + } +} \ No newline at end of file diff --git a/src/Protocol/Serialization/Converters/WorkspaceEditDocumentChangeConverter.cs b/src/Protocol/Serialization/Converters/WorkspaceEditDocumentChangeConverter.cs index 499d50a46..de3695e89 100644 --- a/src/Protocol/Serialization/Converters/WorkspaceEditDocumentChangeConverter.cs +++ b/src/Protocol/Serialization/Converters/WorkspaceEditDocumentChangeConverter.cs @@ -41,18 +41,4 @@ public override WorkspaceEditDocumentChange ReadJson(JsonReader reader, Type obj public override bool CanRead => true; } - - class ValueTupleContractResolver : JsonConverter> - { - public override void WriteJson(JsonWriter writer, (T1, T2) value, JsonSerializer serializer) - { - serializer.Serialize(writer, new object[] { value.Item1, value.Item2 }); - } - - public override (T1, T2) ReadJson(JsonReader reader, Type objectType, (T1, T2) existingValue, bool hasExistingValue, JsonSerializer serializer) - { - var a = JArray.Load(reader); - return (a.ToObject(), a.ToObject()); - } - } } diff --git a/src/Protocol/Server/Capabilities/TextDocumentSync.cs b/src/Protocol/Server/Capabilities/TextDocumentSync.cs index 2fae43b9f..be2d1f505 100644 --- a/src/Protocol/Server/Capabilities/TextDocumentSync.cs +++ b/src/Protocol/Server/Capabilities/TextDocumentSync.cs @@ -1,5 +1,9 @@ +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; + namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities { + [JsonConverter(typeof(TextDocumentSyncConverter))] public class TextDocumentSync { public TextDocumentSync(TextDocumentSyncKind kind) From 1c85f7b5e71dcda9c621578a3a1e5652416f1b84 Mon Sep 17 00:00:00 2001 From: David Driscoll Date: Sat, 1 Aug 2020 22:42:01 -0400 Subject: [PATCH 2/2] Updated converters --- src/Protocol/Models/ProgressToken.cs | 3 ++- .../Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs | 3 ++- src/Protocol/Models/StringOrMarkupContent.cs | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Protocol/Models/ProgressToken.cs b/src/Protocol/Models/ProgressToken.cs index 0d5c824d8..87f545983 100644 --- a/src/Protocol/Models/ProgressToken.cs +++ b/src/Protocol/Models/ProgressToken.cs @@ -2,10 +2,11 @@ using System.Collections.Generic; using System.Diagnostics; using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { - [JsonConverter(typeof(ProgressToken))] + [JsonConverter(typeof(ProgressTokenConverter))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public class ProgressToken : IEquatable, IEquatable, IEquatable { diff --git a/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs b/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs index 84b667fce..790240359 100644 --- a/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs +++ b/src/Protocol/Models/Proposals/SemanticTokensFullOrDeltaPartialResult.cs @@ -1,10 +1,11 @@ using System; using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals { [Obsolete(Constants.Proposal)] - [JsonConverter(typeof(SemanticTokensFullOrDeltaPartialResult))] + [JsonConverter(typeof(SemanticTokensFullOrDeltaPartialResultConverter))] public struct SemanticTokensFullOrDeltaPartialResult { public SemanticTokensFullOrDeltaPartialResult( diff --git a/src/Protocol/Models/StringOrMarkupContent.cs b/src/Protocol/Models/StringOrMarkupContent.cs index 606cd1cdf..f7ad5c641 100644 --- a/src/Protocol/Models/StringOrMarkupContent.cs +++ b/src/Protocol/Models/StringOrMarkupContent.cs @@ -1,9 +1,10 @@ using System.Diagnostics; using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models { - [JsonConverter(typeof(StringOrMarkupContent))] + [JsonConverter(typeof(StringOrMarkupContentConverter))] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public class StringOrMarkupContent {