From a7c6086c428ad23bf883b3459d3ea9f06e680180 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Wed, 15 Jun 2016 16:35:45 +0100 Subject: [PATCH] eolian: enable inheritance checks and fix EFL to build with them Somehow, there was code in the tree that apparently isn't tested at all, even once - if it was, the eo.c logic that performs inheritance checks would be triggered. I don't know how this could have happened (actually I do, it's Cedric's fault and he should be publicly shamed for it) but these checks make sure this will never happen again. But since the code itself appears to be untested, I don't know if there isn't any other brokenness in it. But that's beyond the scope of this change, so for now, let's make sure all our inheritance is at least formally correct. Also, enable eo_interface.eo generated code in Eo itself so that Eo.Interface can be used when inheriting. @fix --- src/lib/ector/ector_renderer_buffer.eo | 2 +- src/lib/eo/Eo.h | 1 + src/lib/eo/eo_class_class.c | 2 +- src/lib/eolian/eo_parser.c | 4 ---- src/lib/evas/canvas/efl_canvas_surface.eo | 2 +- src/lib/evas/canvas/efl_canvas_surface_tbm.eo | 2 +- src/lib/evas/canvas/efl_canvas_surface_wayland.eo | 2 +- src/lib/evas/canvas/efl_canvas_surface_x11.eo | 2 +- 8 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/lib/ector/ector_renderer_buffer.eo b/src/lib/ector/ector_renderer_buffer.eo index bf36bd9b1a..fd21bd7c70 100644 --- a/src/lib/ector/ector_renderer_buffer.eo +++ b/src/lib/ector/ector_renderer_buffer.eo @@ -1,4 +1,4 @@ -mixin Ector.Renderer.Buffer (Ector.Renderer, Efl.Gfx.Fill) +mixin Ector.Renderer.Buffer (Eo.Interface, Ector.Renderer, Efl.Gfx.Fill) { [[Ector buffers have a default fill set to repeat]] eo_prefix: ector_renderer_buffer; diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h index 4e5120de45..d5274a9712 100644 --- a/src/lib/eo/Eo.h +++ b/src/lib/eo/Eo.h @@ -171,6 +171,7 @@ typedef void (*Eo_Del_Intercept) (Eo *obj_id); #include "eo_override.eo.h" #include "eo_base.eo.h" +#include "eo_interface.eo.h" #define EO_CLASS EO_BASE_CLASS /** diff --git a/src/lib/eo/eo_class_class.c b/src/lib/eo/eo_class_class.c index 7c5ca65d7d..9d563f7264 100644 --- a/src/lib/eo/eo_class_class.c +++ b/src/lib/eo/eo_class_class.c @@ -5,4 +5,4 @@ #include "Eo.h" #include "eo_class.eo.c" - +#include "eo_interface.eo.c" diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 1247e5e8d8..8f92002d01 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -1855,7 +1855,6 @@ _inherit_dep(Eo_Lexer *ls, Eina_Strbuf *buf, Eina_Bool check_inherit, { case EOLIAN_CLASS_REGULAR: case EOLIAN_CLASS_ABSTRACT: -#if 0 if (dep->type != EOLIAN_CLASS_REGULAR && dep->type != EOLIAN_CLASS_ABSTRACT) { char ebuf[PATH_MAX]; @@ -1864,11 +1863,9 @@ _inherit_dep(Eo_Lexer *ls, Eina_Strbuf *buf, Eina_Bool check_inherit, ls->tmp.kls->full_name, iname); eo_lexer_syntax_error(ls, ebuf); } -#endif break; case EOLIAN_CLASS_MIXIN: case EOLIAN_CLASS_INTERFACE: -#if 0 if (dep->type != EOLIAN_CLASS_MIXIN && dep->type != EOLIAN_CLASS_INTERFACE) { char ebuf[PATH_MAX]; @@ -1877,7 +1874,6 @@ _inherit_dep(Eo_Lexer *ls, Eina_Strbuf *buf, Eina_Bool check_inherit, ls->tmp.kls->full_name, iname); eo_lexer_syntax_error(ls, ebuf); } -#endif break; default: break; diff --git a/src/lib/evas/canvas/efl_canvas_surface.eo b/src/lib/evas/canvas/efl_canvas_surface.eo index 91408f56e7..b393296c9c 100644 --- a/src/lib/evas/canvas/efl_canvas_surface.eo +++ b/src/lib/evas/canvas/efl_canvas_surface.eo @@ -1,4 +1,4 @@ -mixin Efl.Canvas.Surface (Evas.Image) +mixin Efl.Canvas.Surface (Eo.Interface, Evas.Image) { [[Native surfaces usually bound to an externally-managed buffer. diff --git a/src/lib/evas/canvas/efl_canvas_surface_tbm.eo b/src/lib/evas/canvas/efl_canvas_surface_tbm.eo index 7f814b5f4c..0a9cd1de45 100644 --- a/src/lib/evas/canvas/efl_canvas_surface_tbm.eo +++ b/src/lib/evas/canvas/efl_canvas_surface_tbm.eo @@ -1,4 +1,4 @@ -class Efl.Canvas.Surface.Tbm (Efl.Canvas.Surface) +class Efl.Canvas.Surface.Tbm (Eo.Base, Efl.Canvas.Surface) { [[Native Tizen Buffer Manager surface for Efl canvas]] diff --git a/src/lib/evas/canvas/efl_canvas_surface_wayland.eo b/src/lib/evas/canvas/efl_canvas_surface_wayland.eo index 0da8e47119..b68925833a 100644 --- a/src/lib/evas/canvas/efl_canvas_surface_wayland.eo +++ b/src/lib/evas/canvas/efl_canvas_surface_wayland.eo @@ -1,4 +1,4 @@ -class Efl.Canvas.Surface.Wayland (Efl.Canvas.Surface) +class Efl.Canvas.Surface.Wayland (Eo.Base, Efl.Canvas.Surface) { [[Native Wayland surface for Efl canvas]] diff --git a/src/lib/evas/canvas/efl_canvas_surface_x11.eo b/src/lib/evas/canvas/efl_canvas_surface_x11.eo index 18d84a7179..c5ed11e3cf 100644 --- a/src/lib/evas/canvas/efl_canvas_surface_x11.eo +++ b/src/lib/evas/canvas/efl_canvas_surface_x11.eo @@ -5,7 +5,7 @@ struct Efl.Canvas.Surface.X11_Pixmap pixmap: ulong; [[X11 Pixmap ID.]] } -class Efl.Canvas.Surface.X11 (Efl.Canvas.Surface) +class Efl.Canvas.Surface.X11 (Eo.Base, Efl.Canvas.Surface) { [[Native X11 surface for Efl canvas]]