diff options
author | Jérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr> | 1997-03-07 22:31:33 +0000 |
---|---|---|
committer | Jérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr> | 1997-03-07 22:31:33 +0000 |
commit | ce62aef99ae481d7217af3682203426fe76fdfc1 (patch) | |
tree | 8aee99698239a8bd978e2b807c0734884a7b9b86 | |
parent | 7dbe12f98b6e21ad12481f9f783683783be60b9a (diff) |
Les contraintes doivent etre de la forme 'a = t ou 'a est
effectivement un parametre
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1333 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | typing/typedecl.ml | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/typing/typedecl.ml b/typing/typedecl.ml index b3e11d874..4fd3f92b9 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -85,14 +85,16 @@ let transl_declaration env (name, sdecl) (id, decl) = raise(Error(sdecl.ptype_loc, Repeated_parameter)) end; - List.iter - (function (v, ty, loc) -> + let cstr_params = + List.map (function (v, _, loc) -> type_variable loc v) sdecl.ptype_cstrs + in + List.iter2 + (fun (v, sty, loc) ty' -> try - Ctype.unify env - (type_variable loc v) (transl_simple_type env false ty) + Ctype.unify env (transl_simple_type env false sty) ty' with Ctype.Unify _ -> raise(Error(loc, Unconsistent_constraint))) - sdecl.ptype_cstrs; + sdecl.ptype_cstrs cstr_params; let decl' = { type_params = decl.type_params; |