eolian: Allow promises to have a second type
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>
Mon, 23 May 2016 18:58:11 +0000 (15:58 -0300)
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>
Mon, 23 May 2016 18:58:11 +0000 (15:58 -0300)
Promises can have a second type, which is the progress type

src/lib/eolian/eo_parser.c
src/tests/eolian/eolian_generated_promise.c
src/tests/eolian/generated_promise.eo

index 10368bc..6e3d895 100644 (file)
@@ -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);
                }
           }
index 2d0e6f6..4432600 100644 (file)
 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;
index c096a30..5363da0 100644 (file)
@@ -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>;