q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=90f604327586eb8fb3f0c9e7b83816573bea820d

commit 90f604327586eb8fb3f0c9e7b83816573bea820d
Author: Daniel Kolesa <d.kol...@samsung.com>
Date:   Wed Jan 16 20:37:08 2019 +0100

    eolian: disallow @pure_virtual keyword in interfaces
    
    This is implicit, so it's pointless to allow specifying it.
---
 src/lib/efl/interfaces/efl_observer.eo | 2 +-
 src/lib/eolian/eo_parser.c             | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/efl/interfaces/efl_observer.eo 
b/src/lib/efl/interfaces/efl_observer.eo
index c76503fac2..38764f843d 100644
--- a/src/lib/efl/interfaces/efl_observer.eo
+++ b/src/lib/efl/interfaces/efl_observer.eo
@@ -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]]
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index a06b69b6fb..172df12bd9 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -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;

-- 


Reply via email to