]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vapigen: Add support for type_parameters for delegates
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 8 Jul 2010 14:10:17 +0000 (16:10 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 8 Jul 2010 14:15:22 +0000 (16:15 +0200)
Also add support for type_name for delegate parameters.

vapigen/valagidlparser.vala

index e42a24e6336de38520fe6b480df48396e38dff8e..adcaeddf3eb1d2a538c744cc6d4cf4be7a96b40e 100644 (file)
@@ -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);
+                                                       }
                                                }
                                        }
                                }