[svn] r6154: nemerle/trunk/ncc: completion/CodeCompletionEngine.n
completion/CompletionEngineTree.n testsu...
trupill
svnadmin at nemerle.org
Sun Mar 5 21:30:46 CET 2006
Log:
Final touches to Code Completion Engine. Now namespace completion works
OK.
Author: trupill
Date: Sun Mar 5 21:30:42 2006
New Revision: 6154
Modified:
nemerle/trunk/ncc/completion/CodeCompletionEngine.n
nemerle/trunk/ncc/completion/CompletionEngineTree.n
nemerle/trunk/ncc/testsuite/completion-playground/compl2.n
Modified: nemerle/trunk/ncc/completion/CodeCompletionEngine.n
==============================================================================
--- nemerle/trunk/ncc/completion/CodeCompletionEngine.n (original)
+++ nemerle/trunk/ncc/completion/CodeCompletionEngine.n Sun Mar 5 21:30:42 2006
@@ -300,7 +300,7 @@
catch
{
| e is CompletionResult => completionList = translate_ovpossibility_to_info (e.Overloads);
- | _ => ();
+ | e => System.Console.WriteLine (e.Message);
}
}
IsInCompletionMode = false;
@@ -345,27 +345,39 @@
{
mutable complete_types = false;
def first = ovpos.Head;
- when (first.Member.Name == ".ctor" || first.Member.Name == ".cctor")
+ when (first.Member.Name == ".ctor" || first.Member.Name == ".cctor" ||
+ first.Member is TypeInfo) {
complete_types = true;
+ }
if (complete_types)
{
def cinfo = CompletionTypes ();
- cinfo.Namespace = "";
- mutable typex = [];
- foreach (possibility in ovpos) {
- when (!typex.Contains (possibility.from.tycon.Name)) {
- def my_type = complete_type (possibility.from.tycon);
- cinfo.AddType (my_type);
- typex ::= possibility.from.tycon.Name;
+
+ def node = first.from.tycon.FullName;
+ def ns_node = NamespaceTree.namespace_tree.Path (node).Parent;
+ mutable already_added = [];
+ foreach (child in ns_node.children)
+ {
+ match (child.Value.Value) {
+ | Cached (tycon) => def type_name = child.Key.TrimEnd('*').TrimEnd ('1', '2', '3', '4').TrimEnd('`');
+ when (!already_added.Contains (type_name))
+ {
+ cinfo.AddType (complete_type (tycon));
+ already_added ::= type_name;
+ }
+ //| NotLoaded (tycon) => System.Console.WriteLine ("notloaded " + child.Key);
+ | NamespaceReference => cinfo.AddNamespace (child.Key);
+ | _ => ();
}
}
+
info = cinfo;
}
else
{
def cinfo = CompletionMembers ();
- cinfo.Type = complete_type (first.from.tycon);
+ try {
foreach (possibility in ovpos) {
match (possibility.Member) {
| y is IField => cinfo.AddMember (complete_field (y));
@@ -378,6 +390,10 @@
}
info = cinfo;
}
+ catch {
+ | e => System.Console.WriteLine (e.Message + "\n" + e.StackTrace);
+ }
+ }
}
info
}
@@ -660,7 +676,7 @@
uniqueTypesTable.Add(uniqueName, returnType);
try
{
- returnType.Name = t.Name;
+ returnType.Name = t.Name.TrimEnd('*').TrimEnd ('1', '2', '3', '4').TrimEnd('`');
if (t.DeclaringType == null) {
returnType.Namespace = t.NamespaceNode.Parent.Name.ToString(".");
Modified: nemerle/trunk/ncc/completion/CompletionEngineTree.n
==============================================================================
--- nemerle/trunk/ncc/completion/CompletionEngineTree.n (original)
+++ nemerle/trunk/ncc/completion/CompletionEngineTree.n Sun Mar 5 21:30:42 2006
@@ -58,7 +58,6 @@
mutable members : list[NemerleMemberInfo];
- public mutable Type : NemerleTypeInfo;
public Members : array[NemerleMemberInfo]
{
get { members.ToArray() }
@@ -81,11 +80,16 @@
{ get { CompletionKind.Types } }
mutable types : list[NemerleTypeInfo];
+ mutable namespaces : list[string];
- public mutable Namespace : string;
public Types : array[NemerleTypeInfo]
{
- get { types.ToArray() }
+ get { types.ToArray () }
+ }
+
+ public Namespaces : array[string]
+ {
+ get { namespaces.ToArray () }
}
public AddType (t : NemerleTypeInfo) : void
@@ -93,9 +97,15 @@
types ::= t;
}
+ public AddNamespace (ns : string) : void
+ {
+ namespaces ::= ns;
+ }
+
public this ()
{
types = [];
+ namespaces = [];
}
}
Modified: nemerle/trunk/ncc/testsuite/completion-playground/compl2.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/completion-playground/compl2.n (original)
+++ nemerle/trunk/ncc/testsuite/completion-playground/compl2.n Sun Mar 5 21:30:42 2006
@@ -67,9 +67,9 @@
}
try_completion ("this.Fo");
-try_completion ("def a = \"a\"; a.");
+try_completion ("def a = \"a\"; a.L");
try_completion ("string.For");
try_completion ("string.");
try_completion ("Q");
try_completion ("System.");
-try_completion ("System.IO.");
+try_completion ("System.Reflection.");
More information about the svn
mailing list