summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@samsung.com>2019-05-21 16:01:07 +0200
committerDaniel Kolesa <d.kolesa@samsung.com>2019-05-21 16:04:35 +0200
commit5ea0195661e88395ee3e7384db7acc3f03d52dc1 (patch)
tree395a85fe0bd2147a9d22311162fc5cd2d22384fd /src
parent34ef9c313989402d523951b2c20c7141d3bdce78 (diff)
eolian: remove @nullable keyword
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
Diffstat (limited to 'src')
-rw-r--r--src/Makefile_Eolian.am1
-rw-r--r--src/bindings/luajit/eolian.lua5
-rw-r--r--src/lib/ecore_con/efl_net_control_manager.eo10
-rw-r--r--src/lib/ecore_con/efl_net_dialer.eo2
-rw-r--r--src/lib/ecore_con/efl_net_socket_ssl.eo2
-rw-r--r--src/lib/ecore_con/efl_net_ssl_context.eo2
-rw-r--r--src/lib/efl/interfaces/efl_canvas_scene.eo2
-rw-r--r--src/lib/efl/interfaces/efl_gfx_buffer.eo4
-rw-r--r--src/lib/efl/interfaces/efl_ui_format.eo4
-rw-r--r--src/lib/elementary/efl_ui_clock.eo2
-rw-r--r--src/lib/elementary/efl_ui_internal_text_scroller.eo4
-rw-r--r--src/lib/elementary/efl_ui_pager.eo4
-rw-r--r--src/lib/elementary/efl_ui_radio.eo2
-rw-r--r--src/lib/elementary/efl_ui_scroll_manager.eo2
-rw-r--r--src/lib/elementary/efl_ui_text.eo2
-rw-r--r--src/lib/elementary/efl_ui_widget.eo10
-rw-r--r--src/lib/elementary/efl_ui_win.eo8
-rw-r--r--src/lib/elementary/elm_interface_scrollable.eo48
-rw-r--r--src/lib/eo/efl_object.eo6
-rw-r--r--src/lib/eolian/Eolian.h10
-rw-r--r--src/lib/eolian/database_function_parameter_api.c7
-rw-r--r--src/lib/eolian/eo_lexer.h5
-rw-r--r--src/lib/eolian/eo_parser.c11
-rw-r--r--src/lib/eolian/eolian_database.h1
-rw-r--r--src/scripts/pyolian/eolian.py6
-rw-r--r--src/scripts/pyolian/eolian_lib.py4
-rwxr-xr-xsrc/scripts/pyolian/test_eolian.py1
-rw-r--r--src/tests/eolian/data/null.eo12
-rw-r--r--src/tests/eolian/eolian_parsing.c51
29 files changed, 63 insertions, 165 deletions
diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am
index 876a2f0..0336b7f 100644
--- a/src/Makefile_Eolian.am
+++ b/src/Makefile_Eolian.am
@@ -92,7 +92,6 @@ tests/eolian/data/nmsp1_class1.eo \
92tests/eolian/data/nmsp1_nmsp11_class2.eo \ 92tests/eolian/data/nmsp1_nmsp11_class2.eo \
93tests/eolian/data/nmsp2_class1.eo \ 93tests/eolian/data/nmsp2_class1.eo \
94tests/eolian/data/no_nmsp.eo \ 94tests/eolian/data/no_nmsp.eo \
95tests/eolian/data/null.eo \
96tests/eolian/data/object_impl.eo \ 95tests/eolian/data/object_impl.eo \
97tests/eolian/data/object_impl_add.eo \ 96tests/eolian/data/object_impl_add.eo \
98tests/eolian/data/override.eo \ 97tests/eolian/data/override.eo \
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index 20118af..34da82c 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -370,7 +370,6 @@ ffi.cdef [[
370 const Eolian_Expression *eolian_parameter_default_value_get(const Eolian_Function_Parameter *param); 370 const Eolian_Expression *eolian_parameter_default_value_get(const Eolian_Function_Parameter *param);
371 const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian_Function_Parameter *param); 371 const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian_Function_Parameter *param);
372 Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc); 372 Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc);
373 Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc);
374 Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc); 373 Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc);
375 const Eolian_Type *eolian_function_return_type_get(const Eolian_Function *function_id, Eolian_Function_Type ftype); 374 const Eolian_Type *eolian_function_return_type_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
376 const Eolian_Expression *eolian_function_return_default_value_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype); 375 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", {
1268 return eolian.eolian_parameter_is_nonull(self) ~= 0 1267 return eolian.eolian_parameter_is_nonull(self) ~= 0
1269 end, 1268 end,
1270 1269
1271 is_nullable = function(self)
1272 return eolian.eolian_parameter_is_nullable(self) ~= 0
1273 end,
1274
1275 is_optional = function(self) 1270 is_optional = function(self)
1276 return eolian.eolian_parameter_is_optional(self) ~= 0 1271 return eolian.eolian_parameter_is_optional(self) ~= 0
1277 end 1272 end
diff --git a/src/lib/ecore_con/efl_net_control_manager.eo b/src/lib/ecore_con/efl_net_control_manager.eo
index cfb729b..fb2fabf 100644
--- a/src/lib/ecore_con/efl_net_control_manager.eo
+++ b/src/lib/ecore_con/efl_net_control_manager.eo
@@ -193,11 +193,11 @@ class @beta Efl.Net.Control.Manager extends Efl.Loop_Consumer {
193 agent_reply { 193 agent_reply {
194 [[If event "agent_request_input" was emitted, this will reply with the requested data]] 194 [[If event "agent_request_input" was emitted, this will reply with the requested data]]
195 params { 195 params {
196 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.]] 196 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.]]
197 @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.]] 197 @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.]]
198 username: string @nullable; [[If @Efl.Net.Control.Agent_Request_Input_Field.username was present, this should contain the identity or username]] 198 username: string; [[If @Efl.Net.Control.Agent_Request_Input_Field.username was present, this should contain the identity or username]]
199 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.]] 199 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.]]
200 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.]] 200 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.]]
201 } 201 }
202 } 202 }
203 } 203 }
diff --git a/src/lib/ecore_con/efl_net_dialer.eo b/src/lib/ecore_con/efl_net_dialer.eo
index 02770dc..fce3897 100644
--- a/src/lib/ecore_con/efl_net_dialer.eo
+++ b/src/lib/ecore_con/efl_net_dialer.eo
@@ -109,7 +109,7 @@ interface @beta Efl.Net.Dialer extends Efl.Net.Socket {
109 } 109 }
110 110
111 events { 111 events {
112 /* FIXME: Might be NULL, but @nullable does not work on event types */ 112 /* tag nullable once supported by eolian */
113 dialer,resolved: string; [[Notifies @.address_dial was resolved to 113 dialer,resolved: string; [[Notifies @.address_dial was resolved to
114 @Efl.Net.Socket.address_remote. 114 @Efl.Net.Socket.address_remote.
115 115
diff --git a/src/lib/ecore_con/efl_net_socket_ssl.eo b/src/lib/ecore_con/efl_net_socket_ssl.eo
index 9fb0031..31fcb30 100644
--- a/src/lib/ecore_con/efl_net_socket_ssl.eo
+++ b/src/lib/ecore_con/efl_net_socket_ssl.eo
@@ -75,7 +75,7 @@ class @beta Efl.Net.Socket_Ssl extends Efl.Loop_Consumer implements Efl.Net.Sock
75 It's only used if @.hostname_verify is $true. 75 It's only used if @.hostname_verify is $true.
76 ]] 76 ]]
77 values { 77 values {
78 hostname_override: string @nullable; [[Hostname for this socket]] 78 hostname_override: string; [[Hostname for this socket]]
79 } 79 }
80 } 80 }
81 } 81 }
diff --git a/src/lib/ecore_con/efl_net_ssl_context.eo b/src/lib/ecore_con/efl_net_ssl_context.eo
index 2557a03..26fd68f 100644
--- a/src/lib/ecore_con/efl_net_ssl_context.eo
+++ b/src/lib/ecore_con/efl_net_ssl_context.eo
@@ -122,7 +122,7 @@ class @beta Efl.Net.Ssl.Context extends Efl.Object {
122 It's only used if @.hostname_verify is $true. 122 It's only used if @.hostname_verify is $true.
123 ]] 123 ]]
124 values { 124 values {
125 hostname: string @nullable; [[Hostname for this socket]] 125 hostname: string; [[Hostname for this socket]]
126 } 126 }
127 } 127 }
128 } 128 }
diff --git a/src/lib/efl/interfaces/efl_canvas_scene.eo b/src/lib/efl/interfaces/efl_canvas_scene.eo
index fd1a818..44539d3 100644
--- a/src/lib/efl/interfaces/efl_canvas_scene.eo
+++ b/src/lib/efl/interfaces/efl_canvas_scene.eo
@@ -235,7 +235,7 @@ interface Efl.Canvas.Scene
235 object,focus,in: Efl.Input.Focus; [[Called when object got focus]] 235 object,focus,in: Efl.Input.Focus; [[Called when object got focus]]
236 object,focus,out: Efl.Input.Focus; [[Called when object lost focus]] 236 object,focus,out: Efl.Input.Focus; [[Called when object lost focus]]
237 render,pre: void; [[Called when pre render happens]] 237 render,pre: void; [[Called when pre render happens]]
238 /* FIXME: event_info can be NULL, but @nullable tag does not work on events yet */ 238 /* tag nullable once supported by eolian */
239 render,post @beta: Efl.Gfx.Event.Render_Post; [[Called when post render happens]] 239 render,post @beta: Efl.Gfx.Event.Render_Post; [[Called when post render happens]]
240 device,changed @beta : Efl.Input.Device; [[Called when input device changed]] 240 device,changed @beta : Efl.Input.Device; [[Called when input device changed]]
241 device,added @beta: Efl.Input.Device; [[Called when input device was added]] 241 device,added @beta: Efl.Input.Device; [[Called when input device was added]]
diff --git a/src/lib/efl/interfaces/efl_gfx_buffer.eo b/src/lib/efl/interfaces/efl_gfx_buffer.eo
index 074dd78..38da6c8 100644
--- a/src/lib/efl/interfaces/efl_gfx_buffer.eo
+++ b/src/lib/efl/interfaces/efl_gfx_buffer.eo
@@ -174,7 +174,7 @@ interface @beta Efl.Gfx.Buffer
174 $slice should not be the return value of @.buffer_managed_get. 174 $slice should not be the return value of @.buffer_managed_get.
175 ]] 175 ]]
176 params { 176 params {
177 @cref slice: Eina.Slice @nullable; [[If $null, allocates an empty buffer]] 177 @cref slice: Eina.Slice; [[If $null, allocates an empty buffer]]
178 @in size: Eina.Size2D; [[The size in pixels.]] 178 @in size: Eina.Size2D; [[The size in pixels.]]
179 @in stride: int @optional; [[If 0, automatically guessed from the $width.]] 179 @in stride: int @optional; [[If 0, automatically guessed from the $width.]]
180 @in cspace: Efl.Gfx.Colorspace @optional; [[argb8888 by default.]] 180 @in cspace: Efl.Gfx.Colorspace @optional; [[argb8888 by default.]]
@@ -199,7 +199,7 @@ interface @beta Efl.Gfx.Buffer
199 internally. 199 internally.
200 ]] 200 ]]
201 params { 201 params {
202 @cref slice: Eina.Slice @nullable; [[If $null, detaches the previous buffer.]] 202 @cref slice: Eina.Slice; [[If $null, detaches the previous buffer.]]
203 @in size: Eina.Size2D; [[The size in pixels.]] 203 @in size: Eina.Size2D; [[The size in pixels.]]
204 @in stride: int @optional; [[If 0, automatically guessed from the $width.]] 204 @in stride: int @optional; [[If 0, automatically guessed from the $width.]]
205 @in cspace: Efl.Gfx.Colorspace @optional; [[argb8888 by default.]] 205 @in cspace: Efl.Gfx.Colorspace @optional; [[argb8888 by default.]]
diff --git a/src/lib/efl/interfaces/efl_ui_format.eo b/src/lib/efl/interfaces/efl_ui_format.eo
index 8f59d85..c7b6aba 100644
--- a/src/lib/efl/interfaces/efl_ui_format.eo
+++ b/src/lib/efl/interfaces/efl_ui_format.eo
@@ -18,7 +18,7 @@ mixin @beta Efl.Ui.Format
18 ]] 18 ]]
19 } 19 }
20 values { 20 values {
21 func: Efl.Ui.Format_Func_Cb @nullable; [[The format function callback]] 21 func: Efl.Ui.Format_Func_Cb; [[The format function callback]]
22 } 22 }
23 } 23 }
24 @property format_string { 24 @property format_string {
@@ -35,7 +35,7 @@ mixin @beta Efl.Ui.Format
35 as in $"%.0f %%". 35 as in $"%.0f %%".
36 ]] 36 ]]
37 values { 37 values {
38 units: string @nullable; [[The format string for $obj's units label.]] 38 units: string; [[The format string for $obj's units label.]]
39 } 39 }
40 } 40 }
41 } 41 }
diff --git a/src/lib/elementary/efl_ui_clock.eo b/src/lib/elementary/efl_ui_clock.eo
index e2c7fde..abc7b5e 100644
--- a/src/lib/elementary/efl_ui_clock.eo
+++ b/src/lib/elementary/efl_ui_clock.eo
@@ -95,7 +95,7 @@ class @beta Efl.Ui.Clock extends Efl.Ui.Layout_Base
95 */ 95 */
96 set {} get {} 96 set {} get {}
97 values { 97 values {
98 fmt: string @nullable; [[The clock format.]] 98 fmt: string; [[The clock format.]]
99 } 99 }
100 } 100 }
101 @property pause { 101 @property pause {
diff --git a/src/lib/elementary/efl_ui_internal_text_scroller.eo b/src/lib/elementary/efl_ui_internal_text_scroller.eo
index 4e20e9b..b18c008 100644
--- a/src/lib/elementary/efl_ui_internal_text_scroller.eo
+++ b/src/lib/elementary/efl_ui_internal_text_scroller.eo
@@ -38,8 +38,8 @@ class @beta Efl.Ui.Internal_Text_Scroller extends Efl.Ui.Scroller
38 This should be called upon constructing the object. 38 This should be called upon constructing the object.
39 ]] 39 ]]
40 params { 40 params {
41 text_obj: Efl.Canvas.Text @nullable; [[The text object to query]] 41 text_obj: Efl.Canvas.Text; [[The text object to query]]
42 text_table: Efl.Ui.Table @nullable; [[The table container of 42 text_table: Efl.Ui.Table; [[The table container of
43 the $text_obj]] 43 the $text_obj]]
44 } 44 }
45 } 45 }
diff --git a/src/lib/elementary/efl_ui_pager.eo b/src/lib/elementary/efl_ui_pager.eo
index 7879132..7389fd8 100644
--- a/src/lib/elementary/efl_ui_pager.eo
+++ b/src/lib/elementary/efl_ui_pager.eo
@@ -27,7 +27,7 @@ class @beta Efl.Ui.Pager extends Efl.Ui.Layout_Base implements Efl.Pack_Linear
27 [[Set a page transition effect]] 27 [[Set a page transition effect]]
28 } 28 }
29 values { 29 values {
30 transition: Efl.Page.Transition @nullable; [[transition effect]] 30 transition: Efl.Page.Transition; [[transition effect]]
31 } 31 }
32 } 32 }
33 @property indicator { 33 @property indicator {
@@ -40,7 +40,7 @@ class @beta Efl.Ui.Pager extends Efl.Ui.Layout_Base implements Efl.Pack_Linear
40 [[Set a page indicator]] 40 [[Set a page indicator]]
41 } 41 }
42 values { 42 values {
43 indicator: Efl.Page.Indicator @nullable; [[indicator class]] 43 indicator: Efl.Page.Indicator; [[indicator class]]
44 } 44 }
45 } 45 }
46 @property current_page { 46 @property current_page {
diff --git a/src/lib/elementary/efl_ui_radio.eo b/src/lib/elementary/efl_ui_radio.eo
index 5fd6136..8dabfc7 100644
--- a/src/lib/elementary/efl_ui_radio.eo
+++ b/src/lib/elementary/efl_ui_radio.eo
@@ -33,7 +33,7 @@ class @beta Efl.Ui.Radio extends Efl.Ui.Check implements Efl.Access.Widget.Actio
33 ]] 33 ]]
34 } 34 }
35 values { 35 values {
36 valuep: ptr(int) @nullable; [[Pointer to the integer to modify]] 36 valuep: ptr(int); [[Pointer to the integer to modify]]
37 } 37 }
38 } 38 }
39 @property selected_object { 39 @property selected_object {
diff --git a/src/lib/elementary/efl_ui_scroll_manager.eo b/src/lib/elementary/efl_ui_scroll_manager.eo
index e948fe6..3733e81 100644
--- a/src/lib/elementary/efl_ui_scroll_manager.eo
+++ b/src/lib/elementary/efl_ui_scroll_manager.eo
@@ -17,7 +17,7 @@ class @beta Efl.Ui.Scroll.Manager extends Efl.Object implements
17 set { 17 set {
18 } 18 }
19 values { 19 values {
20 pan: Efl.Ui.Pan @nullable; [[Pan object]] 20 pan: Efl.Ui.Pan; [[Pan object]]
21 } 21 }
22 } 22 }
23 } 23 }
diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo
index 626280a..4ebb3fa 100644
--- a/src/lib/elementary/efl_ui_text.eo
+++ b/src/lib/elementary/efl_ui_text.eo
@@ -360,7 +360,7 @@ class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Ui.Clickable,
360 } 360 }
361 events { 361 events {
362 changed: void; [[Called when entry changes]] 362 changed: void; [[Called when entry changes]]
363 /* FIXME: Sometimes it can be NULL but @nullable does not work on events */ 363 /* can be NULL, tag nullable once Eolian supports it */
364 changed,user: Efl.Ui.Text_Change_Info; 364 changed,user: Efl.Ui.Text_Change_Info;
365 [[The text object has changed due to user interaction]] 365 [[The text object has changed due to user interaction]]
366 validate: Elm.Validate_Content; [[Called when validating]] 366 validate: Elm.Validate_Content; [[Called when validating]]
diff --git a/src/lib/elementary/efl_ui_widget.eo b/src/lib/elementary/efl_ui_widget.eo
index ece49ef..1c2f85a 100644
--- a/src/lib/elementary/efl_ui_widget.eo
+++ b/src/lib/elementary/efl_ui_widget.eo
@@ -53,8 +53,8 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
53 [[Returns the current cursor name.]] 53 [[Returns the current cursor name.]]
54 } 54 }
55 values { 55 values {
56 cursor: string @nullable; [[The cursor name, defined either 56 cursor: string; [[The cursor name, defined either
57 by the display system or the theme.]] 57 by the display system or the theme.]]
58 } 58 }
59 } 59 }
60 @property cursor_style @beta { 60 @property cursor_style @beta {
@@ -104,7 +104,7 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
104 [[Sets the new resize object for this widget.]] 104 [[Sets the new resize object for this widget.]]
105 } 105 }
106 values { 106 values {
107 sobj: Efl.Canvas.Object @nullable; 107 sobj: Efl.Canvas.Object;
108 [[A canvas object (often a @Efl.Canvas.Layout object).]] 108 [[A canvas object (often a @Efl.Canvas.Layout object).]]
109 } 109 }
110 } 110 }
@@ -216,7 +216,7 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
216 get { 216 get {
217 } 217 }
218 values { 218 values {
219 parent: Efl.Ui.Widget @nullable; [[Widget parent object]] 219 parent: Efl.Ui.Widget; [[Widget parent object]]
220 } 220 }
221 } 221 }
222 222
@@ -231,7 +231,7 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object,
231 out loud, instead $txt will be read out. 231 out loud, instead $txt will be read out.
232 ]] 232 ]]
233 values { 233 values {
234 txt: string @nullable; [[Accessibility text description.]] 234 txt: string; [[Accessibility text description.]]
235 } 235 }
236 } 236 }
237 on_access_activate @protected @beta { 237 on_access_activate @protected @beta {
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index 33a4be6..1a3e3a4 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -303,7 +303,7 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
303 type @Efl.Canvas.Image or @Efl.Ui.Image are allowed. 303 type @Efl.Canvas.Image or @Efl.Ui.Image are allowed.
304 ]] 304 ]]
305 values { 305 values {
306 icon: Efl.Canvas.Object @nullable; 306 icon: Efl.Canvas.Object;
307 [[The image object to use for an icon.]] 307 [[The image object to use for an icon.]]
308 } 308 }
309 } 309 }
@@ -314,7 +314,7 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
314 the object to use for the window icon. 314 the object to use for the window icon.
315 ]] 315 ]]
316 values { 316 values {
317 icon: const(Efl.Canvas.Object) @nullable; 317 icon: const(Efl.Canvas.Object);
318 [[The Evas image object to use for an icon.]] 318 [[The Evas image object to use for an icon.]]
319 } 319 }
320 } 320 }
@@ -444,7 +444,7 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
444 get { 444 get {
445 } 445 }
446 values { 446 values {
447 name: string @nullable; [[Window name]] 447 name: string; [[Window name]]
448 } 448 }
449 } 449 }
450 @property win_type @beta { 450 @property win_type @beta {
@@ -797,7 +797,7 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
797 get { 797 get {
798 } 798 }
799 values { 799 values {
800 style: string @nullable; [[The name of the focus highlight style.]] 800 style: string; [[The name of the focus highlight style.]]
801 } 801 }
802 } 802 }
803 @property focus_highlight_animate { 803 @property focus_highlight_animate {
diff --git a/src/lib/elementary/elm_interface_scrollable.eo b/src/lib/elementary/elm_interface_scrollable.eo
index f8c2a2d..77f2422 100644
--- a/src/lib/elementary/elm_interface_scrollable.eo
+++ b/src/lib/elementary/elm_interface_scrollable.eo
@@ -287,7 +287,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
287 [[Set the callback to run when the content has been moved up.]] 287 [[Set the callback to run when the content has been moved up.]]
288 } 288 }
289 values { 289 values {
290 scroll_up_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 290 scroll_up_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
291 } 291 }
292 } 292 }
293 @property hbar_drag_cb { 293 @property hbar_drag_cb {
@@ -295,7 +295,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
295 [[Set the callback to run when the horizontal scrollbar is dragged.]] 295 [[Set the callback to run when the horizontal scrollbar is dragged.]]
296 } 296 }
297 values { 297 values {
298 hbar_drag_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 298 hbar_drag_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
299 } 299 }
300 } 300 }
301 @property drag_start_cb { 301 @property drag_start_cb {
@@ -303,7 +303,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
303 [[Set the callback to run when dragging of the contents has started.]] 303 [[Set the callback to run when dragging of the contents has started.]]
304 } 304 }
305 values { 305 values {
306 drag_start_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 306 drag_start_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
307 } 307 }
308 } 308 }
309 @property freeze { 309 @property freeze {
@@ -319,7 +319,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
319 [[When the viewport is resized, the callback is called.]] 319 [[When the viewport is resized, the callback is called.]]
320 } 320 }
321 values { 321 values {
322 viewport_resize_cb: Elm_Interface_Scrollable_Resize_Cb @nullable; [[The callback]] 322 viewport_resize_cb: Elm_Interface_Scrollable_Resize_Cb; [[The callback]]
323 } 323 }
324 } 324 }
325 @property scroll_left_cb { 325 @property scroll_left_cb {
@@ -327,7 +327,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
327 [[Set the callback to run when the content has been moved to the left]] 327 [[Set the callback to run when the content has been moved to the left]]
328 } 328 }
329 values { 329 values {
330 scroll_left_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 330 scroll_left_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
331 } 331 }
332 } 332 }
333 @property vbar_press_cb { 333 @property vbar_press_cb {
@@ -335,7 +335,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
335 [[Set the callback to run when the vertical scrollbar is pressed.]] 335 [[Set the callback to run when the vertical scrollbar is pressed.]]
336 } 336 }
337 values { 337 values {
338 vbar_press_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 338 vbar_press_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
339 } 339 }
340 } 340 }
341 @property hbar_press_cb { 341 @property hbar_press_cb {
@@ -343,7 +343,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
343 [[Set the callback to run when the horizontal scrollbar is pressed.]] 343 [[Set the callback to run when the horizontal scrollbar is pressed.]]
344 } 344 }
345 values { 345 values {
346 hbar_press_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 346 hbar_press_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
347 } 347 }
348 } 348 }
349 @property hbar_unpress_cb { 349 @property hbar_unpress_cb {
@@ -351,7 +351,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
351 [[Set the callback to run when the horizontal scrollbar is unpressed.]] 351 [[Set the callback to run when the horizontal scrollbar is unpressed.]]
352 } 352 }
353 values { 353 values {
354 hbar_unpress_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 354 hbar_unpress_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
355 } 355 }
356 } 356 }
357 @property drag_stop_cb { 357 @property drag_stop_cb {
@@ -359,7 +359,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
359 [[Set the callback to run when dragging of the contents has stopped.]] 359 [[Set the callback to run when dragging of the contents has stopped.]]
360 } 360 }
361 values { 361 values {
362 drag_stop_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 362 drag_stop_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
363 } 363 }
364 } 364 }
365 @property extern_pan { 365 @property extern_pan {
@@ -367,7 +367,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
367 set { 367 set {
368 } 368 }
369 values { 369 values {
370 pan: Efl.Canvas.Object @nullable; [[Pan object]] 370 pan: Efl.Canvas.Object; [[Pan object]]
371 } 371 }
372 } 372 }
373 @property page_change_cb { 373 @property page_change_cb {
@@ -375,7 +375,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
375 [[Set the callback to run when the visible page changes.]] 375 [[Set the callback to run when the visible page changes.]]
376 } 376 }
377 values { 377 values {
378 page_change_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 378 page_change_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
379 } 379 }
380 } 380 }
381 @property hold { 381 @property hold {
@@ -391,7 +391,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
391 [[Set the callback to run when the scrolling animation has started.]] 391 [[Set the callback to run when the scrolling animation has started.]]
392 } 392 }
393 values { 393 values {
394 animate_start_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 394 animate_start_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
395 } 395 }
396 } 396 }
397 @property scroll_down_cb { 397 @property scroll_down_cb {
@@ -399,7 +399,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
399 [[Set the callback to run when the content has been moved down.]] 399 [[Set the callback to run when the content has been moved down.]]
400 } 400 }
401 values { 401 values {
402 scroll_down_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 402 scroll_down_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
403 } 403 }
404 } 404 }
405 @property page_relative { 405 @property page_relative {
@@ -416,7 +416,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
416 [[Set the callback to run when the content has been moved.]] 416 [[Set the callback to run when the content has been moved.]]
417 } 417 }
418 values { 418 values {
419 scroll_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 419 scroll_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
420 } 420 }
421 } 421 }
422 @property animate_stop_cb { 422 @property animate_stop_cb {
@@ -424,7 +424,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
424 [[Set the callback to run when the scrolling animation has stopped.]] 424 [[Set the callback to run when the scrolling animation has stopped.]]
425 } 425 }
426 values { 426 values {
427 animate_stop_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 427 animate_stop_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
428 } 428 }
429 } 429 }
430 @property content_min_limit_cb { 430 @property content_min_limit_cb {
@@ -432,7 +432,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
432 set { 432 set {
433 } 433 }
434 values { 434 values {
435 min_limit_cb: Elm_Interface_Scrollable_Min_Limit_Cb @nullable; [[The callback]] 435 min_limit_cb: Elm_Interface_Scrollable_Min_Limit_Cb; [[The callback]]
436 } 436 }
437 } 437 }
438 @property scroll_right_cb { 438 @property scroll_right_cb {
@@ -440,7 +440,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
440 [[Set the callback to run when the content has been moved to the right.]] 440 [[Set the callback to run when the content has been moved to the right.]]
441 } 441 }
442 values { 442 values {
443 scroll_right_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 443 scroll_right_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
444 } 444 }
445 } 445 }
446 @property scrollable_content { 446 @property scrollable_content {
@@ -448,7 +448,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
448 set { 448 set {
449 } 449 }
450 values { 450 values {
451 content: Efl.Canvas.Object @nullable; [[Content object]] 451 content: Efl.Canvas.Object; [[Content object]]
452 } 452 }
453 } 453 }
454 @property edge_left_cb { 454 @property edge_left_cb {
@@ -456,7 +456,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
456 [[Set the callback to run when the left edge of the content has been reached.]] 456 [[Set the callback to run when the left edge of the content has been reached.]]
457 } 457 }
458 values { 458 values {
459 edge_left_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 459 edge_left_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
460 } 460 }
461 } 461 }
462 @property vbar_drag_cb { 462 @property vbar_drag_cb {
@@ -464,7 +464,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
464 [[Set the callback to run when the horizontal scrollbar is dragged.]] 464 [[Set the callback to run when the horizontal scrollbar is dragged.]]
465 } 465 }
466 values { 466 values {
467 vbar_drag_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 467 vbar_drag_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
468 } 468 }
469 } 469 }
470 @property vbar_unpress_cb { 470 @property vbar_unpress_cb {
@@ -472,7 +472,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
472 [[Set the callback to run when the horizontal scrollbar is unpressed.]] 472 [[Set the callback to run when the horizontal scrollbar is unpressed.]]
473 } 473 }
474 values { 474 values {
475 vbar_unpress_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 475 vbar_unpress_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
476 } 476 }
477 } 477 }
478 @property edge_bottom_cb { 478 @property edge_bottom_cb {
@@ -480,7 +480,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
480 [[Set the callback to run when the bottom edge of the content has been reached.]] 480 [[Set the callback to run when the bottom edge of the content has been reached.]]
481 } 481 }
482 values { 482 values {
483 edge_bottom_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 483 edge_bottom_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
484 } 484 }
485 } 485 }
486 @property edge_right_cb { 486 @property edge_right_cb {
@@ -488,7 +488,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
488 [[Set the callback to run when the right edge of the content has been reached.]] 488 [[Set the callback to run when the right edge of the content has been reached.]]
489 } 489 }
490 values { 490 values {
491 edge_right_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 491 edge_right_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
492 } 492 }
493 } 493 }
494 @property edge_top_cb { 494 @property edge_top_cb {
@@ -496,7 +496,7 @@ mixin @beta Elm.Interface_Scrollable requires Efl.Ui.Widget extends Efl.Ui.Scrol
496 [[Set the callback to run when the top edge of the content has been reached.]] 496 [[Set the callback to run when the top edge of the content has been reached.]]
497 } 497 }
498 values { 498 values {
499 edge_top_cb: Elm_Interface_Scrollable_Cb @nullable; [[The callback]] 499 edge_top_cb: Elm_Interface_Scrollable_Cb; [[The callback]]
500 } 500 }
501 } 501 }
502 @property objects { 502 @property objects {
diff --git a/src/lib/eo/efl_object.eo b/src/lib/eo/efl_object.eo
index a63343a..84a5558 100644
--- a/src/lib/eo/efl_object.eo
+++ b/src/lib/eo/efl_object.eo
@@ -91,7 +91,7 @@ abstract Efl.Object
91 get { 91 get {
92 } 92 }
93 values { 93 values {
94 parent: Efl.Object @nullable; [[The new parent.]] 94 parent: Efl.Object; [[The new parent.]]
95 } 95 }
96 } 96 }
97 @property name { 97 @property name {
@@ -108,7 +108,7 @@ abstract Efl.Object
108 get { 108 get {
109 } 109 }
110 values { 110 values {
111 name: string @nullable; [[The name.]] 111 name: string; [[The name.]]
112 } 112 }
113 } 113 }
114 @property comment { 114 @property comment {
@@ -123,7 +123,7 @@ abstract Efl.Object
123 get { 123 get {
124 } 124 }
125 values { 125 values {
126 comment: string @nullable; [[The comment.]] 126 comment: string; [[The comment.]]
127 } 127 }
128 } 128 }
129 debug_name_override { 129 debug_name_override {
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 3715ed1..2f5346e 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -1792,16 +1792,6 @@ EAPI const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian
1792EAPI Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc); 1792EAPI Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc);
1793 1793
1794/* 1794/*
1795 * @brief Indicates if a parameter is nullable.
1796 *
1797 * @param[in] param_desc parameter handle
1798 * @return EINA_TRUE if nullable, EINA_FALSE otherwise
1799 *
1800 * @ingroup Eolian
1801 */
1802EAPI Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc);
1803
1804/*
1805 * @brief Indicates if a parameter is optional. 1795 * @brief Indicates if a parameter is optional.
1806 * 1796 *
1807 * @param[in] param_desc parameter handle 1797 * @param[in] param_desc parameter handle
diff --git a/src/lib/eolian/database_function_parameter_api.c b/src/lib/eolian/database_function_parameter_api.c
index 87f1ed3..265c98e 100644
--- a/src/lib/eolian/database_function_parameter_api.c
+++ b/src/lib/eolian/database_function_parameter_api.c
@@ -41,13 +41,6 @@ eolian_parameter_is_nonull(const Eolian_Function_Parameter *param)
41} 41}
42 42
43EAPI Eina_Bool 43EAPI Eina_Bool
44eolian_parameter_is_nullable(const Eolian_Function_Parameter *param)
45{
46 EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
47 return param->nullable;
48}
49
50EAPI Eina_Bool
51eolian_parameter_is_optional(const Eolian_Function_Parameter *param) 44eolian_parameter_is_optional(const Eolian_Function_Parameter *param)
52{ 45{
53 EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE); 46 EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 4fec039..cc8fc9c 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -21,7 +21,10 @@ enum Tokens
21}; 21};
22 22
23/* all keywords in eolian, they can still be used as names (they're TOK_VALUE) 23/* all keywords in eolian, they can still be used as names (they're TOK_VALUE)
24 * they just fill in the "kw" field of the token */ 24 * they just fill in the "kw" field of the token
25 *
26 * reserved for the future: @nullable
27 */
25#define KEYWORDS KW(class), KW(const), KW(enum), KW(return), KW(struct), \ 28#define KEYWORDS KW(class), KW(const), KW(enum), KW(return), KW(struct), \
26 \ 29 \
27 KW(abstract), KW(c_prefix), KW(composite), KW(constructor), KW(constructors), \ 30 KW(abstract), KW(c_prefix), KW(composite), KW(constructor), KW(constructors), \
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 80d89e5..3a75555 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -907,7 +907,7 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
907 Eina_Bool is_vals) 907 Eina_Bool is_vals)
908{ 908{
909 Eina_Bool has_nonull = EINA_FALSE, has_optional = EINA_FALSE, 909 Eina_Bool has_nonull = EINA_FALSE, has_optional = EINA_FALSE,
910 has_nullable = EINA_FALSE, has_owned = EINA_FALSE; 910 has_owned = EINA_FALSE;
911 Eina_Bool cref = (ls->t.kw == KW_at_cref); 911 Eina_Bool cref = (ls->t.kw == KW_at_cref);
912 Eolian_Function_Parameter *par = calloc(1, sizeof(Eolian_Function_Parameter)); 912 Eolian_Function_Parameter *par = calloc(1, sizeof(Eolian_Function_Parameter));
913 par->param_dir = EOLIAN_IN_PARAM; 913 par->param_dir = EOLIAN_IN_PARAM;
@@ -956,8 +956,6 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
956 for (;;) switch (ls->t.kw) 956 for (;;) switch (ls->t.kw)
957 { 957 {
958 case KW_at_nonull: 958 case KW_at_nonull:
959 if (has_nullable)
960 eo_lexer_syntax_error(ls, "both nullable and nonull specified");
961 CASE_LOCK(ls, nonull, "nonull qualifier") 959 CASE_LOCK(ls, nonull, "nonull qualifier")
962 par->nonull = EINA_TRUE; 960 par->nonull = EINA_TRUE;
963 eo_lexer_get(ls); 961 eo_lexer_get(ls);
@@ -967,13 +965,6 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
967 par->optional = EINA_TRUE; 965 par->optional = EINA_TRUE;
968 eo_lexer_get(ls); 966 eo_lexer_get(ls);
969 break; 967 break;
970 case KW_at_nullable:
971 if (has_nonull)
972 eo_lexer_syntax_error(ls, "both nullable and nonull specified");
973 CASE_LOCK(ls, nullable, "nullable qualifier");
974 par->nullable = EINA_TRUE;
975 eo_lexer_get(ls);
976 break;
977 case KW_at_owned: 968 case KW_at_owned:
978 CASE_LOCK(ls, owned, "owned qualifier"); 969 CASE_LOCK(ls, owned, "owned qualifier");
979 par->type->owned = EINA_TRUE; 970 par->type->owned = EINA_TRUE;
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index f2dceba..f51f426 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -252,7 +252,6 @@ struct _Eolian_Function_Parameter
252 Eolian_Documentation *doc; 252 Eolian_Documentation *doc;
253 Eolian_Parameter_Dir param_dir; 253 Eolian_Parameter_Dir param_dir;
254 Eina_Bool nonull :1; /* True if this argument cannot be NULL - deprecated */ 254 Eina_Bool nonull :1; /* True if this argument cannot be NULL - deprecated */
255 Eina_Bool nullable :1; /* True if this argument is nullable */
256 Eina_Bool optional :1; /* True if this argument is optional */ 255 Eina_Bool optional :1; /* True if this argument is optional */
257}; 256};
258 257
diff --git a/src/scripts/pyolian/eolian.py b/src/scripts/pyolian/eolian.py
index 4dce2e6..bd92075 100644
--- a/src/scripts/pyolian/eolian.py
+++ b/src/scripts/pyolian/eolian.py
@@ -963,7 +963,7 @@ class Function(Object):
963class Function_Parameter(Object): 963class Function_Parameter(Object):
964 def __repr__(self): 964 def __repr__(self):
965 return "<eolian.Function_Parameter '{0.name}', type={0.type}," \ 965 return "<eolian.Function_Parameter '{0.name}', type={0.type}," \
966 " optional={0.is_optional}, nullable={0.is_nullable}>".format(self) 966 " optional={0.is_optional}>".format(self)
967 967
968 @cached_property 968 @cached_property
969 def direction(self): 969 def direction(self):
@@ -979,10 +979,6 @@ class Function_Parameter(Object):
979 return bool(lib.eolian_parameter_is_nonull(self)) 979 return bool(lib.eolian_parameter_is_nonull(self))
980 980
981 @cached_property 981 @cached_property
982 def is_nullable(self):
983 return bool(lib.eolian_parameter_is_nullable(self))
984
985 @cached_property
986 def is_optional(self): 982 def is_optional(self):
987 return bool(lib.eolian_parameter_is_optional(self)) 983 return bool(lib.eolian_parameter_is_optional(self))
988 984
diff --git a/src/scripts/pyolian/eolian_lib.py b/src/scripts/pyolian/eolian_lib.py
index 622486e..4fe2dc5 100644
--- a/src/scripts/pyolian/eolian_lib.py
+++ b/src/scripts/pyolian/eolian_lib.py
@@ -403,10 +403,6 @@ lib.eolian_parameter_documentation_get.restype = c_void_p
403lib.eolian_parameter_is_nonull.argtypes = (c_void_p,) 403lib.eolian_parameter_is_nonull.argtypes = (c_void_p,)
404lib.eolian_parameter_is_nonull.restype = c_bool 404lib.eolian_parameter_is_nonull.restype = c_bool
405 405
406# EAPI Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc);
407lib.eolian_parameter_is_nullable.argtypes = (c_void_p,)
408lib.eolian_parameter_is_nullable.restype = c_bool
409
410# EAPI Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc); 406# EAPI Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc);
411lib.eolian_parameter_is_optional.argtypes = (c_void_p,) 407lib.eolian_parameter_is_optional.argtypes = (c_void_p,)
412lib.eolian_parameter_is_optional.restype = c_bool 408lib.eolian_parameter_is_optional.restype = c_bool
diff --git a/src/scripts/pyolian/test_eolian.py b/src/scripts/pyolian/test_eolian.py
index 3695330..2a59349 100755
--- a/src/scripts/pyolian/test_eolian.py
+++ b/src/scripts/pyolian/test_eolian.py
@@ -381,7 +381,6 @@ class TestEolianFunction(unittest.TestCase):
381 self.assertEqual(p.name, 'add') 381 self.assertEqual(p.name, 'add')
382 self.assertIsNone(p.default_value) 382 self.assertIsNone(p.default_value)
383 self.assertFalse(p.is_nonull) # TODO is correct ?? 'add' can be null? 383 self.assertFalse(p.is_nonull) # TODO is correct ?? 'add' can be null?
384 self.assertFalse(p.is_nullable)
385 self.assertFalse(p.is_optional) 384 self.assertFalse(p.is_optional)
386 self.assertEqual(p.type.name, 'double') 385 self.assertEqual(p.type.name, 'double')
387 self.assertIsInstance(p.documentation, eolian.Documentation) 386 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
index ad872e0..0000000
--- a/src/tests/eolian/data/null.eo
+++ /dev/null
@@ -1,12 +0,0 @@
1class Null {
2 methods {
3 foo {
4 params {
5 x: ptr(char);
6 y: ptr(char) @nullable;
7 z: ptr(char) @optional;
8 w: ptr(char) @optional @nullable;
9 }
10 }
11 }
12}
diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c
index 8711fdf..2fbb1b5 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -1010,56 +1010,6 @@ EFL_START_TEST(eolian_free_func)
1010} 1010}
1011EFL_END_TEST 1011EFL_END_TEST
1012 1012
1013EFL_START_TEST(eolian_null)
1014{
1015 const Eolian_Class *class;
1016 const Eolian_Function *func;
1017 const Eolian_Function_Parameter *param;
1018 const Eolian_Unit *unit;
1019 Eina_Iterator *iter;
1020
1021 Eolian_State *eos = eolian_state_new();
1022
1023 /* Parsing */
1024 fail_if(!eolian_state_directory_add(eos, TESTS_SRC_DIR"/data"));
1025 fail_if(!(unit = eolian_state_file_parse(eos, "null.eo")));
1026
1027 fail_if(!(class = eolian_unit_class_by_name_get(unit, "Null")));
1028 fail_if(!(func = eolian_class_function_by_name_get(class, "foo", EOLIAN_METHOD)));
1029
1030 fail_if(!(iter = eolian_function_parameters_get(func)));
1031
1032 /* no qualifiers */
1033 fail_if(!(eina_iterator_next(iter, (void**)&param)));
1034 fail_if(strcmp(eolian_parameter_name_get(param), "x"));
1035 fail_if(eolian_parameter_is_nullable(param));
1036 fail_if(eolian_parameter_is_optional(param));
1037
1038 /* nullable */
1039 fail_if(!(eina_iterator_next(iter, (void**)&param)));
1040 fail_if(strcmp(eolian_parameter_name_get(param), "y"));
1041 fail_if(!eolian_parameter_is_nullable(param));
1042 fail_if(eolian_parameter_is_optional(param));
1043
1044 /* optional */
1045 fail_if(!(eina_iterator_next(iter, (void**)&param)));
1046 fail_if(strcmp(eolian_parameter_name_get(param), "z"));
1047 fail_if(eolian_parameter_is_nullable(param));
1048 fail_if(!eolian_parameter_is_optional(param));
1049
1050 /* both */
1051 fail_if(!(eina_iterator_next(iter, (void**)&param)));
1052 fail_if(strcmp(eolian_parameter_name_get(param), "w"));
1053 fail_if(!eolian_parameter_is_nullable(param));
1054 fail_if(!eolian_parameter_is_optional(param));
1055
1056 fail_if(eina_iterator_next(iter, (void**)&param));
1057 eina_iterator_free(iter);
1058
1059 eolian_state_free(eos);
1060}
1061EFL_END_TEST
1062
1063EFL_START_TEST(eolian_import) 1013EFL_START_TEST(eolian_import)
1064{ 1014{
1065 const Eolian_Class *class; 1015 const Eolian_Class *class;
@@ -1654,7 +1604,6 @@ void eolian_parsing_test(TCase *tc)
1654 tcase_add_test(tc, eolian_enum); 1604 tcase_add_test(tc, eolian_enum);
1655 tcase_add_test(tc, eolian_class_funcs); 1605 tcase_add_test(tc, eolian_class_funcs);
1656 tcase_add_test(tc, eolian_free_func); 1606 tcase_add_test(tc, eolian_free_func);
1657 tcase_add_test(tc, eolian_null);
1658 tcase_add_test(tc, eolian_import); 1607 tcase_add_test(tc, eolian_import);
1659 tcase_add_test(tc, eolian_docs); 1608 tcase_add_test(tc, eolian_docs);
1660 tcase_add_test(tc, eolian_function_types); 1609 tcase_add_test(tc, eolian_function_types);