]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girparser: Respect given lower_case_cprefix metadata all the way
authorRico Tzschichholz <ricotz@ubuntu.com>
Sat, 1 Mar 2025 18:24:43 +0000 (19:24 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sat, 1 Mar 2025 18:24:43 +0000 (19:24 +0100)
GIR allows to define multiple prefixes in "c:identifier-prefixes".
Vala is blindly taking the first one which worked well so far, but
can go very wrong. So allow overriding this information of the
root namespace for real.

vala/valagirparser.vala

index 7672ad5b0ef54c7bfe7323267c61f92a84146c15..c51261e197e7491f17a558bc3bcb6b20b2bdf0c6 100644 (file)
@@ -2224,6 +2224,8 @@ public class Vala.GirParser : CodeVisitor {
        void parse_namespace () {
                start_element ("namespace");
 
+               //TODO Handle all given prefixes instead of taking the first one
+
                string? cprefix = reader.get_attribute ("c:identifier-prefixes");
                if (cprefix != null) {
                        int idx = cprefix.index_of (",");
@@ -2285,10 +2287,14 @@ public class Vala.GirParser : CodeVisitor {
 
                if (ns_metadata.has_argument (ArgumentType.CPREFIX)) {
                        cprefix = ns_metadata.get_string (ArgumentType.CPREFIX);
+                       //NOTE Explicitly patch our girdata while not all prefixes are handled
+                       current.girdata["c:identifier-prefixes"] = cprefix;
                }
 
                if (ns_metadata.has_argument (ArgumentType.LOWER_CASE_CPREFIX)) {
                        lower_case_cprefix = ns_metadata.get_string (ArgumentType.LOWER_CASE_CPREFIX);
+                       //NOTE Explicitly patch our girdata while not all prefixes are handled
+                       current.girdata["c:symbol-prefixes"] = lower_case_cprefix.substring (0, lower_case_cprefix.length - 1);
                } else if (lower_case_cprefix != null) {
                        lower_case_cprefix += "_";
                }