diff --git a/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml b/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml index 3df4b3da..4ba46d1f 100644 --- a/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml +++ b/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml @@ -875,6 +875,27 @@ let test_faulty_is_rec_typ_in_variant () = in check_eq ~expected ~actual "deriving rec type in a type constructor inside variant" +let test_faulty_is_rec_constr_decl () = + let expected = + [ + [%stri let rec gen_sized n = + match n with + | 0 -> QCheck.Gen.pure Foo + | _ -> + QCheck.Gen.frequency + [(1, (QCheck.Gen.pure Foo)); + (1, + (QCheck.Gen.map (fun gen0 -> Bar { baz = gen0 }) + (gen_sized (n / 2))))]]; + [%stri let gen = QCheck.Gen.sized gen_sized]; + [%stri let arb_sized n = QCheck.make @@ (gen_sized n)]; + [%stri let arb = QCheck.make @@ gen]; + ] + in + let actual = f @@ extract [%stri type t = Foo | Bar of { baz : t }] + in + check_eq ~expected ~actual "deriving rec type in a type constructor inside record" + let () = Alcotest.( run @@ -925,5 +946,9 @@ let () = "deriving rec type in a type constructor inside variant" `Quick test_faulty_is_rec_typ_in_variant; + test_case + "deriving rec type in a type constructor inside record" + `Quick + test_faulty_is_rec_constr_decl; ] ); ])