From: Lorenz Wildberg Date: Sat, 24 Jun 2023 14:31:32 +0000 (+0200) Subject: girparser: Parse generic constraints X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1afc338dac9e93c099f63cc82e926fa545c132b6;p=thirdparty%2Fvala.git girparser: Parse generic constraints --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index ed685cd7f..66bfe8b57 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -1848,17 +1848,28 @@ public class Vala.GirParser : CodeVisitor { var type_parameters_length = type_parameters.length; GLib.StringBuilder current = new GLib.StringBuilder.sized (type_parameters_length); + string? constraint = null; for (var c = 0 ; c < type_parameters_length ; c++) { if (type_parameters[c] == ',') { var p = new TypeParameter (current.str, source_reference); + if (constraint != null) { + p.add_type_constraint (parse_type_from_string (constraint, true, source_reference)); + constraint = null; + } type_symbol.add_type_parameter (p); current.truncate (); + } else if (type_parameters[c] == ':') { + constraint = current.str; + current.truncate (); } else { current.append_unichar (type_parameters[c]); } } var p = new TypeParameter (current.str, source_reference); + if (constraint != null) { + p.add_type_constraint (parse_type_from_string (constraint, true, source_reference)); + } type_symbol.add_type_parameter (p); return true;