From 1afd3c215fe5e8933a5ccf0a49aa2fee41043286 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Fri, 15 Sep 2017 17:48:28 +0200 Subject: [PATCH] eolian: correctness fixes in tests and eo files --- src/lib/efl/interfaces/efl_types.eot | 2 +- src/lib/elementary/efl_config_global.eo | 2 +- src/lib/elementary/elm_web.eo | 3 +- src/lib/eolian/database_type.c | 7 +++- src/lib/eolian/eo_lexer.c | 2 +- src/tests/eolian/data/complex_type.eo | 8 ++--- src/tests/eolian/data/decl.eo | 2 +- src/tests/eolian/data/enum.eo | 2 +- src/tests/eolian/data/extern.eo | 2 +- src/tests/eolian/data/free_func.eo | 2 +- src/tests/eolian/data/function_as_argument.eo | 2 +- .../data/function_as_argument_impl_ref.c | 2 +- .../eolian/data/function_as_argument_ref.c | 4 +-- .../eolian/data/function_as_argument_ref.h | 2 +- src/tests/eolian/data/function_types.eot | 2 +- src/tests/eolian/data/function_types_ref.h | 2 +- src/tests/eolian/data/object_impl.eo | 4 +-- src/tests/eolian/data/object_impl_add.eo | 2 +- src/tests/eolian/data/struct.eo | 2 +- src/tests/eolian/data/typedef.eo | 4 +-- src/tests/eolian/data/var.eo | 2 +- src/tests/eolian/eolian_parsing.c | 34 +++++++++---------- 22 files changed, 50 insertions(+), 44 deletions(-) diff --git a/src/lib/efl/interfaces/efl_types.eot b/src/lib/efl/interfaces/efl_types.eot index 4d5535ca10..f515a92ddb 100644 --- a/src/lib/efl/interfaces/efl_types.eot +++ b/src/lib/efl/interfaces/efl_types.eot @@ -43,5 +43,5 @@ struct Efl.Observable.Tuple { [[This type describes an observable touple]] key: string; [[Touple key]] - data: free(own(iterator), eina_iterator_free); [[Touple data]] + data: iterator @owned; [[Touple data]] } diff --git a/src/lib/elementary/efl_config_global.eo b/src/lib/elementary/efl_config_global.eo index a28f3fe020..99ba68eb2b 100644 --- a/src/lib/elementary/efl_config_global.eo +++ b/src/lib/elementary/efl_config_global.eo @@ -66,7 +66,7 @@ class Efl.Config.Global (Efl.Object, Efl.Config) is_user: bool; [[$true to lookup for a user profile or $false for a system one.]] } - return: string @owned; [[Directory of the profile, free after use.]] + return: stringshare @owned; [[Directory of the profile, free after use.]] } profile_derived_add @protected { [[Add a new profile of the given name to be derived from the current diff --git a/src/lib/elementary/elm_web.eo b/src/lib/elementary/elm_web.eo index f00b64cb3a..f1c8e986ec 100644 --- a/src/lib/elementary/elm_web.eo +++ b/src/lib/elementary/elm_web.eo @@ -339,7 +339,8 @@ class Elm.Web (Elm.Widget) The string returned must be freed by the user when it's done with it. ]] - return: string @owned @warn_unused; [[A newly allocated string, or + /* FIXME: const doesn't belong here */ + return: const(string) @owned @warn_unused; [[A newly allocated string, or $null if nothing is selected or an error occurred.]] } diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c index a05fa25fa5..d9a8f17661 100644 --- a/src/lib/eolian/database_type.c +++ b/src/lib/eolian/database_type.c @@ -146,7 +146,12 @@ database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char *name, } int kw = eo_lexer_keyword_str_to_id(tp->name); if (kw && eo_lexer_is_type_keyword(kw)) - eina_strbuf_append(buf, eo_lexer_get_c_type(kw)); + { + /* FIXME: deal with aliased strings? */ + if ((kw == KW_string) && !tp->owned) + eina_strbuf_append(buf, "const "); + eina_strbuf_append(buf, eo_lexer_get_c_type(kw)); + } else eina_strbuf_append(buf, tp->name); } diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c index 044315cc98..caae8dd9bb 100644 --- a/src/lib/eolian/eo_lexer.c +++ b/src/lib/eolian/eo_lexer.c @@ -75,7 +75,7 @@ static const char * const ctypes[] = "Eina_Accessor", "Eina_Array", "Eina_Iterator", "Eina_Hash", "Eina_List", "Efl_Future", - "Eina_Value", "const char *", "Eina_Stringshare *", + "Eina_Value", "char *", "Eina_Stringshare *", "void *", diff --git a/src/tests/eolian/data/complex_type.eo b/src/tests/eolian/data/complex_type.eo index 8aac1163fc..2976125e6d 100644 --- a/src/tests/eolian/data/complex_type.eo +++ b/src/tests/eolian/data/complex_type.eo @@ -2,19 +2,19 @@ class Complex_Type { methods { @property a { set { - return: own(list >); + return: list > @owned; } get { } values { - value: own(list); + value: list @owned; } } foo { params { - buf: own(ptr(char)); + buf: string @owned; } - return: own(list); [[comment for method return]] + return: list @owned; [[comment for method return]] } } } diff --git a/src/tests/eolian/data/decl.eo b/src/tests/eolian/data/decl.eo index 3492de0a3e..de1ed889c3 100644 --- a/src/tests/eolian/data/decl.eo +++ b/src/tests/eolian/data/decl.eo @@ -16,7 +16,7 @@ class Decl { params { idx: int; } - return: own(ptr(char)); + return: string @owned; } } } diff --git a/src/tests/eolian/data/enum.eo b/src/tests/eolian/data/enum.eo index 3b426e3a06..4275b24567 100644 --- a/src/tests/eolian/data/enum.eo +++ b/src/tests/eolian/data/enum.eo @@ -39,7 +39,7 @@ class Enum { params { idx: int; } - return: own(ptr(char)); + return: string @owned; } } } diff --git a/src/tests/eolian/data/extern.eo b/src/tests/eolian/data/extern.eo index e8ee00673e..d59caa21cd 100644 --- a/src/tests/eolian/data/extern.eo +++ b/src/tests/eolian/data/extern.eo @@ -22,7 +22,7 @@ class Extern { params { idx: int; } - return: own(ptr(char)); + return: string @owned; } } } diff --git a/src/tests/eolian/data/free_func.eo b/src/tests/eolian/data/free_func.eo index 5c10b24d87..5e77e5cb4b 100644 --- a/src/tests/eolian/data/free_func.eo +++ b/src/tests/eolian/data/free_func.eo @@ -24,7 +24,7 @@ class Free_Func { params { idx: int; } - return: own(ptr(char)); + return: string @owned; } } } diff --git a/src/tests/eolian/data/function_as_argument.eo b/src/tests/eolian/data/function_as_argument.eo index 2eb2cc2a21..4c27253e40 100644 --- a/src/tests/eolian/data/function_as_argument.eo +++ b/src/tests/eolian/data/function_as_argument.eo @@ -19,7 +19,7 @@ class Function_As_Argument { a: int; b: double; } - return: own(string); + return: string @owned; } } } diff --git a/src/tests/eolian/data/function_as_argument_impl_ref.c b/src/tests/eolian/data/function_as_argument_impl_ref.c index 7e8a89e6eb..aef6721a55 100644 --- a/src/tests/eolian/data/function_as_argument_impl_ref.c +++ b/src/tests/eolian/data/function_as_argument_impl_ref.c @@ -19,7 +19,7 @@ _function_as_argument_set_nonull_cb(Eo *obj, Function_As_Argument_Data *pd, void } -EOLIAN static const char * +EOLIAN static char * _function_as_argument_call_cb(Eo *obj, Function_As_Argument_Data *pd, int a, double b) { diff --git a/src/tests/eolian/data/function_as_argument_ref.c b/src/tests/eolian/data/function_as_argument_ref.c index 742f8d8d4e..f73c426c97 100644 --- a/src/tests/eolian/data/function_as_argument_ref.c +++ b/src/tests/eolian/data/function_as_argument_ref.c @@ -7,9 +7,9 @@ void _function_as_argument_set_nonull_cb(Eo *obj, Function_As_Argument_Data *pd, EOAPI EFL_VOID_FUNC_BODYV(function_as_argument_set_nonull_cb, EFL_FUNC_CALL(cb_data, cb, cb_free_cb), void *cb_data, VoidFunc cb, Eina_Free_Cb cb_free_cb); -const char *_function_as_argument_call_cb(Eo *obj, Function_As_Argument_Data *pd, int a, double b); +char *_function_as_argument_call_cb(Eo *obj, Function_As_Argument_Data *pd, int a, double b); -EOAPI EFL_FUNC_BODYV(function_as_argument_call_cb, const char *, NULL, EFL_FUNC_CALL(a, b), int a, double b); +EOAPI EFL_FUNC_BODYV(function_as_argument_call_cb, char *, NULL, EFL_FUNC_CALL(a, b), int a, double b); static Eina_Bool _function_as_argument_class_initializer(Efl_Class *klass) diff --git a/src/tests/eolian/data/function_as_argument_ref.h b/src/tests/eolian/data/function_as_argument_ref.h index 5eff241c22..16af4285d2 100644 --- a/src/tests/eolian/data/function_as_argument_ref.h +++ b/src/tests/eolian/data/function_as_argument_ref.h @@ -21,6 +21,6 @@ EOAPI void function_as_argument_set_cb(Eo *obj, void *cb_data, SimpleFunc cb, Ei EOAPI void function_as_argument_set_nonull_cb(Eo *obj, void *cb_data, VoidFunc cb, Eina_Free_Cb cb_free_cb) EINA_ARG_NONNULL(3); -EOAPI const char *function_as_argument_call_cb(Eo *obj, int a, double b); +EOAPI char *function_as_argument_call_cb(Eo *obj, int a, double b); #endif diff --git a/src/tests/eolian/data/function_types.eot b/src/tests/eolian/data/function_types.eot index 5f067903a8..5eae0e2da4 100644 --- a/src/tests/eolian/data/function_types.eot +++ b/src/tests/eolian/data/function_types.eot @@ -16,7 +16,7 @@ function SimpleFunc { function ComplexFunc { params { @in c: string; - @out d: own(string); + @out d: string @owned; } return: double; }; diff --git a/src/tests/eolian/data/function_types_ref.h b/src/tests/eolian/data/function_types_ref.h index fe7c57d906..dcb8af2525 100644 --- a/src/tests/eolian/data/function_types_ref.h +++ b/src/tests/eolian/data/function_types_ref.h @@ -8,7 +8,7 @@ typedef void (*VoidFunc)(void *data); typedef const char * (*SimpleFunc)(void *data, int a, double b); -typedef double (*ComplexFunc)(void *data, const char *c, const char **d); +typedef double (*ComplexFunc)(void *data, const char *c, char **d); typedef void (*FuncAsArgFunc)(void *data, void *cb_data, VoidFunc cb, Eina_Free_Cb cb_free_cb, void *another_cb_data, SimpleFunc another_cb, Eina_Free_Cb another_cb_free_cb); diff --git a/src/tests/eolian/data/object_impl.eo b/src/tests/eolian/data/object_impl.eo index 97906ab3cc..7eb4f36e5a 100644 --- a/src/tests/eolian/data/object_impl.eo +++ b/src/tests/eolian/data/object_impl.eo @@ -13,7 +13,7 @@ class Object_Impl (Base) { part: string; } values { - value: own(list); + value: list @owned; } } @property b { @@ -23,7 +23,7 @@ class Object_Impl (Base) { /* set as virtual pure - no implementation expected */ } values { - value: own(list); + value: list @owned; } } constructor_1 { diff --git a/src/tests/eolian/data/object_impl_add.eo b/src/tests/eolian/data/object_impl_add.eo index e0f24e4d34..3fa58924ff 100644 --- a/src/tests/eolian/data/object_impl_add.eo +++ b/src/tests/eolian/data/object_impl_add.eo @@ -9,7 +9,7 @@ class Object_Impl_Add (Base) { /* set as virtual pure - no implementation expected */ } values { - value: own(list); + value: list @owned; } } } diff --git a/src/tests/eolian/data/struct.eo b/src/tests/eolian/data/struct.eo index 679ff5f220..cb8981db37 100644 --- a/src/tests/eolian/data/struct.eo +++ b/src/tests/eolian/data/struct.eo @@ -23,7 +23,7 @@ class Struct { params { idx: int; } - return: own(ptr(char)); + return: string @owned; } bar { return: ptr(Named); diff --git a/src/tests/eolian/data/typedef.eo b/src/tests/eolian/data/typedef.eo index 3e60100a2c..59a33cb685 100644 --- a/src/tests/eolian/data/typedef.eo +++ b/src/tests/eolian/data/typedef.eo @@ -1,5 +1,5 @@ type Evas.Coord: int; /* Simple type definition */ -type List_Objects: own(list); /* A little more complex */ +type List_Objects: list; /* A little more complex */ type Evas.Coord2: Evas.Coord; type Evas.Coord3: Evas.Coord2; @@ -33,7 +33,7 @@ class Typedef { params { idx: int; } - return: own(ptr(char)); + return: string @owned; } } } diff --git a/src/tests/eolian/data/var.eo b/src/tests/eolian/data/var.eo index 93fcacc882..6605d30e28 100644 --- a/src/tests/eolian/data/var.eo +++ b/src/tests/eolian/data/var.eo @@ -16,7 +16,7 @@ class Var { params { idx: int; } - return: own(ptr(char)); + return: string @owned; } } } diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index 0b55cf19b1..79fdb64bb4 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -338,7 +338,7 @@ START_TEST(eolian_typedef) eina_stringshare_del(type_name); fail_if(!(type = eolian_typedecl_base_type_get(tdl))); fail_if(!(type_name = eolian_type_name_get(type))); - fail_if(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(eolian_type_is_const(type)); fail_if(eolian_type_base_type_get(type)); fail_if(strcmp(type_name, "int")); @@ -358,14 +358,14 @@ START_TEST(eolian_typedef) fail_if(strcmp(type_name, "List_Objects")); fail_if(!(type = eolian_typedecl_base_type_get(tdl))); fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_DEFAULT))); - fail_if(!eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(strcmp(type_name, "Eina_List *")); eina_stringshare_del(type_name); 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(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); eina_stringshare_del(type_name); /* List */ @@ -411,19 +411,19 @@ START_TEST(eolian_complex_type) fail_if(!(fid = eolian_class_function_get_by_name(class, "a", EOLIAN_PROPERTY))); fail_if(!(type = eolian_function_return_type_get(fid, EOLIAN_PROP_SET))); fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_RETURN))); - fail_if(!eolian_type_is_own(type)); + fail_if(!eolian_type_is_owned(type)); fail_if(strcmp(type_name, "Eina_List *")); eina_stringshare_del(type_name); 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(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(strcmp(type_name, "Eina_Array *")); eina_stringshare_del(type_name); 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(!eolian_type_is_own(type)); + fail_if(!eolian_type_is_owned(type)); fail_if(strcmp(type_name, "Eo *")); eina_stringshare_del(type_name); /* Properties parameter type */ @@ -434,13 +434,13 @@ START_TEST(eolian_complex_type) fail_if(strcmp(eolian_parameter_name_get(param), "value")); fail_if(!(type = eolian_parameter_type_get(param))); fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_PARAM))); - fail_if(!eolian_type_is_own(type)); + fail_if(!eolian_type_is_owned(type)); fail_if(strcmp(type_name, "Eina_List *")); eina_stringshare_del(type_name); 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(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(strcmp(type_name, "int")); eina_stringshare_del(type_name); @@ -448,13 +448,13 @@ START_TEST(eolian_complex_type) fail_if(!(fid = eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD))); fail_if(!(type = eolian_function_return_type_get(fid, EOLIAN_METHOD))); fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_RETURN))); - fail_if(!eolian_type_is_own(type)); + fail_if(!eolian_type_is_owned(type)); fail_if(strcmp(type_name, "Eina_List *")); eina_stringshare_del(type_name); 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(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(strcmp(type_name, "Eina_Stringshare *")); eina_stringshare_del(type_name); /* Methods parameter type */ @@ -465,7 +465,7 @@ START_TEST(eolian_complex_type) fail_if(strcmp(eolian_parameter_name_get(param), "buf")); fail_if(!(type = eolian_parameter_type_get(param))); fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_PARAM))); - fail_if(!eolian_type_is_own(type)); + fail_if(!eolian_type_is_owned(type)); fail_if(strcmp(type_name, "char *")); eina_stringshare_del(type_name); @@ -1458,7 +1458,7 @@ START_TEST(eolian_function_types) fail_if(strcmp(eolian_parameter_name_get(param), "c")); fail_if(!(type = eolian_parameter_type_get(param))); fail_if(eolian_parameter_direction_get(param) != EOLIAN_IN_PARAM); - fail_if(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_PARAM))); fail_if(strcmp(type_name, "const char *")); @@ -1467,9 +1467,9 @@ START_TEST(eolian_function_types) fail_if(strcmp(eolian_parameter_name_get(param), "d")); fail_if(eolian_parameter_direction_get(param) != EOLIAN_OUT_PARAM); fail_if(!(type = eolian_parameter_type_get(param))); - fail_if(!eolian_type_is_own(type)); + fail_if(!eolian_type_is_owned(type)); fail_if(!(type_name = eolian_type_c_type_get(type, EOLIAN_C_TYPE_PARAM))); - fail_if(strcmp(type_name, "const char *")); + fail_if(strcmp(type_name, "char *")); fail_if(eina_iterator_next(iter, &dummy)); @@ -1488,7 +1488,7 @@ START_TEST(eolian_function_types) fail_if(strcmp(eolian_parameter_name_get(param), "cb")); fail_if(!(type = eolian_parameter_type_get(param))); fail_if(eolian_parameter_direction_get(param) != EOLIAN_IN_PARAM); - fail_if(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(!(type_name = eolian_type_name_get(type))); fail_if(strcmp(type_name, "VoidFunc")); fail_if(!(arg_decl = eolian_type_typedecl_get(type))); @@ -1498,7 +1498,7 @@ START_TEST(eolian_function_types) fail_if(strcmp(eolian_parameter_name_get(param), "another_cb")); fail_if(eolian_parameter_direction_get(param) != EOLIAN_IN_PARAM); fail_if(!(type = eolian_parameter_type_get(param))); - fail_if(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(eolian_type_type_get(type) != EOLIAN_TYPE_REGULAR); fail_if(!(type_name = eolian_type_name_get(type))); fail_if(strcmp(type_name, "SimpleFunc")); @@ -1539,7 +1539,7 @@ START_TEST(eolian_function_as_arguments) fail_if(strcmp(eolian_parameter_name_get(param), "cb")); fail_if(!(type = eolian_parameter_type_get(param))); fail_if(eolian_parameter_direction_get(param) != EOLIAN_IN_PARAM); - fail_if(eolian_type_is_own(type)); + fail_if(eolian_type_is_owned(type)); fail_if(!(type_name = eolian_type_name_get(type))); fail_if(strcmp(type_name, "SimpleFunc")); fail_if(!(arg_decl = eolian_type_typedecl_get(type)));