From: Rico Tzschichholz Date: Sat, 11 Jun 2022 11:28:11 +0000 (+0200) Subject: codegen: Split reserved identifiers for C and Vala X-Git-Tag: 0.56.2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecf55f6768005a50f4f84348a1991b3af7c1c71e;p=thirdparty%2Fvala.git codegen: Split reserved identifiers for C and Vala --- diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala index 3c3b18ef4..a996480d7 100644 --- a/codegen/valaccodeattribute.vala +++ b/codegen/valaccodeattribute.vala @@ -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; diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index c30f0dae9..fb323e28e 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -275,6 +275,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { public Set predefined_marshal_set; /* (constant) hash table with all reserved identifiers in the generated code */ public static Set reserved_identifiers; + public static Set 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 (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;