From: Rico Tzschichholz Date: Thu, 3 Oct 2019 11:34:52 +0000 (+0200) Subject: tests: Add dedicated "delegate without target through varargs" test X-Git-Tag: 0.44.9~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0c428afc82b9910e9f9553792e25af7a54cd09a3;p=thirdparty%2Fvala.git tests: Add dedicated "delegate without target through varargs" test --- diff --git a/tests/Makefile.am b/tests/Makefile.am index b8fd4d20e..4bb01b38f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -147,6 +147,7 @@ TESTS = \ methods/printf-invalid.test \ methods/printf-constructor.vala \ methods/printf-constructor-invalid.test \ + methods/varargs-delegate-without-target.vala \ methods/varargs-gvalue.vala \ methods/varargs-out.vala \ methods/varargs-struct.vala \ diff --git a/tests/methods/varargs-delegate-without-target.vala b/tests/methods/varargs-delegate-without-target.vala new file mode 100644 index 000000000..49d5182f4 --- /dev/null +++ b/tests/methods/varargs-delegate-without-target.vala @@ -0,0 +1,31 @@ +[CCode (has_target = false)] +delegate string Foo (); + +string foo (void* data) { + return "foo"; +} + +void bar (int first, ...) { + assert (first == 23); + var args = va_list (); + Foo** out_func = args.arg (); + *out_func = (Foo) foo; +} + +void baz (int first, ...) { + assert (first == 42); + var args = va_list (); + Foo func = args.arg (); + assert (func () == "foo"); +} + +void main () { + { + Foo func; + bar (23, out func); + assert (func () == "foo"); + } + { + baz (42, foo); + } +}