[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