]> 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 21:58:18 +0000 (22:58 +0100)
committerFlorian Brosch <flo.brosch@gmail.com>
Fri, 6 Jan 2012 21:58:18 +0000 (22:58 +0100)
src/libvaladoc/ctyperesolver.vala
src/libvaladoc/documentation/gtkdoccommentscanner.vala

index 74051360f3c2d9d2b39539550684c981e46c81df..863cc388516e32a4eaa71fc89860bfbff26ccf0f 100755 (executable)
@@ -70,7 +70,7 @@ public class Valadoc.CTypeResolver : Visitor {
                return !last_was_underscore;
        }
 
-       private string? translate_cname (string name) {
+       private string? translate_cname_to_g (string name) {
                if (is_capitalized_and_underscored (name)) {
                        string[] segments = name.split ("_");
                        unowned string last_segment = segments[segments.length - 1];
@@ -143,7 +143,7 @@ public class Valadoc.CTypeResolver : Visitor {
                        return node;
                }
 
-               string? alternative = translate_cname (_name);
+               string? alternative = translate_cname_to_g (_name);
                if (alternative != null) {
                        return nodes.get (alternative);
                }
@@ -162,6 +162,13 @@ public class Valadoc.CTypeResolver : Visitor {
                        return this.tree.search_symbol_str (null, "GLib.FileStream.printf");
                }
 
+               int dotpos = _name.index_of_char ('.');
+               if (dotpos > 0) {
+                       string fst = _name.substring (0, dotpos);
+                       string snd = _name.substring (dotpos + 1);
+                       return nodes.get (fst + ":" + snd);
+               }
+
                return null;
        }
 
@@ -283,7 +290,6 @@ public class Valadoc.CTypeResolver : Visitor {
                        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 afc6f79522b2b8a5b27907229f444e8201c01ebb..62b102a945e9355b8a63378c8e580ccc97aa7524 100644 (file)
@@ -331,25 +331,30 @@ public class Valadoc.Gtkdoc.Scanner {
                        } else {
                                id_len += id_len2 + separator_len;
                        }
-               } else if (this.pos.has_prefix ("->")) {
+               } else if (this.pos.has_prefix ("->") || this.pos.has_prefix (".")) {
                        unowned string sep_start = this.pos;
                        int sep_column_start = this.column;                     
+                       int separator_len = 1;
+
+                       if (this.pos.has_prefix ("->")) {
+                               separator_len = 2;
+                               next_char ();   
+                       }
 
                        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;
+                                       id_len += separator_len + id_len2;
                                } else {
                                        this.column = sep_column_start;
                                        this.pos = sep_start;
                                }
                        } else {
-                               id_len += 2 + func_token.content.length;
+                               id_len += separator_len + func_token.content.length;
                        }
                }