[svn] r6601: vs-plugin/trunk:
Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/Engine-main.n
Nemerle.VsIn...
VladD2
svnadmin at nemerle.org
Sat Sep 2 21:13:01 CEST 2006
Log:
Fix errors.
Author: VladD2
Date: Sat Sep 2 21:12:54 2006
New Revision: 6601
Modified:
vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/Engine-main.n
vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs
vs-plugin/trunk/Nemerle.VsIntegration/NemerleSource.cs
vs-plugin/trunk/Nemerle.VsIntegration/Parsing/NemerleAuthoringScope.cs
Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/Engine-main.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/Engine-main.n (original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/Engine/Engine-main.n Sat Sep 2 21:12:54 2006
@@ -22,6 +22,8 @@
/// Make typed tree and constryct compile unit collection.
public GetProject () : Project
{
+ ClearRelocationMaps();
+ ClearCompilerMessages();
Instance = this;
Init ();
@@ -127,6 +129,11 @@
Project(this, CompileUnitCollection(this, _fileInfos), nsTree)
}
+ protected ClearRelocationMaps() : void
+ {
+ Array.Clear(RelocationMaps, 0, RelocationMaps.Length);
+ }
+
public RunCompletionEngine (
[NotNull] observedMethod : MethodBuilder,
[NotNull] content : string,
@@ -134,6 +141,7 @@
) : CompletionResult
requires completionPosition <= content.Length
{
+ ClearCompilerMessages();
// Tell the methods we are in completion mode
_isInCompletionMode = true;
@@ -180,6 +188,7 @@
location : Location)
: (FunBody.Parsed * FunBody.Typed * Exception)
{
+ ClearCompilerMessages();
_isInCompletionMode = true;
mutable pBody : FunBody.Parsed = null;
Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs (original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/NemerleLanguage.cs Sat Sep 2 21:12:54 2006
@@ -164,7 +164,10 @@
Trace.Assert(false, ex.ToString());
Trace.WriteLine(ex);
}
- return new NemerleAuthoringScope((NemerleAuthoringSink)request.Sink);
+
+ return new NemerleAuthoringScope(
+ ProjectInfo.FindProject(request.FileName), (NemerleAuthoringSink)request.Sink);
+
case ParseReason.DisplayMemberList:
break;
case ParseReason.Goto:
@@ -195,9 +198,8 @@
return source.ScopeCreator(request);
}
- //NemerleSink sink = new NemerleSink(req.Sink);
- //return new NemerleScope(modules.AnalyzeModule(sink, req.FileName, req.Text), this);
- return new NemerleAuthoringScope((NemerleAuthoringSink)request.Sink);
+ return new NemerleAuthoringScope(
+ ProjectInfo.FindProject(request.FileName), (NemerleAuthoringSink)request.Sink);
}
AuthoringScope GetRequestedScope(ParseRequest request)
@@ -223,8 +225,9 @@
projectInfo.UpdateFile(request);
return new NemerleAuthoringScope(
+ projectInfo,
(NemerleAuthoringSink)request.Sink,
- projectInfo, request.FileName,
+ request.FileName,
delegate(int lineStart, int colStart, int lineEnd, int colEnd)
{
return GetCodeRegion(request, lineStart - 1, colStart - 1, lineEnd - 1, colEnd - 1);
@@ -260,11 +263,13 @@
foreach (object overload in overloads)
Trace.WriteLine("# " + overload);
- return new NemerleAuthoringScope((NemerleAuthoringSink)request.Sink, overloads);
+ ProjectInfo projectInfo = ProjectInfo.FindProject(request.FileName);
+ return new NemerleAuthoringScope(projectInfo, (NemerleAuthoringSink)request.Sink, overloads);
}
Trace.WriteLine("### RunCompletionEngine() return empty list!");
- return new NemerleAuthoringScope((NemerleAuthoringSink)request.Sink);
+ return new NemerleAuthoringScope(
+ ProjectInfo.FindProject(request.FileName), (NemerleAuthoringSink)request.Sink);
}
string GetCodeRegion(ParseRequest request, int startLine, int startCol,
Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleSource.cs
==============================================================================
Modified: vs-plugin/trunk/Nemerle.VsIntegration/Parsing/NemerleAuthoringScope.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/Parsing/NemerleAuthoringScope.cs (original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/Parsing/NemerleAuthoringScope.cs Sat Sep 2 21:12:54 2006
@@ -13,55 +13,56 @@
{
class NemerleAuthoringScope : AuthoringScope
{
- public NemerleAuthoringScope(NemerleAuthoringSink sink, CompletionElem[] overloadPossibility)
+ #region ctors
+
+ public NemerleAuthoringScope(
+ ProjectInfo project,
+ NemerleAuthoringSink sink,
+ CompletionElem[] overloadPossibility)
{
+ _project = project;
_sink = sink;
_overloadPossibility = overloadPossibility;
}
public NemerleAuthoringScope(
- NemerleAuthoringSink sink,
ProjectInfo project,
+ NemerleAuthoringSink sink,
string filePath,
GetText getText
- ) : this(sink)
+ )
+ : this(project, sink)
{
- _project = project;
_filePath = filePath;
_getText = getText;
}
- public NemerleAuthoringScope(NemerleAuthoringSink sink)
+ public NemerleAuthoringScope(ProjectInfo project, NemerleAuthoringSink sink)
{
+ _project = project;
_sink = sink;
_overloadPossibility = new CompletionElem[0];
}
+ #endregion
+
+ #region fields
+
private NemerleAuthoringSink _sink;
private CompletionElem[] _overloadPossibility;
private ProjectInfo _project;
private string _filePath;
private GetText _getText;
+ #endregion
+
public override string GetDataTipText(int line, int col, out TextSpan span)
{
span = new TextSpan();
QuickTipInfo info = _project.GetQuickTip(_filePath, line, col, _getText);
- CompilerMessage[] errors = _project.Project.Engine.CompilerMessages;
-
- TaskProvider prov = _sink.Source.GetTaskProvider();
- foreach (CompilerMessage error in errors)
- {
- Task task = new Task();
- task.Line = error.Location.Line;
- task.Column = error.Location.Column;
- task.Document = _filePath;
- task.CanDelete = true;
- task.Text = error.Message;
- prov.Tasks.Add(task);
- }
+ ShowCompilerMessages();
if (info == null)
return null;
@@ -77,6 +78,7 @@
public override Declarations GetDeclarations(IVsTextView view,
int line, int col, TokenInfo info, ParseReason reason)
{
+ ShowCompilerMessages();
//throw new Exception("The method or operation is not implemented.");
return new NemerleDeclarations(_overloadPossibility);
}
@@ -93,5 +95,34 @@
return "123";
//throw new Exception("The method or operation is not implemented.");
}
+
+ private void ShowCompilerMessages()
+ {
+ CompilerMessage[] errors = _project.Project.Engine.CompilerMessages;
+
+ TaskProvider taskProvider = _sink.Source.GetTaskProvider();
+
+ taskProvider.SuspendRefresh(); // batch updates.
+
+ try
+ {
+ taskProvider.Tasks.Clear();
+
+ foreach (CompilerMessage error in errors)
+ {
+ Task task = new Task();
+ task.Line = error.Location.Line;
+ task.Column = error.Location.Column;
+ task.Document = _filePath;
+ task.CanDelete = true;
+ task.Text = error.Message;
+ taskProvider.Tasks.Add(task);
+ }
+ }
+ finally
+ {
+ taskProvider.ResumeRefresh(); // batch updates.
+ }
+ }
}
}
More information about the svn
mailing list