mirror of
git://sourceware.org/git/libabigail.git
synced 2025-03-25 04:38:29 +00:00
Fix diff report about non-static data members.
It appears that the comparison engine reports deletion of *static* data members in the context of the ABI changes of their parent class. That is not right because static data member don't have any ABI impact on their parent class. Fixed thus. * src/abg-comparison.cc (class_diff::priv::{get_deleted_non_static_data_members_number, get_inserted_non_static_data_members_number}): Define new member functions. (class_diff::reports): Use the new functions above. Also, add forgotten new lines where they belong. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
7424c58426
commit
eb0cd8c717
@ -6109,6 +6109,12 @@ struct class_diff::priv
|
||||
decl_base_sptr
|
||||
member_class_tmpl_has_changed(decl_base_sptr) const;
|
||||
|
||||
size_t
|
||||
get_deleted_non_static_data_members_number() const;
|
||||
|
||||
size_t
|
||||
get_inserted_non_static_data_members_number() const;
|
||||
|
||||
size_t
|
||||
count_filtered_bases();
|
||||
|
||||
@ -6631,6 +6637,46 @@ class_diff::priv::member_class_tmpl_has_changed(decl_base_sptr d) const
|
||||
: dynamic_pointer_cast<decl_base>(it->second->second_subject()));
|
||||
}
|
||||
|
||||
/// Get the number of non-static data member that were deleted from
|
||||
/// the class which diff we are looking at.
|
||||
///
|
||||
/// @return the number of deleted non-static data members.
|
||||
size_t
|
||||
class_diff::priv::get_deleted_non_static_data_members_number() const
|
||||
{
|
||||
size_t result = 0;
|
||||
|
||||
for (string_decl_base_sptr_map::const_iterator i =
|
||||
deleted_data_members_.begin();
|
||||
i != deleted_data_members_.end();
|
||||
++i)
|
||||
if (is_member_decl(i->second)
|
||||
&& !get_member_is_static(i->second))
|
||||
++result;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// Get the number of non-static data member that were inserted to the
|
||||
/// class which diff we are looking at.
|
||||
///
|
||||
/// @return the number of inserted non-static data members.
|
||||
size_t
|
||||
class_diff::priv::get_inserted_non_static_data_members_number() const
|
||||
{
|
||||
size_t result = 0;
|
||||
|
||||
for (string_decl_base_sptr_map::const_iterator i =
|
||||
inserted_data_members_.begin();
|
||||
i != inserted_data_members_.end();
|
||||
++i)
|
||||
if (is_member_decl(i->second)
|
||||
&& !get_member_is_static(i->second))
|
||||
++result;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// Count the number of bases classes whose changes got filtered out.
|
||||
///
|
||||
/// @return the number of bases classes whose changes got filtered
|
||||
@ -7477,7 +7523,7 @@ class_diff::report(ostream& out, const string& indent) const
|
||||
if (data_members_changes())
|
||||
{
|
||||
// report deletions
|
||||
int numdels = priv_->deleted_data_members_.size();
|
||||
int numdels = priv_->get_deleted_non_static_data_members_number();
|
||||
if (numdels)
|
||||
{
|
||||
report_mem_header(out, numdels, 0, del_kind,
|
||||
@ -7492,6 +7538,10 @@ class_diff::report(ostream& out, const string& indent) const
|
||||
var_decl_sptr data_mem =
|
||||
dynamic_pointer_cast<var_decl>(*i);
|
||||
assert(data_mem);
|
||||
if (get_member_is_static(data_mem))
|
||||
continue;
|
||||
if (emitted)
|
||||
out << "\n";
|
||||
out << indent << " ";
|
||||
represent_data_member(data_mem, out);
|
||||
emitted = true;
|
||||
|
Loading…
Reference in New Issue
Block a user