summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2016-05-23 15:58:11 -0300
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2016-05-23 15:58:11 -0300
commitb613d6f1d98a511daf6524778ccadf8fadf75e3d (patch)
tree020b0bb152d776be40b1398083e86ad9dedbee49
parente3c8b280c639058c54f5576f189d0dc288105fc7 (diff)
downloadefl-b613d6f1d98a511daf6524778ccadf8fadf75e3d.tar.gz
eolian: Allow promises to have a second type
Promises can have a second type, which is the progress type
-rw-r--r--src/lib/eolian/eo_parser.c6
-rw-r--r--src/tests/eolian/eolian_generated_promise.c5
-rw-r--r--src/tests/eolian/generated_promise.eo5
3 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 10368bcba6..6e3d895e26 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -799,6 +799,12 @@ parse_type_void(Eo_Lexer *ls)
parse_type(ls));
pop_type(ls);
}
+ else if(tpid == KW_promise && test_next(ls, ','))
+ {
+ def->subtypes = eina_list_append(def->subtypes,
+ parse_type(ls));
+ pop_type(ls);
+ }
check_match(ls, '>', '<', bline, bcol);
}
}
diff --git a/src/tests/eolian/eolian_generated_promise.c b/src/tests/eolian/eolian_generated_promise.c
index 2d0e6f659e..44326006c6 100644
--- a/src/tests/eolian/eolian_generated_promise.c
+++ b/src/tests/eolian/eolian_generated_promise.c
@@ -11,6 +11,11 @@
struct Generated_Promise_Data {};
typedef struct Generated_Promise_Data Generated_Promise_Data;
+static void _generated_promise_method_progress_type(Eo *obj EINA_UNUSED, Generated_Promise_Data *pd EINA_UNUSED,
+ Eina_Promise_Owner *promise1 EINA_UNUSED)
+{
+}
+
static Eina_Promise * _generated_promise_prop1_get(Eo *obj EINA_UNUSED, Generated_Promise_Data *pd EINA_UNUSED)
{
return NULL;
diff --git a/src/tests/eolian/generated_promise.eo b/src/tests/eolian/generated_promise.eo
index c096a309da..5363da023c 100644
--- a/src/tests/eolian/generated_promise.eo
+++ b/src/tests/eolian/generated_promise.eo
@@ -6,6 +6,11 @@ class Generated_Promise (Eo.Base)
@inout promise1: promise<int>;
}
}
+ method_progress_type {
+ params {
+ @inout promise1: promise<int, double>;
+ }
+ }
method_multiple_args_1 {
params {
@inout promise1: promise<int>;