diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2016-09-18 15:36:06 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2016-09-18 15:36:06 +0200 |
commit | a38fdd253569d3459204a08364d3ba8a831f32eb (patch) | |
tree | a92da641e3c52b739cddc83cdf83d938a9e63b97 | |
parent | b24f85a6ac56328a30dfa04e3daeed85fe7fc4af (diff) | |
download | vala-a38fdd253569d3459204a08364d3ba8a831f32eb.tar.gz |
codegen: Add support for finish_vfunc_name in CCode
-rw-r--r-- | codegen/valaccodeattribute.vala | 7 | ||||
-rw-r--r-- | vala/valagirparser.vala | 7 | ||||
-rw-r--r-- | vapigen/valagidlparser.vala | 2 |
3 files changed, 14 insertions, 2 deletions
diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala index 38d2ebfc1..0383fe3d4 100644 --- a/codegen/valaccodeattribute.vala +++ b/codegen/valaccodeattribute.vala @@ -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; } diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index 159ce9fdc..b4530698f 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -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)) { diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 380fb0aeb..543b68657 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -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") { |