diff options
author | Jérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr> | 1997-10-21 11:33:03 +0000 |
---|---|---|
committer | Jérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr> | 1997-10-21 11:33:03 +0000 |
commit | ccee1d802d76e7e8cd32fcabcd3df60ada43bedd (patch) | |
tree | af60f4b6dc56e2964ff1da0faf73d40df7168022 | |
parent | 87221a8e2988a85b1b5bcda0d0bbe27cc0108baa (diff) |
Bug de unroll_abbrev
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1729 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | typing/ctype.ml | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/typing/ctype.ml b/typing/ctype.ml index 73f25f8fd..d2e3c67ff 100644 --- a/typing/ctype.ml +++ b/typing/ctype.ml @@ -1350,14 +1350,13 @@ let unalias ty = let unroll_abbrev id tl ty = let ty = repr ty in - match ty.desc with - Tvar -> - ty - | _ -> - let ty' = {desc = ty.desc; level = ty.level} in - ty.desc <- Tlink {desc = Tconstr (Path.Pident id, tl, ref Mnil); - level = ty.level}; - ty' + if (ty.desc = Tvar) || (List.exists (deep_occur ty) tl) then + ty + else + let ty' = {desc = ty.desc; level = ty.level} in + ty.desc <- Tlink {desc = Tconstr (Path.Pident id, tl, ref Mnil); + level = ty.level}; + ty' (* Return the arity (as for curried functions) of the given type. *) let rec arity ty = |