(* a polymorphic variant of test3.ml; found a real bug once *)
let test =
let rec x = `A f
and f = function
| 0 -> 2
| n -> match x with `A g -> g 0
in
assert (f 1 = 2)