]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
gsignal: Use guint to represent flags-enum in custom GMarshalFunc
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 10 Mar 2019 17:14:09 +0000 (18:14 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 10 Mar 2019 17:14:09 +0000 (18:14 +0100)
codegen/valagsignalmodule.vala
tests/Makefile.am
tests/objects/signals-enum-marshal.vala [new file with mode: 0644]

index bcda9d96fa822e614a3e7c21ae15d626d224e984..c4c046a175478a62b9cf9dd6c934b112ecebcdfd 100644 (file)
@@ -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) {
index 86522887106e35e590b88585a28bf4c300461b5c..e54e872274068c8d47d0d9249ad3b1a22d2b0950 100644 (file)
@@ -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 (file)
index 0000000..412fa18
--- /dev/null
@@ -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");
+}