eolian: clear the unimplemented implement set for each tree

We keep a hash tracking implements that were already errored on
so that we don't print some errors multiple times. The problem is
that it wasn't getting cleared when switching to a new inheritance
tree so errors from an interface implemented in multiple distinct
inheritance trees would only get printed once.
This commit is contained in:
Daniel Kolesa 2019-01-25 14:11:25 +01:00
parent 213a842d52
commit ca82c27d18
1 changed files with 5 additions and 0 deletions

View File

@ -1309,6 +1309,11 @@ database_validate(const Eolian_Unit *src)
Eina_Hash *errh = eina_hash_pointer_new(NULL);
EINA_ITERATOR_FOREACH(iter, cl)
{
/* clear, because otherwise if unrelated classes A and B both
* had interface C in extensions list without implementing it,
* it would only get printed for A
*/
eina_hash_free_buckets(errh);
if (!_db_fill_inherits(&vals, cl, fhash, errh))
{
eina_hash_free(errh);