[svn] r6571: vs-plugin/trunk: ConsoleTest/Program.cs Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/...

VladD2 svnadmin at nemerle.org
Wed Aug 23 15:42:56 CEST 2006


Log:
1. Sync with compiler.
2. Add tests.
3. Move ReplaceSpecialName(name : string) : string to compiler.

Author: VladD2
Date: Wed Aug 23 15:42:47 2006
New Revision: 6571

Modified:
   vs-plugin/trunk/ConsoleTest/Program.cs
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.MakeCompletionList.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/CompletionElem.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Content/Class1.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Tests.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n

Modified: vs-plugin/trunk/ConsoleTest/Program.cs
==============================================================================
--- vs-plugin/trunk/ConsoleTest/Program.cs	(original)
+++ vs-plugin/trunk/ConsoleTest/Program.cs	Wed Aug 23 15:42:47 2006
@@ -12,6 +12,8 @@
 			Test1 test = new Test1();
 			test.Init();
 
+			test.Complete_namespace();
+			test.Complete_vars_with_same_name();
 			test.Complete_in_match_variant_3();
 			test.Complete_in_match_variant_2();
 			test.Complete_in_match_variant_1();

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.MakeCompletionList.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.MakeCompletionList.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.MakeCompletionList.n	Wed Aug 23 15:42:47 2006
@@ -24,25 +24,22 @@
         overloads.Add(value);
       }
 
+      def addMember(member : IMember)
+      {
+        when (IsValid(member))
+          //Fixme: member.GetName() don't compile.
+          add (Completion.GetName(member), Elem.Member(member))
+      }
+
       foreach (elem in result.Elems)
       {
-        | Local (value)      => add(value.Type.ToDisplayString(), elem);
+        | Member(member)     => addMember(member);
+        | Local (value)      => add(value.Name, elem);
         | Node (name, _)     => add(name, elem);
         | Overloads (values) =>
           foreach (overload in values)
-          {
-            def member = overload.Member;
-            when (IsValid(member))
-            {
-              def name = match (member.MemberType)
-              {
-                | Constructor => ReplaceSpecialName(member.DeclaringType.Name)
-                | _ => member.Name
-              }
+            addMember(overload.Member);
 
-              add (name, Elem.Overload(overload))
-            }
-          }
         | Overload           => assert(false);
       }
 
@@ -74,8 +71,8 @@
             completionList.Add(CompletionElem(
               node.Value.GetGlyphIndex() :> int, name, "", overloads));
 
-          | Overload (overload)          =>
-            def member = overload.Member;
+          | Member(member)
+          | Overload (overload) with member = overload.Member =>
             completionList.Add(CompletionElem(member.GetGlyphIndex(), name, "", overloads));
 
           | Overloads                    => assert(false);

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/CompletionElem.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/CompletionElem.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/CompletionElem.n	Wed Aug 23 15:42:47 2006
@@ -41,11 +41,11 @@
         {
           | Local (value) => _ = builder.AppendLine(value.MakeHint());
           | Node(_, node) => _ = builder.AppendLine(node.MakeHint());
-          | Overload(overload) =>
-            def member = overload.Member;
+          | Member(member)
+          | Overload (overload) with member = overload.Member =>
             _ = builder.AppendLine(member.ToString());
 
-            def info = XmlDocReader.GetInfo(overload.Member, overload.Member.Location);
+            def info = XmlDocReader.GetInfo(member, member.Location);
 
             when (info != null)
             {

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Content/Class1.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Content/Class1.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Content/Class1.n	Wed Aug 23 15:42:47 2006
@@ -44,19 +44,32 @@
             | _ => ()
 	          //| TestVariant.B
           }
-          /*Complete in match variant 2:-0*/
+          
         }
 
         public Method5() : void
         {
-          match (xxx)
+		      def a : A = D();
+      		
+		      match (a)
           {
-			      | CValue(A/*Complete in match variant 3:-0*/
-			      | CValue(Bbb) => WriteLine();
-            | _ => ()
+			      | x is /*Complete in match variant 3:-0*/
           }
         }
 
+        public Method6() : void
+        {
+          def testVariable = 1;
+          def TestVariable = 1;
+
+          testVariab/*Complete vars with same name:-0*/
+        }
+
+        public Method7() : void
+        {
+          System.Console./*Complete namespace:-0*/
+        }
+
         xxx : TestVariant2;
       }
     }
@@ -96,3 +109,8 @@
 	| BValue
   | CValue { subVariant : TestVariant1; }
 }
+
+class A { }
+class B : A { }
+class C : A { }
+class D : C { }
\ No newline at end of file

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Tests.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Tests.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Tests/Tests.n	Wed Aug 23 15:42:47 2006
@@ -14,6 +14,26 @@
   public partial class Test1
   {
     [Test]
+    public Complete_namespace() : void
+    {
+      def file = FilePath1;
+      def (line, col) = ReadLocation(file, "Complete namespace");
+      def result = _project.CompleteWord(file, line, col, GetTextFromFile(file, _, _, _, _));
+      Assert.IsNotNull(result, "result is null");
+      Assert.Greater(result.Length, 0);
+    }
+
+    [Test]
+    public Complete_vars_with_same_name() : void
+    {
+      def file = FilePath1;
+      def (line, col) = ReadLocation(file, "Complete vars with same name");
+      def result = _project.CompleteWord(file, line, col, GetTextFromFile(file, _, _, _, _));
+      Assert.IsNotNull(result, "result is null");
+      Assert.AreEqual(2, result.Length, "Expected 2 elements.");
+    }
+
+    [Test]
     public Complete_in_match_variant_3() : void
     {
       def file = FilePath1;

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n	Wed Aug 23 15:42:47 2006
@@ -108,7 +108,7 @@
     public static GetNameFromType (t : MType) : string
     {
       | Class as c => 
-        mutable name = ReplaceSpecialName(c.tycon.FrameworkTypeName);
+        mutable name = Completion.ReplaceSpecialName(c.tycon.FrameworkTypeName);
 
         when (c.args.Length > 0)
         {
@@ -132,30 +132,6 @@
       | Intersection(types) => $"one of $types"
     }
 
-    /// Look for special names
-    public static ReplaceSpecialName(name : string) : string
-    {
-      | "Nemerle.Core.list" 
-      | "Nemerle.Core.list+Cons" 
-      | "Nemerle.Core.list+Nil"  => "list"
-      | "System.Byte"            => "byte"
-      | "System.SByte"           => "sbyte"
-      | "System.Int16"           => "short"
-      | "System.UInt16"          => "ushort"
-      | "System.Int32"           => "int"
-      | "System.UInt32"          => "uint"
-      | "System.Int64"           => "long"
-      | "System.UInt64"          => "ulong"
-      | "System.Single"          => "float"
-      | "System.Double"          => "double"
-      | "System.Decimal"         => "decimal"
-      | "System.String"          => "string"
-      | "System.Object"          => "object"
-      | "System.Boolean"         => "bool"
-      | "System.Char"            => "char"
-      | _                        => name
-    }
-
     public static GetGlyphIndex(this member : IMember) : int
     {
       def glyphType = match (member.GetKind ())



More information about the svn mailing list