From 46903d76f5c5c9fa9834298edff509b4b82a2e5b Mon Sep 17 00:00:00 2001 From: Felipe Magno de Almeida Date: Fri, 29 Apr 2016 17:14:54 -0300 Subject: [PATCH] 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 0d80cc2b3a..aa73bcc15c 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 66c1a68cb7..60fbe3e2ac 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*; } } + method_multiple_args_1 { + params { + @inout promise1: promise*; + @in data: void*; + } + } + method_multiple_args_2 { + params { + @in data: void*; + @inout promise1: promise*; + } + } method2 { params { @out promise1: promise*;