From: Luca Bruno Date: Sun, 17 Oct 2010 06:45:14 +0000 (-0700) Subject: girparser: Add common parse_symbol_from_string method X-Git-Tag: 0.11.2~31 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=02c7c93c1ef2a22b2bed8383808038506064d912;p=thirdparty%2Fvala.git girparser: Add common parse_symbol_from_string method --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index b8ebc0ac4..9c8e3717c 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -567,6 +567,17 @@ public class Vala.GirParser : CodeVisitor { const string GIR_VERSION = "1.2"; + UnresolvedSymbol? parse_symbol_from_string (string symbol_string, SourceReference? source_reference = null) { + UnresolvedSymbol? sym = null; + foreach (unowned string s in symbol_string.split (".")) { + sym = new UnresolvedSymbol (sym, s, source_reference); + } + if (sym == null) { + Report.error (source_reference, "a symbol must be specified"); + } + return sym; + } + void parse_repository () { start_element ("repository"); if (reader.get_attribute ("version") != GIR_VERSION) { @@ -1093,15 +1104,8 @@ public class Vala.GirParser : CodeVisitor { } else if (type_name == "Atk.ImplementorIface") { type_name = "Atk.Implementor"; } - string[] type_components = type_name.split ("."); - if (type_components[1] != null) { - // namespaced name - string namespace_name = transform_namespace_name (type_components[0]); - string transformed_type_name = type_components[1]; - type = new UnresolvedType.from_symbol (new UnresolvedSymbol (new UnresolvedSymbol (null, namespace_name), transformed_type_name)); - } else { - type = new UnresolvedType.from_symbol (new UnresolvedSymbol (null, type_name)); - } + var sym = parse_symbol_from_string (type_name, get_current_src ()); + type = new UnresolvedType.from_symbol (sym, get_current_src ()); } return type;