eolian: fix a parse bug where composites was treated as implements

In the specific case where you had "class A extends B composites C"
the correct composites branch was ignored and instead the implements
branch was used. This was entirely wrong/an oversight that did not
appear until now. Other combinations were handled correctly.
This commit is contained in:
Daniel Kolesa 2019-12-04 16:04:19 +01:00
parent e242a05d73
commit c601944a13
1 changed files with 5 additions and 1 deletions

View File

@ -2301,8 +2301,11 @@ tags_done:
{
/* regular class can have a parent, but just one */
_inherit_dep(ls, ibuf, EINA_TRUE);
/* followed by composites */
if (ls->t.kw == KW_composites)
goto noimp_comp;
/* if not followed by implements, we're done */
if ((ls->t.kw != KW_implements) && (ls->t.kw != KW_composites))
if (ls->t.kw != KW_implements)
{
eo_lexer_dtor_pop(ls);
goto inherit_done;
@ -2314,6 +2317,7 @@ tags_done:
while (test_next(ls, ','));
}
noimp_comp:
if (ls->t.kw == KW_composites)
{
if (type == EOLIAN_CLASS_INTERFACE)