[svn] r6382: nemerle/trunk/ncc: completion/CodeCompletionEngine.n
testsuite/completion-playground/compl3.n...
trupill
svnadmin at nemerle.org
Thu Jun 8 18:48:18 CEST 2006
Log:
Return the type of the expression with Completion results. Changed
testcase to show this new feature.
Author: trupill
Date: Thu Jun 8 18:48:14 2006
New Revision: 6382
Modified:
nemerle/trunk/ncc/completion/CodeCompletionEngine.n
nemerle/trunk/ncc/testsuite/completion-playground/compl3.n
nemerle/trunk/ncc/typing/Typer.n
Modified: nemerle/trunk/ncc/completion/CodeCompletionEngine.n
==============================================================================
--- nemerle/trunk/ncc/completion/CodeCompletionEngine.n (original)
+++ nemerle/trunk/ncc/completion/CodeCompletionEngine.n Thu Jun 8 18:48:14 2006
@@ -330,7 +330,7 @@
}
}
- public RunCompletionEngine (member : IMember, contents : string) : array[OverloadPossibility]
+ public RunCompletionEngine (member : IMember, contents : string) : CompletionResult
{
// Tell the methods we are in completion mode
is_completion = true;
@@ -351,15 +351,12 @@
}
catch
{
- | e is CompletionResult => completionList = e.Overloads;
+ | e is CompletionResult => completionList = e;
| e => System.Console.WriteLine (e.Message);
}
}
- if (completionList == null)
- array (0)
- else
- completionList.ToArray ()
+ completionList
}
mutable listMessages : list[CompilerMessage];
Modified: nemerle/trunk/ncc/testsuite/completion-playground/compl3.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/completion-playground/compl3.n (original)
+++ nemerle/trunk/ncc/testsuite/completion-playground/compl3.n Thu Jun 8 18:48:14 2006
@@ -83,15 +83,16 @@
try
{
WriteLine ($"\nTrying to complete: '$body'");
- def overloads = engine.RunCompletionEngine (completionMember, body);
+ def completionResult = engine.RunCompletionEngine (completionMember, body);
- if (overloads == null)
- WriteLine ("No member found!!!");
+ if (completionResult == null)
+ WriteLine (" No member found!!!");
else
{
+ WriteLine (" Type of the member: " + Engine.GetNameFromType (completionResult.ObjectType));
WriteLine (" Member found:");
- foreach (overl in overloads)
+ foreach (overl in completionResult.Overloads)
WriteLine ($" $(overl.Member.Name) ==> $overl"
" $(overl.Member.Attributes)");
@@ -111,11 +112,12 @@
// Work fine:
try_completion ("NArray.M");
+try_completion ("def a = \"a\"; a.");
+try_completion ("int.");
//try_completion ("Fo");
//try_completion ("System.");
//try_completion ("System.Reflection.");
//try_completion ("this.Fo");
-//try_completion ("def a = \"a\"; a.L");
//try_completion ("string.For");
//try_completion ("string.");
//try_completion ("Q");
Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n (original)
+++ nemerle/trunk/ncc/typing/Typer.n Thu Jun 8 18:48:14 2006
@@ -43,11 +43,13 @@
namespace Nemerle.Compiler
{
- [Record]
+ [Record (Include = [Overloads, NamePrefix])]
public class CompletionResult : System.Exception
{
public Overloads : list [OverloadPossibility];
public NamePrefix : string;
+ [Accessor (flags = WantSetter)]
+ mutable object_type : MType;
}
/** A class responsible for typing a single (global or local) function. */
@@ -1353,15 +1355,16 @@
else
TypeNameFull (expression, expected, for_completion = true);
+ def tobj = TypeExpr (obj);
def member_overloads =
- match (TypeMember (TypeExpr (obj), name, expected,
+ match (TypeMember (tobj, name, expected,
for_completion = true)) {
| Some (lst)
| None with lst = [] => lst
}
-
- throw CompletionResult (member_overloads + name_overloads, name.Id)
-
+ def compl_exc = CompletionResult (member_overloads + name_overloads, name.Id);
+ compl_exc.ObjectType = tobj.Type.Fix();
+ throw compl_exc
| PT.PExpr.ToComplete (name) =>
// FIXME: check locals first
More information about the svn
mailing list