summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr>1997-03-07 22:31:33 +0000
committerJérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr>1997-03-07 22:31:33 +0000
commitce62aef99ae481d7217af3682203426fe76fdfc1 (patch)
tree8aee99698239a8bd978e2b807c0734884a7b9b86
parent7dbe12f98b6e21ad12481f9f783683783be60b9a (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.ml12
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;