Don't be too eager to use distinct_diff
* src/abg-comparison.cc (try_to_diff): For this to actually select a diff kind, the two diff subject must be of type 'DiffType'. (compute_diff_for_types, compute_diff_for_decls): Use distinct_diff in last resort. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
2a77bead11
commit
e183228e82
|
@ -1248,6 +1248,8 @@ try_to_diff(const decl_base_sptr first,
|
|||
{
|
||||
shared_ptr<DiffType> s =
|
||||
dynamic_pointer_cast<DiffType>(second);
|
||||
if (!s)
|
||||
return diff_sptr();
|
||||
return compute_diff(f, s, ctxt);
|
||||
}
|
||||
return diff_sptr();
|
||||
|
@ -1274,6 +1276,9 @@ try_to_diff<class_decl>(const decl_base_sptr first,
|
|||
dynamic_pointer_cast<class_decl>(first))
|
||||
{
|
||||
class_decl_sptr s = dynamic_pointer_cast<class_decl>(second);
|
||||
if (!s)
|
||||
return diff_sptr();
|
||||
|
||||
if (f->get_is_declaration_only())
|
||||
{
|
||||
class_decl_sptr f2 = f->get_definition_of_declaration();
|
||||
|
@ -1334,15 +1339,15 @@ compute_diff_for_types(const decl_base_sptr first,
|
|||
const decl_base_sptr f = first;
|
||||
const decl_base_sptr s = second;
|
||||
|
||||
((d = try_to_diff_distinct_kinds(f, s, ctxt))
|
||||
||(d = try_to_diff<type_decl>(f, s, ctxt))
|
||||
((d = try_to_diff<type_decl>(f, s, ctxt))
|
||||
||(d = try_to_diff<enum_type_decl>(f, s, ctxt))
|
||||
||(d = try_to_diff<class_decl>(f, s,ctxt))
|
||||
||(d = try_to_diff<pointer_type_def>(f, s, ctxt))
|
||||
||(d = try_to_diff<reference_type_def>(f, s, ctxt))
|
||||
||(d = try_to_diff<array_type_def>(f, s, ctxt))
|
||||
||(d = try_to_diff<qualified_type_def>(f, s, ctxt))
|
||||
||(d = try_to_diff<typedef_decl>(f, s, ctxt)));
|
||||
||(d = try_to_diff<typedef_decl>(f, s, ctxt))
|
||||
||(d = try_to_diff_distinct_kinds(f, s, ctxt)));
|
||||
|
||||
assert(d);
|
||||
|
||||
|
@ -1540,9 +1545,9 @@ compute_diff_for_decls(const decl_base_sptr first,
|
|||
|
||||
diff_sptr d;
|
||||
|
||||
((d = try_to_diff_distinct_kinds(first, second, ctxt))
|
||||
|| (d = try_to_diff<function_decl>(first, second, ctxt))
|
||||
|| (d = try_to_diff<var_decl>(first, second, ctxt)));
|
||||
((d = try_to_diff<function_decl>(first, second, ctxt))
|
||||
|| (d = try_to_diff<var_decl>(first, second, ctxt))
|
||||
|| (d = try_to_diff_distinct_kinds(first, second, ctxt)));
|
||||
|
||||
assert(d);
|
||||
|
||||
|
|
Loading…
Reference in New Issue