[vala/0.42] gsignal: Use guint to represent flags-enum in custom GMarshalFunc
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/0.42] gsignal: Use guint to represent flags-enum in custom GMarshalFunc
- Date: Wed, 10 Apr 2019 14:27:36 +0000 (UTC)
commit 26a4e28dc74fe3e02e3ed2a23f454b661a5bd1b8
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Sun Mar 10 18:14:09 2019 +0100
gsignal: Use guint to represent flags-enum in custom GMarshalFunc
codegen/valagsignalmodule.vala | 7 ++++++-
tests/Makefile.am | 1 +
tests/objects/signals-enum-marshal.vala | 21 +++++++++++++++++++++
3 files changed, 28 insertions(+), 1 deletion(-)
---
diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala
index fd1a1129d..e3a12f58f 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 caea87f06..9de376474 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -277,6 +277,7 @@ TESTS = \
objects/property-static.vala \
objects/regex.vala \
objects/signals.vala \
+ objects/signals-enum-marshal.vala \
objects/signals-delegate.vala \
objects/signals-lambda-delegate.vala \
objects/test-025.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");
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]