a1b1ba0e5e
Also import patches in the branch so far.
42 lines
1.6 KiB
Diff
42 lines
1.6 KiB
Diff
From 266f0a57169efe672db44921665a05e73cc0eb58 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Kolesa <d.kolesa@samsung.com>
|
|
Date: Wed, 4 Dec 2019 16:04:19 +0100
|
|
Subject: [PATCH 3/4] 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.
|
|
---
|
|
src/lib/eolian/eo_parser.c | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
diff --git src/lib/eolian/eo_parser.c src/lib/eolian/eo_parser.c
|
|
index 706d6c1c37..6c45f19907 100644
|
|
--- src/lib/eolian/eo_parser.c
|
|
+++ src/lib/eolian/eo_parser.c
|
|
@@ -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)
|
|
--
|
|
2.25.1
|
|
|