blob: 7d31856a7213a397fb278a88163124b5d5b3160f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
(* TEST
flags = " -principal -w +18+19 -warn-error +A ";
setup-ocamlc.byte-build-env;
ocamlc.byte;
check-ocamlc.byte-output;
*)
type c1 = < c1: c1 >
type c2 = < c1: c1; c2: c1; c3: c1; c4: c1; c5: c1; c6: c1 >
type c3 = < c1: c2; c2: c2; c3: c2; c4: c2; c5: c2; c6: c2 >
type c4 = < c1: c3; c2: c3; c3: c3; c4: c3; c5: c3; c6: c3 >
type c5 = < c1: c4; c2: c4; c3: c4; c4: c4; c5: c4; c6: c4 >
type c6 = < c1: c5; c2: c5; c3: c5; c4: c5; c5: c5; c6: c5 >
type c7 = < c1: c6; c2: c6; c3: c6; c4: c6; c5: c6; c6: c6 >
(* If you use this example, then checking the types themselves
takes a long time.
type c1 = < c1: c1; c2: c2; c3: c3; c4: c4; c5: c5; c6: c6 >
and c2 = < c1: c1; c2: c2; c3: c3; c4: c4; c5: c5; c6: c6 >
and c3 = < c1: c1; c2: c2; c3: c3; c4: c4; c5: c5; c6: c6 >
and c4 = < c1: c1; c2: c2; c3: c3; c4: c4; c5: c5; c6: c6 >
and c5 = < c1: c1; c2: c2; c3: c3; c4: c4; c5: c5; c6: c6 >
and c6 = < c1: c1; c2: c2; c3: c3; c4: c4; c5: c5; c6: c6 >
*)
(* Same for this example
type 'a c1 = <c1: 'a c1>
type 'a c2 = <c1: 'a c1; c2: 'a c1; c3: 'a c1; c4: 'a c1; c5: 'a c1; c6: 'a c1>
type 'a c3 = <c1: 'a c2; c2: 'a c2; c3: 'a c2; c4: 'a c2; c5: 'a c2; c6: 'a c2>
type 'a c4 = <c1: 'a c3; c2: 'a c3; c3: 'a c3; c4: 'a c3; c5: 'a c3; c6: 'a c3>
type 'a c5 = <c1: 'a c4; c2: 'a c4; c3: 'a c4; c4: 'a c4; c5: 'a c4; c6: 'a c4>
type 'a c6 = <c1: 'a c5; c2: 'a c5; c3: 'a c5; c4: 'a c5; c5: 'a c5; c6: 'a c5>
type 'a c7 = <c1: 'a c6; c2: 'a c6; c3: 'a c6; c4: 'a c6; c5: 'a c6; c6: 'a c6>
*)
let x = ref ([] : c7 list)
|