q66 pushed a commit to branch master.

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

commit 1bcca58d826a2d8fcd88b529b8e5863c6f54ec47
Author: Daniel Kolesa <d.kol...@samsung.com>
Date:   Thu Aug 1 16:47:52 2019 +0200

    eolian: disallow ptr() in containers in stable API
---
 src/lib/efl/interfaces/efl_gfx_types.eot | 4 ++--
 src/lib/eolian/database_validate.c       | 7 +++++++
 src/tests/eolian/data/complex_type.eo    | 4 +---
 src/tests/eolian/data/owning.eo          | 8 ++------
 src/tests/eolian/data/owning_ref.c       | 4 ++--
 src/tests/eolian/data/typedef.eo         | 4 +---
 src/tests/eolian/eolian_parsing.c        | 4 ++--
 7 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/src/lib/efl/interfaces/efl_gfx_types.eot 
b/src/lib/efl/interfaces/efl_gfx_types.eot
index 4792820083..64bde5a6c7 100644
--- a/src/lib/efl/interfaces/efl_gfx_types.eot
+++ b/src/lib/efl/interfaces/efl_gfx_types.eot
@@ -161,8 +161,8 @@ enum Efl.Gfx.Change_Flag
 struct Efl.Gfx.Event.Render_Post
 {
    [[Data sent along a "render,post" event, after a frame has been rendered.]]
-   updated_area: list<ptr(Eina.Rect)>; [[A list of rectangles that were
-                                         updated in the canvas.]]
+   updated_area: list<Eina.Rect>; [[A list of rectangles that were
+                                    updated in the canvas.]]
 }
 
 enum Efl.Gfx.Hint_Aspect
diff --git a/src/lib/eolian/database_validate.c 
b/src/lib/eolian/database_validate.c
index ff36d71a3e..c5945724ef 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -255,6 +255,13 @@ _validate_type(Validate_State *vals, Eolian_Type *tp)
                 /* validate types in brackets so transitive fields get written 
*/
                 while (itp)
                   {
+                     if (vals->stable && itp->is_ptr)
+                       {
+                          _eo_parser_log(&itp->base,
+                                         "pointer types not allowed in '%s' in 
stable context",
+                                         tp->base.name);
+                          return EINA_FALSE;
+                       }
                      if (!_validate_type(vals, itp))
                        return EINA_FALSE;
                      itp = itp->next_type;
diff --git a/src/tests/eolian/data/complex_type.eo 
b/src/tests/eolian/data/complex_type.eo
index f2c03676e0..1c8c30823a 100644
--- a/src/tests/eolian/data/complex_type.eo
+++ b/src/tests/eolian/data/complex_type.eo
@@ -1,10 +1,8 @@
-struct @free(efl_del) @extern Eo;
-
 class Complex_Type {
    methods {
       @property a {
          set {
-            return: list<array<ptr(Eo) @owned> > @owned;
+            return: list<array<strbuf @owned> > @owned;
          }
          get {
          }
diff --git a/src/tests/eolian/data/owning.eo b/src/tests/eolian/data/owning.eo
index ae926a5e35..e0c97c52fe 100644
--- a/src/tests/eolian/data/owning.eo
+++ b/src/tests/eolian/data/owning.eo
@@ -1,7 +1,3 @@
-struct @free(free_a) Test.A {
-   t : int;
-}
-
 class Owning {
    methods {
      test1 {
@@ -14,8 +10,8 @@ class Owning {
      }
      test2 {
        params {
-         test1 : list<ptr(Test.A) @owned> @owned;
-         test2 : hash<string, ptr(Test.A) @owned> @owned;
+         test1 : list<array<int> @owned> @owned;
+         test2 : hash<string, array<int> @owned> @owned;
        }
      }
 
diff --git a/src/tests/eolian/data/owning_ref.c 
b/src/tests/eolian/data/owning_ref.c
index 10a7f10a13..6c9b30debe 100644
--- a/src/tests/eolian/data/owning_ref.c
+++ b/src/tests/eolian/data/owning_ref.c
@@ -18,10 +18,10 @@ void _owning_test2(Eo *obj, Owning_Data *pd, Eina_List 
*test1, Eina_Hash *test2)
 static void
 _owning_test2_ownership_fallback(Eina_List *test1, Eina_Hash *test2)
 {
-   Test_A *test1_iter;
+   Eina_Array *test1_iter;
    EINA_LIST_FREE(test1,test1_iter)
      {
-        free_a(test1_iter);
+        eina_array_free(test1_iter);
      }
    eina_hash_free_cb_set(test2,NULL);
    eina_hash_free(test2);
diff --git a/src/tests/eolian/data/typedef.eo b/src/tests/eolian/data/typedef.eo
index 31bf9c627c..ab4d991954 100644
--- a/src/tests/eolian/data/typedef.eo
+++ b/src/tests/eolian/data/typedef.eo
@@ -1,7 +1,5 @@
-struct @extern Eo;
-
 type Evas.Coord: int; /* Simple type definition */
-type List_Objects: list<ptr(Eo)>; /* A little more complex */
+type List_Objects: list<Typedef>; /* A little more complex */
 
 type Evas.Coord2: Evas.Coord;
 type Evas.Coord3: Evas.Coord2;
diff --git a/src/tests/eolian/eolian_parsing.c 
b/src/tests/eolian/eolian_parsing.c
index ccabb263fd..f1294b720c 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -383,7 +383,7 @@ EFL_START_TEST(eolian_typedef)
    fail_if(!(type = eolian_type_base_type_get(type)));
    fail_if(!!eolian_type_next_type_get(type));
    fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_DEFAULT)));
-   fail_if(strcmp(type_name, "Eo *"));
+   fail_if(strcmp(type_name, "Typedef *"));
    fail_if(eolian_type_is_owned(type));
    eina_stringshare_del(type_name);
 
@@ -446,7 +446,7 @@ EFL_START_TEST(eolian_complex_type)
    fail_if(!!eolian_type_next_type_get(type));
    fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_DEFAULT)));
    fail_if(!eolian_type_is_owned(type));
-   fail_if(strcmp(type_name, "Eo *"));
+   fail_if(strcmp(type_name, "Eina_Strbuf *"));
    eina_stringshare_del(type_name);
    /* Properties parameter type */
    fail_if(!(iter = eolian_property_values_get(fid, EOLIAN_PROP_GET)));

-- 


Reply via email to