q66 pushed a commit to branch master.

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

commit bc793753cb5c7764b5766720c16177fcd1656517
Author: Daniel Kolesa <d.kol...@samsung.com>
Date:   Thu Sep 19 17:26:48 2019 +0200

    eolian: allow composites keyword in place of composite
    
    Fixes T8218.
---
 src/lib/eolian/eo_lexer.h  |  2 +-
 src/lib/eolian/eo_parser.c | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 876f1c70bc..0746e79bae 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -27,7 +27,7 @@ enum Tokens
  */
 #define KEYWORDS KW(class), KW(const), KW(enum), KW(return), KW(struct), \
     \
-    KW(abstract), KW(c_prefix), KW(composite), KW(constructor), 
KW(constructors), \
+    KW(abstract), KW(c_prefix), KW(composite), KW(composites), 
KW(constructor), KW(constructors), \
     KW(data), KW(destructor), KW(error), KW(event_prefix), KW(events), 
KW(extends), \
     KW(free), KW(get), KW(implements), KW(import), KW(interface), \
     KW(keys), KW(legacy), KW(methods), KW(mixin), KW(params), \
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 1f5a678215..c403305a2f 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -2210,8 +2210,8 @@ _composite_add(Eo_Lexer *ls, Eina_Strbuf *buf)
         eo_lexer_syntax_error(ls, ebuf);
         return;
      }
-   /* do not introduce a dependency */
-   database_defer(ls->state, fnm, EINA_FALSE);
+   /* composite == definitely a dependency */
+   database_defer(ls->state, fnm, EINA_TRUE);
    free(fnm);
    ls->klass->composite = eina_list_append(ls->klass->composite, nm);
    eo_lexer_context_pop(ls);
@@ -2306,7 +2306,7 @@ tags_done:
                   /* regular class can have a parent, but just one */
                   _inherit_dep(ls, ibuf, EINA_TRUE);
                   /* if not followed by implements, we're done */
-                  if (ls->t.kw != KW_implements)
+                  if ((ls->t.kw != KW_implements) && (ls->t.kw != 
KW_composites))
                     {
                        eo_lexer_dtor_pop(ls);
                        goto inherit_done;
@@ -2318,10 +2318,10 @@ tags_done:
              while (test_next(ls, ','));
           }
 
-        if (ls->t.kw == KW_composite)
+        if (ls->t.kw == KW_composite || ls->t.kw == KW_composites)
           {
              if (type == EOLIAN_CLASS_INTERFACE)
-                eo_lexer_syntax_error(ls, "composite not allowed in 
interfaces");
+                eo_lexer_syntax_error(ls, "interfaces cannot composite");
              eo_lexer_get(ls);
              do
                _composite_add(ls, ibuf);

-- 


Reply via email to