]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
libvaladoc: gir-reader: accept #[id]->[id|func]
authorFlorian Brosch <flo.brosch@gmail.com>
Fri, 6 Jan 2012 02:57:46 +0000 (03:57 +0100)
committerFlorian Brosch <flo.brosch@gmail.com>
Fri, 6 Jan 2012 02:57:46 +0000 (03:57 +0100)
src/libvaladoc/ctyperesolver.vala
src/libvaladoc/documentation/gtkdoccommentscanner.vala

index 0467d48c7831bd930dfe8a3a56c5de7fbbb7ea29..74051360f3c2d9d2b39539550684c981e46c81df 100755 (executable)
@@ -282,6 +282,7 @@ public class Valadoc.CTypeResolver : Visitor {
                } else {
                        string parent_cname = get_parent_type_cname (item);
                        if (parent_cname != null) {
+                               register_symbol (parent_cname+"->"+item.get_cname (), item);
                                register_symbol (parent_cname+"."+item.get_cname (), item);
                        }
                }
index 978bce8706fc90dce75c7adf8d9053cbec6d7683..afc6f79522b2b8a5b27907229f444e8201c01ebb 100644 (file)
@@ -331,6 +331,26 @@ public class Valadoc.Gtkdoc.Scanner {
                        } else {
                                id_len += id_len2 + separator_len;
                        }
+               } else if (this.pos.has_prefix ("->")) {
+                       unowned string sep_start = this.pos;
+                       int sep_column_start = this.column;                     
+
+                       next_char ();
+                       next_char ();   
+
+                       Token? func_token = function_prefix ();
+                       if (func_token == null) {
+                               int id_len2;
+
+                               if ((id_len2 = id_prefix ()) > 0) {
+                                       id_len += 2 + id_len2;
+                               } else {
+                                       this.column = sep_column_start;
+                                       this.pos = sep_start;
+                               }
+                       } else {
+                               id_len += 2 + func_token.content.length;
+                       }
                }
 
                return new Token (type, start.substring (1, id_len), null, start, offset (this.pos, start), this.line, column_start, this.column);