From 30bb479d2795f090ba9d3cc4f5b46456d87a2975 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Fri, 9 Aug 2019 16:09:25 +0200 Subject: [PATCH] eolian: add an envvar to warn about unimplemented beta funcs This changes the behavior of the existing env var to only check unimplemented functions in stable APIs by default. Beta checks can be enabled with an additional environment var, so use EOLIAN_CLASS_UNIMPLEMENTED_WARN for stable and EOLIAN_CLASS_UNIMPLEMENTED_BETA_WARN for extra beta checks. --- src/lib/eolian/database_validate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index f831b08..7e3547b 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -13,6 +13,7 @@ typedef struct _Validate_State Eina_Bool warned; Eina_Bool stable; Eina_Bool unimplemented; + Eina_Bool unimplemented_beta; } Validate_State; static Eina_Bool @@ -870,14 +871,21 @@ _db_check_implemented(Validate_State *vals, Eolian_Class *cl, Eina_Hash *fs, Eina_Bool succ = EINA_TRUE; + /* unimplemented checks are not enabled for any objects */ if (!vals->unimplemented) return EINA_TRUE; + /* class is beta and we didn't enable unimplemented checking for those */ + if (!vals->unimplemented_beta && cl->base.is_beta) + return EINA_TRUE; + Eina_List *l; Eolian_Implement *impl; EINA_LIST_FOREACH(cl->callables, l, impl) { const Eolian_Function *fid = impl->foo_id; + if (!vals->unimplemented_beta && fid->base.is_beta) + continue; Impl_Status st = (Impl_Status)eina_hash_find(fs, &fid); /* found an interface this func was originally defined in in the * composite list; in that case, ignore it and assume it will come @@ -1427,6 +1435,7 @@ database_validate(const Eolian_Unit *src) EINA_FALSE, EINA_TRUE, !!getenv("EOLIAN_CLASS_UNIMPLEMENTED_WARN"), + !!getenv("EOLIAN_CLASS_UNIMPLEMENTED_BETA_WARN"), }; /* do an initial pass to refill inherits */ -- 2.7.4