]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Improve handling of reserved identifiers
authorJürg Billeter <j@bitron.ch>
Fri, 10 Apr 2009 08:27:11 +0000 (10:27 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 10 Apr 2009 08:27:11 +0000 (10:27 +0200)
Avoid conflicts between reserved identifiers and generated code
for local variables and formal parameters. Fixes bug 469335 and
bug 515225.

gobject/valaccodearraymodule.vala
gobject/valaccodeassignmentmodule.vala
gobject/valaccodebasemodule.vala
gobject/valaccodedelegatemodule.vala
gobject/valaccodememberaccessmodule.vala
gobject/valaccodemethodcallmodule.vala
gobject/valaccodemethodmodule.vala
gobject/valadbusmodule.vala
gobject/valagerrormodule.vala
gobject/valagobjectmodule.vala
gobject/valagtypemodule.vala

index f161c88bfe7f1e71a6f8ce18e67c3a7ab2bcfacc..f1a9ba8b1c201803f63c9dcd68bc166b36eff600 100644 (file)
@@ -705,7 +705,7 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        ctypename += "*";
                }
 
-               param.ccodenode = new CCodeFormalParameter (param.name, ctypename);
+               param.ccodenode = new CCodeFormalParameter (get_variable_cname (param.name), ctypename);
 
                var array_type = (ArrayType) param.parameter_type;
 
@@ -713,7 +713,7 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
 
                cparam_map.set (get_param_pos (param.cparameter_position), (CCodeFormalParameter) param.ccodenode);
                if (carg_map != null) {
-                       carg_map.set (get_param_pos (param.cparameter_position), new CCodeIdentifier (param.name));
+                       carg_map.set (get_param_pos (param.cparameter_position), get_variable_cexpression (param.name));
                }
 
                if (!param.no_array_length) {
@@ -723,10 +723,10 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        }
                        
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               var cparam = new CCodeFormalParameter (head.get_array_length_cname (param.name, dim), length_ctype);
+                               var cparam = new CCodeFormalParameter (head.get_array_length_cname (get_variable_cname (param.name), dim), length_ctype);
                                cparam_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), cparam);
                                if (carg_map != null) {
-                                       carg_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), new CCodeIdentifier (cparam.name));
+                                       carg_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), get_variable_cexpression (param.name));
                                }
                        }
                }
index eef4f9aed94efce59f9fdba8a204e74a2ed15732..fa64ccc2161d32f955dd6ec0dca17a4608425a50 100644 (file)
@@ -133,7 +133,7 @@ internal class Vala.CCodeAssignmentModule : CCodeMemberAccessModule {
                                outer_ccomma = new CCodeCommaExpression ();
 
                                var lhs_value_type = assignment.left.value_type.copy ();
-                               string lhs_temp_name = "_tmp%d".printf (next_temp_var_id++);
+                               string lhs_temp_name = "_tmp%d_".printf (next_temp_var_id++);
                                var lhs_temp = new LocalVariable (lhs_value_type, "*" + lhs_temp_name);
                                temp_vars.insert (0, lhs_temp);
                                outer_ccomma.append_expression (new CCodeAssignment (get_variable_cexpression (lhs_temp_name), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, lhs)));
index b08340992fb9f549e48cd21bfa387dae9bb0e210..e11eece0d7d9f7fab1d9852eb0526457675bba83 100644 (file)
@@ -71,8 +71,8 @@ internal class Vala.CCodeBaseModule : CCodeModule {
        public Gee.Set<string> user_marshal_set;
        /* (constant) hash table with all predefined marshallers */
        public Gee.Set<string> predefined_marshal_set;
-       /* (constant) hash table with all C keywords */
-       public Gee.Set<string> c_keywords;
+       /* (constant) hash table with all reserved identifiers in the generated code */
+       Gee.Set<string> reserved_identifiers;
        
        public int next_temp_var_id = 0;
        public bool in_creation_method = false;
@@ -158,49 +158,54 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                predefined_marshal_set.add ("VOID:UINT,POINTER");
                predefined_marshal_set.add ("BOOLEAN:FLAGS");
 
-               c_keywords = new HashSet<string> (str_hash, str_equal);
+               reserved_identifiers = new HashSet<string> (str_hash, str_equal);
 
                // C99 keywords
-               c_keywords.add ("_Bool");
-               c_keywords.add ("_Complex");
-               c_keywords.add ("_Imaginary");
-               c_keywords.add ("auto");
-               c_keywords.add ("break");
-               c_keywords.add ("case");
-               c_keywords.add ("char");
-               c_keywords.add ("const");
-               c_keywords.add ("continue");
-               c_keywords.add ("default");
-               c_keywords.add ("do");
-               c_keywords.add ("double");
-               c_keywords.add ("else");
-               c_keywords.add ("enum");
-               c_keywords.add ("extern");
-               c_keywords.add ("float");
-               c_keywords.add ("for");
-               c_keywords.add ("goto");
-               c_keywords.add ("if");
-               c_keywords.add ("inline");
-               c_keywords.add ("int");
-               c_keywords.add ("long");
-               c_keywords.add ("register");
-               c_keywords.add ("restrict");
-               c_keywords.add ("return");
-               c_keywords.add ("short");
-               c_keywords.add ("signed");
-               c_keywords.add ("sizeof");
-               c_keywords.add ("static");
-               c_keywords.add ("struct");
-               c_keywords.add ("switch");
-               c_keywords.add ("typedef");
-               c_keywords.add ("union");
-               c_keywords.add ("unsigned");
-               c_keywords.add ("void");
-               c_keywords.add ("volatile");
-               c_keywords.add ("while");
+               reserved_identifiers.add ("_Bool");
+               reserved_identifiers.add ("_Complex");
+               reserved_identifiers.add ("_Imaginary");
+               reserved_identifiers.add ("auto");
+               reserved_identifiers.add ("break");
+               reserved_identifiers.add ("case");
+               reserved_identifiers.add ("char");
+               reserved_identifiers.add ("const");
+               reserved_identifiers.add ("continue");
+               reserved_identifiers.add ("default");
+               reserved_identifiers.add ("do");
+               reserved_identifiers.add ("double");
+               reserved_identifiers.add ("else");
+               reserved_identifiers.add ("enum");
+               reserved_identifiers.add ("extern");
+               reserved_identifiers.add ("float");
+               reserved_identifiers.add ("for");
+               reserved_identifiers.add ("goto");
+               reserved_identifiers.add ("if");
+               reserved_identifiers.add ("inline");
+               reserved_identifiers.add ("int");
+               reserved_identifiers.add ("long");
+               reserved_identifiers.add ("register");
+               reserved_identifiers.add ("restrict");
+               reserved_identifiers.add ("return");
+               reserved_identifiers.add ("short");
+               reserved_identifiers.add ("signed");
+               reserved_identifiers.add ("sizeof");
+               reserved_identifiers.add ("static");
+               reserved_identifiers.add ("struct");
+               reserved_identifiers.add ("switch");
+               reserved_identifiers.add ("typedef");
+               reserved_identifiers.add ("union");
+               reserved_identifiers.add ("unsigned");
+               reserved_identifiers.add ("void");
+               reserved_identifiers.add ("volatile");
+               reserved_identifiers.add ("while");
 
                // MSVC keywords
-               c_keywords.add ("cdecl");
+               reserved_identifiers.add ("cdecl");
+
+               // reserved for Vala/GObject naming conventions
+               reserved_identifiers.add ("error");
+               reserved_identifiers.add ("result");
+               reserved_identifiers.add ("self");
        }
 
        public override void emit (CodeContext context) {
@@ -1302,7 +1307,7 @@ internal class Vala.CCodeBaseModule : CCodeModule {
 
                        if (current_method_inner_error) {
                                var cdecl = new CCodeDeclaration ("GError *");
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("inner_error", new CCodeConstant ("NULL")));
+                               cdecl.add_declarator (new CCodeVariableDeclarator ("_inner_error_", new CCodeConstant ("NULL")));
                                function.block.prepend_statement (cdecl);
                        }
 
@@ -1357,7 +1362,7 @@ internal class Vala.CCodeBaseModule : CCodeModule {
 
                if (current_method_inner_error) {
                        var cdecl = new CCodeDeclaration ("GError *");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("inner_error", new CCodeConstant ("NULL")));
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_inner_error_", new CCodeConstant ("NULL")));
                        cfrag.append (cdecl);
                }
 
@@ -1454,12 +1459,12 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                if (name[0] == '.') {
                        // compiler-internal variable
                        if (!variable_name_map.contains (name)) {
-                               variable_name_map.set (name, "_tmp%d".printf (next_temp_var_id));
+                               variable_name_map.set (name, "_tmp%d_".printf (next_temp_var_id));
                                next_temp_var_id++;
                        }
                        return variable_name_map.get (name);
-               } else if (c_keywords.contains (name)) {
-                       return name + "_";
+               } else if (reserved_identifiers.contains (name)) {
+                       return "_%s_".printf (name);
                } else {
                        return name;
                }
@@ -1640,7 +1645,7 @@ internal class Vala.CCodeBaseModule : CCodeModule {
        public LocalVariable get_temp_variable (DataType type, bool value_owned = true, CodeNode? node_reference = null) {
                var var_type = type.copy ();
                var_type.value_owned = value_owned;
-               var local = new LocalVariable (var_type, "_tmp%d".printf (next_temp_var_id));
+               var local = new LocalVariable (var_type, "_tmp%d_".printf (next_temp_var_id));
 
                if (node_reference != null) {
                        local.source_reference = node_reference.source_reference;
@@ -2956,7 +2961,7 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                        if (expr.tree_can_fail) {
                                // method can fail
                                current_method_inner_error = true;
-                               creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("inner_error")));
+                               creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_inner_error_")));
                        }
 
                        if (ellipsis) {
index 006b75cae0ab375819d979a4fbc2431b47e97117..d427e687219031dc1cc092cdac84c3dd18f6efbe 100644 (file)
@@ -55,7 +55,7 @@ internal class Vala.CCodeDelegateModule : CCodeArrayModule {
                                }
                                
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       var cparam = new CCodeFormalParameter (head.get_array_length_cname (param.name, dim), length_ctype);
+                                       var cparam = new CCodeFormalParameter (head.get_array_length_cname (get_variable_cname (param.name), dim), length_ctype);
                                        cfundecl.add_parameter (cparam);
                                }
                        }
@@ -124,7 +124,7 @@ internal class Vala.CCodeDelegateModule : CCodeArrayModule {
                } else if (delegate_expr.symbol_reference != null) {
                        if (delegate_expr.symbol_reference is FormalParameter) {
                                var param = (FormalParameter) delegate_expr.symbol_reference;
-                               CCodeExpression target_expr = new CCodeIdentifier (get_delegate_target_cname (param.name));
+                               CCodeExpression target_expr = new CCodeIdentifier (get_delegate_target_cname (get_variable_cname (param.name)));
                                if (param.direction != ParameterDirection.IN) {
                                        // accessing argument of out/ref param
                                        target_expr = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, target_expr);
@@ -405,11 +405,11 @@ internal class Vala.CCodeDelegateModule : CCodeArrayModule {
                        ctypename += "*";
                }
 
-               param.ccodenode = new CCodeFormalParameter (param.name, ctypename);
+               param.ccodenode = new CCodeFormalParameter (get_variable_cname (param.name), ctypename);
 
                cparam_map.set (get_param_pos (param.cparameter_position), (CCodeFormalParameter) param.ccodenode);
                if (carg_map != null) {
-                       carg_map.set (get_param_pos (param.cparameter_position), new CCodeIdentifier (param.name));
+                       carg_map.set (get_param_pos (param.cparameter_position), get_variable_cexpression (param.name));
                }
 
                if (param.parameter_type is DelegateType) {
@@ -419,24 +419,24 @@ internal class Vala.CCodeDelegateModule : CCodeArrayModule {
                        generate_delegate_declaration (d, decl_space);
 
                        if (d.has_target) {
-                               var cparam = new CCodeFormalParameter (get_delegate_target_cname (param.name), "void*");
+                               var cparam = new CCodeFormalParameter (get_delegate_target_cname (get_variable_cname (param.name)), "void*");
                                cparam_map.set (get_param_pos (param.cdelegate_target_parameter_position), cparam);
                                if (carg_map != null) {
-                                       carg_map.set (get_param_pos (param.cdelegate_target_parameter_position), new CCodeIdentifier (cparam.name));
+                                       carg_map.set (get_param_pos (param.cdelegate_target_parameter_position), get_variable_cexpression (param.name));
                                }
                                if (deleg_type.value_owned) {
-                                       cparam = new CCodeFormalParameter (get_delegate_target_destroy_notify_cname (param.name), "GDestroyNotify");
+                                       cparam = new CCodeFormalParameter (get_delegate_target_destroy_notify_cname (get_variable_cname (param.name)), "GDestroyNotify");
                                        cparam_map.set (get_param_pos (param.cdelegate_target_parameter_position + 0.01), cparam);
                                        if (carg_map != null) {
-                                               carg_map.set (get_param_pos (param.cdelegate_target_parameter_position + 0.01), new CCodeIdentifier (cparam.name));
+                                               carg_map.set (get_param_pos (param.cdelegate_target_parameter_position + 0.01), get_variable_cexpression (param.name));
                                        }
                                }
                        }
                } else if (param.parameter_type is MethodType) {
-                       var cparam = new CCodeFormalParameter (get_delegate_target_cname (param.name), "void*");
+                       var cparam = new CCodeFormalParameter (get_delegate_target_cname (get_variable_cname (param.name)), "void*");
                        cparam_map.set (get_param_pos (param.cdelegate_target_parameter_position), cparam);
                        if (carg_map != null) {
-                               carg_map.set (get_param_pos (param.cdelegate_target_parameter_position), new CCodeIdentifier (cparam.name));
+                               carg_map.set (get_param_pos (param.cdelegate_target_parameter_position), get_variable_cexpression (param.name));
                        }
                }
        }
index e8420103898061f7ec34003a13e7890ea1c767e6..e257ed11636b0e3e8c49fbd4a93456d7481a0ad8 100644 (file)
@@ -321,7 +321,7 @@ internal class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                        var type_as_struct = p.parameter_type.data_type as Struct;
                                        if (p.direction != ParameterDirection.IN
                                            || (type_as_struct != null && !type_as_struct.is_simple_type () && !p.parameter_type.nullable)) {
-                                               expr.ccodenode = new CCodeIdentifier ("(*%s)".printf (p.name));
+                                               expr.ccodenode = new CCodeIdentifier ("(*%s)".printf (get_variable_cname (p.name)));
                                        } else {
                                                // Property setters of non simple structs shall replace all occurences
                                                // of the "value" formal parameter with a dereferencing version of that
@@ -332,7 +332,7 @@ internal class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                                    current_property_accessor.prop.property_type.is_real_struct_type ()) {
                                                        expr.ccodenode = new CCodeIdentifier ("(*value)");
                                                } else {
-                                                       expr.ccodenode = new CCodeIdentifier (p.name);
+                                                       expr.ccodenode = get_variable_cexpression (p.name);
                                                }
                                        }
                                }
index 4785120511f0c4476327b8a98d430bf8f0b5383a..4341b1a86dc25eeaa792a7f3abe0d792c00583f5 100644 (file)
@@ -483,7 +483,7 @@ internal class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                        // method can fail
                        current_method_inner_error = true;
                        // add &inner_error before the ellipsis arguments
-                       out_arg_map.set (get_param_pos (-1), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_variable_cexpression ("inner_error")));
+                       out_arg_map.set (get_param_pos (-1), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_variable_cexpression ("_inner_error_")));
                }
 
                if (ellipsis) {
index a584ebe6c9c4eeb04e96227a93ab86e28d4512ce..8e235a4319551f6c596de42fc83215b1b0ef6c4e 100644 (file)
@@ -88,7 +88,7 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                var cparam = new CCodeFormalParameter (head.get_array_length_cname ("result", dim), "int*");
                                cparam_map.set (get_param_pos (m.carray_length_parameter_position + 0.01 * dim), cparam);
                                if (carg_map != null) {
-                                       carg_map.set (get_param_pos (m.carray_length_parameter_position + 0.01 * dim), new CCodeIdentifier (cparam.name));
+                                       carg_map.set (get_param_pos (m.carray_length_parameter_position + 0.01 * dim), get_variable_cexpression (cparam.name));
                                }
                        }
                } else if (m.return_type is DelegateType) {
@@ -99,7 +99,7 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                var cparam = new CCodeFormalParameter (get_delegate_target_cname ("result"), "void*");
                                cparam_map.set (get_param_pos (m.cdelegate_target_parameter_position), cparam);
                                if (carg_map != null) {
-                                       carg_map.set (get_param_pos (m.cdelegate_target_parameter_position), new CCodeIdentifier (cparam.name));
+                                       carg_map.set (get_param_pos (m.cdelegate_target_parameter_position), get_variable_cexpression (cparam.name));
                                }
                        }
                }
@@ -112,7 +112,7 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                        var cparam = new CCodeFormalParameter ("error", "GError**");
                        cparam_map.set (get_param_pos (-1), cparam);
                        if (carg_map != null) {
-                               carg_map.set (get_param_pos (-1), new CCodeIdentifier (cparam.name));
+                               carg_map.set (get_param_pos (-1), get_variable_cexpression (cparam.name));
                        }
                }
        }
@@ -413,14 +413,14 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                        var t = param.parameter_type.data_type;
                                        if (t != null && t.is_reference_type ()) {
                                                if (param.direction != ParameterDirection.OUT) {
-                                                       var type_check = create_method_type_check_statement (m, creturn_type, t, !param.parameter_type.nullable, param.name);
+                                                       var type_check = create_method_type_check_statement (m, creturn_type, t, !param.parameter_type.nullable, get_variable_cname (param.name));
                                                        if (type_check != null) {
                                                                type_check.line = function.line;
                                                                cinit.append (type_check);
                                                        }
                                                } else {
                                                        // ensure that the passed reference for output parameter is cleared
-                                                       var a = new CCodeAssignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, new CCodeIdentifier (param.name)), new CCodeConstant ("NULL"));
+                                                       var a = new CCodeAssignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (param.name)), new CCodeConstant ("NULL"));
                                                        cinit.append (new CCodeExpressionStatement (a));
                                                }
                                        }
@@ -431,12 +431,12 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                         * as error may be set to NULL but we're always interested in inner errors
                                         */
                                        if (m.coroutine) {
-                                               closure_struct.add_field ("GError *", "inner_error");
+                                               closure_struct.add_field ("GError *", "_inner_error_");
 
                                                // no initialization necessary, closure struct is zeroed
                                        } else {
                                                var cdecl = new CCodeDeclaration ("GError *");
-                                               cdecl.add_declarator (new CCodeVariableDeclarator ("inner_error", new CCodeConstant ("NULL")));
+                                               cdecl.add_declarator (new CCodeVariableDeclarator ("_inner_error_", new CCodeConstant ("NULL")));
                                                cinit.append (cdecl);
                                        }
                                }
@@ -661,14 +661,14 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                ctypename += "*";
                        }
 
-                       param.ccodenode = new CCodeFormalParameter (param.name, ctypename);
+                       param.ccodenode = new CCodeFormalParameter (get_variable_cname (param.name), ctypename);
                } else {
                        param.ccodenode = new CCodeFormalParameter.with_ellipsis ();
                }
 
                cparam_map.set (get_param_pos (param.cparameter_position), (CCodeFormalParameter) param.ccodenode);
                if (carg_map != null && !param.ellipsis) {
-                       carg_map.set (get_param_pos (param.cparameter_position), new CCodeIdentifier (param.name));
+                       carg_map.set (get_param_pos (param.cparameter_position), get_variable_cexpression (param.name));
                }
        }
 
index d6f2b3c999f2cda8fc9996e8bc13caabf96d178f..5e7fe11d270f9b94f1622c5a58335c3dc32cb341 100644 (file)
@@ -71,7 +71,7 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        CCodeExpression read_basic (CCodeFragment fragment, BasicTypeInfo basic_type, CCodeExpression iter_expr) {
-               string temp_name = "_tmp%d".printf (next_temp_var_id++);
+               string temp_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration (basic_type.cname);
                cdecl.add_declarator (new CCodeVariableDeclarator (temp_name));
@@ -96,7 +96,7 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        CCodeExpression read_array (CCodeFragment fragment, ArrayType array_type, CCodeExpression iter_expr, CCodeExpression? expr) {
-               string temp_name = "_tmp%d".printf (next_temp_var_id++);
+               string temp_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var new_call = new CCodeFunctionCall (new CCodeIdentifier ("g_new"));
                new_call.add_argument (new CCodeIdentifier (array_type.element_type.get_cname ()));
@@ -128,7 +128,7 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        void read_array_dim (CCodeFragment fragment, ArrayType array_type, int dim, string temp_name, CCodeExpression iter_expr, CCodeExpression? expr) {
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration ("int");
                cdecl.add_declarator (new CCodeVariableDeclarator ("%s_length%d".printf (temp_name, dim), new CCodeConstant ("0")));
@@ -190,8 +190,8 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        CCodeExpression read_struct (CCodeFragment fragment, Struct st, CCodeExpression iter_expr) {
-               string temp_name = "_tmp%d".printf (next_temp_var_id++);
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
+               string temp_name = "_tmp%d_".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration (st.get_cname ());
                cdecl.add_declarator (new CCodeVariableDeclarator (temp_name));
@@ -219,8 +219,8 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        CCodeExpression read_value (CCodeFragment fragment, CCodeExpression iter_expr) {
-               string temp_name = "_tmp%d".printf (next_temp_var_id++);
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
+               string temp_name = "_tmp%d_".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
 
                // 0-initialize struct with struct initializer { 0 }
                var cvalinit = new CCodeInitializerList ();
@@ -275,9 +275,9 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        CCodeExpression read_hash_table (CCodeFragment fragment, ObjectType type, CCodeExpression iter_expr) {
-               string temp_name = "_tmp%d".printf (next_temp_var_id++);
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
-               string entryiter_name = "_tmp%d".printf (next_temp_var_id++);
+               string temp_name = "_tmp%d_".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
+               string entryiter_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var type_args = type.get_type_arguments ();
                assert (type_args.size == 2);
@@ -402,7 +402,7 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        void write_basic (CCodeFragment fragment, BasicTypeInfo basic_type, CCodeExpression iter_expr, CCodeExpression expr) {
-               string temp_name = "_tmp%d".printf (next_temp_var_id++);
+               string temp_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration (basic_type.cname);
                cdecl.add_declarator (new CCodeVariableDeclarator (temp_name));
@@ -418,7 +418,7 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        void write_array (CCodeFragment fragment, ArrayType array_type, CCodeExpression iter_expr, CCodeExpression array_expr) {
-               string array_iter_name = "_tmp%d".printf (next_temp_var_id++);
+               string array_iter_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration (array_type.get_cname ());
                cdecl.add_declarator (new CCodeVariableDeclarator (array_iter_name));
@@ -430,8 +430,8 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        void write_array_dim (CCodeFragment fragment, ArrayType array_type, int dim, CCodeExpression iter_expr, CCodeExpression array_expr, CCodeExpression array_iter_expr) {
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
-               string index_name = "_tmp%d".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
+               string index_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration ("DBusMessageIter");
                cdecl.add_declarator (new CCodeVariableDeclarator (subiter_name));
@@ -473,7 +473,7 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        void write_struct (CCodeFragment fragment, Struct st, CCodeExpression iter_expr, CCodeExpression struct_expr) {
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration ("DBusMessageIter");
                cdecl.add_declarator (new CCodeVariableDeclarator (subiter_name));
@@ -501,7 +501,7 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        void write_value (CCodeFragment fragment, CCodeExpression iter_expr, CCodeExpression expr) {
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var cdecl = new CCodeDeclaration ("DBusMessageIter");
                cdecl.add_declarator (new CCodeVariableDeclarator (subiter_name));
@@ -552,11 +552,11 @@ internal class Vala.DBusModule : GAsyncModule {
        }
 
        void write_hash_table (CCodeFragment fragment, ObjectType type, CCodeExpression iter_expr, CCodeExpression hash_table_expr) {
-               string subiter_name = "_tmp%d".printf (next_temp_var_id++);
-               string entryiter_name = "_tmp%d".printf (next_temp_var_id++);
-               string tableiter_name = "_tmp%d".printf (next_temp_var_id++);
-               string key_name = "_tmp%d".printf (next_temp_var_id++);
-               string value_name = "_tmp%d".printf (next_temp_var_id++);
+               string subiter_name = "_tmp%d_".printf (next_temp_var_id++);
+               string entryiter_name = "_tmp%d_".printf (next_temp_var_id++);
+               string tableiter_name = "_tmp%d_".printf (next_temp_var_id++);
+               string key_name = "_tmp%d_".printf (next_temp_var_id++);
+               string value_name = "_tmp%d_".printf (next_temp_var_id++);
 
                var type_args = type.get_type_arguments ();
                assert (type_args.size == 2);
index 6fa5c73afc7502248ec550d51791f8a4d47f0055..5692caca859e2d44243cb8c8c86808d0b8bb095b 100644 (file)
@@ -92,7 +92,7 @@ internal class Vala.GErrorModule : CCodeDelegateModule {
 
                // method will fail
                current_method_inner_error = true;
-               var cassign = new CCodeAssignment (get_variable_cexpression ("inner_error"), (CCodeExpression) stmt.error_expression.ccodenode);
+               var cassign = new CCodeAssignment (new CCodeIdentifier ("_inner_error_"), (CCodeExpression) stmt.error_expression.ccodenode);
                cfrag.append (new CCodeExpressionStatement (cassign));
 
                head.add_simple_check (stmt, cfrag);
@@ -105,7 +105,7 @@ internal class Vala.GErrorModule : CCodeDelegateModule {
        public virtual CCodeStatement return_with_exception (CCodeExpression error_expr)
        {
                var cpropagate = new CCodeFunctionCall (new CCodeIdentifier ("g_propagate_error"));
-               cpropagate.add_argument (get_variable_cexpression ("error"));
+               cpropagate.add_argument (new CCodeIdentifier ("error"));
                cpropagate.add_argument (error_expr);
 
                var cerror_block = new CCodeBlock ();
@@ -163,7 +163,7 @@ internal class Vala.GErrorModule : CCodeDelegateModule {
        public override void add_simple_check (CodeNode node, CCodeFragment cfrag) {
                current_method_inner_error = true;
 
-               var inner_error = get_variable_cexpression ("inner_error");
+               var inner_error = get_variable_cexpression ("_inner_error_");
 
                CCodeStatement cerror_handler = null;
 
@@ -319,20 +319,20 @@ internal class Vala.GErrorModule : CCodeDelegateModule {
 
                var cblock = new CCodeBlock ();
 
-               string variable_name = clause.variable_name;
+               string variable_name = get_variable_cname (clause.variable_name);
                if (variable_name == null) {
                        variable_name = "__err";
                }
 
                if (current_method != null && current_method.coroutine) {
                        closure_struct.add_field ("GError *", variable_name);
-                       cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression (variable_name), get_variable_cexpression ("inner_error"))));
+                       cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression (variable_name), get_variable_cexpression ("_inner_error_"))));
                } else {
                        var cdecl = new CCodeDeclaration ("GError *");
-                       cdecl.add_declarator (new CCodeVariableDeclarator (variable_name, get_variable_cexpression ("inner_error")));
+                       cdecl.add_declarator (new CCodeVariableDeclarator (variable_name, get_variable_cexpression ("_inner_error_")));
                        cblock.add_statement (cdecl);
                }
-               cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression ("inner_error"), new CCodeConstant ("NULL"))));
+               cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression ("_inner_error_"), new CCodeConstant ("NULL"))));
 
                cblock.add_statement (clause.body.ccodenode);
 
index b48ffa5beddcf48569aded9c59b5169b5d199b75..dc198e4fa993f6d745714173c2728930f82782c8 100644 (file)
@@ -488,7 +488,7 @@ internal class Vala.GObjectModule : GTypeModule {
                                 * as error may be set to NULL but we're always interested in inner errors
                                 */
                                cdecl = new CCodeDeclaration ("GError *");
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("inner_error", new CCodeConstant ("NULL")));
+                               cdecl.add_declarator (new CCodeVariableDeclarator ("_inner_error_", new CCodeConstant ("NULL")));
                                cblock.add_statement (cdecl);
                        }
 
@@ -517,7 +517,7 @@ internal class Vala.GObjectModule : GTypeModule {
                                 * as error may be set to NULL but we're always interested in inner errors
                                 */
                                var cdecl = new CCodeDeclaration ("GError *");
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("inner_error", new CCodeConstant ("NULL")));
+                               cdecl.add_declarator (new CCodeVariableDeclarator ("_inner_error_", new CCodeConstant ("NULL")));
                                base_init_fragment.append (cdecl);
                        }
 
@@ -537,7 +537,7 @@ internal class Vala.GObjectModule : GTypeModule {
                                 * as error may be set to NULL but we're always interested in inner errors
                                 */
                                var cdecl = new CCodeDeclaration ("GError *");
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("inner_error", new CCodeConstant ("NULL")));
+                               cdecl.add_declarator (new CCodeVariableDeclarator ("_inner_error_", new CCodeConstant ("NULL")));
                                class_init_fragment.append (cdecl);
                        }
 
index 5f748da305a616a3f368d1282714ceefd075e2c1..dd4421bfe5dff85508882e4197c3f58ed61424ed 100644 (file)
@@ -43,11 +43,11 @@ internal class Vala.GTypeModule : GErrorModule {
                        ctypename += "*";
                }
 
-               param.ccodenode = new CCodeFormalParameter (param.name, ctypename);
+               param.ccodenode = new CCodeFormalParameter (get_variable_cname (param.name), ctypename);
 
                cparam_map.set (get_param_pos (param.cparameter_position), (CCodeFormalParameter) param.ccodenode);
                if (carg_map != null) {
-                       carg_map.set (get_param_pos (param.cparameter_position), new CCodeIdentifier (param.name));
+                       carg_map.set (get_param_pos (param.cparameter_position), get_variable_cexpression (param.name));
                }
        }