[svn] r6797: vs-plugin/trunk/Nemerle.Compiler.Utils: Nemerle.Completion2/CodeModel/Project.Type.n Nemerle....

VladD2 svnadmin at nemerle.org
Thu Oct 26 17:22:34 CEST 2006


Log:
Fix delegates compile and hints display.

Author: VladD2
Date: Thu Oct 26 17:22:33 2006
New Revision: 6797

Modified:
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n	Thu Oct 26 17:22:33 2006
@@ -81,7 +81,9 @@
       : Location * object
     {
       def typeBuilder = typeDecl.Builder;
-      def member      = typeBuilder.GetActiveMember(fileIndex, line, col, (f) => f is PropertyBuilder);
+      def member      = 
+        if (typeBuilder.IsDelegate) typeBuilder : IMember
+        else typeBuilder.GetActiveMember(fileIndex, line, col, (f) => f is PropertyBuilder);
 
       match (member)
       {
@@ -142,6 +144,7 @@
 
       | fb is FieldBuilder    => (fb.Location,      fb)
       | pb is PropertyBuilder => (pb.Location,      pb)
+      | tb is TypeBuilder     => (tb.Location,      tb)
       | null                  => (Location.Default, null)
       | _                     =>
         Trace.Assert(false, $"Unknown member type '$member'.");
@@ -169,6 +172,7 @@
       | fh is Typedtree.Fun_header      => (QuickTipInfo(loc,         fh))
       | fb is FieldBuilder              => (QuickTipInfo(fb.Location, fb))
       | pb is PropertyBuilder           => (QuickTipInfo(pb.Location, pb))
+      | tb is TypeBuilder               => (QuickTipInfo(tb.Location, tb))
       | _                               => (null)
       }
     }
@@ -193,6 +197,7 @@
       | fh is Typedtree.Fun_header      => (GotoInfo(fh))
       | fb is FieldBuilder              => (GotoInfo(fb))
       | pb is PropertyBuilder           => (GotoInfo(pb))
+      | tb is TypeBuilder               => (GotoInfo(tb))
       | _                               => (null)
       }
     }

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.n	Thu Oct 26 17:22:33 2006
@@ -225,13 +225,21 @@
           //
           def _start = Environment.TickCount;
 
-          foreach (member in builder.GetDirectMembers())
+          def isProessed(m)
+          {
+            !(m.Attributes %&& NemerleAttributes.SpecialName)
+              && m.Location.FileIndex == fileIndex
+          }
+
+          def members = builder.GetDirectMembers().Filter(isProessed);
+
+          foreach (member in members)
           {
           // TypeBuilder can contains methods from many parts of partial 
           // class and super classes. We must process only memebers defined 
           // in processed file only!
           //
-          | method is MethodBuilder when method.Location.FileIndex == fileIndex =>
+          | method is MethodBuilder =>
 
 #if !DEBUG
             when (_start > Environment.TickCount - 2000)
@@ -271,7 +279,7 @@
             //
             addRegion(method.Location.TrimStart(method.fun_header.Location, false));
 
-          | builder is TypeBuilder when builder.Location.FileIndex == fileIndex =>
+          | builder is TypeBuilder =>
 
             processBuilder(builder)
 

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	Thu Oct 26 17:22:33 2006
@@ -189,7 +189,12 @@
             | _ =>
               //when (typeBuilder.Name == "SourceCollection") //member.Name == ".ctor"
               //  Trace.Assert(false);
-              if (member.Location.Contains(fileIndex, line, col)) member else loop(tail)
+              if (member.Location.Contains(fileIndex, line, col) 
+                && !(member.Attributes %&& NemerleAttributes.SpecialName)
+              )
+                member
+              else
+                loop(tail)
           }
 
         | [] => null



More information about the svn mailing list