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
|
(* TEST
setup-ocamlc.byte-build-env;
flags = "-dlambda -dno-unique-ids";
ocamlc.byte;
check-ocamlc.byte-output;
*)
module type S = sig
val foo : int -> int
end
module O (X : S) = struct
let cow x = X.foo x
let sheep x = 1 + cow x
end [@@inline always]
module F (X : S) (Y : S) = struct
let cow x = Y.foo (X.foo x)
let sheep x = 1 + cow x
end [@@inline always]
module type S1 = sig
val bar : int -> int
val foo : int -> int
end
module type T = sig
val sheep : int -> int
end
module F1 (X : S) (Y : S) : T = struct
let cow x = Y.foo (X.foo x)
let sheep x = 1 + cow x
end [@@inline always]
module F2 : S1 -> S1 -> T = functor (X : S) -> functor (Y : S) -> struct
let cow x = Y.foo (X.foo x)
let sheep x = 1 + cow x
end [@@inline always]
module M : sig
module F (X : S1) (Y : S1) : T
end = struct
module F (X : S) (Y : S) = struct
let cow x = Y.foo (X.foo x)
let sheep x = 1 + cow x
end [@@inline always]
end
|