summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2001-08-13 09:35:49 +0000
committerXavier Leroy <xavier.leroy@inria.fr>2001-08-13 09:35:49 +0000
commitf753fdd05eeb9a30cad08573723a8ffe7cb67a68 (patch)
tree0fdb749ea2be9d7f2aae0bbe4d1aed304bb52463
parentd05d0c6d1e38789aa1264c5465742f0afba6cbde (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.ml10
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