eolian: disallow ptr() in containers in stable API
This commit is contained in:
parent
adaea4170a
commit
1bcca58d82
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)));
|
||||
|
|
Loading…
Reference in New Issue