]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girparser: Fix assuming parameter names of signal from virtual method.
authorLuca Bruno <lucabru@src.gnome.org>
Sat, 25 Dec 2010 12:05:30 +0000 (13:05 +0100)
committerLuca Bruno <lucabru@src.gnome.org>
Mon, 4 Apr 2011 13:14:45 +0000 (15:14 +0200)
vala/valagirparser.vala

index 0b7f1527de656ac282a5721d1b484387fcb723f3..06731bff540fe393629bc36751a693b368fceda1 100644 (file)
@@ -791,18 +791,26 @@ public class Vala.GirParser : CodeVisitor {
                }
        }
 
-       void assume_parameter_names (Signal sig, Symbol sym) {
+       void assume_parameter_names (Signal sig, Symbol sym, bool skip_first) {
                Iterator<Parameter> iter;
                if (sym is Method) {
                        iter = ((Method) sym).get_parameters ().iterator ();
                } else {
                        iter = ((Delegate) sym).get_parameters ().iterator ();
                }
+               bool first = true;
                foreach (var param in sig.get_parameters ()) {
                        if (!iter.next ()) {
                                // unreachable for valid GIR
                                break;
                        }
+                       if (skip_first && first) {
+                               if (!iter.next ()) {
+                                       // unreachable for valid GIR
+                                       break;
+                               }
+                               first = false;
+                       }
                        param.name = iter.get ().name;
                }
        }
@@ -905,7 +913,7 @@ public class Vala.GirParser : CodeVisitor {
                                        } else {
                                                sig.has_emitter = true;
                                        }
-                                       assume_parameter_names (sig, method);
+                                       assume_parameter_names (sig, method, false);
                                        merged.add (cinfo);
                                } else if (sym is Field) {
                                        merged.add (cinfo);
@@ -2861,7 +2869,7 @@ public class Vala.GirParser : CodeVisitor {
                                } else if (symbol is Signal) {
                                        var sig = (Signal) symbol;
                                        sig.is_virtual = true;
-                                       assume_parameter_names (sig, d);
+                                       assume_parameter_names (sig, d, true);
                                } else if (symbol is Property) {
                                        var prop = (Property) symbol;
                                        prop.is_virtual = true;