eolian: remove @nullable keyword
authorDaniel Kolesa <d.kolesa@samsung.com>
Tue, 21 May 2019 14:01:07 +0000 (16:01 +0200)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 30 May 2019 08:17:52 +0000 (17:17 +0900)
This was an experiment that never properly took off and was never
used by any generator. Its use was highly variable, so it could
not be relied upon. We will still want to reverse the current
behavior eventually (no null by default), but that will be
done with eo file versioning in the future.

@feature

29 files changed:
src/Makefile_Eolian.am
src/bindings/luajit/eolian.lua
src/lib/ecore_con/efl_net_control_manager.eo
src/lib/ecore_con/efl_net_dialer.eo
src/lib/ecore_con/efl_net_socket_ssl.eo
src/lib/ecore_con/efl_net_ssl_context.eo
src/lib/efl/interfaces/efl_canvas_scene.eo
src/lib/efl/interfaces/efl_gfx_buffer.eo
src/lib/efl/interfaces/efl_ui_format.eo
src/lib/elementary/efl_ui_clock.eo
src/lib/elementary/efl_ui_internal_text_scroller.eo
src/lib/elementary/efl_ui_pager.eo
src/lib/elementary/efl_ui_radio.eo
src/lib/elementary/efl_ui_scroll_manager.eo
src/lib/elementary/efl_ui_text.eo
src/lib/elementary/efl_ui_widget.eo
src/lib/elementary/efl_ui_win.eo
src/lib/elementary/elm_interface_scrollable.eo
src/lib/eo/efl_object.eo
src/lib/eolian/Eolian.h
src/lib/eolian/database_function_parameter_api.c
src/lib/eolian/eo_lexer.h
src/lib/eolian/eo_parser.c
src/lib/eolian/eolian_database.h
src/scripts/pyolian/eolian.py
src/scripts/pyolian/eolian_lib.py
src/scripts/pyolian/test_eolian.py
src/tests/eolian/data/null.eo [deleted file]
src/tests/eolian/eolian_parsing.c

index 876a2f0..0336b7f 100644 (file)
@@ -92,7 +92,6 @@ tests/eolian/data/nmsp1_class1.eo \
 tests/eolian/data/nmsp1_nmsp11_class2.eo \
 tests/eolian/data/nmsp2_class1.eo \
 tests/eolian/data/no_nmsp.eo \
-tests/eolian/data/null.eo \
 tests/eolian/data/object_impl.eo \
 tests/eolian/data/object_impl_add.eo \
 tests/eolian/data/override.eo \
index 20118af..34da82c 100644 (file)
@@ -370,7 +370,6 @@ ffi.cdef [[
     const Eolian_Expression *eolian_parameter_default_value_get(const Eolian_Function_Parameter *param);
     const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian_Function_Parameter *param);
     Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc);
-    Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc);
     Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc);
     const Eolian_Type *eolian_function_return_type_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
     const Eolian_Expression *eolian_function_return_default_value_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
@@ -1268,10 +1267,6 @@ ffi.metatype("Eolian_Function_Parameter", {
             return eolian.eolian_parameter_is_nonull(self) ~= 0
         end,
 
-        is_nullable = function(self)
-            return eolian.eolian_parameter_is_nullable(self) ~= 0
-        end,
-
         is_optional = function(self)
             return eolian.eolian_parameter_is_optional(self) ~= 0
         end
index cfb729b..fb2fabf 100644 (file)
@@ -193,11 +193,11 @@ class @beta Efl.Net.Control.Manager extends Efl.Loop_Consumer {
         agent_reply {
             [[If event "agent_request_input" was emitted, this will reply with the requested data]]
             params {
-                name: string @nullable; [[If @Efl.Net.Control.Agent_Request_Input_Field.name was present, this should contain the network name or the 'ssid' parameter should be used.]]
-                @cref ssid: Eina.Slice @nullable; [[If @Efl.Net.Control.Agent_Request_Input_Field.ssid was present, this should contain the network SSID or the 'name' parameter should be used.]]
-                username: string @nullable; [[If @Efl.Net.Control.Agent_Request_Input_Field.username was present, this should contain the identity or username]]
-                passphrase: string @nullable; [[If @Efl.Net.Control.Agent_Request_Input_Field.passphrase was present, this should contain the password or passphrase, more details on how it should be interpreted was given in Efl.Net.Control.Agent_Request_Input.passphrase_type.]]
-                wps: string @nullable; [[If @Efl.Net.Control.Agent_Request_Input_Field.wps was present, this should contain the WPS PIN or an empty string "" to use the WPS push button instead.]]
+                name: string; [[If @Efl.Net.Control.Agent_Request_Input_Field.name was present, this should contain the network name or the 'ssid' parameter should be used.]]
+                @cref ssid: Eina.Slice; [[If @Efl.Net.Control.Agent_Request_Input_Field.ssid was present, this should contain the network SSID or the 'name' parameter should be used.]]
+                username: string; [[If @Efl.Net.Control.Agent_Request_Input_Field.username was present, this should contain the identity or username]]
+                passphrase: string; [[If @Efl.Net.Control.Agent_Request_Input_Field.passphrase was present, this should contain the password or passphrase, more details on how it should be interpreted was given in Efl.Net.Control.Agent_Request_Input.passphrase_type.]]
+                wps: string; [[If @Efl.Net.Control.Agent_Request_Input_Field.wps was present, this should contain the WPS PIN or an empty string "" to use the WPS push button instead.]]
             }
         }
     }
index 02770dc..fce3897 100644 (file)
@@ -109,7 +109,7 @@ interface @beta Efl.Net.Dialer extends Efl.Net.Socket {
     }
 
     events {
-        /* FIXME: Might be NULL, but @nullable does not work on event types */
+        /* tag nullable once supported by eolian */
         dialer,resolved: string; [[Notifies @.address_dial was resolved to
                             @Efl.Net.Socket.address_remote.
 
index 9fb0031..31fcb30 100644 (file)
@@ -75,7 +75,7 @@ class @beta Efl.Net.Socket_Ssl extends Efl.Loop_Consumer implements Efl.Net.Sock
               It's only used if @.hostname_verify is $true.
             ]]
             values {
-                hostname_override: string @nullable; [[Hostname for this socket]]
+                hostname_override: string; [[Hostname for this socket]]
             }
         }
     }
index 2557a03..26fd68f 100644 (file)
@@ -122,7 +122,7 @@ class @beta Efl.Net.Ssl.Context extends Efl.Object {
               It's only used if @.hostname_verify is $true.
             ]]
             values {
-                hostname: string @nullable; [[Hostname for this socket]]
+                hostname: string; [[Hostname for this socket]]
             }
         }
     }
index fd1a818..44539d3 100644 (file)
@@ -235,7 +235,7 @@ interface Efl.Canvas.Scene
       object,focus,in: Efl.Input.Focus; [[Called when object got focus]]
       object,focus,out: Efl.Input.Focus; [[Called when object lost focus]]
       render,pre: void; [[Called when pre render happens]]
-      /* FIXME: event_info can be NULL, but @nullable tag does not work on events yet */
+      /* tag nullable once supported by eolian */
       render,post @beta: Efl.Gfx.Event.Render_Post; [[Called when post render happens]]
       device,changed @beta : Efl.Input.Device; [[Called when input device changed]]
       device,added @beta: Efl.Input.Device; [[Called when input device was added]]
index 074dd78..38da6c8 100644 (file)
@@ -174,7 +174,7 @@ interface @beta Efl.Gfx.Buffer
            $slice should not be the return value of @.buffer_managed_get.
          ]]
          params {
-            @cref slice: Eina.Slice @nullable; [[If $null, allocates an empty buffer]]
+            @cref slice: Eina.Slice; [[If $null, allocates an empty buffer]]
             @in size: Eina.Size2D; [[The size in pixels.]]
             @in stride: int @optional; [[If 0, automatically guessed from the $width.]]
             @in cspace: Efl.Gfx.Colorspace @optional; [[argb8888 by default.]]
@@ -199,7 +199,7 @@ interface @beta Efl.Gfx.Buffer
            internally.
          ]]
          params {
-            @cref slice: Eina.Slice @nullable; [[If $null, detaches the previous buffer.]]
+            @cref slice: Eina.Slice; [[If $null, detaches the previous buffer.]]
             @in size: Eina.Size2D; [[The size in pixels.]]
             @in stride: int @optional; [[If 0, automatically guessed from the $width.]]
             @in cspace: Efl.Gfx.Colorspace @optional; [[argb8888 by default.]]
index 8f59d85..c7b6aba 100644 (file)
@@ -18,7 +18,7 @@ mixin @beta Efl.Ui.Format
             ]]
          }
          values {
-            func: Efl.Ui.Format_Func_Cb @nullable; [[The format function callback]]
+            func: Efl.Ui.Format_Func_Cb; [[The format function callback]]
          }
       }
       @property format_string {
@@ -35,7 +35,7 @@ mixin @beta Efl.Ui.Format
            as in $"%.0f %%".
          ]]
          values {
-            units: string @nullable; [[The format string for $obj's units label.]]
+            units: string; [[The format string for $obj's units label.]]
          }
       }
    }
index e112f9a..e7a568a 100644 (file)
@@ -95,7 +95,7 @@ class @beta Efl.Ui.Clock extends Efl.Ui.Layout_Base
          */
          set {} get {}
          values {
-            fmt: string @nullable; [[The clock format.]]
+            fmt: string; [[The clock format.]]
          }
       }
       @property pause {
index 4e20e9b..b18c008 100644 (file)
@@ -38,8 +38,8 @@ class @beta Efl.Ui.Internal_Text_Scroller extends Efl.Ui.Scroller
            This should be called upon constructing the object.
          ]]
          params {
-            text_obj: Efl.Canvas.Text @nullable; [[The text object to query]]
-            text_table: Efl.Ui.Table @nullable; [[The table container of
+            text_obj: Efl.Canvas.Text; [[The text object to query]]
+            text_table: Efl.Ui.Table; [[The table container of
                the $text_obj]]
          }
       }
index 7879132..7389fd8 100644 (file)
@@ -27,7 +27,7 @@ class @beta Efl.Ui.Pager extends Efl.Ui.Layout_Base implements Efl.Pack_Linear
             [[Set a page transition effect]]
          }
          values {
-            transition: Efl.Page.Transition @nullable; [[transition effect]]
+            transition: Efl.Page.Transition; [[transition effect]]
          }
       }
       @property indicator {
@@ -40,7 +40,7 @@ class @beta Efl.Ui.Pager extends Efl.Ui.Layout_Base implements Efl.Pack_Linear
             [[Set a page indicator]]
          }
          values {
-            indicator: Efl.Page.Indicator @nullable; [[indicator class]]
+            indicator: Efl.Page.Indicator; [[indicator class]]
          }
       }
       @property current_page {
index 5fd6136..8dabfc7 100644 (file)
@@ -33,7 +33,7 @@ class @beta Efl.Ui.Radio extends Efl.Ui.Check implements Efl.Access.Widget.Actio
             ]]
          }
          values {
-            valuep: ptr(int) @nullable; [[Pointer to the integer to modify]]
+            valuep: ptr(int); [[Pointer to the integer to modify]]
          }
       }
       @property selected_object {
index e948fe6..3733e81 100644 (file)
@@ -17,7 +17,7 @@ class @beta Efl.Ui.Scroll.Manager extends Efl.Object implements
          set {
          }
          values {
-            pan: Efl.Ui.Pan @nullable; [[Pan object]]
+            pan: Efl.Ui.Pan; [[Pan object]]
          }
       }
    }
index 626280a..4ebb3fa 100644 (file)
@@ -360,7 +360,7 @@ class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Ui.Clickable,
    }
    events {
       changed: void; [[Called when entry changes]]
-      /* FIXME: Sometimes it can be NULL but @nullable does not work on events */
+      /* can be NULL, tag nullable once Eolian supports it */
       changed,user: Efl.Ui.Text_Change_Info;
          [[The text object has changed due to user interaction]]
       validate: Elm.Validate_Content; [[Called when validating]]
index fcd9450..5012927 100644 (file)
@@ -62,8 +62,8 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
             [[Returns the current cursor name.]]
          }
          values {
-            cursor: string @nullable; [[The cursor name, defined either
-                                        by the display system or the theme.]]
+            cursor: string; [[The cursor name, defined either
+                              by the display system or the theme.]]
          }
       }
       @property cursor_style @beta {
@@ -113,7 +113,7 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
             [[Sets the new resize object for this widget.]]
          }
          values {
-            sobj: Efl.Canvas.Object @nullable;
+            sobj: Efl.Canvas.Object;
                [[A canvas object (often a @Efl.Canvas.Layout object).]]
          }
       }
@@ -225,7 +225,7 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
          get {
          }
          values {
-            parent: Efl.Ui.Widget @nullable; [[Widget parent object]]
+            parent: Efl.Ui.Widget; [[Widget parent object]]
          }
       }
 
@@ -240,7 +240,7 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
            out loud, instead $txt will be read out.
          ]]
          values {
-            txt: string @nullable; [[Accessibility text description.]]
+            txt: string; [[Accessibility text description.]]
          }
       }
       on_access_activate @protected @beta {
index 1107ac8..b98bb95 100644 (file)
@@ -342,7 +342,7 @@ class @beta Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Ac
               type @Efl.Canvas.Image or @Efl.Ui.Image are allowed.
             ]]
             values {
-               icon: Efl.Canvas.Object @nullable;
+               icon: Efl.Canvas.Object;
                   [[The image object to use for an icon.]]
             }
          }
@@ -353,7 +353,7 @@ class @beta Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Ac
               the object to use for the window icon.
             ]]
             values {
-               icon: const(Efl.Canvas.Object) @nullable;
+               icon: const(Efl.Canvas.Object);
                   [[The Evas image object to use for an icon.]]
             }
          }
@@ -483,7 +483,7 @@ class @beta Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Ac
          get {
          }
          values {
-            name: string @nullable; [[Window name]]
+            name: string; [[Window name]]
          }
       }
       @property win_type @beta {
@@ -836,7 +836,7 @@ class @beta Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Ac
          get {
          }
          values {
-            style: string @nullable; [[The name of the focus highlight style.]]
+            style: string; [[The name of the focus highlight style.]]
          }
       }
       @property focus_highlight_animate {
index e59427a..d800849 100644 (file)
@@ -287,7 +287,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the content has been moved up.]]
          }
          values {
-            scroll_up_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            scroll_up_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property hbar_drag_cb {
@@ -295,7 +295,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the horizontal scrollbar is dragged.]]
          }
          values {
-            hbar_drag_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            hbar_drag_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property drag_start_cb {
@@ -303,7 +303,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when dragging of the contents has started.]]
          }
          values {
-            drag_start_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            drag_start_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       //TIZEN_ONLY(20190219): fix page snap behavior.
@@ -329,7 +329,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[When the viewport is resized, the callback is called.]]
          }
          values {
-            viewport_resize_cb: Elm_Interface_Scrollable_Resize_Cb @nullable; [[The callback]]
+            viewport_resize_cb: Elm_Interface_Scrollable_Resize_Cb; [[The callback]]
          }
       }
       @property scroll_left_cb {
@@ -337,7 +337,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the content has been moved to the left]]
          }
          values {
-            scroll_left_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            scroll_left_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property vbar_press_cb {
@@ -345,7 +345,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the vertical scrollbar is pressed.]]
          }
          values {
-            vbar_press_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            vbar_press_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property hbar_press_cb {
@@ -353,7 +353,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the horizontal scrollbar is pressed.]]
          }
          values {
-            hbar_press_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            hbar_press_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property hbar_unpress_cb {
@@ -361,7 +361,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the horizontal scrollbar is unpressed.]]
          }
          values {
-            hbar_unpress_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            hbar_unpress_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property drag_stop_cb {
@@ -369,7 +369,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when dragging of the contents has stopped.]]
          }
          values {
-            drag_stop_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            drag_stop_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       //TIZEN_ONLY(20190219): fix page snap behavior.
@@ -387,7 +387,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
          set {
          }
          values {
-            pan: Efl.Canvas.Object @nullable; [[Pan object]]
+            pan: Efl.Canvas.Object; [[Pan object]]
          }
       }
       @property page_change_cb {
@@ -395,7 +395,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the visible page changes.]]
          }
          values {
-            page_change_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            page_change_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property hold {
@@ -411,7 +411,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the scrolling animation has started.]]
          }
          values {
-            animate_start_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            animate_start_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property scroll_down_cb {
@@ -419,7 +419,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the content has been moved down.]]
          }
          values {
-            scroll_down_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            scroll_down_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property page_relative {
@@ -436,7 +436,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the content has been moved.]]
          }
          values {
-            scroll_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            scroll_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property animate_stop_cb {
@@ -444,7 +444,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the scrolling animation has stopped.]]
          }
          values {
-            animate_stop_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            animate_stop_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property content_min_limit_cb {
@@ -452,7 +452,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
          set {
          }
          values {
-            min_limit_cb: Elm_Interface_Scrollable_Min_Limit_Cb @nullable; [[The callback]]
+            min_limit_cb: Elm_Interface_Scrollable_Min_Limit_Cb; [[The callback]]
          }
       }
       @property scroll_right_cb {
@@ -460,7 +460,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the content has been moved to the right.]]
          }
          values {
-            scroll_right_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            scroll_right_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property scrollable_content {
@@ -468,7 +468,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
          set {
          }
          values {
-            content: Efl.Canvas.Object @nullable; [[Content object]]
+            content: Efl.Canvas.Object; [[Content object]]
          }
       }
       @property edge_left_cb {
@@ -476,7 +476,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the left edge of the content has been reached.]]
          }
          values {
-            edge_left_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            edge_left_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property vbar_drag_cb {
@@ -484,7 +484,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the horizontal scrollbar is dragged.]]
          }
          values {
-            vbar_drag_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            vbar_drag_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property vbar_unpress_cb {
@@ -492,7 +492,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the horizontal scrollbar is unpressed.]]
          }
          values {
-            vbar_unpress_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            vbar_unpress_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property edge_bottom_cb {
@@ -500,7 +500,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the bottom edge of the content has been reached.]]
          }
          values {
-            edge_bottom_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            edge_bottom_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property edge_right_cb {
@@ -508,7 +508,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the right edge of the content has been reached.]]
          }
          values {
-            edge_right_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            edge_right_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property edge_top_cb {
@@ -516,7 +516,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
             [[Set the callback to run when the top edge of the content has been reached.]]
          }
          values {
-            edge_top_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]]
+            edge_top_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
          }
       }
       @property objects {
index a63343a..84a5558 100644 (file)
@@ -91,7 +91,7 @@ abstract Efl.Object
          get {
          }
          values {
-            parent: Efl.Object @nullable; [[The new parent.]]
+            parent: Efl.Object; [[The new parent.]]
          }
       }
       @property name {
@@ -108,7 +108,7 @@ abstract Efl.Object
          get {
          }
          values {
-           name: string @nullable; [[The name.]]
+           name: string; [[The name.]]
          }
       }
       @property comment {
@@ -123,7 +123,7 @@ abstract Efl.Object
          get {
          }
          values {
-           comment: string @nullable; [[The comment.]]
+           comment: string; [[The comment.]]
          }
       }
       debug_name_override {
index 3715ed1..2f5346e 100644 (file)
@@ -1792,16 +1792,6 @@ EAPI const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian
 EAPI Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc);
 
 /*
- * @brief Indicates if a parameter is nullable.
- *
- * @param[in] param_desc parameter handle
- * @return EINA_TRUE if nullable, EINA_FALSE otherwise
- *
- * @ingroup Eolian
- */
-EAPI Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc);
-
-/*
  * @brief Indicates if a parameter is optional.
  *
  * @param[in] param_desc parameter handle
index 87f1ed3..265c98e 100644 (file)
@@ -41,13 +41,6 @@ eolian_parameter_is_nonull(const Eolian_Function_Parameter *param)
 }
 
 EAPI Eina_Bool
-eolian_parameter_is_nullable(const Eolian_Function_Parameter *param)
-{
-   EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
-   return param->nullable;
-}
-
-EAPI Eina_Bool
 eolian_parameter_is_optional(const Eolian_Function_Parameter *param)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
index 4fec039..cc8fc9c 100644 (file)
@@ -21,7 +21,10 @@ enum Tokens
 };
 
 /* all keywords in eolian, they can still be used as names (they're TOK_VALUE)
- * they just fill in the "kw" field of the token */
+ * they just fill in the "kw" field of the token
+ *
+ * reserved for the future: @nullable
+ */
 #define KEYWORDS KW(class), KW(const), KW(enum), KW(return), KW(struct), \
     \
     KW(abstract), KW(c_prefix), KW(composite), KW(constructor), KW(constructors), \
index 80d89e5..3a75555 100644 (file)
@@ -907,7 +907,7 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
             Eina_Bool is_vals)
 {
    Eina_Bool has_nonull   = EINA_FALSE, has_optional = EINA_FALSE,
-             has_nullable = EINA_FALSE, has_owned    = EINA_FALSE;
+             has_owned    = EINA_FALSE;
    Eina_Bool cref = (ls->t.kw == KW_at_cref);
    Eolian_Function_Parameter *par = calloc(1, sizeof(Eolian_Function_Parameter));
    par->param_dir = EOLIAN_IN_PARAM;
@@ -956,8 +956,6 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
    for (;;) switch (ls->t.kw)
      {
       case KW_at_nonull:
-        if (has_nullable)
-          eo_lexer_syntax_error(ls, "both nullable and nonull specified");
         CASE_LOCK(ls, nonull, "nonull qualifier")
         par->nonull = EINA_TRUE;
         eo_lexer_get(ls);
@@ -967,13 +965,6 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
         par->optional = EINA_TRUE;
         eo_lexer_get(ls);
         break;
-      case KW_at_nullable:
-        if (has_nonull)
-          eo_lexer_syntax_error(ls, "both nullable and nonull specified");
-        CASE_LOCK(ls, nullable, "nullable qualifier");
-        par->nullable = EINA_TRUE;
-        eo_lexer_get(ls);
-        break;
       case KW_at_owned:
         CASE_LOCK(ls, owned, "owned qualifier");
         par->type->owned = EINA_TRUE;
index f2dceba..f51f426 100644 (file)
@@ -252,7 +252,6 @@ struct _Eolian_Function_Parameter
    Eolian_Documentation *doc;
    Eolian_Parameter_Dir param_dir;
    Eina_Bool nonull :1; /* True if this argument cannot be NULL - deprecated */
-   Eina_Bool nullable :1; /* True if this argument is nullable */
    Eina_Bool optional :1; /* True if this argument is optional */
 };
 
index 4dce2e6..bd92075 100644 (file)
@@ -963,7 +963,7 @@ class Function(Object):
 class Function_Parameter(Object):
     def __repr__(self):
         return "<eolian.Function_Parameter '{0.name}', type={0.type}," \
-               " optional={0.is_optional}, nullable={0.is_nullable}>".format(self)
+               " optional={0.is_optional}>".format(self)
 
     @cached_property
     def direction(self):
@@ -979,10 +979,6 @@ class Function_Parameter(Object):
         return bool(lib.eolian_parameter_is_nonull(self))
 
     @cached_property
-    def is_nullable(self):
-        return bool(lib.eolian_parameter_is_nullable(self))
-
-    @cached_property
     def is_optional(self):
         return bool(lib.eolian_parameter_is_optional(self))
 
index 622486e..4fe2dc5 100644 (file)
@@ -403,10 +403,6 @@ lib.eolian_parameter_documentation_get.restype = c_void_p
 lib.eolian_parameter_is_nonull.argtypes = (c_void_p,)
 lib.eolian_parameter_is_nonull.restype = c_bool
 
-# EAPI Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc);
-lib.eolian_parameter_is_nullable.argtypes = (c_void_p,)
-lib.eolian_parameter_is_nullable.restype = c_bool
-
 # EAPI Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc);
 lib.eolian_parameter_is_optional.argtypes = (c_void_p,)
 lib.eolian_parameter_is_optional.restype = c_bool
index 3695330..2a59349 100755 (executable)
@@ -381,7 +381,6 @@ class TestEolianFunction(unittest.TestCase):
         self.assertEqual(p.name, 'add')
         self.assertIsNone(p.default_value)
         self.assertFalse(p.is_nonull)  # TODO is correct ?? 'add' can be null?
-        self.assertFalse(p.is_nullable)
         self.assertFalse(p.is_optional)
         self.assertEqual(p.type.name, 'double')
         self.assertIsInstance(p.documentation, eolian.Documentation)
diff --git a/src/tests/eolian/data/null.eo b/src/tests/eolian/data/null.eo
deleted file mode 100644 (file)
index ad872e0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-class Null {
-   methods {
-      foo {
-         params {
-            x: ptr(char);
-            y: ptr(char) @nullable;
-            z: ptr(char) @optional;
-            w: ptr(char) @optional @nullable;
-         }
-      }
-   }
-}
index 8711fdf..2fbb1b5 100644 (file)
@@ -1010,56 +1010,6 @@ EFL_START_TEST(eolian_free_func)
 }
 EFL_END_TEST
 
-EFL_START_TEST(eolian_null)
-{
-   const Eolian_Class *class;
-   const Eolian_Function *func;
-   const Eolian_Function_Parameter *param;
-   const Eolian_Unit *unit;
-   Eina_Iterator *iter;
-
-   Eolian_State *eos = eolian_state_new();
-
-   /* Parsing */
-   fail_if(!eolian_state_directory_add(eos, TESTS_SRC_DIR"/data"));
-   fail_if(!(unit = eolian_state_file_parse(eos, "null.eo")));
-
-   fail_if(!(class = eolian_unit_class_by_name_get(unit, "Null")));
-   fail_if(!(func = eolian_class_function_by_name_get(class, "foo", EOLIAN_METHOD)));
-
-   fail_if(!(iter = eolian_function_parameters_get(func)));
-
-   /* no qualifiers */
-   fail_if(!(eina_iterator_next(iter, (void**)&param)));
-   fail_if(strcmp(eolian_parameter_name_get(param), "x"));
-   fail_if(eolian_parameter_is_nullable(param));
-   fail_if(eolian_parameter_is_optional(param));
-
-   /* nullable */
-   fail_if(!(eina_iterator_next(iter, (void**)&param)));
-   fail_if(strcmp(eolian_parameter_name_get(param), "y"));
-   fail_if(!eolian_parameter_is_nullable(param));
-   fail_if(eolian_parameter_is_optional(param));
-
-   /* optional */
-   fail_if(!(eina_iterator_next(iter, (void**)&param)));
-   fail_if(strcmp(eolian_parameter_name_get(param), "z"));
-   fail_if(eolian_parameter_is_nullable(param));
-   fail_if(!eolian_parameter_is_optional(param));
-
-   /* both */
-   fail_if(!(eina_iterator_next(iter, (void**)&param)));
-   fail_if(strcmp(eolian_parameter_name_get(param), "w"));
-   fail_if(!eolian_parameter_is_nullable(param));
-   fail_if(!eolian_parameter_is_optional(param));
-
-   fail_if(eina_iterator_next(iter, (void**)&param));
-   eina_iterator_free(iter);
-
-   eolian_state_free(eos);
-}
-EFL_END_TEST
-
 EFL_START_TEST(eolian_import)
 {
    const Eolian_Class *class;
@@ -1654,7 +1604,6 @@ void eolian_parsing_test(TCase *tc)
    tcase_add_test(tc, eolian_enum);
    tcase_add_test(tc, eolian_class_funcs);
    tcase_add_test(tc, eolian_free_func);
-   tcase_add_test(tc, eolian_null);
    tcase_add_test(tc, eolian_import);
    tcase_add_test(tc, eolian_docs);
    tcase_add_test(tc, eolian_function_types);