From: Luca Bruno Date: Sat, 20 Nov 2010 20:55:58 +0000 (+0100) Subject: girparser: Property without accessor must have owned get. X-Git-Tag: 0.13.0~294 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f5d53bfc1734e3ffc43362aca5297aa23a2b05b;p=thirdparty%2Fvala.git girparser: Property without accessor must have owned get. --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index 86297d3fd..0e16deded 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -852,6 +852,7 @@ public class Vala.GirParser : CodeVisitor { merged.add (info); } } else if (info.symbol is Property) { + var prop = (Property) info.symbol; foreach (var cinfo in colliding) { var sym = cinfo.symbol; if (sym is Signal || sym is Field) { @@ -862,10 +863,19 @@ public class Vala.GirParser : CodeVisitor { merged.add (cinfo); } } - var getter_name = "get_%s".printf (info.symbol.name); - var setter_name = "set_%s".printf (info.symbol.name); - if (current_symbols_info.contains (getter_name) || current_symbols_info.contains (setter_name)) { - ((Property) info.symbol).no_accessor_method = false; + var getter_name = "get_%s".printf (prop.name); + var setter_name = "set_%s".printf (prop.name); + if (prop.get_accessor != null && current_symbols_info.contains (getter_name)) { + var getter_list = current_symbols_info[getter_name]; + foreach (var getter_info in getter_list) { + if (getter_info.symbol is Method) { + prop.no_accessor_method = false; + prop.get_accessor.value_type.value_owned = ((Method) getter_info.symbol).return_type.value_owned; + break; + } + } + } else if (prop.set_accessor != null && current_symbols_info.contains (setter_name)) { + prop.no_accessor_method = false; } } else if (info.symbol is Signal) { var sig = (Signal) info.symbol; @@ -2198,6 +2208,7 @@ public class Vala.GirParser : CodeVisitor { prop.array_null_terminated = array_null_terminated; if (readable != "0") { prop.get_accessor = new PropertyAccessor (true, false, false, prop.property_type.copy (), null, null); + prop.get_accessor.value_type.value_owned = true; } if (writable == "1" || construct_only == "1") { prop.set_accessor = new PropertyAccessor (false, (construct_only != "1") && (writable == "1"), (construct_only == "1") || (construct_ == "1"), prop.property_type.copy (), null, null);