@@ -16,17 +16,21 @@ module Server =
1616
1717 let logger = LogProvider.getLoggerByName " LSP Server"
1818
19- let jsonRpcFormatter = new JsonMessageFormatter()
20- jsonRpcFormatter.JsonSerializer.NullValueHandling <- NullValueHandling.Ignore
21- jsonRpcFormatter.JsonSerializer.ConstructorHandling <- ConstructorHandling.AllowNonPublicDefaultConstructor
22- jsonRpcFormatter.JsonSerializer.MissingMemberHandling <- MissingMemberHandling.Ignore
23- jsonRpcFormatter.JsonSerializer.Converters.Add( StrictNumberConverter())
24- jsonRpcFormatter.JsonSerializer.Converters.Add( StrictStringConverter())
25- jsonRpcFormatter.JsonSerializer.Converters.Add( StrictBoolConverter())
26- jsonRpcFormatter.JsonSerializer.Converters.Add( SingleCaseUnionConverter())
27- jsonRpcFormatter.JsonSerializer.Converters.Add( OptionConverter())
28- jsonRpcFormatter.JsonSerializer.Converters.Add( ErasedUnionConverter())
29- jsonRpcFormatter.JsonSerializer.ContractResolver <- OptionAndCamelCasePropertyNamesContractResolver()
19+ let defaultJsonRpcFormatter () =
20+ let jsonRpcFormatter = new JsonMessageFormatter()
21+ jsonRpcFormatter.JsonSerializer.NullValueHandling <- NullValueHandling.Ignore
22+ jsonRpcFormatter.JsonSerializer.ConstructorHandling <- ConstructorHandling.AllowNonPublicDefaultConstructor
23+ jsonRpcFormatter.JsonSerializer.MissingMemberHandling <- MissingMemberHandling.Ignore
24+ jsonRpcFormatter.JsonSerializer.Converters.Add( StrictNumberConverter())
25+ jsonRpcFormatter.JsonSerializer.Converters.Add( StrictStringConverter())
26+ jsonRpcFormatter.JsonSerializer.Converters.Add( StrictBoolConverter())
27+ jsonRpcFormatter.JsonSerializer.Converters.Add( SingleCaseUnionConverter())
28+ jsonRpcFormatter.JsonSerializer.Converters.Add( OptionConverter())
29+ jsonRpcFormatter.JsonSerializer.Converters.Add( ErasedUnionConverter())
30+ jsonRpcFormatter.JsonSerializer.ContractResolver <- OptionAndCamelCasePropertyNamesContractResolver()
31+ jsonRpcFormatter
32+
33+ let jsonRpcFormatter = defaultJsonRpcFormatter()
3034
3135 let deserialize < 't > ( token : JToken ) = token.ToObject< 't>( jsonRpcFormatter.JsonSerializer)
3236 let serialize < 't > ( o : 't ) = JToken.FromObject( o, jsonRpcFormatter.JsonSerializer)
@@ -95,7 +99,7 @@ module Server =
9599 ( customizeRpc : IJsonRpcMessageHandler -> JsonRpc )
96100 =
97101
98- use jsonRpcHandler = new HeaderDelimitedMessageHandler( output, input, jsonRpcFormatter )
102+ use jsonRpcHandler = new HeaderDelimitedMessageHandler( output, input, defaultJsonRpcFormatter () )
99103 // Without overriding isFatalException, JsonRpc serializes exceptions and sends them to the client.
100104 // This is particularly bad for notifications such as textDocument/didChange which don't require a response,
101105 // and thus any exception that happens during e.g. text sync gets swallowed.
0 commit comments