blob: c5c725ed4320e728ea674466ed66e7702d03a1bf (
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
(* TEST
flags = " -short-paths ";
toplevel;
*)
module Core = struct
module Int = struct
module T = struct
type t = int
let compare = compare
let (+) x y = x + y
end
include T
module Map = Map.Make(T)
end
module Std = struct
module Int = Int
end
end
;;
open Core.Std
;;
let x = Int.Map.empty ;;
let y = x + x ;;
(* Avoid ambiguity *)
module M = struct type t = A type u = C end
module N = struct type t = B end
open M open N;;
A;;
B;;
C;;
include M open M;;
C;;
module L = struct type v = V end
open L;;
V;;
module L = struct type v = V end
open L;;
V;;
type t1 = A;;
module M1 = struct type u = v and v = t1 end;;
module N1 = struct type u = v and v = M1.v end;;
type t1 = B;;
module N2 = struct type u = v and v = M1.v end;;
(* PR#6566 *)
module type PR6566 = sig type t = string end;;
module PR6566 = struct type t = int end;;
module PR6566' : PR6566 = PR6566;;
(* Short-paths is currently a bit overzealous with this error message: we print
"The type t is not equal to the type string" instead of "The type int is not
equal to the type string". This is correct, but less clear than it could
be. *)
module A = struct module B = struct type t = T end end;;
module M2 = struct type u = A.B.t type foo = int type v = A.B.t end;;
|