summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--typing/ident.ml1
-rw-r--r--typing/ident.mli1
-rw-r--r--typing/typecore.ml1
3 files changed, 3 insertions, 0 deletions
diff --git a/typing/ident.ml b/typing/ident.ml
index bd08c470e..a9529f093 100644
--- a/typing/ident.ml
+++ b/typing/ident.ml
@@ -43,6 +43,7 @@ let same i1 i2 = i1 = i2
let binding_time i = i.stamp
let current_time() = !currentstamp
+let set_current_time t = currentstamp := max !currentstamp t
let hide i =
{ stamp = -1; name = i.name; global = i.global }
diff --git a/typing/ident.mli b/typing/ident.mli
index 782157351..9711044d8 100644
--- a/typing/ident.mli
+++ b/typing/ident.mli
@@ -39,6 +39,7 @@ val global: t -> bool
val binding_time: t -> int
val current_time: unit -> int
+val set_current_time: int -> unit
val print: t -> unit
diff --git a/typing/typecore.ml b/typing/typecore.ml
index e27f2ab72..61ffeca29 100644
--- a/typing/typecore.ml
+++ b/typing/typecore.ml
@@ -745,6 +745,7 @@ let rec type_exp env sexp =
end
| Pexp_letmodule(name, smodl, sbody) ->
let ty = newvar() in
+ Ident.set_current_time ty.level;
let modl = !type_module env smodl in
let (id, new_env) = Env.enter_module name modl.mod_type env in
Ctype.init_def(Ident.current_time());