}
bool append(t_field* elem) {
- members_.push_back(elem);
-
typedef members_type::iterator iter_type;
std::pair<iter_type, iter_type> bounds = std::equal_range(
members_in_id_order_.begin(), members_in_id_order_.end(), elem, t_field::key_compare()
if (bounds.first != bounds.second) {
return false;
}
+ // returns false when there is a conflict of field names
+ if (get_field_by_name(elem->get_name()) != NULL) {
+ return false;
+ }
+ members_.push_back(elem);
members_in_id_order_.insert(bounds.second, elem);
validate_union_member( elem);
return true;
pdebug("FieldList -> FieldList , Field");
$$ = $1;
if (!($$->append($2))) {
- yyerror("Field identifier %d for \"%s\" has already been used", $2->get_key(), $2->get_name().c_str());
+ yyerror("\"%d: %s\" - field identifier/name has already been used", $2->get_key(), $2->get_name().c_str());
exit(1);
}
}