summaryrefslogtreecommitdiff
path: root/testsuite/tests/typing-modules-bugs/pr7305_principal.ml
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)