[valadoc] libvaladoc: gir-reader: accept #[id].[id|func]



commit 70f4fa9a293229d051b9f23ad54e8a3c40d5a686
Author: Florian Brosch <flo brosch gmail com>
Date:   Fri Jan 6 22:58:18 2012 +0100

    libvaladoc: gir-reader: accept #[id].[id|func]

 src/libvaladoc/ctyperesolver.vala                  |   12 +++++++++---
 .../documentation/gtkdoccommentscanner.vala        |   13 +++++++++----
 2 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/src/libvaladoc/ctyperesolver.vala b/src/libvaladoc/ctyperesolver.vala
index 7405136..863cc38 100755
--- a/src/libvaladoc/ctyperesolver.vala
+++ b/src/libvaladoc/ctyperesolver.vala
@@ -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);
 			}
 		}
 	}
diff --git a/src/libvaladoc/documentation/gtkdoccommentscanner.vala b/src/libvaladoc/documentation/gtkdoccommentscanner.vala
index afc6f79..62b102a 100644
--- a/src/libvaladoc/documentation/gtkdoccommentscanner.vala
+++ b/src/libvaladoc/documentation/gtkdoccommentscanner.vala
@@ -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;
 			}
 		}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]