]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Cast to field or parameter ctype on assignment
authorLuca Bruno <lucabru@src.gnome.org>
Sat, 30 Apr 2011 19:53:23 +0000 (21:53 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Sat, 30 Apr 2011 20:53:33 +0000 (22:53 +0200)
codegen/valaccodeassignmentmodule.vala

index 2b009d517331ad0d1851c1b405657a61a01547a4..43b9dbaa393a5f0cab3dfd6e14549d2a762544a8 100644 (file)
@@ -206,7 +206,20 @@ public class Vala.CCodeAssignmentModule : CCodeMemberAccessModule {
                        return;
                }
 
-               ccode.add_assignment (get_cvalue_ (lvalue), get_cvalue_ (value));
+               string ctype;
+               if (variable is Field) {
+                       ctype = ((Field) variable).get_ctype ();
+               } else if (variable is Parameter) {
+                       ctype = ((Parameter) variable).ctype;
+               } else {
+                       ctype = null;
+               }
+               var cexpr = get_cvalue_ (value);
+               if (ctype != null) {
+                       cexpr = new CCodeCastExpression (cexpr, ctype);
+               }
+
+               ccode.add_assignment (get_cvalue_ (lvalue), cexpr);
 
                if (array_type != null && !variable.no_array_length) {
                        var glib_value = (GLibValue) value;