]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix calling methods returning structs and throwing errors
authorJürg Billeter <j@bitron.ch>
Sat, 26 Sep 2009 12:44:52 +0000 (14:44 +0200)
committerJürg Billeter <j@bitron.ch>
Sat, 26 Sep 2009 12:44:52 +0000 (14:44 +0200)
Argument order was incorrect, fixes bug 596228.

codegen/valaccodemethodcallmodule.vala
tests/Makefile.am
tests/errors/bug596228.vala [new file with mode: 0644]

index 5baa63afe59512b453bd551b5d5e4d5d5d4a68ef..5660bd6676ee7c989fc6fb9ce77460165282148b 100644 (file)
@@ -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);
index cb29b92e12a6d45dad73e5c6b1eb7fbe55e546a1..f75f8adb1b8a3631010d166d6c87e68949cb8431 100644 (file)
@@ -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 (file)
index 0000000..25456a3
--- /dev/null
@@ -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);
+}