Skip to content

Commit 63f7b18

Browse files
committed
Remove frequency when list contains one generator
1 parent 3c41b0d commit 63f7b18

4 files changed

Lines changed: 23 additions & 55 deletions

File tree

src/ppx_deriving_qcheck/README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,9 +242,7 @@ let gen_tree =
242242
QCheck.Gen.sized @@
243243
(QCheck.Gen.fix
244244
(fun self -> function
245-
| 0 ->
246-
QCheck.Gen.frequency
247-
[(1, (QCheck.Gen.map (fun gen0 -> Leaf gen0) QCheck.Gen.int))]
245+
| 0 -> QCheck.Gen.map (fun gen0 -> Leaf gen0) QCheck.Gen.int
248246
| n ->
249247
QCheck.Gen.frequency
250248
[(1,

src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ module O = G.Observable
3838
let open Gen in
3939
sized
4040
@@ fix (fun self -> function
41-
| 0 -> frequency [ (1, pure Leaf) ]
41+
| 0 -> pure Leaf
4242
| n ->
4343
frequency
4444
[

src/ppx_deriving_qcheck/qcheck_generators.ml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ let array ~loc e = [%expr QCheck.Gen.array [%e e]]
3535

3636
let pure ~loc x = [%expr QCheck.Gen.pure [%e x]]
3737

38-
let frequency ~loc l = [%expr QCheck.Gen.frequency [%e l]]
38+
let frequency ~loc l =
39+
match l with
40+
| [%expr [([%e? _], [%e? x])]] -> x
41+
| _ ->
42+
[%expr QCheck.Gen.frequency [%e l]]
3943

4044
let map ~loc pat expr gen =
4145
[%expr QCheck.Gen.map (fun [%p pat] -> [%e expr]) [%e gen]]

test/ppx_deriving_qcheck/deriver/test.ml

Lines changed: 16 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -167,19 +167,12 @@ let test_alpha () =
167167
[
168168
[%stri let gen gen_a = gen_a];
169169
[%stri let gen gen_a = QCheck.Gen.list gen_a];
170-
[%stri
171-
let gen gen_a =
172-
QCheck.Gen.frequency
173-
[ (1, QCheck.Gen.map (fun gen0 -> A gen0) gen_a) ]];
170+
[%stri let gen gen_a = QCheck.Gen.map (fun gen0 -> A gen0) gen_a];
174171
[%stri
175172
let gen gen_a gen_b =
176-
QCheck.Gen.frequency
177-
[
178-
( 1,
179-
QCheck.Gen.map
180-
(fun (gen0, gen1) -> A (gen0, gen1))
181-
(QCheck.Gen.pair gen_a gen_b) );
182-
]];
173+
QCheck.Gen.map
174+
(fun (gen0, gen1) -> A (gen0, gen1))
175+
(QCheck.Gen.pair gen_a gen_b)];
183176
[%stri
184177
let gen gen_left gen_right =
185178
QCheck.Gen.map
@@ -189,9 +182,7 @@ let test_alpha () =
189182
let gen_tree gen_a =
190183
QCheck.Gen.sized
191184
@@ QCheck.Gen.fix (fun self -> function
192-
| 0 ->
193-
QCheck.Gen.frequency
194-
[ (1, QCheck.Gen.map (fun gen0 -> Leaf gen0) gen_a) ]
185+
| 0 -> QCheck.Gen.map (fun gen0 -> Leaf gen0) gen_a
195186
| n ->
196187
QCheck.Gen.frequency
197188
[
@@ -278,10 +269,7 @@ let test_dependencies () =
278269
let test_konstr () =
279270
let expected =
280271
[
281-
[%stri
282-
let gen =
283-
QCheck.Gen.frequency
284-
[ (1, QCheck.Gen.map (fun gen0 -> A gen0) QCheck.Gen.int) ]];
272+
[%stri let gen = QCheck.Gen.map (fun gen0 -> A gen0) QCheck.Gen.int];
285273
[%stri
286274
let gen =
287275
QCheck.Gen.frequency
@@ -433,7 +421,7 @@ let test_tree () =
433421
let gen_tree =
434422
QCheck.Gen.sized
435423
@@ QCheck.Gen.fix (fun self -> function
436-
| 0 -> QCheck.Gen.frequency [ (1, QCheck.Gen.pure Leaf) ]
424+
| 0 -> QCheck.Gen.pure Leaf
437425
| n ->
438426
QCheck.Gen.frequency
439427
[
@@ -450,13 +438,7 @@ let test_tree () =
450438
let gen_expr =
451439
QCheck.Gen.sized
452440
@@ QCheck.Gen.fix (fun self -> function
453-
| 0 ->
454-
QCheck.Gen.frequency
455-
[
456-
( 1,
457-
QCheck.Gen.map (fun gen0 -> Value gen0) QCheck.Gen.int
458-
);
459-
]
441+
| 0 -> QCheck.Gen.map (fun gen0 -> Value gen0) QCheck.Gen.int
460442
| n ->
461443
QCheck.Gen.frequency
462444
[
@@ -503,13 +485,7 @@ let test_recursive () =
503485
let rec gen_expr () =
504486
QCheck.Gen.sized
505487
@@ QCheck.Gen.fix (fun self -> function
506-
| 0 ->
507-
QCheck.Gen.frequency
508-
[
509-
( 1,
510-
QCheck.Gen.map (fun gen0 -> Value gen0) (gen_value ())
511-
);
512-
]
488+
| 0 -> QCheck.Gen.map (fun gen0 -> Value gen0) (gen_value ())
513489
| n ->
514490
QCheck.Gen.frequency
515491
[
@@ -563,20 +539,16 @@ let test_forest () =
563539
[
564540
[%stri
565541
let rec gen_tree () =
566-
QCheck.Gen.frequency
567-
[
568-
( 1,
569-
QCheck.Gen.map
570-
(fun gen0 -> Node gen0)
571-
(QCheck.Gen.map
572-
(fun (gen0, gen1) -> (gen0, gen1))
573-
(QCheck.Gen.pair QCheck.Gen.int (gen_forest ()))) );
574-
]
542+
QCheck.Gen.map
543+
(fun gen0 -> Node gen0)
544+
(QCheck.Gen.map
545+
(fun (gen0, gen1) -> (gen0, gen1))
546+
(QCheck.Gen.pair QCheck.Gen.int (gen_forest ())))
575547

576548
and gen_forest () =
577549
QCheck.Gen.sized
578550
@@ QCheck.Gen.fix (fun self -> function
579-
| 0 -> QCheck.Gen.frequency [ (1, QCheck.Gen.pure Nil) ]
551+
| 0 -> QCheck.Gen.pure Nil
580552
| n ->
581553
QCheck.Gen.frequency
582554
[
@@ -800,13 +772,7 @@ let test_recursive_poly_variant () =
800772
let gen_tree =
801773
(QCheck.Gen.sized
802774
@@ QCheck.Gen.fix (fun self -> function
803-
| 0 ->
804-
QCheck.Gen.frequency
805-
[
806-
( 1,
807-
QCheck.Gen.map (fun gen0 -> `Leaf gen0) QCheck.Gen.int
808-
);
809-
]
775+
| 0 -> QCheck.Gen.map (fun gen0 -> `Leaf gen0) QCheck.Gen.int
810776
| n ->
811777
QCheck.Gen.frequency
812778
[

0 commit comments

Comments
 (0)