q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e4fd05469de16ea0382b4cda84a9cbcccfa6f0c9

commit e4fd05469de16ea0382b4cda84a9cbcccfa6f0c9
Author: Daniel Kolesa <[email protected]>
Date:   Tue Mar 27 13:27:32 2018 +0200

    eolian: validate each class with its own unit's in mind only
    
    This is stricter (doesn't allow outer symbols to leak in).
    Also needed fixing some eo files.
---
 src/lib/ecore_con/efl_net_control_technology.eo |  2 ++
 src/lib/efl/interfaces/efl_gfx_size_hint.eo     |  1 +
 src/lib/efl/interfaces/efl_image_load.eo        |  1 +
 src/lib/efl/interfaces/efl_ui_direction.eo      |  2 ++
 src/lib/eolian/database_validate.c              | 16 +++++++++-------
 5 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/lib/ecore_con/efl_net_control_technology.eo 
b/src/lib/ecore_con/efl_net_control_technology.eo
index 116adbeb66..7c94b9a0e4 100644
--- a/src/lib/ecore_con/efl_net_control_technology.eo
+++ b/src/lib/ecore_con/efl_net_control_technology.eo
@@ -1,3 +1,5 @@
+import efl_net_control_access_point;
+
 enum Efl.Net.Control.Technology.Type {
     [[Technology types
 
diff --git a/src/lib/efl/interfaces/efl_gfx_size_hint.eo 
b/src/lib/efl/interfaces/efl_gfx_size_hint.eo
index 7b344d8693..f8dae0fae6 100644
--- a/src/lib/efl/interfaces/efl_gfx_size_hint.eo
+++ b/src/lib/efl/interfaces/efl_gfx_size_hint.eo
@@ -1,3 +1,4 @@
+import eina_types;
 import efl_gfx_types;
 
 const Efl.Gfx.Size.Hint.Expand: double = 1.0;
diff --git a/src/lib/efl/interfaces/efl_image_load.eo 
b/src/lib/efl/interfaces/efl_image_load.eo
index 1f2f8d247d..8396109e0d 100644
--- a/src/lib/efl/interfaces/efl_image_load.eo
+++ b/src/lib/efl/interfaces/efl_image_load.eo
@@ -1,3 +1,4 @@
+import eina_types;
 import efl_gfx_types;
 
 /*
diff --git a/src/lib/efl/interfaces/efl_ui_direction.eo 
b/src/lib/efl/interfaces/efl_ui_direction.eo
index daf4e0cf6d..de0cda082d 100644
--- a/src/lib/efl/interfaces/efl_ui_direction.eo
+++ b/src/lib/efl/interfaces/efl_ui_direction.eo
@@ -1,6 +1,8 @@
 // FIXME: Documentation lacks proper references due to cyclic imports.
 // FIXME: What about AnyRTL? And other strange directions?
 
+import efl_orientation;
+
 enum Efl.Ui.Dir
 {
    [[Direction for UI objects and layouts.
diff --git a/src/lib/eolian/database_validate.c 
b/src/lib/eolian/database_validate.c
index 8dfc23c3de..d5dbe449f3 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -660,7 +660,7 @@ end:
 
 /* FIXME: need much better error handling here */
 static Eina_Bool
-_db_fill_inherits(const Eolian_Unit *src, Eolian_Class *cl, Eina_Hash *fhash)
+_db_fill_inherits(Eolian_Class *cl, Eina_Hash *fhash)
 {
    if (eina_hash_find(fhash, cl->base.name))
      return EINA_TRUE;
@@ -677,7 +677,7 @@ _db_fill_inherits(const Eolian_Unit *src, Eolian_Class *cl, 
Eina_Hash *fhash)
              eina_stringshare_del(inn);
              continue;
           }
-        Eolian_Class *icl = eina_hash_find(src->classes, inn);
+        Eolian_Class *icl = eina_hash_find(cl->base.unit->classes, inn);
         if (!icl)
           {
              succ = EINA_FALSE;
@@ -689,7 +689,7 @@ _db_fill_inherits(const Eolian_Unit *src, Eolian_Class *cl, 
Eina_Hash *fhash)
           {
              cl->inherits = eina_list_append(cl->inherits, icl);
              /* recursively fill so the tree is valid */
-             if (!icl->valid_impls && !_db_fill_inherits(src, icl, fhash))
+             if (!icl->valid_impls && !_db_fill_inherits(icl, fhash))
                succ = EINA_FALSE;
           }
         eina_stringshare_del(inn);
@@ -725,7 +725,7 @@ _validate_implement(const Eolian_Unit *src, 
Eolian_Implement *impl)
 }
 
 static Eina_Bool
-_validate_class(Validate_State *vals, const Eolian_Unit *src, Eolian_Class *cl,
+_validate_class(Validate_State *vals, Eolian_Class *cl,
                 Eina_Hash *nhash, Eina_Hash *chash)
 {
    Eina_List *l;
@@ -742,6 +742,8 @@ _validate_class(Validate_State *vals, const Eolian_Unit 
*src, Eolian_Class *cl,
    if (eina_hash_find(chash, cl->base.name))
      return EINA_TRUE;
 
+   const Eolian_Unit *src = cl->base.unit;
+
    Eina_Bool valid = cl->base.validated;
 
    EINA_LIST_FOREACH(cl->inherits, l, icl)
@@ -772,7 +774,7 @@ _validate_class(Validate_State *vals, const Eolian_Unit 
*src, Eolian_Class *cl,
            default:
              break;
           }
-        if (!_validate_class(vals, src, icl, nhash, chash))
+        if (!_validate_class(vals, icl, nhash, chash))
           return EINA_FALSE;
      }
 
@@ -859,7 +861,7 @@ database_validate(const Eolian_Unit *src)
         if (cl->valid_impls)
           continue;
         Eina_Hash *fhash = eina_hash_stringshared_new(NULL);
-        if (!_db_fill_inherits(src, cl, fhash))
+        if (!_db_fill_inherits(cl, fhash))
           {
              eina_hash_free(fhash);
              return EINA_FALSE;
@@ -874,7 +876,7 @@ database_validate(const Eolian_Unit *src)
    EINA_ITERATOR_FOREACH(iter, cl)
      {
         eina_hash_free_buckets(nhash);
-        if (!_validate_class(&vals, src, cl, nhash, chash))
+        if (!_validate_class(&vals, cl, nhash, chash))
           {
              eina_iterator_free(iter);
              eina_hash_free(nhash);

-- 


Reply via email to