]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Split reserved identifiers for C and Vala
authorRico Tzschichholz <ricotz@ubuntu.com>
Sat, 11 Jun 2022 11:28:11 +0000 (13:28 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 14 Jun 2022 13:46:39 +0000 (15:46 +0200)
codegen/valaccodeattribute.vala
codegen/valaccodebasemodule.vala

index 3c3b18ef43a0575871a2648b098330c657c3ff11..a996480d7569e45c1b8a9ca737f385d07ed5d901 100644 (file)
@@ -787,7 +787,7 @@ public class Vala.CCodeAttribute : AttributeCache {
                                return Symbol.camel_case_to_lower_case (sym.name).replace ("_", "-");;
                        } else if (sym is LocalVariable) {
                                unowned string name = sym.name;
-                               if (CCodeBaseModule.reserved_identifiers.contains (name)) {
+                               if (CCodeBaseModule.reserved_identifiers.contains (name) || CCodeBaseModule.reserved_vala_identifiers.contains (name)) {
                                        return "_%s_".printf (name);
                                } else {
                                        return name;
@@ -798,7 +798,7 @@ public class Vala.CCodeAttribute : AttributeCache {
                                        return "...";
                                }
                                unowned string name = sym.name;
-                               if (CCodeBaseModule.reserved_identifiers.contains (name)) {
+                               if (CCodeBaseModule.reserved_identifiers.contains (name) || CCodeBaseModule.reserved_vala_identifiers.contains (name)) {
                                        return "_%s_".printf (name);
                                } else {
                                        return name;
index c30f0dae9e2e2ab5f8d1f14700ce1dd3a07aba0c..fb323e28e60865cf8b7abbb1cee7c232985dff6b 100644 (file)
@@ -275,6 +275,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        public Set<string> predefined_marshal_set;
        /* (constant) hash table with all reserved identifiers in the generated code */
        public static Set<string> reserved_identifiers;
+       public static Set<string> reserved_vala_identifiers;
 
        public int next_temp_var_id {
                get { return emit_context.next_temp_var_id; }
@@ -467,10 +468,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                // MSVC keywords
                reserved_identifiers.add ("cdecl");
 
+               reserved_vala_identifiers = new HashSet<string> (str_hash, str_equal);
+
                // reserved for Vala/GObject naming conventions
-               reserved_identifiers.add ("error");
-               reserved_identifiers.add ("result");
-               reserved_identifiers.add ("self");
+               reserved_vala_identifiers.add ("error");
+               reserved_vala_identifiers.add ("result");
+               reserved_vala_identifiers.add ("self");
        }
 
        public override void emit (CodeContext context) {
@@ -2721,7 +2724,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                next_temp_var_id++;
                        }
                        return variable_name_map.get (name);
-               } else if (reserved_identifiers.contains (name)) {
+               } else if (reserved_identifiers.contains (name) || reserved_vala_identifiers.contains (name)) {
                        return "_%s_".printf (name);
                } else {
                        return name;