summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2015-05-08 14:00:07 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2015-05-08 14:00:07 +0100
commitb33e2b21a161f3aa3509826ec9501f93ddfc25e6 (patch)
tree0c1ab717e100e358a5c03787f67d970af12b3d14
parenta08583d4d45c4d227e5ab7d20f4e95521104e588 (diff)
downloadefl-b33e2b21a161f3aa3509826ec9501f93ddfc25e6.tar.gz
eolian: parse the @beta qualifier
-rw-r--r--src/lib/eolian/eo_parser.c17
-rw-r--r--src/lib/eolian/eolian_database.h1
2 files changed, 15 insertions, 3 deletions
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 4a19c00a37..88f98bb4d5 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1108,7 +1108,7 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
case KW_at_nullable:
if (has_nonull)
eo_lexer_syntax_error(ls, "both nullable and nonull specified");
- CASE_LOCK(ls, nullable, "c_only qualifier");
+ CASE_LOCK(ls, nullable, "nullable qualifier");
par->nullable = EINA_TRUE;
eo_lexer_get(ls);
break;
@@ -1255,7 +1255,7 @@ parse_property(Eo_Lexer *ls)
Eina_Bool has_get = EINA_FALSE, has_set = EINA_FALSE,
has_keys = EINA_FALSE, has_values = EINA_FALSE,
has_protected = EINA_FALSE, has_class = EINA_FALSE,
- has_c_only = EINA_FALSE;
+ has_c_only = EINA_FALSE, has_beta = EINA_FALSE;
prop = calloc(1, sizeof(Eolian_Function));
prop->klass = ls->tmp.kls;
prop->type = EOLIAN_UNRESOLVED;
@@ -1281,6 +1281,11 @@ parse_property(Eo_Lexer *ls)
prop->is_c_only = EINA_TRUE;
eo_lexer_get(ls);
break;
+ case KW_at_beta:
+ CASE_LOCK(ls, beta, "beta qualifier");
+ prop->is_beta = EINA_TRUE;
+ eo_lexer_get(ls);
+ break;
default:
goto body;
}
@@ -1329,7 +1334,8 @@ parse_method(Eo_Lexer *ls)
Eina_Bool has_const = EINA_FALSE, has_params = EINA_FALSE,
has_return = EINA_FALSE, has_legacy = EINA_FALSE,
has_protected = EINA_FALSE, has_class = EINA_FALSE,
- has_eo = EINA_FALSE, has_c_only = EINA_FALSE;
+ has_eo = EINA_FALSE, has_c_only = EINA_FALSE,
+ has_beta = EINA_FALSE;
meth = calloc(1, sizeof(Eolian_Function));
meth->klass = ls->tmp.kls;
meth->type = EOLIAN_METHOD;
@@ -1360,6 +1366,11 @@ parse_method(Eo_Lexer *ls)
meth->is_c_only = EINA_TRUE;
eo_lexer_get(ls);
break;
+ case KW_at_beta:
+ CASE_LOCK(ls, beta, "beta qualifier");
+ meth->is_beta = EINA_TRUE;
+ eo_lexer_get(ls);
+ break;
default:
goto body;
}
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index 309f614ca3..407d3d71ac 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -119,6 +119,7 @@ struct _Eolian_Function
Eina_Bool set_only_legacy: 1;
Eina_Bool is_class :1;
Eina_Bool is_c_only :1;
+ Eina_Bool is_beta :1;
Eina_List *ctor_of;
Eolian_Class *klass;
};