(* File "test.ml", line 3, characters 6-7: shadowing binding 'a' from File "test.ml", line 2, characters 9-10 *) let test a = let a = b in a (* File "test.ml", line 9, characters 4-5: shadowing binding 'b' from File "test.ml", line 7, characters 4-5 *) let b = c and b = d let b = e (* File "test.ml", line 12, characters 4-8: shadowing binding 'test' from File "test.ml", line 2, characters 4-8 File "test.ml", line 16, characters 4-5: shadowing binding 'c' from File "test.ml", line 13, characters 9-10 *) let test c = match d with | e -> c | c -> e (* File "test.ml", line 19, characters 16-17: shadowing binding 'a' from File "test.ml", line 19, characters 8-9 *) let rec a = let a = () in a (* File "test.ml", line 23, characters 7-8: shadowing binding 'd' from File "test.ml", line 24, characters 4-5 *) let rec a = (let d = c in ()) and d = ()