]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Simplify visit_local_variable
authorJürg Billeter <j@bitron.ch>
Wed, 19 Jan 2011 20:09:17 +0000 (21:09 +0100)
committerJürg Billeter <j@bitron.ch>
Wed, 19 Jan 2011 21:04:23 +0000 (22:04 +0100)
codegen/valaccodebasemodule.vala

index f188209852dace15eff75cb7d45217535d5baacd..46d68cab7c2d95868824b22232b05762fb184178 100644 (file)
@@ -2132,33 +2132,23 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                }
                        }
                } else {
-                       CCodeExpression post_rhs = null;
-                       if (has_simple_struct_initializer (local)) {
-                               post_rhs = rhs;
-                               rhs = null;
-                       }
-
-                       var cvar = new CCodeVariableDeclarator (get_variable_cname (local.name), rhs, local.variable_type.get_cdeclarator_suffix ());
-                       if (rhs != null) {
-                               cvar.line = rhs.line;
-                       }
+                       var cvar = new CCodeVariableDeclarator (get_variable_cname (local.name), null, local.variable_type.get_cdeclarator_suffix ());
 
                        // try to initialize uninitialized variables
                        // initialization not necessary for variables stored in closure
-                       if (cvar.initializer == null) {
+                       if (rhs == null || has_simple_struct_initializer (local)) {
                                cvar.initializer = default_value_for_type (local.variable_type, true);
                                cvar.init0 = true;
                        }
 
                        ccode.add_declaration (local.variable_type.get_cname (), cvar);
 
-                       if (cvar.initializer != null && !cvar.init0) {
-                               cvar.initializer = null;
-                               ccode.add_assignment (get_variable_cexpression (local.name), rhs);
-                       }
-
-                       if (post_rhs != null) {
-                               ccode.add_expression (post_rhs);
+                       if (rhs != null) {
+                               if (has_simple_struct_initializer (local)) {
+                                       ccode.add_expression (rhs);
+                               } else {
+                                       ccode.add_assignment (get_variable_cexpression (local.name), rhs);
+                               }
                        }
                }