From ca82c27d18db49421c63e58862306313ce36c75a Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Fri, 25 Jan 2019 14:11:25 +0100 Subject: 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. --- src/lib/eolian/database_validate.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/lib/eolian/database_validate.c') diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index 240a0f6536..9b7c2af899 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -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); -- cgit v1.2.1