[svn] r6152: nemerle/trunk/ncc: completion/CodeCompletionEngine.n
testsuite/completion-playground/compl2.n
trupill
svnadmin at nemerle.org
Sun Mar 5 16:40:34 CET 2006
Log:
Adding first support for type completion.
Author: trupill
Date: Sun Mar 5 16:40:30 2006
New Revision: 6152
Modified:
nemerle/trunk/ncc/completion/CodeCompletionEngine.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 16:40:30 2006
@@ -284,33 +284,6 @@
def theMember = memberInfo._member;
def observed_method = theMember :> MethodBuilder;
- // As a NemerleMemberInfo is provided, we don't need to
- // search every type for the member
- /*Passes.Hierarchy.infos.Iter (fun (ti) {
- when (ti.Name == typeName && ti.NamespaceNode.Parent.Name.ToString(".") == namespaceName) {
- foreach (member in ti.GetDirectMembers ()) {
- | meth is MethodBuilder =>
- when (meth.Name == methodName)
- observed_method = meth;
- | prop is PropertyBuilder =>
- def getter = prop.GetGetter() :> MethodBuilder;
- def setter = prop.GetSetter() :> MethodBuilder;
- when (getter != null && methodName == ("get_" + prop.Name))
- observed_method = getter;
- when (setter != null && methodName == ("set_" + prop.Name))
- observed_method = setter;
- | ev is EventBuilder =>
- def adder = ev.GetAdder();
- def remover = ev.GetRemover();
- when (adder != null && methodName == ("add_" + ev.Name))
- observed_method = adder;
- when (remover != null && methodName == ("remove_" + ev.Name))
- observed_method = remover;
- | _ => ();
- }
- }
- } );*/
-
mutable completionList = null;
when (observed_method != null) {
def env = observed_method.DeclaringType.GlobalEnv;
@@ -377,13 +350,23 @@
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;
+ }
+ }
+ info = cinfo;
}
else
{
- def cinfo = CompletionMembers();
+ def cinfo = CompletionMembers ();
cinfo.Type = complete_type (first.from.tycon);
- foreach (possibility in ovpos)
- {
+ foreach (possibility in ovpos) {
match (possibility.Member) {
| y is IField => cinfo.AddMember (complete_field (y));
| y is IMethod => cinfo.AddMember (complete_method (y));
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 16:40:30 2006
@@ -46,12 +46,22 @@
System.Console.WriteLine ("NO MEMBER FOUND");
}
else {
- when (info.CompletionKind == CompletionKind.Members) {
+ if (info.CompletionKind == CompletionKind.Members) {
System.Console.WriteLine ("FOUND MEMBERS\n=============");
def members = info :> CompletionMembers;
foreach (member in members.Members)
System.Console.WriteLine (member.Name);
}
+ else {
+ System.Console.WriteLine ("FOUND TYPES\n===========");
+ def types = info :> CompletionTypes;
+ foreach (t in types.Types) {
+ if (t.TypeKind == NemerleTypeKind.DeclaredType)
+ System.Console.WriteLine ((t :> DeclaredTypeInfo).Name);
+ else
+ System.Console.WriteLine ((t :> ReferencedTypeInfo).Type.Name);
+ }
+ }
}
System.Console.WriteLine ("Finished");
}
@@ -61,3 +71,5 @@
try_completion ("string.For");
try_completion ("string.");
try_completion ("Q");
+try_completion ("System.");
+try_completion ("System.IO.");
More information about the svn
mailing list