]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Add support for finish_vfunc_name in CCode
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 18 Sep 2016 13:36:06 +0000 (15:36 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 18 Sep 2016 13:36:06 +0000 (15:36 +0200)
codegen/valaccodeattribute.vala
vala/valagirparser.vala
vapigen/valagidlparser.vala

index 38d2ebfc1c322db20796b0248b52eb2cbaebc334..0383fe3d41c0a561680fe69d293aba17bb26b3a6 100644 (file)
@@ -439,7 +439,12 @@ public class Vala.CCodeAttribute : AttributeCache {
        public string finish_vfunc_name {
                get {
                        if (_finish_vfunc_name == null) {
-                               _finish_vfunc_name = get_finish_name_for_basename (vfunc_name);
+                               if (ccode != null) {
+                                       _finish_vfunc_name = ccode.get_string ("finish_vfunc_name");
+                               }
+                               if (_finish_vfunc_name == null) {
+                                       _finish_vfunc_name = get_finish_name_for_basename (vfunc_name);
+                               }
                        }
                        return _finish_vfunc_name;
                }
index 159ce9fdc9b8843fc8fb5de7db44982119e058da..b4530698f465622976fcf29018942bf4ecc807f0 100644 (file)
@@ -81,7 +81,8 @@ public class Vala.GirParser : CodeVisitor {
                FLOATING,
                TYPE_ID,
                RETURN_VOID,
-               DELEGATE_TARGET_CNAME;
+               DELEGATE_TARGET_CNAME,
+               FINISH_VFUNC_NAME;
 
                public static ArgumentType? from_string (string name) {
                        var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -3081,6 +3082,10 @@ public class Vala.GirParser : CodeVisitor {
                                method.set_attribute_string ("CCode", "vfunc_name", metadata.get_string (ArgumentType.VFUNC_NAME));
                                method.is_virtual = true;
                        }
+                       if (metadata.has_argument (ArgumentType.FINISH_VFUNC_NAME)) {
+                               method.set_attribute_string ("CCode", "finish_vfunc_name", metadata.get_string (ArgumentType.FINISH_VFUNC_NAME));
+                               method.is_virtual = true;
+                       }
                }
 
                if (!(metadata.get_expression (ArgumentType.THROWS) is NullLiteral)) {
index 380fb0aeb4fb23058ab831b7e4d27feb2b8974fa..543b686578ba9e962b8b0e38bfd2f78089d5316f 100644 (file)
@@ -2349,6 +2349,8 @@ public class Vala.GIdlParser : CodeVisitor {
                                        }
                                } else if (nv[0] == "vfunc_name") {
                                        m.set_attribute_string ("CCode", "vfunc_name", eval (nv[1]));
+                               } else if (nv[0] == "finish_vfunc_name") {
+                                       m.set_attribute_string ("CCode", "finish_vfunc_name", eval (nv[1]));
                                } else if (nv[0] == "finish_name") {
                                        m.set_attribute_string ("CCode", "finish_name", eval (nv[1]));
                                } else if (nv[0] == "async") {