[svn]
r7196: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel:
MethodTipInfo.n Project...
IT
svnadmin at nemerle.org
Wed Jan 3 00:23:15 CET 2007
Log:
1. Fixed MethodTipInfo for extended methods called by its static class.
2. Fixed the navigation through method parameters.
3. Added MethodTipInfo for constructors.
Author: IT
Date: Wed Jan 3 00:23:11 2007
New Revision: 7196
Modified:
vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/MethodTipInfo.n
vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n
vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/QuickTipInfo.n
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 Wed Jan 3 00:23:11 2007
@@ -9,15 +9,15 @@
{
public class MethodTipInfo
{
- public this([NotNull] methods : List[IMethod], tokens : list[Token])
+ public this([NotNull] overloads : List[OverloadPossibility], tokens : list[Token])
{
- _methods = methods;
+ _overloads = overloads;
_tokens = tokens;
- _methods.Sort((x, y) =>
+ _overloads.Sort((x, y) =>
{
- def xparms = x.GetParameters();
- def yparms = y.GetParameters();
+ def xparms = (x.Member :> IMethod).GetParameters();
+ def yparms = (y.Member :> IMethod).GetParameters();
xparms.Length - yparms.Length;
});
@@ -25,7 +25,7 @@
Init();
}
- _methods : List[IMethod];
+ _overloads : List[OverloadPossibility];
_tokens : list[Token];
[Accessor] mutable _startName : Location;
@@ -66,6 +66,8 @@
lg.Location.EndLine, lg.Location.EndColumn,
lg.Location.EndLine, lg.Location.EndColumn + 1));
+ findComma(lg.Next);
+
()
| _ => ()
}
@@ -95,7 +97,7 @@
{
// TODO: This works incorrectly and should be redone.
//
- _defaultMethod = _methods.FindIndex(m => m.GetParameters().Length == _nextParameters.Count + 1);
+ _defaultMethod = _overloads.FindIndex(o => (o.Member :> IMethod).GetParameters().Length == _nextParameters.Count + 1);
when (_defaultMethod < 0)
_defaultMethod = 0;
@@ -109,12 +111,12 @@
public GetCount() : int
{
- _methods.Count
+ _overloads.Count
}
public GetDescription(index : int) : string
{
- def member = _methods[index];
+ def member = _overloads[index].Member;
def xml = XmlDocReader.GetInfo(member, member.Location);
if (xml != null) xml.Summary else "";
@@ -122,23 +124,26 @@
public GetType(index : int) : string
{
- _methods[index].ReturnType.ToString()
+ (_overloads[index].Member :> IMethod).ReturnType.ToString()
}
public GetParameterCount(index : int) : int
{
- def len = _methods[index].GetParameters().Length;
+ def overload = _overloads[index];
+ def method = overload.Member :> IMethod;
+ def len = method.GetParameters().Length;
- if (len > 0 && _methods[index].IsExtension) len - 1 else len;
+ if (len > 0 && IsExtension(overload)) len - 1 else len;
}
public GetParameterInfo(index : int, mutable parameter : int) : string * string * string
{
- when (_methods[index].IsExtension) parameter++;
+ def method = _overloads[index].Member :> IMethod;
- def member = _methods[index];
- def parm = member.GetParameters().Nth(parameter);
- def xml = XmlDocReader.GetInfo(member, member.Location);
+ when (IsExtension(_overloads[index])) parameter++;
+
+ def parm = method.GetParameters().Nth(parameter);
+ def xml = XmlDocReader.GetInfo(method, method.Location);
def description = if (xml != null)
{
match (xml.Params.Find((name, _) => name == parm.name))
@@ -155,7 +160,30 @@
public GetName(index : int) : string
{
- _methods[index].Name;
+ def method = _overloads[index].Member :> IMethod;
+
+ match (method.GetFunKind())
+ {
+ | Constructor => method.DeclaringType.Name;
+ | _ => method.Name;
+ }
+ }
+
+ IsExtension(overload : OverloadPossibility) : bool
+ {
+ match (overload.ExtensionMethodObject)
+ {
+ | Error
+ | null => false
+ | _ =>
+
+ match (overload.Member)
+ {
+ | m is IMethod => m.IsExtension
+ | _ => false
+ }
+
+ }
}
}
}
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 Wed Jan 3 00:23:11 2007
@@ -383,22 +383,19 @@
def timer = Stopwatch.StartNew();
def bodyCode = source.GetRegion(loc.Line, loc.Column, loc.EndLine, loc.EndColumn);
def tokens = TokenFinder().Find(method.BodyTokens, line, col);
+
Trace.WriteLine($"Comlete took $(timer.Elapsed)");
match (tokens.Find(t => t is Token.RoundGroup))
{
| Some(group) =>
- //VladD2: ß ïåðåâåë êîìïëåéøîí ýíæèí íà ïîäåðæêó êîîðäèíàò â ñòèëå (ñòðîêà, ñèìâîë).
- //VladD2: Íå òåñòèòðîâàë. Íàäî ïðîâåðèòü, ÷òî ÿ íè÷åãî íå ïîëîìàë!
- //def completionCode = source.GetRegion(loc.Line, loc.Column, group.Location.Line, group.Location.Column);
- //def code = completionCode.TrimEnd(' ', '\t', '\r', '\n');
- def result = _engine.RunCompletionEngine(method, bodyCode,
- loc, group.Location.Line, group.Location.Column);
+ def result = _engine.RunCompletionEngine(
+ method, bodyCode, loc, group.Location.Line, group.Location.Column);
if (result != null)
{
- def members = List();
+ def overloads = List();
mutable l = int.MaxValue;
@@ -415,10 +412,10 @@
when (l > m.Name.Length)
{
l = m.Name.Length;
- members.Clear();
+ overloads.Clear();
}
- members.Add(m);
+ overloads.Add(overload);
| _ => ()
}
@@ -427,9 +424,9 @@
| _ => ()
}
- if (members.Count > 0)
+ if (overloads.Count > 0)
{
- def tip = MethodTipInfo(members, tokens);
+ def tip = MethodTipInfo(overloads, tokens);
if (tip.HasTip) (tip) else (null)
}
else
Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/QuickTipInfo.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/QuickTipInfo.n (original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/QuickTipInfo.n Wed Jan 3 00:23:11 2007
@@ -10,7 +10,6 @@
namespace Nemerle.Completion2
{
- //[Record]
public class QuickTipInfo
{
[Accessor(flags = WantSetter)] mutable _text : string;
More information about the svn
mailing list