[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