summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacques Garrigue <garrigue at math.nagoya-u.ac.jp>2002-02-01 10:03:12 +0000
committerJacques Garrigue <garrigue at math.nagoya-u.ac.jp>2002-02-01 10:03:12 +0000
commitcb046b351af420933a158101e57112d9a6cd81d2 (patch)
tree5ea459a40469d51615249bfe5561811d12639500
parentbfc6db3edc23be93bedb0893fb10b3fe894d85c1 (diff)
finish PR#841
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@4334 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--typing/ctype.ml6
1 files changed, 4 insertions, 2 deletions
diff --git a/typing/ctype.ml b/typing/ctype.ml
index b43d5c260..e6f7a8a56 100644
--- a/typing/ctype.ml
+++ b/typing/ctype.ml
@@ -1007,15 +1007,17 @@ let rec occur_rec env visited ty0 ty =
let type_changed = ref false (* trace possible changes to the studied type *)
+let merge r b = if b then r := true
+
let occur env ty0 ty =
if not !Clflags.recursive_types then
let old = !type_changed in
try
while type_changed := false; occur_rec env [] ty0 ty; !type_changed
do () (* prerr_endline "changed" *) done;
- type_changed := old
+ merge type_changed old
with exn ->
- type_changed := old;
+ merge type_changed old;
raise (match exn with Occur -> Unify [] | _ -> exn)