diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2019-03-10 18:14:09 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2019-03-10 18:14:09 +0100 |
commit | ed72aa2876acdf2d54226d8763c5c319106f1407 (patch) | |
tree | 36e280ad8e9724d0eb5c0f9254bf760d0604c2f3 | |
parent | abbdfddde0809831f23b3951a8a90007411888dc (diff) | |
download | vala-ed72aa2876acdf2d54226d8763c5c319106f1407.tar.gz |
gsignal: Use guint to represent flags-enum in custom GMarshalFunc
-rw-r--r-- | codegen/valagsignalmodule.vala | 7 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/objects/signals-enum-marshal.vala | 21 |
3 files changed, 28 insertions, 1 deletions
diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala index bcda9d96f..c4c046a17 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 DelegateType) { diff --git a/tests/Makefile.am b/tests/Makefile.am index 865228871..e54e87227 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -298,6 +298,7 @@ TESTS = \ objects/property-static.vala \ objects/regex.vala \ objects/signals.vala \ + objects/signals-enum-marshal.vala \ objects/signals-delegate.vala \ objects/signals-delegate-parameter.vala \ objects/signals-lambda-delegate.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"); +} |