def->base_type = eo_lexer_type_release(ls, parse_type_void(ls, EINA_TRUE));
else
def->base_type = eo_lexer_type_release(ls, parse_type(ls, EINA_TRUE));
- if ((def->base_type->owned = (ls->t.kw == KW_at_owned)))
- eo_lexer_get(ls);
+ /* view-only types are not allowed to own the contents */
+ if (tpid == KW_array || tpid == KW_hash || tpid == KW_list || tpid == KW_future)
+ if ((def->base_type->owned = (ls->t.kw == KW_at_owned)))
+ eo_lexer_get(ls);
if (tpid == KW_hash)
{
check_next(ls, ',');
EOAPI EFL_VOID_FUNC_BODYV_FALLBACK(owning_test1, _owning_test1_ownership_fallback(test1, test2, test3, test4);, EFL_FUNC_CALL(test1, test2, test3, test4), Eina_List *test1, Eina_Iterator *test2, Eina_Hash *test3, Eina_Accessor *test4);
-void _owning_test2(Eo *obj, Owning_Data *pd, Eina_List *test1, Eina_Iterator *test2, Eina_Hash *test3, Eina_Accessor *test4);
+void _owning_test2(Eo *obj, Owning_Data *pd, Eina_List *test1, Eina_Hash *test2);
static void
-_owning_test2_ownership_fallback(Eina_List *test1, Eina_Iterator *test2, Eina_Hash *test3, Eina_Accessor *test4)
+_owning_test2_ownership_fallback(Eina_List *test1, Eina_Hash *test2)
{
Test_A *test1_iter;
EINA_LIST_FREE(test1,test1_iter)
{
free_a(test1_iter);
}
- Test_A *test2_iter;
- EINA_ITERATOR_FOREACH(test2,test2_iter)
- {
- free_a(test2_iter);
- }
- eina_hash_free_cb_set(test3,NULL);
- eina_hash_free(test3);
- Test_A *test4_iter;
- unsigned int test4_i = 0;
- EINA_ACCESSOR_FOREACH(test4,test4_i,test4_iter)
- {
- free_a(test4_iter);
- }
+ eina_hash_free_cb_set(test2,NULL);
+ eina_hash_free(test2);
}
-EOAPI EFL_VOID_FUNC_BODYV_FALLBACK(owning_test2, _owning_test2_ownership_fallback(test1, test2, test3, test4);, EFL_FUNC_CALL(test1, test2, test3, test4), Eina_List *test1, Eina_Iterator *test2, Eina_Hash *test3, Eina_Accessor *test4);
+EOAPI EFL_VOID_FUNC_BODYV_FALLBACK(owning_test2, _owning_test2_ownership_fallback(test1, test2);, EFL_FUNC_CALL(test1, test2), Eina_List *test1, Eina_Hash *test2);
static Eina_Bool
_owning_class_initializer(Efl_Class *klass)