summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@expertisesolutions.com.br>2017-06-12 22:39:03 -0300
committerLauro Moura <lauromoura@expertisesolutions.com.br>2017-06-12 22:42:54 -0300
commit697c22c047a7bb50c7e51538d75f933964cd74e6 (patch)
tree62d99b40f44c3b376e1679f42a248997bb9e4626
parent60ffcbdd9eb723c1c672e6832921141d14fd9f06 (diff)
downloadefl-697c22c047a7bb50c7e51538d75f933964cd74e6.tar.gz
eolian_mono: Declare native retvar with default
More preparation for the try/catch on native wrappers.
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_definition.hh2
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_helpers.hh2
-rw-r--r--src/bin/eolian_mono/eolian/mono/parameter.hh4
3 files changed, 5 insertions, 3 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/function_definition.hh b/src/bin/eolian_mono/eolian/mono/function_definition.hh
index 087125f537..bc8244162f 100644
--- a/src/bin/eolian_mono/eolian/mono/function_definition.hh
+++ b/src/bin/eolian_mono/eolian/mono/function_definition.hh
@@ -66,7 +66,7 @@ struct native_function_definition_generator
<< scope_tab << scope_tab << "efl.eo.IWrapper wrapper = efl.eo.Globals.data_get(pd);\n"
<< scope_tab << scope_tab << "if(wrapper != null) {\n"
<< scope_tab << scope_tab << scope_tab << eolian_mono::native_function_definition_preamble()
- << "((" << string << "Inherit)wrapper)." << string
+ << scope_tab << scope_tab << scope_tab << (return_type != "void" ? "_ret_var = " : "") << "((" << string << "Inherit)wrapper)." << string
<< "(" << (native_argument_invocation % ", ") << ");\n"
<< eolian_mono::native_function_definition_epilogue(*klass)
<< scope_tab << scope_tab << "} else {\n"
diff --git a/src/bin/eolian_mono/eolian/mono/function_helpers.hh b/src/bin/eolian_mono/eolian/mono/function_helpers.hh
index 459f4e6d74..c6c93deb03 100644
--- a/src/bin/eolian_mono/eolian/mono/function_helpers.hh
+++ b/src/bin/eolian_mono/eolian/mono/function_helpers.hh
@@ -47,7 +47,7 @@ struct native_function_definition_preamble_generator
<< scope_tab << scope_tab << "//Function pointer wrappers\n"
<< *(scope_tab << scope_tab << native_convert_function_pointer << "\n")
<< scope_tab << scope_tab << "//Return variable and function call\n"
- << scope_tab << scope_tab << native_convert_return_variable
+ << scope_tab << scope_tab << scope_tab << native_convert_return_variable << "\n"
).generate(sink, std::make_tuple(f.parameters, f.parameters, f.parameters, f.return_type), context))
return false;
diff --git a/src/bin/eolian_mono/eolian/mono/parameter.hh b/src/bin/eolian_mono/eolian/mono/parameter.hh
index cd81f23530..4a5e2501b5 100644
--- a/src/bin/eolian_mono/eolian/mono/parameter.hh
+++ b/src/bin/eolian_mono/eolian/mono/parameter.hh
@@ -896,7 +896,9 @@ struct native_convert_return_variable_generator
bool generate(OutputIterator sink, attributes::type_def const& ret_type, Context const& context) const
{
if (ret_type.c_type != "void")
- return as_generator("var _ret_var = ").generate(sink, attributes::unused, context);
+ return as_generator(
+ type << " _ret_var = default(" << type << ");"
+ ).generate(sink, std::make_tuple(ret_type, ret_type), context);
return true;
}