summaryrefslogtreecommitdiff
path: root/tests/objects/signals-fundamental-return.vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2020-04-12 11:02:29 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2020-04-12 11:09:34 +0200
commit34a47ef9f37aa1b53a72ff05862e88082ca952c0 (patch)
tree88edb9832c740a99cd8f2b13ebc2e58b76976f28 /tests/objects/signals-fundamental-return.vala
parent0a0a851198fb8dcc14e752a7e086418a69183511 (diff)
downloadvala-34a47ef9f37aa1b53a72ff05862e88082ca952c0.tar.gz
codegen: Use get_value_*_function() in GSignalModule.generate_marshaller()
This makes sure to pick up the intended function like the generated ones for fundamental classes. Fixes https://gitlab.gnome.org/GNOME/vala/issues/468
Diffstat (limited to 'tests/objects/signals-fundamental-return.vala')
-rw-r--r--tests/objects/signals-fundamental-return.vala28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/objects/signals-fundamental-return.vala b/tests/objects/signals-fundamental-return.vala
new file mode 100644
index 000000000..d73ed03fb
--- /dev/null
+++ b/tests/objects/signals-fundamental-return.vala
@@ -0,0 +1,28 @@
+class Maman {
+}
+
+interface IBar : Maman {
+}
+
+class Bar : Maman, IBar {
+}
+
+class Foo {
+ public signal Foo on_foo ();
+ public signal IBar on_bar ();
+}
+
+void main () {
+ var foo = new Foo ();
+ foo.on_foo.connect (() => {
+ return new Foo ();
+ });
+ foo.on_bar.connect (() => {
+ return new Bar ();
+ });
+
+ var bar = foo.on_foo ();
+ assert (bar is Foo);
+ var bar2 = foo.on_bar ();
+ assert (bar2 is IBar);
+}