From b89b1c599f347a62a9ba098b7209e20c6fc92959 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 11 Feb 2006 18:29:50 +0000 Subject: [PATCH] Fixed bug: "Run Tests in Debugger" / "Run with NCover" / etc fail with warnings. Fixed code-completion in anonymous methods when anonymous method was used as initializer in variable declaration. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1120 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Misc/UnitTesting/Src/RunTestCommands.cs | 11 ++++---- .../Src/Parser/Visitors/LookupTableVisitor.cs | 2 +- .../Project/Src/Commands/BuildCommands.cs | 26 ++++++++++++++----- .../Base/Project/Src/Project/MSBuildEngine.cs | 11 ++++++-- 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs b/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs index b03fb66e65..2e03deeb43 100644 --- a/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs +++ b/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs @@ -14,6 +14,7 @@ using ICSharpCode.Core; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Project.Commands; namespace ICSharpCode.UnitTesting { @@ -31,13 +32,13 @@ namespace ICSharpCode.UnitTesting if (project == null) { throw new ArgumentNullException("project"); } - MSBuildEngineCallback callback = delegate(System.CodeDom.Compiler.CompilerResults results) { - if (results.Errors.Count > 0) { - return; + BuildProject build = new BuildProject(project); + build.BuildComplete += delegate { + if (MSBuildEngine.LastErrorCount == 0) { + RunTests(project, fixture, test); } - RunTests(project, fixture, test); }; - project.Build(callback); + build.Run(); } protected abstract void RunTests(IProject project, IClass fixture, IMember test); diff --git a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs index 76715af2bd..e3b4414f77 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs @@ -115,7 +115,7 @@ namespace ICSharpCode.NRefactory.Parser (blockStack.Count == 0) ? new Point(-1, -1) : blockStack.Peek().EndLocation, (localVariableDeclaration.Modifier & Modifier.Const) == Modifier.Const); } - return data; + return base.Visit(localVariableDeclaration, data); } public override object Visit(AnonymousMethodExpression anonymousMethodExpression, object data) diff --git a/src/Main/Base/Project/Src/Commands/BuildCommands.cs b/src/Main/Base/Project/Src/Commands/BuildCommands.cs index dd39f3cd8f..2abb09ffd9 100644 --- a/src/Main/Base/Project/Src/Commands/BuildCommands.cs +++ b/src/Main/Base/Project/Src/Commands/BuildCommands.cs @@ -96,18 +96,32 @@ namespace ICSharpCode.SharpDevelop.Project.Commands public abstract class AbstractProjectBuildMenuCommand : AbstractBuildMenuCommand { + protected IProject targetProject; + protected IProject ProjectToBuild { + get { + return targetProject ?? ProjectService.CurrentProject; + } + } + public override bool CanRunBuild { get { - return base.CanRunBuild - && ProjectService.CurrentProject!=null; + return base.CanRunBuild && this.ProjectToBuild != null; } } } public class BuildProject : AbstractProjectBuildMenuCommand { + public BuildProject() + { + } + public BuildProject(IProject targetProject) + { + this.targetProject = targetProject; + } + public override void StartBuild() { - ProjectService.CurrentProject.Build(CallbackMethod); + this.ProjectToBuild.Build(CallbackMethod); } public override void AfterBuild() @@ -120,7 +134,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands { public override void StartBuild() { - ProjectService.CurrentProject.Rebuild(CallbackMethod); + this.ProjectToBuild.Rebuild(CallbackMethod); } } @@ -128,7 +142,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands { public override void StartBuild() { - ProjectService.CurrentProject.Clean(CallbackMethod); + this.ProjectToBuild.Clean(CallbackMethod); } } @@ -136,7 +150,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands { public override void StartBuild() { - ProjectService.CurrentProject.Publish(CallbackMethod); + this.ProjectToBuild.Publish(CallbackMethod); } } diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs index c4f08a4699..a45bf18c3c 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs @@ -149,6 +149,7 @@ namespace ICSharpCode.SharpDevelop.Project { if (isRunning) { CompilerResults results = new CompilerResults(null); + results.NativeCompilerReturnValue = -42; results.Errors.Add(new CompilerError(null, 0, 0, null, "MSBuild is already running!")); callback(results); } else { @@ -161,7 +162,7 @@ namespace ICSharpCode.SharpDevelop.Project class ThreadStarter { - CompilerResults results = new CompilerResults(null); + CompilerResults results; string buildFile; string[] targets; MSBuildEngine engine; @@ -169,6 +170,8 @@ namespace ICSharpCode.SharpDevelop.Project public ThreadStarter(string buildFile, string[] targets, MSBuildEngine engine, MSBuildEngineCallback callback) { + results = new CompilerResults(null); + results.NativeCompilerReturnValue = -1; this.buildFile = buildFile; this.targets = targets; this.engine = engine; @@ -200,8 +203,12 @@ namespace ICSharpCode.SharpDevelop.Project Microsoft.Build.BuildEngine.Project project = engine.CreateNewProject(); try { project.Load(buildFile); - engine.BuildProject(project, targets); + if (engine.BuildProject(project, targets)) + results.NativeCompilerReturnValue = 0; + else + results.NativeCompilerReturnValue = 1; } catch (InvalidProjectFileException ex) { + results.NativeCompilerReturnValue = -2; results.Errors.Add(new CompilerError(ex.ProjectFile, ex.LineNumber, ex.ColumnNumber, ex.ErrorCode, ex.Message)); }