diff options
author | Bernhard Schommer <bernhardschommer@gmail.com> | 2016-08-29 10:18:24 +0200 |
---|---|---|
committer | Bernhard Schommer <bernhardschommer@gmail.com> | 2016-08-29 10:18:24 +0200 |
commit | 55fa31e474c0f039330d6325ab33bbd86522d084 (patch) | |
tree | 8ebcca3458af85e71a4c68eb4076ee9b5479b077 /cparser | |
parent | 477f73ef96d957de5a896a05175ceaab7e0dce03 (diff) | |
download | compcert-55fa31e474c0f039330d6325ab33bbd86522d084.tar.gz compcert-55fa31e474c0f039330d6325ab33bbd86522d084.zip |
Added check for duplicated members. Bug 19665
Diffstat (limited to 'cparser')
-rw-r--r-- | cparser/Elab.ml | 5 |
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 | [] -> () |