summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Garrigue <garrigue at math.nagoya-u.ac.jp>2003-11-07 00:19:08 +0000
committerJacques Garrigue <garrigue at math.nagoya-u.ac.jp>2003-11-07 00:19:08 +0000
commit010106506ce2be5da039fc7377fec42255c52cac (patch)
tree08c0fca6e02a7c121d83e5feec8c81c838cfbbfa
parent14abe89d551331df27aa20359b10b8eef317ab15 (diff)
downloadocaml-010106506ce2be5da039fc7377fec42255c52cac.tar.gz
fix PR#1918
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5895 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--typing/typedecl.ml8
1 files changed, 5 insertions, 3 deletions
diff --git a/typing/typedecl.ml b/typing/typedecl.ml
index a2bd1fc8f4..c4bcc9def1 100644
--- a/typing/typedecl.ml
+++ b/typing/typedecl.ml
@@ -309,12 +309,14 @@ let check_recursion env loc path decl to_check =
else if to_check path' && not (List.mem path' prev_exp) then begin
try
(* Attempt expansion *)
- let (params, body) = Env.find_type_expansion path' env in
+ let (params0, body0) = Env.find_type_expansion path' env in
let (params, body) =
- Ctype.instance_parameterized_type params body in
+ Ctype.instance_parameterized_type params0 body0 in
begin
try List.iter2 (Ctype.unify env) params args'
- with Ctype.Unify _ -> assert false
+ with Ctype.Unify _ ->
+ raise (Error(loc, Constraint_failed
+ (ty, Ctype.newconstr path' params0)));
end;
check_regular path' args (path' :: prev_exp) body
with Not_found -> ()