diff --git a/src/FsCheck/ReflectArbitrary.fs b/src/FsCheck/ReflectArbitrary.fs index 6a87a6e5..8440d2ae 100644 --- a/src/FsCheck/ReflectArbitrary.fs +++ b/src/FsCheck/ReflectArbitrary.fs @@ -190,9 +190,9 @@ module internal ReflectArbitrary = if Seq.isEmpty children then 0 elif Seq.exists ((=) t) children then 2 else 1 - let info,_ = FSharpValue.GetUnionFields(o,t) - let makeCase = FSharpValue.PreComputeUnionConstructor info - let readCase = FSharpValue.PreComputeUnionReader info + let info,_ = FSharpValue.GetUnionFields(o,t,true) + let makeCase = FSharpValue.PreComputeUnionConstructor(info,true) + let readCase = FSharpValue.PreComputeUnionReader(info,true) let childrenTypes = info.GetFields() |> Array.map ( fun x -> x.PropertyType ) let partitionCase t s0 (_,(_,children,make,_)) = match unionSize t children with diff --git a/tests/FsCheck.Test/Arbitrary.fs b/tests/FsCheck.Test/Arbitrary.fs index 83bba1df..bd5f6609 100644 --- a/tests/FsCheck.Test/Arbitrary.fs +++ b/tests/FsCheck.Test/Arbitrary.fs @@ -692,12 +692,20 @@ module Arbitrary = let ``Derive generator for private two value record``() = generate |> sample 10 |> ignore + [] + let ``Shrink for private two value record`` (DoNotShrink (value: PrivateRecord)) = + shrink value |> ignore + type PrivateUnion = private | Case1 | Case2 of string [] let ``Derive generator for private two case union``() = generate |> sample 10 |> ignore + [] + let ``Shrink for private two case union`` (DoNotShrink (value: PrivateUnion)) = + shrink value |> ignore + [] let ``should not crash on isCSharpDto issue #545``() = try