Skip to content

Commit 3c4448e

Browse files
committed
Pass serializer when calling ToObject
1 parent b478739 commit 3c4448e

20 files changed

+49
-43
lines changed

src/Protocol/Features/Document/CompletionFeature.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ public override void WriteJson(JsonWriter writer, CompletionList? value, JsonSer
509509
var items = result["items"].ToObject<IEnumerable<CompletionItem>>(serializer);
510510
return new CompletionList(items, result["isIncomplete"]?.Value<bool>() ?? false)
511511
{
512-
ItemDefaults = result["itemDefaults"]?.ToObject<CompletionListItemDefaults>()
512+
ItemDefaults = result["itemDefaults"]?.ToObject<CompletionListItemDefaults>(serializer)
513513
};
514514
}
515515

src/Protocol/Features/Document/InlayHintFeature.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.ObjectModel;
1+
using System.Collections.ObjectModel;
22
using System.Diagnostics;
33
using MediatR;
44
using Newtonsoft.Json;
@@ -231,7 +231,7 @@ public override StringOrInlayHintLabelParts ReadJson(
231231
if (reader.TokenType == JsonToken.StartArray)
232232
{
233233
var result = JArray.Load(reader);
234-
return new StringOrInlayHintLabelParts(result.ToObject<Container<InlayHintLabelPart>>());
234+
return new StringOrInlayHintLabelParts(result.ToObject<Container<InlayHintLabelPart>>(serializer));
235235
}
236236

237237
if (reader.TokenType == JsonToken.String)

src/Protocol/Features/Document/InlineValueFeature.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Diagnostics;
1+
using System.Diagnostics;
22
using MediatR;
33
using Newtonsoft.Json;
44
using Newtonsoft.Json.Linq;
@@ -98,7 +98,7 @@ public override InlineValueBase ReadJson(
9898
{
9999
return new InlineValueText()
100100
{
101-
Range = result["range"]!.ToObject<Range?>()!,
101+
Range = result["range"]!.ToObject<Range?>(serializer)!,
102102
Text = result["text"]!.Value<string>()!
103103
};
104104
}
@@ -107,15 +107,15 @@ public override InlineValueBase ReadJson(
107107
{
108108
return new InlineValueVariableLookup()
109109
{
110-
Range = result["range"].ToObject<Range>()!,
110+
Range = result["range"].ToObject<Range>(serializer)!,
111111
VariableName = result["variableName"]!.Value<string>()!,
112112
CaseSensitiveLookup = result["caseSensitiveLookup"]?.Value<bool?>() ?? false,
113113
};
114114
}
115115

116116
return new InlineValueEvaluatableExpression()
117117
{
118-
Range = result["range"].ToObject<Range>()!,
118+
Range = result["range"].ToObject<Range>(serializer)!,
119119
Expression = result["expression"]?.Value<string>()
120120
};
121121
}

src/Protocol/Models/RangeOrEditRange.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ public override RangeOrEditRange ReadJson(
4646
var obj = JObject.Load(reader);
4747
if (obj.ContainsKey("insert"))
4848
{
49-
return new RangeOrEditRange(obj.ToObject<EditRange>());
49+
return new RangeOrEditRange(obj.ToObject<EditRange>(serializer));
5050
}
5151

52-
return new RangeOrEditRange(obj.ToObject<Range>());
52+
return new RangeOrEditRange(obj.ToObject<Range>(serializer));
5353
}
5454

5555
public override bool CanRead => true;

src/Protocol/Serialization/Converters/CommandOrCodeActionConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ public override CommandOrCodeAction ReadJson(JsonReader reader, Type objectType,
3131
var command = result["command"];
3232
if (command?.Type == JTokenType.String)
3333
{
34-
return new CommandOrCodeAction(result.ToObject<Command>());
34+
return new CommandOrCodeAction(result.ToObject<Command>(serializer));
3535
}
3636

37-
return new CommandOrCodeAction(result.ToObject<CodeAction>());
37+
return new CommandOrCodeAction(result.ToObject<CodeAction>(serializer));
3838
}
3939

4040
public override bool CanRead => true;

src/Protocol/Serialization/Converters/GlobPatternConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public override GlobPattern ReadJson(
2929

3030
if (reader.TokenType == JsonToken.StartObject)
3131
{
32-
return new GlobPattern(JObject.Load(reader).ToObject<RelativePattern>());
32+
return new GlobPattern(JObject.Load(reader).ToObject<RelativePattern>(serializer));
3333
}
3434

3535
return new GlobPattern("");

src/Protocol/Serialization/Converters/LocationOrFileLocationConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ public override LocationOrFileLocation ReadJson(JsonReader reader, Type objectTy
1919
var obj = JObject.Load(reader);
2020
if (obj.ContainsKey("range"))
2121
{
22-
return new LocationOrFileLocation(obj.ToObject<Location>());
22+
return new LocationOrFileLocation(obj.ToObject<Location>(serializer));
2323
}
2424

25-
return new LocationOrFileLocation(obj.ToObject<FileLocation>());
25+
return new LocationOrFileLocation(obj.ToObject<FileLocation>(serializer));
2626
}
2727

2828
public override bool CanRead => true;

src/Protocol/Serialization/Converters/LocationOrLocationLinkConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ public override LocationOrLocationLink ReadJson(JsonReader reader, Type objectTy
2020
var obj = JObject.Load(reader);
2121
if (obj.ContainsKey("uri"))
2222
{
23-
return new LocationOrLocationLink(obj.ToObject<Location>());
23+
return new LocationOrLocationLink(obj.ToObject<Location>(serializer));
2424
}
2525

26-
return new LocationOrLocationLink(obj.ToObject<LocationLink>());
26+
return new LocationOrLocationLink(obj.ToObject<LocationLink>(serializer));
2727
}
2828

2929
public override bool CanRead => true;

src/Protocol/Serialization/Converters/RangeOrPlaceholderRangeConverter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ public override void WriteJson(JsonWriter writer, RangeOrPlaceholderRange? value
3636
{
3737
var obj = (JToken.ReadFrom(reader) as JObject)!;
3838
return obj.ContainsKey("placeholder")
39-
? new RangeOrPlaceholderRange(obj.ToObject<PlaceholderRange>())
39+
? new RangeOrPlaceholderRange(obj.ToObject<PlaceholderRange>(serializer))
4040
: obj.ContainsKey("defaultBehavior")
4141
? new RangeOrPlaceholderRange(
42-
obj.ToObject<RenameDefaultBehavior>()
42+
obj.ToObject<RenameDefaultBehavior>(serializer)
4343
)
4444
: new RangeOrPlaceholderRange(
45-
obj.ToObject<Range>()
45+
obj.ToObject<Range>(serializer)
4646
);
4747
}
4848

src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public override SemanticTokensFullOrDelta ReadJson(
3030
var obj = JObject.Load(reader);
3131
if (obj.ContainsKey("data"))
3232
{
33-
return new SemanticTokensFullOrDelta(obj.ToObject<SemanticTokens>());
33+
return new SemanticTokensFullOrDelta(obj.ToObject<SemanticTokens>(serializer));
3434
}
3535

36-
return new SemanticTokensFullOrDelta(obj.ToObject<SemanticTokensDelta>());
36+
return new SemanticTokensFullOrDelta(obj.ToObject<SemanticTokensDelta>(serializer));
3737
}
3838

3939
public override bool CanRead => true;

src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaPartialResultConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public override SemanticTokensFullOrDeltaPartialResult ReadJson(
3030
var obj = JObject.Load(reader);
3131
if (obj.ContainsKey("data"))
3232
{
33-
return new SemanticTokensFullOrDeltaPartialResult(obj.ToObject<SemanticTokensPartialResult>());
33+
return new SemanticTokensFullOrDeltaPartialResult(obj.ToObject<SemanticTokensPartialResult>(serializer));
3434
}
3535

36-
return new SemanticTokensFullOrDeltaPartialResult(obj.ToObject<SemanticTokensDeltaPartialResult>());
36+
return new SemanticTokensFullOrDeltaPartialResult(obj.ToObject<SemanticTokensDeltaPartialResult>(serializer));
3737
}
3838

3939
public override bool CanRead => true;

src/Protocol/Serialization/Converters/SymbolInformationOrDocumentSymbolConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public override SymbolInformationOrDocumentSymbol ReadJson(
3232
// SymbolInformation has property location, DocumentSymbol does not.
3333
if (result["location"] != null)
3434
{
35-
return new SymbolInformationOrDocumentSymbol(result.ToObject<SymbolInformation>());
35+
return new SymbolInformationOrDocumentSymbol(result.ToObject<SymbolInformation>(serializer));
3636
}
3737

38-
return new SymbolInformationOrDocumentSymbol(result.ToObject<DocumentSymbol>());
38+
return new SymbolInformationOrDocumentSymbol(result.ToObject<DocumentSymbol>(serializer));
3939
}
4040

4141
public override bool CanRead => true;

src/Protocol/Serialization/Converters/TextEditConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public override TextEdit ReadJson(JsonReader reader, Type objectType, TextEdit e
3131
if (result["annotationId"] is { Type: JTokenType.String } annotation)
3232
{
3333
edit = new AnnotatedTextEdit() {
34-
AnnotationId = annotation.ToObject<ChangeAnnotationIdentifier>()
34+
AnnotationId = annotation.ToObject<ChangeAnnotationIdentifier>(serializer)
3535
};
3636
}
3737
else
@@ -41,7 +41,7 @@ public override TextEdit ReadJson(JsonReader reader, Type objectType, TextEdit e
4141

4242
if (result["range"] is { Type: JTokenType.Object } range)
4343
{
44-
edit = edit with { Range = range.ToObject<Range>()};
44+
edit = edit with { Range = range.ToObject<Range>(serializer)};
4545
}
4646

4747
if (result["newText"] is { Type: JTokenType.String } newText)

src/Protocol/Serialization/Converters/TextEditOrInsertReplaceEditConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ public override TextEditOrInsertReplaceEdit ReadJson(JsonReader reader, Type obj
3131
var command = result["insert"];
3232
if (command?.Type == JTokenType.String)
3333
{
34-
return new TextEditOrInsertReplaceEdit(result.ToObject<InsertReplaceEdit>());
34+
return new TextEditOrInsertReplaceEdit(result.ToObject<InsertReplaceEdit>(serializer));
3535
}
3636

37-
return new TextEditOrInsertReplaceEdit(result.ToObject<TextEdit>());
37+
return new TextEditOrInsertReplaceEdit(result.ToObject<TextEdit>(serializer));
3838
}
3939

4040
public override bool CanRead => true;

src/Protocol/Serialization/Converters/ValueTupleContractResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal class ValueTupleContractResolver<T1, T2> : JsonConverter<(T1, T2)>
1111
public override (T1, T2) ReadJson(JsonReader reader, Type objectType, (T1, T2) existingValue, bool hasExistingValue, JsonSerializer serializer)
1212
{
1313
var a = JArray.Load(reader);
14-
return ( a.ToObject<T1>(), a.ToObject<T2>() );
14+
return ( a.ToObject<T1>(serializer), a.ToObject<T2>(serializer) );
1515
}
1616
}
1717
}

src/Protocol/Serialization/Converters/WorkspaceEditDocumentChangeConverter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ public override WorkspaceEditDocumentChange ReadJson(
2626
switch (kind)
2727
{
2828
case "create":
29-
return new WorkspaceEditDocumentChange(obj.ToObject<CreateFile>());
29+
return new WorkspaceEditDocumentChange(obj.ToObject<CreateFile>(serializer));
3030
case "rename":
31-
return new WorkspaceEditDocumentChange(obj.ToObject<RenameFile>());
31+
return new WorkspaceEditDocumentChange(obj.ToObject<RenameFile>(serializer));
3232
case "delete":
33-
return new WorkspaceEditDocumentChange(obj.ToObject<DeleteFile>());
33+
return new WorkspaceEditDocumentChange(obj.ToObject<DeleteFile>(serializer));
3434
default:
3535
throw new NotSupportedException("Object with " + kind + " is not supported");
3636
}
3737
}
3838

39-
return new WorkspaceEditDocumentChange(obj.ToObject<TextDocumentEdit>());
39+
return new WorkspaceEditDocumentChange(obj.ToObject<TextDocumentEdit>(serializer));
4040
}
4141

4242
public override bool CanRead => true;

src/Protocol/Serialization/Converters/WorkspaceFolderOrUriConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public override WorkspaceFolderOrUri ReadJson(
3232
var obj = JObject.Load(reader);
3333
if (obj.ContainsKey("name"))
3434
{
35-
return new WorkspaceFolderOrUri(obj.ToObject<WorkspaceFolder>());
35+
return new WorkspaceFolderOrUri(obj.ToObject<WorkspaceFolder>(serializer));
3636
}
3737

38-
return new WorkspaceFolderOrUri(obj.ToObject<DocumentUri>());
38+
return new WorkspaceFolderOrUri(obj.ToObject<DocumentUri>(serializer));
3939
}
4040

4141
return new WorkspaceFolderOrUri("");

src/Server/LanguageServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ out GeneralClientCapabilities generalCapabilities
419419
{
420420
if (request.Capabilities.SelectToken(group.Key) is JObject capabilityData)
421421
{
422-
var capability = capabilityData.ToObject(capabilityType) as ICapability;
422+
var capability = capabilityData.ToObject(capabilityType, _serializer.JsonSerializer) as ICapability;
423423
_supportedCapabilities.Add(capability!);
424424
}
425425
}

test/Generation.Tests/LspFeatureTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ public override StringOrOutlayHintLabelParts ReadJson(
358358
if (reader.TokenType == JsonToken.StartArray)
359359
{
360360
var result = JArray.Load(reader);
361-
return new StringOrOutlayHintLabelParts(result.ToObject<Container<OutlayHintLabelPart>>());
361+
return new StringOrOutlayHintLabelParts(result.ToObject<Container<OutlayHintLabelPart>>(serializer));
362362
}
363363
364364
if (reader.TokenType == JsonToken.String)

test/Lsp.Integration.Tests/ExtensionTests.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Microsoft.Extensions.DependencyInjection;
88
using Newtonsoft.Json.Linq;
99
using NSubstitute;
10+
using OmniSharp.Extensions.JsonRpc;
1011
using OmniSharp.Extensions.JsonRpc.Testing;
1112
using OmniSharp.Extensions.LanguageProtocol.Testing;
1213
using OmniSharp.Extensions.LanguageServer.Client;
@@ -67,12 +68,14 @@ public async Task Should_Support_Custom_Capabilities()
6768
);
6869

6970
{
70-
var capability = client.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"].ToObject<UnitTestCapability>();
71+
var capability = client.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"]
72+
.ToObject<UnitTestCapability>(client.Services.GetRequiredService<ISerializer>().JsonSerializer);
7173
capability.Property.Should().Be("Abcd");
7274
}
7375

7476
{
75-
var capability = server.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"].ToObject<UnitTestCapability>();
77+
var capability = server.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"]
78+
.ToObject<UnitTestCapability>(server.Services.GetRequiredService<ISerializer>().JsonSerializer);
7679
capability.Property.Should().Be("Abcd");
7780
}
7881

@@ -127,7 +130,8 @@ public async Task Should_Support_Custom_Capabilities_Using_Json()
127130
);
128131

129132
{
130-
var capability = server.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"].ToObject<UnitTestCapability>();
133+
var capability = server.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"]
134+
.ToObject<UnitTestCapability>(server.Services.GetRequiredService<ISerializer>().JsonSerializer);
131135
capability.Property.Should().Be("Abcd");
132136
}
133137

@@ -175,14 +179,16 @@ public async Task Should_Support_Custom_Static_Options()
175179
);
176180

177181
{
178-
var capability = server.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"].ToObject<UnitTestCapability>();
182+
var capability = server.ClientSettings.Capabilities!.Workspace!.ExtensionData["unitTests"]
183+
.ToObject<UnitTestCapability>(server.Services.GetRequiredService<ISerializer>().JsonSerializer);
179184
capability.Property.Should().Be("Abcd");
180185
}
181186

182187
{
183188
server.ServerSettings.Capabilities.ExtensionData["unitTestDiscovery"].Should().NotBeNull();
184189
server.ServerSettings.Capabilities.ExtensionData["unitTestDiscovery"]
185-
.ToObject<UnitTestRegistrationOptions.StaticOptions>().SupportsDebugging.Should().BeTrue();
190+
.ToObject<UnitTestRegistrationOptions.StaticOptions>(server.Services.GetRequiredService<ISerializer>().JsonSerializer)
191+
.SupportsDebugging.Should().BeTrue();
186192
}
187193

188194
{

0 commit comments

Comments
 (0)