You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is a problem when it tries to process a discriminated union. If you have a union type parametrized by another Never-like union (type Never = Never of Never) the function responsible for calculating the null value - System.Text.Json.Serialization.Helpers.tryGetNullValue - enters into infinite recursion. Maybe it needs to keep track of visited types and do an early exit.
Exception:
...
at System.Text.Json.Serialization.Helpers.tryGetNullValue(System.Text.Json.Serialization.JsonFSharpOptions, System.Type)
at System.Text.Json.Serialization.Helpers.tryGetNullValue(System.Text.Json.Serialization.JsonFSharpOptions, System.Type)
...
...
...
at System.Text.Json.Serialization.Helpers.tryGetNullValue(System.Text.Json.Serialization.JsonFSharpOptions, System.Type)
at System.Text.Json.Serialization.Helpers.tryGetNullValue(System.Text.Json.Serialization.JsonFSharpOptions, System.Type)
at <StartupCode$FSharp-SystemTextJson>.$Union.mapping@1-2[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Text.Json.JsonSerializerOptions, System.Text.Json.Serialization.JsonUnionConverter`1<System.__Canon>, System.Collections.Generic.IReadOnlyDictionary`2<System.String,System.Text.Json.Serialization.JsonName[]>, System.Collections.Generic.Dictionary`2<System.String,Int32>, System.Reflection.PropertyInfo, System.String, Int32)
at <StartupCode$FSharp-SystemTextJson>.$Union.mapping@1-1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IDictionary`2<System.Type,System.Text.Json.Serialization.JsonFSharpOptions>, System.Text.Json.JsonSerializerOptions, System.Text.Json.Serialization.JsonUnionConverter`1<System.__Canon>, Microsoft.FSharp.Reflection.UnionCaseInfo)
...
The code to reproduce the error:
open System.Text.Json
open System.Text.Json.Serialization
type Never = Never of Never
type MyChoice = MyChoice of Choice<int, Never>
let myChoice = MyChoice (Choice1Of2 10)
let options = JsonSerializerOptions ()
options.Converters.Add (JsonFSharpConverter ())
let json = JsonSerializer.Serialize (myChoice, options)
printfn "%s" json
The text was updated successfully, but these errors were encountered:
There is a problem when it tries to process a discriminated union. If you have a union type parametrized by another Never-like union (
type Never = Never of Never
) the function responsible for calculating the null value -System.Text.Json.Serialization.Helpers.tryGetNullValue
- enters into infinite recursion. Maybe it needs to keep track of visited types and do an early exit.Exception:
The code to reproduce the error:
The text was updated successfully, but these errors were encountered: