eolian: disallow @pure_virtual keyword in interfaces

This is implicit, so it's pointless to allow specifying it.
This commit is contained in:
Daniel Kolesa 2019-01-16 20:37:08 +01:00
parent eb830d8e46
commit 90f6043275
2 changed files with 7 additions and 1 deletions

View File

@ -1,7 +1,7 @@
interface Efl.Observer {
[[Efl observer interface]]
methods {
update @pure_virtual {
update {
[[Update observer according to the changes of observable object.
@since 1.19]]

View File

@ -1047,6 +1047,8 @@ parse_accessor(Eo_Lexer *ls, Eolian_Function *prop)
for (;;) switch (ls->t.kw)
{
case KW_at_pure_virtual:
if (ls->klass->type == EOLIAN_CLASS_INTERFACE)
eo_lexer_syntax_error(ls, "@pure_virtual is implicit in interfaces");
CASE_LOCK(ls, virtp, "pure_virtual qualifier");
if (is_get) prop->impl->get_pure_virtual = EINA_TRUE;
else prop->impl->set_pure_virtual = EINA_TRUE;
@ -1220,6 +1222,8 @@ parse_property(Eo_Lexer *ls)
eo_lexer_get(ls);
break;
case KW_at_pure_virtual:
if (ls->klass->type == EOLIAN_CLASS_INTERFACE)
eo_lexer_syntax_error(ls, "@pure_virtual is implicit in interfaces");
CASE_LOCK(ls, virtp, "pure_virtual qualifier");
eo_lexer_get(ls);
break;
@ -1389,6 +1393,8 @@ parse_method(Eo_Lexer *ls)
eo_lexer_get(ls);
break;
case KW_at_pure_virtual:
if (ls->klass->type == EOLIAN_CLASS_INTERFACE)
eo_lexer_syntax_error(ls, "@pure_virtual is implicit in interfaces");
CASE_LOCK(ls, virtp, "pure_virtual qualifier");
eo_lexer_get(ls);
break;