forked from enlightenment/efl
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:
parent
e242a05d73
commit
c601944a13
|
@ -2301,8 +2301,11 @@ tags_done:
|
||||||
{
|
{
|
||||||
/* regular class can have a parent, but just one */
|
/* regular class can have a parent, but just one */
|
||||||
_inherit_dep(ls, ibuf, EINA_TRUE);
|
_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 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);
|
eo_lexer_dtor_pop(ls);
|
||||||
goto inherit_done;
|
goto inherit_done;
|
||||||
|
@ -2314,6 +2317,7 @@ tags_done:
|
||||||
while (test_next(ls, ','));
|
while (test_next(ls, ','));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
noimp_comp:
|
||||||
if (ls->t.kw == KW_composites)
|
if (ls->t.kw == KW_composites)
|
||||||
{
|
{
|
||||||
if (type == EOLIAN_CLASS_INTERFACE)
|
if (type == EOLIAN_CLASS_INTERFACE)
|
||||||
|
|
Loading…
Reference in New Issue