From: Rico Tzschichholz Date: Sun, 10 Mar 2019 17:14:09 +0000 (+0100) Subject: gsignal: Use guint to represent flags-enum in custom GMarshalFunc X-Git-Tag: 0.36.19~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e8b05ed9330dccb5b07976cc6c2cc4748ca65d0;p=thirdparty%2Fvala.git gsignal: Use guint to represent flags-enum in custom GMarshalFunc --- diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala index c60e16cab..5dbf08873 100644 --- a/codegen/valagsignalmodule.vala +++ b/codegen/valagsignalmodule.vala @@ -68,7 +68,12 @@ public class Vala.GSignalModule : GObjectModule { return "gpointer"; } } else if (t.data_type is Enum) { - return "gint"; + var en = (Enum) t.data_type; + if (en.is_flags) { + return "guint"; + } else { + return "gint"; + } } else if (t is ArrayType) { return "gpointer"; } else if (t is ErrorType) { diff --git a/tests/Makefile.am b/tests/Makefile.am index 51783c723..576e667f3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -233,6 +233,7 @@ TESTS = \ objects/property-static.vala \ objects/regex.vala \ objects/signals.vala \ + objects/signals-enum-marshal.vala \ objects/test-025.vala \ objects/test-026.vala \ objects/test-029.vala \ diff --git a/tests/objects/signals-enum-marshal.vala b/tests/objects/signals-enum-marshal.vala new file mode 100644 index 000000000..412fa18b6 --- /dev/null +++ b/tests/objects/signals-enum-marshal.vala @@ -0,0 +1,21 @@ +enum Foo { + FOO +} + +[Flags] +enum Bar { + BAR +} + +class Manam : Object { + public signal void foo (Foo f, string s); + public signal void bar (Bar b, string s); +} + +void main () { + var manam = new Manam (); + manam.foo.connect (() => {}); + manam.foo (Foo.FOO, "foo"); + manam.bar.connect (() => {}); + manam.bar (Bar.BAR, "bar"); +}