[svn] r6369: nemerle/trunk/ncc/testsuite/completion-playground:
compl-s2.n compl3.n
VladD2
svnadmin at nemerle.org
Mon Jun 5 02:54:25 CEST 2006
Log:
Has completed the completion Engine test.
Author: VladD2
Date: Mon Jun 5 02:54:23 2006
New Revision: 6369
Modified:
nemerle/trunk/ncc/testsuite/completion-playground/compl-s2.n
nemerle/trunk/ncc/testsuite/completion-playground/compl3.n
Modified: nemerle/trunk/ncc/testsuite/completion-playground/compl-s2.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/completion-playground/compl-s2.n (original)
+++ nemerle/trunk/ncc/testsuite/completion-playground/compl-s2.n Mon Jun 5 02:54:23 2006
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Collections;
// foo
#define foobar
Modified: nemerle/trunk/ncc/testsuite/completion-playground/compl3.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/completion-playground/compl3.n (original)
+++ nemerle/trunk/ncc/testsuite/completion-playground/compl3.n Mon Jun 5 02:54:23 2006
@@ -1,48 +1,64 @@
using Nemerle.Compiler;
using Nemerle.Completion;
using Nemerle.Collections;
+using Nemerle.Utility;
using System.IO;
using System.Console;
def engine = Engine ();
def files = Hashtable ();
-def rawArgs = List.FromArray (System.Environment.GetCommandLineArgs ());
-def (progName, args) = rawArgs.Head::rawArgs.Tail;
-when (args.Length == 0) {
- WriteLine($"usage: $progName <filename>\n"+
- " <filename> is the Nemerle source code you want "+
- "to pass to the \n"+
+def rawArgs = System.Environment.GetCommandLineArgs ().ToList();
+def (progName, args) = rawArgs.Head :: rawArgs.Tail;
+
+when (args.Length == 0)
+{
+ WriteLine(
+ $ "usage: $progName <filename>\n" +
+ " <filename> is the Nemerle source code you want to pass to the \n" +
" code completion engine");
System.Environment.Exit(1);
}
-foreach (arg in args) {
- using (sr = StreamReader (arg)) {
- def str = sr.ReadToEnd ();
- engine.Sources.Add (arg, str);
- files [arg] = str;
- }
+
+foreach (path in args)
+{
+ def source = File.ReadAllText (path);
+ engine.Sources.Add (path, source);
+ files [path] = source;
}
def type_tree = engine.GetTypeTree ();
-def _second_tree = engine.GetTypeTree ();
+//def _second_tree = engine.GetTypeTree ();
// mutable the_method = null;
-def loop (x) : void
+def loop (x) : IMember
{
- foreach ( node in x.Children.Values )
+ mutable completionMember;
+
+ foreach (node in x.Children.Values)
{
- match (node.Value) {
- | NamespaceReference => loop(node);
- | Cached as c =>
- match (c.tycon) {
- | tb is TypeBuilder => System.Console.WriteLine (tb.FrameworkTypeName);
+ match (node.Value)
+ {
+ | NamespaceReference => completionMember = loop (node);
+ | Cached(tycon) =>
+ match (tycon)
+ { | tb is TypeBuilder =>
+ WriteLine (tb.FrameworkTypeName);
foreach (n in tb.GetMembers ())
{
+ //match (n.GetKind ())
+ //{ | Field (field) => WriteLine (field); // IField
+ // | Method (method) => WriteLine (method); // IMethod
+ // when (method.Name == "Bar")
+ // completionMember = method;
+ // | Property (prop) => WriteLine (prop); // IProperty
+ // | Type (tycon) => WriteLine (tycon); // TypeInfo
+ // | Event (body) => WriteLine (body); // IEvent
+ //}
match (n.GetKind ())
- {
- | Field as f => System.Console.WriteLine ("* " + f.field.Name + " : " +
- Engine.GetNameFromType (f.field.GetMemType ()));
- | _ => System.Console.WriteLine("* " + n.Name);
+ { | Method (method) => // IMethod
+ when (method.Name == "Bar")
+ completionMember = method;
+ | _ => ()
}
}
| _ => ();
@@ -50,44 +66,53 @@
| _ => ()
}
}
+
+ completionMember;
}
-System.Console.WriteLine ("FOUND TYPES\n===========");
-loop (type_tree);
+WriteLine ("Found types\n===========");
+def completionMember = loop (type_tree);
+
+WriteLine ("\n================================================");
+WriteLine ($" Completion member: $completionMember");
+
+def try_completion (body)
+{
+ try
+ {
+ WriteLine ($"\nTrying to complete: '$body'");
+ def overloads = engine.RunCompletionEngine (completionMember, body);
-/*def try_completion (body) {
- System.Console.WriteLine ("\nTrying to complete:");
- System.Console.WriteLine (body);
- def info = engine.RunCompletionEngine (the_method, body);
- if (info == null) {
- System.Console.WriteLine ("NO MEMBER FOUND");
- }
- else {
- 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);
+ if (overloads == null)
+ WriteLine ("No member found!!!");
else
- System.Console.WriteLine ((t :> ReferencedTypeInfo).Type.Name);
- }
+ {
+ WriteLine (" Member found:");
+
+ foreach (overl in overloads)
+ WriteLine ($" $(overl.Member.Name) -> $overl"
+ " $(overl.Member.Attributes)");
+
+ WriteLine (" ==========");
+
+ WriteLine ("Finished");
+ WriteLine ("================================================");
}
}
- System.Console.WriteLine ("Finished");
+ catch { ex => WriteLine(ex); }
}
+//FixMe: Bugs
+try_completion ("Fo");
+try_completion ("");
+try_completion ("def _ = 0; ");
+
+// Work fine:
+try_completion ("System.");
+try_completion ("System.Reflection.");
try_completion ("this.Fo");
try_completion ("def a = \"a\"; a.L");
try_completion ("string.For");
try_completion ("string.");
try_completion ("Q");
-try_completion ("System.");
-try_completion ("System.Reflection.");
-try_completion ("def s = System.Collections.Generic.List (); s.");*/
+try_completion ("def s = System.Collections.Generic.List (); s.");
More information about the svn
mailing list