eolian: enable inheritance checks and fix EFL to build with them
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Wed, 15 Jun 2016 15:35:45 +0000 (16:35 +0100)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Wed, 15 Jun 2016 15:37:15 +0000 (16:37 +0100)
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
src/lib/eo/Eo.h
src/lib/eo/eo_class_class.c
src/lib/eolian/eo_parser.c
src/lib/evas/canvas/efl_canvas_surface.eo
src/lib/evas/canvas/efl_canvas_surface_tbm.eo
src/lib/evas/canvas/efl_canvas_surface_wayland.eo
src/lib/evas/canvas/efl_canvas_surface_x11.eo

index bf36bd9..fd21bd7 100644 (file)
@@ -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;
index 4e5120d..d5274a9 100644 (file)
@@ -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
 
 /**
index 7c5ca65..9d563f7 100644 (file)
@@ -5,4 +5,4 @@
 #include "Eo.h"
 
 #include "eo_class.eo.c"
-
+#include "eo_interface.eo.c"
index 1247e5e..8f92002 100644 (file)
@@ -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;
index 91408f5..b393296 100644 (file)
@@ -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.
 
index 7f814b5..0a9cd1d 100644 (file)
@@ -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]]
 
index 0da8e47..b689258 100644 (file)
@@ -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]]
 
index 18d84a7..c5ed11e 100644 (file)
@@ -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]]