From: Luca Bruno Date: Thu, 30 Dec 2010 18:44:18 +0000 (+0100) Subject: girparser: Merge virtual method specified in metadata. X-Git-Tag: 0.13.0~275 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c64d18cb2045824345db358a69650e9e5d899492;p=thirdparty%2Fvala.git girparser: Merge virtual method specified in metadata. --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index 7dff6a404..5251f9e31 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -958,8 +958,8 @@ public class Vala.GirParser : CodeVisitor { m.attributes.remove (attr); merged.add (invoker); different_invoker = true; - break; } + break; } } if (!different_invoker) { @@ -967,6 +967,13 @@ public class Vala.GirParser : CodeVisitor { } } } + // merge custom vfunc + if (info.metadata.has_argument (ArgumentType.VFUNC_NAME)) { + var vfunc = get_current_first_symbol_info (info.metadata.get_string (ArgumentType.VFUNC_NAME)); + if (vfunc != null && vfunc != info) { + merged.add (vfunc); + } + } if (m.coroutine) { // handle async methods string finish_method_base; @@ -2321,7 +2328,10 @@ public class Vala.GirParser : CodeVisitor { method.is_abstract = metadata.get_bool (ArgumentType.ABSTRACT); method.is_virtual = false; } - method.vfunc_name = metadata.get_string (ArgumentType.VFUNC_NAME); + if (metadata.has_argument (ArgumentType.VFUNC_NAME)) { + method.vfunc_name = metadata.get_string (ArgumentType.VFUNC_NAME); + method.is_virtual = true; + } } var parameters = new ArrayList ();