[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