From: Jürg Billeter Date: Sat, 26 Sep 2009 12:44:52 +0000 (+0200) Subject: Fix calling methods returning structs and throwing errors X-Git-Tag: 0.7.7~29 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4de54ba6fd5796bf7ace662faa7ce63cabe429f7;p=thirdparty%2Fvala.git Fix calling methods returning structs and throwing errors Argument order was incorrect, fixes bug 596228. --- diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala index 5baa63afe..5660bd667 100644 --- a/codegen/valaccodemethodcallmodule.vala +++ b/codegen/valaccodemethodcallmodule.vala @@ -567,7 +567,7 @@ internal class Vala.CCodeMethodCallModule : CCodeAssignmentModule { temp_vars.insert (0, temp_var); - out_arg_map.set (get_param_pos (-3, true), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, temp_ref)); + out_arg_map.set (get_param_pos (-3), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, temp_ref)); var ccomma = new CCodeCommaExpression (); ccomma.append_expression ((CCodeExpression) ccall_expr); diff --git a/tests/Makefile.am b/tests/Makefile.am index cb29b92e1..f75f8adb1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -44,6 +44,7 @@ TESTS = \ objects/test-029.vala \ objects/test-034.vala \ errors/errors.vala \ + errors/bug596228.vala \ dbus/basic-types.test \ dbus/arrays.test \ dbus/async.test \ diff --git a/tests/errors/bug596228.vala b/tests/errors/bug596228.vala new file mode 100644 index 000000000..25456a3ba --- /dev/null +++ b/tests/errors/bug596228.vala @@ -0,0 +1,16 @@ +struct Foo { + Foo (int foo) { + this.foo = foo; + } + + int foo; +} + +Foo get_foo () throws Error { + return Foo (42); +} + +void main () { + var foo = get_foo (); + assert (foo.foo == 42); +}