eolian: enforce that list<> can only be used with @beta API.
authorCedric BAIL <cedric.bail@free.fr>
Thu, 2 Jan 2020 23:41:36 +0000 (15:41 -0800)
committerJongmin Lee <jm105.lee@samsung.com>
Wed, 29 Jan 2020 22:13:10 +0000 (07:13 +0900)
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Differential Revision: https://phab.enlightenment.org/D11050

src/lib/eolian/Eolian.h
src/lib/eolian/database_validate.c

index db04216..7f19ff9 100644 (file)
@@ -336,7 +336,12 @@ typedef enum
    EOLIAN_TYPE_BUILTIN_ARRAY,
    EOLIAN_TYPE_BUILTIN_FUTURE,
    EOLIAN_TYPE_BUILTIN_ITERATOR,
+#ifdef EFL_BETA_API_SUPPORT
    EOLIAN_TYPE_BUILTIN_LIST,
+#else
+   // Placeholder when using release API only. Done to prevent offseting the value below.
+   EOLIAN_TYPE_BUILTIN_BETA_PLACEHOLDER1,
+#endif
 
    EOLIAN_TYPE_BUILTIN_ANY_VALUE,
    EOLIAN_TYPE_BUILTIN_ANY_VALUE_REF,
index b1af218..1e7b072 100644 (file)
@@ -400,9 +400,9 @@ _validate_type(Validate_State *vals, Eolian_Type *tp, Eina_Bool by_ref,
                 int kwid = eo_lexer_keyword_str_to_id(tp->base.name);
                 if (kwid > KW_void)
                   tp->ownable = EINA_TRUE;
-                if (kwid == KW_hash && vals->stable)
+                if ((kwid == KW_hash || kwid == KW_list) && vals->stable)
                   {
-                     _eo_parser_log(&tp->base, "hashes not allowed in stable context");
+                     _eo_parser_log(&tp->base, "hashes and lists not allowed in stable context");
                      return EINA_FALSE;
                   }
                 Eolian_Type *itp = tp->base_type;