felipealmeida pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=46903d76f5c5c9fa9834298edff509b4b82a2e5b

commit 46903d76f5c5c9fa9834298edff509b4b82a2e5b
Author: Felipe Magno de Almeida <fel...@expertisesolutions.com.br>
Date:   Fri Apr 29 17:14:54 2016 -0300

    eolian: Fix promise generation with multiple parameters
    
    When generating multiple parameters, they inadvertedly got
    replaced by __eo_promise. Replacing all arguments to the
    promise pointer.
---
 src/bin/eolian/eo_generator.c         |  8 +++-----
 src/tests/eolian/generated_promise.eo | 12 ++++++++++++
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c
index 0d80cc2..aa73bcc 100644
--- a/src/bin/eolian/eo_generator.c
+++ b/src/bin/eolian/eo_generator.c
@@ -383,6 +383,7 @@ eo_bind_func_generate(const Eolian_Class *class, const 
Eolian_Function *funcid,
              Eina_Bool had_star = !!strchr(ptype, '*');
 
              if (ftype == EOLIAN_UNRESOLVED || ftype == EOLIAN_METHOD) 
add_star = (pdir == EOLIAN_OUT_PARAM || pdir == EOLIAN_INOUT_PARAM);
+             if (eina_strbuf_length_get(params)) eina_strbuf_append(params, ", 
");
 
              if(!has_promise && !strcmp(ptype, "Eina_Promise *") &&
                 (ftype == EOLIAN_UNRESOLVED || ftype == EOLIAN_METHOD) && pdir 
== EOLIAN_INOUT_PARAM)
@@ -396,18 +397,15 @@ eo_bind_func_generate(const Eolian_Class *class, const 
Eolian_Function *funcid,
                       promise_value_type = eolian_type_c_type_get(subtype);
                   eina_strbuf_append_printf(impl_full_params, ", 
Eina_Promise_Owner *%s%s",
                          pname, is_empty && !dflt_value ?" EINA_UNUSED":"");
+                  eina_strbuf_append_printf(params, "__eo_promise");
                }
              else
                {
                   eina_strbuf_append_printf(impl_full_params, ", %s%s%s%s%s",
                         ptype, had_star?"":" ", add_star?"*":"", pname, 
is_empty && !dflt_value ?" EINA_UNUSED":"");
+                  eina_strbuf_append_printf(params, "%s", pname);
                }
 
-             if (eina_strbuf_length_get(params)) eina_strbuf_append(params, ", 
");
-             if(has_promise)
-               eina_strbuf_append_printf(params, "%s", "__eo_promise");
-             else
-               eina_strbuf_append_printf(params, "%s", pname);
              eina_strbuf_append_printf(full_params, ", %s%s%s%s%s",
                    ptype, had_star?"":" ", add_star?"*":"", pname, is_empty && 
!dflt_value ?" EINA_UNUSED":"");
              if (is_auto)
diff --git a/src/tests/eolian/generated_promise.eo 
b/src/tests/eolian/generated_promise.eo
index 66c1a68..60fbe3e 100644
--- a/src/tests/eolian/generated_promise.eo
+++ b/src/tests/eolian/generated_promise.eo
@@ -7,6 +7,18 @@ class Generated_Promise (Eo.Base)
             @inout promise1: promise<int>*;
          }
       }
+      method_multiple_args_1 {
+         params {
+            @inout promise1: promise<int>*;
+            @in data: void*;
+         }
+      }
+      method_multiple_args_2 {
+         params {
+            @in data: void*;
+            @inout promise1: promise<int>*;
+         }
+      }
       method2 {
          params {
             @out promise1: promise<int>*;

-- 


Reply via email to