From: Sebastian Dröge Date: Thu, 8 Jul 2010 14:10:17 +0000 (+0200) Subject: vapigen: Add support for type_parameters for delegates X-Git-Tag: 0.9.3~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=51516f3399f34e77416e1fe3c87f988084346619;p=thirdparty%2Fvala.git vapigen: Add support for type_parameters for delegates Also add support for type_name for delegate parameters. --- diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index e42a24e63..adcaeddf3 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -320,6 +320,10 @@ public class Vala.GIdlParser : CodeVisitor { } } else if (nv[0] == "instance_pos") { cb.cinstance_parameter_position = eval (nv[1]).to_double (); + } else if (nv[0] == "type_parameters") { + foreach (string type_param_name in eval (nv[1]).split (",")) { + cb.add_type_parameter (new TypeParameter (type_param_name, current_source_reference)); + } } } } @@ -405,6 +409,15 @@ public class Vala.GIdlParser : CodeVisitor { if (eval (nv[1]) == "1") { p.no_array_length = true; } + } else if (nv[0] == "type_name") { + var sym = new UnresolvedSymbol (null, eval (nv[1])); + if (param_type is UnresolvedType) { + ((UnresolvedType) param_type).unresolved_symbol = sym; + } else { + // Overwrite old param_type, so "type_name" must be before any + // other param type modifying metadata + p.parameter_type = param_type = new UnresolvedType.from_symbol (sym, return_type.source_reference); + } } } }