Skip to content

Commit 1160377

Browse files
committed
Clean up warnings and obsolete syntax
1 parent ba4c484 commit 1160377

9 files changed

Lines changed: 63 additions & 62 deletions

File tree

src/FSharp.SystemTextJson/Collection.fs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ type JsonWrappedStringMapConverter<'K, 'V when 'K : comparison>() =
148148
writer.WriteStartObject()
149149
for kv in value do
150150
let k =
151-
let k = (unwrap kv.Key).[0] :?> string
151+
let k = (unwrap kv.Key)[0] :?> string
152152
match options.DictionaryKeyPolicy with
153153
| null -> k
154154
| p -> p.ConvertName k
@@ -195,20 +195,20 @@ type JsonMapConverter() =
195195
TypeCache.isUnion ty &&
196196
let cases = FSharpType.GetUnionCases(ty, true)
197197
cases.Length = 1 &&
198-
let fields = cases.[0].GetFields()
198+
let fields = cases[0].GetFields()
199199
fields.Length = 1 &&
200-
fields.[0].PropertyType = typeof<string>
200+
fields[0].PropertyType = typeof<string>
201201

202202
static member internal CanConvert(typeToConvert: Type) =
203203
TypeCache.isMap typeToConvert
204204

205205
static member internal CreateConverter(typeToConvert: Type) =
206206
let genArgs = typeToConvert.GetGenericArguments()
207207
let ty =
208-
if genArgs.[0] = typeof<string> then
208+
if genArgs[0] = typeof<string> then
209209
typedefof<JsonStringMapConverter<_>>
210-
.MakeGenericType([|genArgs.[1]|])
211-
elif isWrappedString genArgs.[0] then
210+
.MakeGenericType([|genArgs[1]|])
211+
elif isWrappedString genArgs[0] then
212212
typedefof<JsonWrappedStringMapConverter<_,_>>
213213
.MakeGenericType(genArgs)
214214
else

src/FSharp.SystemTextJson/FSharp.SystemTextJson.fsproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
4-
<TargetFrameworks>netstandard2.0</TargetFrameworks>
4+
<TargetFramework>netstandard2.0</TargetFramework>
55
<Description>Provides F# union and record support for System.Text.Json</Description>
66
<Authors>Loic Denuziere</Authors>
77
<PackageLicenseExpression>MIT</PackageLicenseExpression>

src/FSharp.SystemTextJson/Helpers.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ let readExpecting expectedTokenType expectedLabel (reader: byref<Utf8JsonReader>
2020
fail expectedLabel &reader ty
2121

2222
let inline readIsExpectingPropertyNamed (expectedPropertyName: string) (reader: byref<Utf8JsonReader>) ty =
23-
(reader.Read()) && reader.TokenType = JsonTokenType.PropertyName && (reader.ValueTextEquals expectedPropertyName)
23+
reader.Read() && reader.TokenType = JsonTokenType.PropertyName && (reader.ValueTextEquals expectedPropertyName)
2424

2525
let readExpectingPropertyNamed (expectedPropertyName: string) (reader: byref<Utf8JsonReader>) ty =
2626
if not <| readIsExpectingPropertyNamed expectedPropertyName &reader ty then
@@ -51,7 +51,7 @@ let rec isNullableFieldType (fsOptions: JsonFSharpOptions) (ty: Type) =
5151
fsOptions.AllowNullFields
5252
|| isNullableUnion ty
5353
|| (fsOptions.UnionEncoding.HasFlag JsonUnionEncoding.UnwrapOption && isValueOptionType ty)
54-
|| (isSkippableType ty && isNullableFieldType fsOptions (ty.GetGenericArguments().[0]))
54+
|| (isSkippableType ty && isNullableFieldType fsOptions (ty.GetGenericArguments()[0]))
5555
|| (ty = typeof<Unit>)
5656

5757
let isSkippableFieldType (fsOptions: JsonFSharpOptions) (ty: Type) =

src/FSharp.SystemTextJson/Record.fs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
namespace System.Text.Json.Serialization
22

3+
#nowarn "44" // JsonSerializerOptions.IgnoreNullValues is obsolete for users but still relevant for converters.
4+
35
open System
46
open System.Collections.Generic
57
open System.Text.Json
@@ -73,8 +75,8 @@ type JsonRecordConverter<'T>(options: JsonSerializerOptions, fsOptions: JsonFSha
7375
fieldProps
7476
|> Array.iteri (fun i field ->
7577
if isSkippableType field.Type || isValueOptionType field.Type then
76-
let case = FSharpType.GetUnionCases(field.Type).[0]
77-
arr.[i] <- FSharpValue.MakeUnion(case, [||])
78+
let case = FSharpType.GetUnionCases(field.Type)[0]
79+
arr[i] <- FSharpValue.MakeUnion(case, [||])
7880
)
7981
arr
8082

@@ -83,7 +85,7 @@ type JsonRecordConverter<'T>(options: JsonSerializerOptions, fsOptions: JsonFSha
8385
let d = Dictionary(StringComparer.OrdinalIgnoreCase)
8486
fieldProps |> Array.iteri (fun i f ->
8587
if not f.Ignore then
86-
d.[f.Name] <- struct (i, f))
88+
d[f.Name] <- struct (i, f))
8789
ValueSome d
8890
else
8991
ValueNone
@@ -94,7 +96,7 @@ type JsonRecordConverter<'T>(options: JsonSerializerOptions, fsOptions: JsonFSha
9496
let mutable found = ValueNone
9597
let mutable i = 0
9698
while found.IsNone && i < fieldCount do
97-
let p = fieldProps.[i]
99+
let p = fieldProps[i]
98100
if reader.ValueTextEquals(p.Name) then
99101
found <- ValueSome (struct (i, p))
100102
else
@@ -130,15 +132,15 @@ type JsonRecordConverter<'T>(options: JsonSerializerOptions, fsOptions: JsonFSha
130132
let msg = sprintf "%s.%s was expected to be of type %s, but was null." recordType.Name p.Name p.Type.Name
131133
raise (JsonException msg)
132134
else
133-
fields.[i] <- JsonSerializer.Deserialize(&reader, p.Type, options)
135+
fields[i] <- JsonSerializer.Deserialize(&reader, p.Type, options)
134136
| _ ->
135137
reader.Skip()
136138
| _ -> ()
137139

138140
if requiredFieldCount < minExpectedFieldCount && not options.IgnoreNullValues then
139141
for i in 0..fieldCount-1 do
140-
if isNull fields.[i] && fieldProps.[i].MustBePresent then
141-
raise (JsonException("Missing field for record type " + recordType.FullName + ": " + fieldProps.[i].Name))
142+
if isNull fields[i] && fieldProps[i].MustBePresent then
143+
raise (JsonException("Missing field for record type " + recordType.FullName + ": " + fieldProps[i].Name))
142144

143145
ctor fields :?> 'T
144146

@@ -149,8 +151,8 @@ type JsonRecordConverter<'T>(options: JsonSerializerOptions, fsOptions: JsonFSha
149151
member internal _.WriteRestOfObject(writer, value, options) =
150152
let values = dector value
151153
for i in 0..fieldProps.Length-1 do
152-
let v = values.[i]
153-
let p = fieldProps.[i]
154+
let v = values[i]
155+
let p = fieldProps[i]
154156
if not p.Ignore && not (options.IgnoreNullValues && isNull v) && not (p.IsSkip v) then
155157
writer.WritePropertyName(p.Name)
156158
JsonSerializer.Serialize(writer, v, p.Type, options)

src/FSharp.SystemTextJson/Tuple.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,21 @@ type JsonTupleConverter<'T>(fsOptions) =
3131
expectAlreadyRead JsonTokenType.StartArray "array" &reader typeToConvert
3232
let elts = Array.zeroCreate fieldProps.Length
3333
for i in 0..fieldProps.Length-1 do
34-
let p = fieldProps.[i]
34+
let p = fieldProps[i]
3535
reader.Read() |> ignore
3636
let value = JsonSerializer.Deserialize(&reader, p.Type, options)
3737
if p.NeedsNullChecking && isNull (box value) then
3838
let msg = sprintf "Unexpected null inside tuple-array. Expected type %s, but got null." p.Type.Name
3939
raise (JsonException msg)
40-
elts.[i] <- value
40+
elts[i] <- value
4141
readExpecting JsonTokenType.EndArray "end of array" &reader typeToConvert
4242
ctor elts :?> 'T
4343

4444
override _.Write(writer, value, options) =
4545
writer.WriteStartArray()
4646
let values = reader value
4747
for i in 0..fieldProps.Length-1 do
48-
JsonSerializer.Serialize(writer, values.[i], fieldProps.[i].Type, options)
48+
JsonSerializer.Serialize(writer, values[i], fieldProps[i].Type, options)
4949
writer.WriteEndArray()
5050

5151
type JsonTupleConverter(fsOptions) =

src/FSharp.SystemTextJson/Union.fs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
namespace System.Text.Json.Serialization
22

3+
#nowarn "44" // JsonSerializerOptions.IgnoreNullValues is obsolete for users but still relevant for converters.
4+
35
open System
46
open System.Collections.Generic
5-
open System.Runtime.Serialization
67
open System.Text.Json
78
open System.Text.Json.Serialization.Helpers
89
open FSharp.Reflection
@@ -74,17 +75,17 @@ type JsonUnionConverter<'T>
7475
if options.PropertyNameCaseInsensitive then
7576
let d = Dictionary(StringComparer.OrdinalIgnoreCase)
7677
fields |> Array.iteri (fun i f ->
77-
d.[f.Name] <- struct (i, f))
78+
d[f.Name] <- struct (i, f))
7879
ValueSome d
7980
else
8081
ValueNone
8182
let unwrappedRecordField =
8283
if namedFields
8384
&& fields.Length = 1
84-
&& FSharpType.IsRecord(fields.[0].Type, true)
85+
&& FSharpType.IsRecord(fields[0].Type, true)
8586
&& fsOptions.UnionEncoding.HasFlag JsonUnionEncoding.UnwrapRecordCases
8687
then
87-
JsonRecordConverter.CreateConverter(fields.[0].Type, options, fsOptions, overrides)
88+
JsonRecordConverter.CreateConverter(fields[0].Type, options, fsOptions, overrides)
8889
|> box
8990
:?> IRecordConverter
9091
|> ValueSome
@@ -99,8 +100,8 @@ type JsonUnionConverter<'T>
99100
fields
100101
|> Array.iteri (fun i field ->
101102
if isSkippableType field.Type || isValueOptionType field.Type then
102-
let case = FSharpType.GetUnionCases(field.Type).[0]
103-
arr.[i] <- FSharpValue.MakeUnion(case, [||])
103+
let case = FSharpType.GetUnionCases(field.Type)[0]
104+
arr[i] <- FSharpValue.MakeUnion(case, [||])
104105
)
105106
arr
106107
{
@@ -151,7 +152,7 @@ type JsonUnionConverter<'T>
151152
| ValueNone -> ()
152153
| ValueSome fields ->
153154
for KeyValue(n, _) in fields do
154-
dict.[n] <- c
155+
dict[n] <- c
155156
ValueSome dict
156157
else
157158
ValueNone
@@ -160,7 +161,7 @@ type JsonUnionConverter<'T>
160161
if fsOptions.UnionTagCaseInsensitive then
161162
let dict = Dictionary(StringComparer.OrdinalIgnoreCase)
162163
for c in cases do
163-
dict.[c.Name] <- c
164+
dict[c.Name] <- c
164165
ValueSome dict
165166
else
166167
ValueNone
@@ -172,7 +173,7 @@ type JsonUnionConverter<'T>
172173
let mutable found = ValueNone
173174
let mutable i = 0
174175
while found.IsNone && i < cases.Length do
175-
let case = cases.[i]
176+
let case = cases[i]
176177
if reader.ValueTextEquals(case.Name) then
177178
found <- ValueSome case
178179
else
@@ -195,7 +196,7 @@ type JsonUnionConverter<'T>
195196
let mutable found = ValueNone
196197
let mutable i = 0
197198
while found.IsNone && i < cases.Length do
198-
let case = cases.[i]
199+
let case = cases[i]
199200
if case.Name.Equals(tag, StringComparison.OrdinalIgnoreCase) then
200201
found <- ValueSome case
201202
else
@@ -218,7 +219,7 @@ type JsonUnionConverter<'T>
218219
let mutable found = ValueNone
219220
let mutable i = 0
220221
while found.IsNone && i < allFields.Length do
221-
let struct (fieldName, case) = allFields.[i]
222+
let struct (fieldName, case) = allFields[i]
222223
if reader.ValueTextEquals(fieldName) then
223224
found <- ValueSome case
224225
else
@@ -240,7 +241,7 @@ type JsonUnionConverter<'T>
240241
let mutable found = ValueNone
241242
let mutable i = 0
242243
while found.IsNone && i < case.Fields.Length do
243-
let field = case.Fields.[i]
244+
let field = case.Fields[i]
244245
if reader.ValueTextEquals(field.Name) then
245246
found <- ValueSome (struct (i, field))
246247
else
@@ -263,7 +264,7 @@ type JsonUnionConverter<'T>
263264
let fieldCount = case.Fields.Length
264265
let fields = Array.copy case.DefaultFields
265266
for i in 0..fieldCount-1 do
266-
fields.[i] <- readField &reader case case.Fields.[i] options
267+
fields[i] <- readField &reader case case.Fields[i] options
267268
readExpecting JsonTokenType.EndArray "end of array" &reader ty
268269
case.Ctor fields :?> 'T
269270

@@ -272,7 +273,6 @@ type JsonUnionConverter<'T>
272273
readFieldsAsRestOfArray &reader case options
273274

274275
let coreReadFieldsAsRestOfObject (reader: byref<Utf8JsonReader>) (case: Case) (skipFirstRead: bool) (options: JsonSerializerOptions) =
275-
let fieldCount = case.Fields.Length
276276
let fields = Array.copy case.DefaultFields
277277
let mutable cont = true
278278
let mutable fieldsFound = 0
@@ -286,7 +286,7 @@ type JsonUnionConverter<'T>
286286
match fieldIndexByName &reader case with
287287
| ValueSome (i, f) ->
288288
fieldsFound <- fieldsFound + 1
289-
fields.[i] <- readField &reader case f options
289+
fields[i] <- readField &reader case f options
290290
| _ ->
291291
reader.Skip()
292292
| _ -> ()
@@ -314,7 +314,7 @@ type JsonUnionConverter<'T>
314314
case.Ctor [| field |] :?> 'T
315315
| ValueNone ->
316316
if case.UnwrappedSingleField then
317-
let field = readField &reader case case.Fields.[0] options
317+
let field = readField &reader case case.Fields[0] options
318318
case.Ctor [| field |] :?> 'T
319319
elif namedFields then
320320
readFieldsAsObject &reader case options
@@ -397,7 +397,7 @@ type JsonUnionConverter<'T>
397397
let fields = case.Fields
398398
let values = case.Dector value
399399
for i in 0..fields.Length-1 do
400-
JsonSerializer.Serialize(writer, values.[i], fields.[i].Type, options)
400+
JsonSerializer.Serialize(writer, values[i], fields[i].Type, options)
401401
writer.WriteEndArray()
402402

403403
let writeFieldsAsArray (writer: Utf8JsonWriter) (case: Case) (value: obj) (options: JsonSerializerOptions) =
@@ -408,8 +408,8 @@ type JsonUnionConverter<'T>
408408
let fields = case.Fields
409409
let values = case.Dector value
410410
for i in 0..fields.Length-1 do
411-
let f = fields.[i]
412-
let v = values.[i]
411+
let f = fields[i]
412+
let v = values[i]
413413
if not (options.IgnoreNullValues && isNull v) && not (f.IsSkip v) then
414414
writer.WritePropertyName(f.Name)
415415
JsonSerializer.Serialize(writer, v, f.Type, options)
@@ -418,7 +418,7 @@ type JsonUnionConverter<'T>
418418
let writeFieldsAsRestOfObject (writer: Utf8JsonWriter) (case: Case) (value: obj) (options: JsonSerializerOptions) =
419419
match case.UnwrappedRecordField with
420420
| ValueSome conv ->
421-
conv.WriteRestOfObject(writer, (case.Dector value).[0], options)
421+
conv.WriteRestOfObject(writer, (case.Dector value)[0], options)
422422
| ValueNone ->
423423
coreWriteFieldsAsRestOfObject writer case value options
424424

@@ -428,7 +428,7 @@ type JsonUnionConverter<'T>
428428

429429
let writeFields (writer: Utf8JsonWriter) case value (options: JsonSerializerOptions) =
430430
if case.UnwrappedSingleField then
431-
JsonSerializer.Serialize(writer, (case.Dector value).[0], case.Fields.[0].Type, options)
431+
JsonSerializer.Serialize(writer, (case.Dector value)[0], case.Fields[0].Type, options)
432432
elif namedFields then
433433
writeFieldsAsObject writer case value options
434434
else
@@ -463,7 +463,7 @@ type JsonUnionConverter<'T>
463463

464464
override _.Read(reader, _typeToConvert, options) =
465465
match reader.TokenType with
466-
| JsonTokenType.Null when Helpers.isNullableUnion ty ->
466+
| JsonTokenType.Null when isNullableUnion ty ->
467467
(null : obj) :?> 'T
468468
| JsonTokenType.String when unwrapFieldlessTags ->
469469
let case = getCaseByTagReader &reader
@@ -484,7 +484,7 @@ type JsonUnionConverter<'T>
484484
if isNull value then writer.WriteNullValue() else
485485

486486
let tag = tagReader value
487-
let case = cases.[tag]
487+
let case = cases[tag]
488488
if unwrapFieldlessTags && case.Fields.Length = 0 then
489489
writer.WriteStringValue(case.Name)
490490
else
@@ -543,7 +543,7 @@ type JsonUnwrappedUnionConverter<'T, 'FieldT>(case: UnionCaseInfo) =
543543
:?> 'T
544544

545545
override _.Write(writer, value, options) =
546-
JsonSerializer.Serialize<'FieldT>(writer, (getter value).[0] :?> 'FieldT, options)
546+
JsonSerializer.Serialize<'FieldT>(writer, (getter value)[0] :?> 'FieldT, options)
547547

548548
type JsonUnionConverter(fsOptions: JsonFSharpOptions) =
549549
inherit JsonConverterFactory()
@@ -602,11 +602,11 @@ type JsonUnionConverter(fsOptions: JsonFSharpOptions) =
602602
let isUnwrappedSingleCase =
603603
fsOptions.UnionEncoding.HasFlag JsonUnionEncoding.UnwrapSingleCaseUnions
604604
&& cases.Length = 1
605-
&& (fields <- cases.[0].GetFields(); fields.Length = 1)
605+
&& (fields <- cases[0].GetFields(); fields.Length = 1)
606606
if isUnwrappedSingleCase then
607-
let case = cases.[0]
607+
let case = cases[0]
608608
jsonUnwrappedUnionConverterTy
609-
.MakeGenericType([|typeToConvert; fields.[0].PropertyType|])
609+
.MakeGenericType([|typeToConvert; fields[0].PropertyType|])
610610
.GetConstructor([|caseTy|])
611611
.Invoke([|case|])
612612
:?> JsonConverter

0 commit comments

Comments
 (0)