diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2001-08-13 09:35:49 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2001-08-13 09:35:49 +0000 |
commit | f753fdd05eeb9a30cad08573723a8ffe7cb67a68 (patch) | |
tree | 0fdb749ea2be9d7f2aae0bbe4d1aed304bb52463 | |
parent | d05d0c6d1e38789aa1264c5465742f0afba6cbde (diff) |
Verifier l'unicite des noms de classes et de class types (PR#478)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@3633 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | typing/typemod.ml | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/typing/typemod.ml b/typing/typemod.ml index 626781714..4bc0fcd86 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -412,7 +412,10 @@ and type_structure env sstr = let (path, mty) = type_module_path env loc lid in let sg = extract_sig_open env loc mty in type_struct (Env.open_signature path sg env) srem - | {pstr_desc = Pstr_class cl} :: srem -> + | {pstr_desc = Pstr_class cl; pstr_loc = loc} :: srem -> + List.iter + (fun {pci_name = name} -> check "type" loc type_names name) + cl; let (classes, new_env) = Typeclass.class_declarations env cl in let (str_rem, sig_rem, final_env) = type_struct new_env srem in (Tstr_class @@ -432,7 +435,10 @@ and type_structure env sstr = Tsig_type(i'', d''); Tsig_type(i''', d''')]) classes [sig_rem]), final_env) - | {pstr_desc = Pstr_class_type cl} :: srem -> + | {pstr_desc = Pstr_class_type cl; pstr_loc = loc} :: srem -> + List.iter + (fun {pci_name = name} -> check "type" loc type_names name) + cl; let (classes, new_env) = Typeclass.class_type_declarations env cl in let (str_rem, sig_rem, final_env) = type_struct new_env srem in (Tstr_cltype |