aboutsummaryrefslogtreecommitdiffstats
path: root/cparser
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2016-08-29 10:18:24 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2016-08-29 10:18:24 +0200
commit55fa31e474c0f039330d6325ab33bbd86522d084 (patch)
tree8ebcca3458af85e71a4c68eb4076ee9b5479b077 /cparser
parent477f73ef96d957de5a896a05175ceaab7e0dce03 (diff)
downloadcompcert-55fa31e474c0f039330d6325ab33bbd86522d084.tar.gz
compcert-55fa31e474c0f039330d6325ab33bbd86522d084.zip
Added check for duplicated members. Bug 19665
Diffstat (limited to 'cparser')
-rw-r--r--cparser/Elab.ml5
1 files changed, 5 insertions, 0 deletions
diff --git a/cparser/Elab.ml b/cparser/Elab.ml
index 0c35638b..1039a91d 100644
--- a/cparser/Elab.ml
+++ b/cparser/Elab.ml
@@ -801,6 +801,11 @@ and elab_field_group keep_ty env (Field_group (spec, fieldlist, loc)) =
and elab_struct_or_union_info keep_ty kind loc env members attrs =
let (m, env') = mmap (elab_field_group keep_ty) env members in
let m = List.flatten m in
+ ignore (List.fold_left (fun acc fld ->
+ let n = fld.fld_name in
+ if List.exists ((=) n) acc then
+ error loc "duplicate memeber '%s'" n;
+ n::acc) [] m);
(* Check for incomplete types *)
let rec check_incomplete = function
| [] -> ()