diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2003-06-27 08:49:22 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2003-06-27 08:49:22 +0000 |
commit | 9ca07e88e20033eff3b9585f27da66aae679fcff (patch) | |
tree | 72fede2813e3f196c1b5de271f49bd82a515f67a | |
parent | ccd0578b78f4413cc17742d24dd0451c5e38f61c (diff) |
Revu detection definitions multiples (PR#1732)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5628 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | asmcomp/asmlink.ml | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/asmcomp/asmlink.ml b/asmcomp/asmlink.ml index 0f5638b07..3e4c892d7 100644 --- a/asmcomp/asmlink.ml +++ b/asmcomp/asmlink.ml @@ -35,7 +35,8 @@ exception Error of error let crc_interfaces = Consistbl.create () let crc_implementations = Consistbl.create () -let extra_implementations = ref [] +let extra_implementations = ref ([] : string list) +let implementations_defined = ref ([] : (string * string) list) let check_consistency file_name unit crc = begin try @@ -60,11 +61,13 @@ let check_consistency file_name unit crc = raise(Error(Inconsistent_implementation(name, user, auth))) end; begin try - let source = Consistbl.source crc_implementations unit.ui_name in + let source = List.assoc unit.ui_name !implementations_defined in raise (Error(Multiple_definition(unit.ui_name, file_name, source))) with Not_found -> () end; - Consistbl.set crc_implementations unit.ui_name crc file_name + Consistbl.set crc_implementations unit.ui_name crc file_name; + implementations_defined := + (unit.ui_name, file_name) :: !implementations_defined let extract_crc_interfaces () = Consistbl.extract crc_interfaces |