[svn] r7136: nemerle/trunk/ncc/external/LibrariesLoader.n nemerle/trunk/ncc/hierarchy/BuiltinMethod.n neme...

IT svnadmin at nemerle.org
Fri Dec 22 06:05:44 CET 2006


Log:
1. Added IsExtension property to the IMethod interface.
2. Fixed method tip info for extension methods.

Author: IT
Date: Fri Dec 22 06:05:37 2006
New Revision: 7136

Modified:
   nemerle/trunk/ncc/external/LibrariesLoader.n
   nemerle/trunk/ncc/hierarchy/BuiltinMethod.n
   nemerle/trunk/ncc/hierarchy/ClassMembers.n
   nemerle/trunk/ncc/hierarchy/TypeInfo.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/MethodTipInfo.n

Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n	(original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n	Fri Dec 22 06:05:37 2006
@@ -166,6 +166,14 @@
         _extension_methods [m.Name] ::= m;
       else
         _extension_methods [m.Name] = [m];
+
+      match (m)
+      {
+      | m is MethodBuilder               => m.IsExtension = true;
+      | m is LibraryReference.MethodInfo => m.IsExtension = true;
+      | m is BuiltinMethod               => m.IsExtension = true;
+      | _ => ();
+      }
     }
 
     /**
@@ -1378,7 +1386,7 @@
       }
     }
     
-    private abstract class ExternalMemberInfo : MemberInfo
+    internal abstract class ExternalMemberInfo : MemberInfo
     {
       protected library : LibraryReference;      
       
@@ -1814,7 +1822,7 @@
     }
     
     [ManagerAccess (library.Manager)]
-    class MethodInfo : ExternalMemberInfo, IMethod
+    internal class MethodInfo : ExternalMemberInfo, IMethod
     {
       protected handle : SR.MethodBase;
       protected id : int;
@@ -1931,6 +1939,13 @@
         get { is_var_args }
       }
 
+      public IsExtension : bool
+      {
+        mutable is_extension : bool;
+        public   get { is_extension }
+        internal set { is_extension = value }
+      }
+
       public GetMethodBase () : SR.MethodBase
       {
         handle

Modified: nemerle/trunk/ncc/hierarchy/BuiltinMethod.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/BuiltinMethod.n	(original)
+++ nemerle/trunk/ncc/hierarchy/BuiltinMethod.n	Fri Dec 22 06:05:37 2006
@@ -159,6 +159,13 @@
       get { false }
     }
     
+    public IsExtension : bool
+    {
+      mutable is_extension : bool;
+      public   get { is_extension }
+      internal set { is_extension = value }
+    }
+
     public DeclaringType : TypeInfo
     {
       get { declaring }

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Fri Dec 22 06:05:37 2006
@@ -687,6 +687,13 @@
 
   internal mutable overridden_method : IMethod;
 
+  public IsExtension : bool
+  {
+    mutable is_extension : bool;
+    public   get { is_extension }
+    internal set { is_extension = value }
+  }
+
   [Accessor (flags = Override)]
   protected mutable body_location : Location;
   

Modified: nemerle/trunk/ncc/hierarchy/TypeInfo.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeInfo.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeInfo.n	Fri Dec 22 06:05:37 2006
@@ -122,6 +122,7 @@
   GetConstructorInfo () : System.Reflection.ConstructorInfo;
   IsVarArgs : bool { get; }
   IsFinal : bool { get; }  
+  IsExtension : bool { get; }
   BuiltinKind : BuiltinMethodKind { get; }
   new GetMemType () : MType.Fun;
 

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/MethodTipInfo.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/MethodTipInfo.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/MethodTipInfo.n	Fri Dec 22 06:05:37 2006
@@ -127,11 +127,15 @@
 
     public GetParameterCount(index : int) : int
     {
-      _methods[index].GetParameters().Length
+      def len = _methods[index].GetParameters().Length;
+
+      if (len > 0 && _methods[index].IsExtension) len - 1 else len;
     }
 
-    public GetParameterInfo(index : int, parameter : int) : string * string * string
+    public GetParameterInfo(index : int, mutable parameter : int) : string * string * string
     {
+      when (_methods[index].IsExtension) parameter++;
+
       def member      = _methods[index];
       def parm        = member.GetParameters().Nth(parameter);
       def xml         = XmlDocReader.GetInfo(member, member.Location);



More information about the svn mailing list