]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Don't use simple struct initializer if local is a GValue
authorLuca Bruno <lucabru@src.gnome.org>
Wed, 11 May 2011 07:47:51 +0000 (09:47 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Wed, 11 May 2011 07:51:43 +0000 (09:51 +0200)
Fixes bug 621176.

codegen/valaccodebasemodule.vala
tests/Makefile.am
tests/structs/bug621176.vala [new file with mode: 0644]

index b0a93247619545c483149d10c5e9694f64eb0102..9b860930636a55414bd1e50bf0cb6cae2026ae63 100644 (file)
@@ -2003,7 +2003,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                var st = local.variable_type.data_type as Struct;
                var initializer = local.initializer as ObjectCreationExpression;
                if (st != null && (!st.is_simple_type () || st.get_cname () == "va_list") && !local.variable_type.nullable &&
-                   initializer != null && initializer.get_object_initializer ().size == 0) {
+                   local.variable_type.data_type != gvalue_type && initializer != null && initializer.get_object_initializer ().size == 0) {
                        return true;
                } else {
                        return false;
index 1cb60fc67632b27e30d881a2aaa7004f7ded3fe0..95cb9eae45f976fd318be0e9978ddc10294516fa 100644 (file)
@@ -52,6 +52,7 @@ TESTS = \
        structs/bug606202.vala \
        structs/bug613513.vala \
        structs/bug613825.vala \
+       structs/bug621176.vala \
        structs/bug622422.vala \
        delegates/delegates.vala \
        delegates/bug595610.vala \
diff --git a/tests/structs/bug621176.vala b/tests/structs/bug621176.vala
new file mode 100644 (file)
index 0000000..5487208
--- /dev/null
@@ -0,0 +1,8 @@
+struct Foo {
+       int i;
+}
+
+void main () {
+       Value v = Foo ();
+       assert (v.type() == typeof (Foo));
+}