Browse Source

Some fixes suggested by FxCop.

Fixed using the "Suppress message" command on constructors.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2702 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
9c78cdcfc5
  1. 54
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs
  2. 30
      src/AddIns/Misc/CodeAnalysis/Src/FxCopLogger.cs
  3. 7
      src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/MemberEqualityComparer.cs
  4. 2
      src/Libraries/ICSharpCode.Build.Tasks/Project/FxCop.cs
  5. 1
      src/Main/Base/Project/Src/Project/BuildEngine.cs
  6. 10
      src/Main/Base/Project/Src/Project/MSBuildEngine.cs
  7. 52
      src/Main/Base/Test/GetElementByReflectionNameTests.cs
  8. 1
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  9. 2
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/BuildJob.cs
  10. 1
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Configuration/AssemblyInfo.cs
  11. 1
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/EventSource.cs
  12. 3
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/ICSharpCode.SharpDevelop.BuildWorker.csproj
  13. 14
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/HostProcess.cs
  14. 5
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketSender.cs
  15. 13
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/WorkerProcess.cs
  16. 12
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs
  17. 3
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/WorkerManager.cs
  18. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/ICSharpCode.SharpDevelop.Dom.csproj
  19. 7
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs
  20. 54
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs
  21. 21
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/FilePosition.cs
  22. 34
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/FusionNative.cs
  23. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/CombinedReturnType.cs
  24. 11
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultClass.cs
  25. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultMethod.cs
  26. 40
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/Region.cs
  27. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs
  28. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionMethod.cs
  29. 139
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/ExpressionFinder.cs
  30. 67
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs

54
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs

@ -120,7 +120,7 @@ namespace Grunwald.BooBinding
{ {
string ret = ""; string ret = "";
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
ret += "<i>"; ret += "<i>";
} }
if (decoration.IsStatic) { if (decoration.IsStatic) {
@ -132,7 +132,7 @@ namespace Grunwald.BooBinding
} else if (decoration.IsNew) { } else if (decoration.IsNew) {
ret += "new "; ret += "new ";
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
ret += "</i>"; ret += "</i>";
} }
return ret; return ret;
@ -145,7 +145,7 @@ namespace Grunwald.BooBinding
builder.Append(ConvertAccessibility(c.Modifiers)); builder.Append(ConvertAccessibility(c.Modifiers));
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -166,7 +166,7 @@ namespace Grunwald.BooBinding
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }
@ -192,7 +192,7 @@ namespace Grunwald.BooBinding
builder.Append(' '); builder.Append(' ');
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -202,7 +202,7 @@ namespace Grunwald.BooBinding
builder.Append(c.Name); builder.Append(c.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
if (ShowTypeParameterList && c.TypeParameters.Count > 0) { if (ShowTypeParameterList && c.TypeParameters.Count > 0) {
@ -216,18 +216,18 @@ namespace Grunwald.BooBinding
if (ShowParameterList && c.ClassType == ClassType.Delegate) { if (ShowParameterList && c.ClassType == ClassType.Delegate) {
builder.Append(" ("); builder.Append(" (");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
foreach(IMethod m in c.Methods) { foreach(IMethod m in c.Methods) {
if (m.Name != "Invoke") continue; if (m.Name != "Invoke") continue;
for (int i = 0; i < m.Parameters.Count; ++i) { for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i])); builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) builder.Append(", "); if (i + 1 < m.Parameters.Count) builder.Append(", ");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
} }
builder.Append(')'); builder.Append(')');
@ -271,7 +271,7 @@ namespace Grunwald.BooBinding
builder.Append(ConvertAccessibility(field.Modifiers)); builder.Append(ConvertAccessibility(field.Modifiers));
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -287,11 +287,11 @@ namespace Grunwald.BooBinding
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -301,7 +301,7 @@ namespace Grunwald.BooBinding
builder.Append(field.Name); builder.Append(field.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -334,7 +334,7 @@ namespace Grunwald.BooBinding
} }
builder.Append("self"); builder.Append("self");
} else { } else {
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
if (UseFullyQualifiedMemberNames) { if (UseFullyQualifiedMemberNames) {
@ -342,22 +342,22 @@ namespace Grunwald.BooBinding
} else { } else {
builder.Append(property.Name); builder.Append(property.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
} }
if (ShowParameterList && property.Parameters.Count > 0) { if (ShowParameterList && property.Parameters.Count > 0) {
builder.Append('['); builder.Append('[');
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
for (int i = 0; i < property.Parameters.Count; ++i) { for (int i = 0; i < property.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(property.Parameters[i])); builder.Append(Convert(property.Parameters[i]));
if (i + 1 < property.Parameters.Count) { if (i + 1 < property.Parameters.Count) {
builder.Append(", "); builder.Append(", ");
} }
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
builder.Append(']'); builder.Append(']');
@ -396,7 +396,7 @@ namespace Grunwald.BooBinding
builder.Append("event "); builder.Append("event ");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -406,7 +406,7 @@ namespace Grunwald.BooBinding
builder.Append(e.Name); builder.Append(e.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -435,7 +435,7 @@ namespace Grunwald.BooBinding
builder.Append("def "); builder.Append("def ");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -449,7 +449,7 @@ namespace Grunwald.BooBinding
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -464,15 +464,15 @@ namespace Grunwald.BooBinding
if (ShowParameterList) { if (ShowParameterList) {
builder.Append("("); builder.Append("(");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
for (int i = 0; i < m.Parameters.Count; ++i) { for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i])); builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) { if (i + 1 < m.Parameters.Count) {
builder.Append(", "); builder.Append(", ");
} }
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
builder.Append(')'); builder.Append(')');
@ -539,7 +539,7 @@ namespace Grunwald.BooBinding
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -551,7 +551,7 @@ namespace Grunwald.BooBinding
builder.Append("*"); builder.Append("*");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }

30
src/AddIns/Misc/CodeAnalysis/Src/FxCopLogger.cs

@ -31,23 +31,8 @@ namespace ICSharpCode.CodeAnalysis
this.engineWorker = engineWorker; this.engineWorker = engineWorker;
} }
public LoggerVerbosity Verbosity { public LoggerVerbosity Verbosity { get; set; }
get { public string Parameters { get; set; }
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string Parameters {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
IEventSource eventSource; IEventSource eventSource;
@ -84,10 +69,19 @@ namespace ICSharpCode.CodeAnalysis
string message, bool isWarning, string message, bool isWarning,
string category, string checkId, string subcategory) string category, string checkId, string subcategory)
{ {
LoggingService.Debug("Got " + (isWarning ? "warning" : "error") + ":\n"
+ " file: " + file + "\n"
+ " line: " + lineNumber + ", col: " + columnNumber + "\n"
+ " message: " + message + "\n"
+ " category: " + category + "\n"
+ " checkId: " + checkId + "\n"
+ " subcategory: " + subcategory);
string[] moreData = (subcategory ?? "").Split('|'); string[] moreData = (subcategory ?? "").Split('|');
BuildError err = engineWorker.CurrentErrorOrWarning; BuildError err = engineWorker.CurrentErrorOrWarning;
if (FileUtility.IsValidPath(file) && if (FileUtility.IsValidPath(file) &&
Path.GetFileName(file) == "SharpDevelop.CodeAnalysis.targets") { Path.GetFileName(file) == "SharpDevelop.CodeAnalysis.targets")
{
err.FileName = null; err.FileName = null;
} }
IProject project = ProjectService.GetProject(engineWorker.CurrentProjectFile); IProject project = ProjectService.GetProject(engineWorker.CurrentProjectFile);

7
src/AddIns/Misc/ResourceToolkit/Project/Src/Resolver/MemberEqualityComparer.cs

@ -22,7 +22,7 @@ namespace Hornung.ResourceToolkit.Resolver
if (x == null || y == null) { if (x == null || y == null) {
return false; return false;
} }
if (x.Region.CompareTo(y.Region) != 0) { if (x.Region != y.Region) {
return false; return false;
} }
IComparer<string> nameComparer; IComparer<string> nameComparer;
@ -41,10 +41,7 @@ namespace Hornung.ResourceToolkit.Resolver
if (obj == null) { if (obj == null) {
return 0; return 0;
} }
return obj.Region.BeginLine ^ return obj.Region.GetHashCode() ^
obj.Region.BeginColumn ^
obj.Region.EndLine ^
obj.Region.EndColumn ^
obj.FullyQualifiedName.GetHashCode(); obj.FullyQualifiedName.GetHashCode();
} }
} }

2
src/Libraries/ICSharpCode.Build.Tasks/Project/FxCop.cs

@ -166,6 +166,8 @@ namespace ICSharpCode.Build.Tasks
if (parent.Name == "Member" || parent.Name == "Type" || parent.Name == "Namespace") { if (parent.Name == "Member" || parent.Name == "Type" || parent.Name == "Namespace") {
if (memberName == null) if (memberName == null)
memberName = ((XmlElement)parent).GetAttribute("Name"); memberName = ((XmlElement)parent).GetAttribute("Name");
else if (memberName.StartsWith(".ctor") || memberName.StartsWith(".cctor"))
memberName = ((XmlElement)parent).GetAttribute("Name") + ".#" + memberName.Substring(1);
else else
memberName = ((XmlElement)parent).GetAttribute("Name") + "." + memberName; memberName = ((XmlElement)parent).GetAttribute("Name") + "." + memberName;
} }

1
src/Main/Base/Project/Src/Project/BuildEngine.cs

@ -437,7 +437,6 @@ namespace ICSharpCode.SharpDevelop.Project
void ReportMessage(BuildNode source, string message) void ReportMessage(BuildNode source, string message)
{ {
Console.WriteLine(source.project.Name + " reports " + message);
bool hasOutputLock; bool hasOutputLock;
lock (this) { lock (this) {
if (nodeWithOutputLock == null) { if (nodeWithOutputLock == null) {

10
src/Main/Base/Project/Src/Project/MSBuildEngine.cs

@ -165,9 +165,7 @@ namespace ICSharpCode.SharpDevelop.Project
SharpDevelopLogger logger = new SharpDevelopLogger(this); SharpDevelopLogger logger = new SharpDevelopLogger(this);
settings.Logger.Add(logger); settings.Logger.Add(logger);
foreach (string compileTaskName in MSBuildEngine.CompileTaskNames) { MSBuildEngine.CompileTaskNames.Foreach(InterestingTasks.Add);
InterestingTasks.Add(compileTaskName);
}
foreach (IMSBuildAdditionalLogger loggerProvider in MSBuildEngine.AdditionalMSBuildLoggers) { foreach (IMSBuildAdditionalLogger loggerProvider in MSBuildEngine.AdditionalMSBuildLoggers) {
settings.Logger.Add(loggerProvider.CreateLogger(this)); settings.Logger.Add(loggerProvider.CreateLogger(this));
} }
@ -190,12 +188,10 @@ namespace ICSharpCode.SharpDevelop.Project
if (!(ReportAllTaskStartedEvents && ReportAllTaskFinishedEvents)) { if (!(ReportAllTaskStartedEvents && ReportAllTaskFinishedEvents)) {
// just some TaskStarted & TaskFinished events should be reported // just some TaskStarted & TaskFinished events should be reported
foreach (string taskName in InterestingTasks) { InterestingTasks.Foreach(job.InterestingTaskNames.Add);
job.InterestingTaskNames.Add(taskName);
}
} }
job.AdditionalImports.AddRange(additionalTargetFiles); additionalTargetFiles.Foreach(job.AdditionalImports.Add);
BuildPropertyGroup pg = new BuildPropertyGroup(); BuildPropertyGroup pg = new BuildPropertyGroup();
MSBuildBasedProject.InitializeMSBuildProjectProperties(pg); MSBuildBasedProject.InitializeMSBuildProjectProperties(pg);

52
src/Main/Base/Test/GetElementByReflectionNameTests.cs

@ -0,0 +1,52 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <author name="Daniel Grunwald"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Reflection;
using NUnit.Framework;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Tests
{
[TestFixture]
public class GetElementByReflectionNameTests
{
IProjectContent mscorlib = ParserService.DefaultProjectContentRegistry.Mscorlib;
void TestClass(Type type)
{
Assert.AreSame(typeof(object).Assembly, type.Assembly);
IClass c = (IClass)mscorlib.GetElement(type.FullName);
Assert.AreEqual(type.FullName, c.DotNetName);
}
[Test]
public void TestClasses()
{
TestClass(typeof(object));
TestClass(typeof(Environment.SpecialFolder));
TestClass(typeof(Nullable));
TestClass(typeof(Nullable<>));
}
void TestMember(string fullName)
{
AbstractMember d = (AbstractMember)mscorlib.GetElement(fullName);
Assert.AreEqual(fullName, d.DocumentationTag.Substring(2));
}
[Test]
public void TestConstructor()
{
TestMember("System.Collections.ObjectModel.KeyedCollection`2.#ctor");
TestMember("System.Collections.ObjectModel.KeyedCollection`2.#ctor(System.Collections.Generic.IEqualityComparer{`0},System.Int32)");
TestMember("System.Runtime.InteropServices.CurrencyWrapper.#ctor(System.Decimal)");
TestMember("System.Runtime.InteropServices.CurrencyWrapper.#ctor(System.Object)");
}
}
}

1
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -56,6 +56,7 @@
<Compile Include="CSharpExpressionFinderTests.cs" /> <Compile Include="CSharpExpressionFinderTests.cs" />
<Compile Include="ExceptionClassOverridesTestFixture.cs" /> <Compile Include="ExceptionClassOverridesTestFixture.cs" />
<Compile Include="GenerateOverrideMethodTests.cs" /> <Compile Include="GenerateOverrideMethodTests.cs" />
<Compile Include="GetElementByReflectionNameTests.cs" />
<Compile Include="NRefactoryResolverTests.cs" /> <Compile Include="NRefactoryResolverTests.cs" />
<Compile Include="CollectionClassOverridesTestFixture.cs" /> <Compile Include="CollectionClassOverridesTestFixture.cs" />
<Compile Include="OverridableMethodsTestFixture.cs" /> <Compile Include="OverridableMethodsTestFixture.cs" />

2
src/Main/ICSharpCode.SharpDevelop.BuildWorker/BuildJob.cs

@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
List<string> additionalImports = new List<string>(); List<string> additionalImports = new List<string>();
public List<string> AdditionalImports { public IList<string> AdditionalImports {
get { return additionalImports; } get { return additionalImports; }
} }

1
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Configuration/AssemblyInfo.cs

@ -14,3 +14,4 @@ using System.Runtime.CompilerServices;
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: CLSCompliant(true)]

1
src/Main/ICSharpCode.SharpDevelop.BuildWorker/EventSource.cs

@ -48,6 +48,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
public event AnyEventHandler AnyEventRaised; public event AnyEventHandler AnyEventRaised;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
public void RaiseEvent(BuildEventArgs e) public void RaiseEvent(BuildEventArgs e)
{ {
if (e is BuildStatusEventArgs) { if (e is BuildStatusEventArgs) {

3
src/Main/ICSharpCode.SharpDevelop.BuildWorker/ICSharpCode.SharpDevelop.BuildWorker.csproj

@ -16,6 +16,8 @@
<AssemblyOriginatorKeyFile>..\ICSharpCode.SharpDevelop.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>..\ICSharpCode.SharpDevelop.snk</AssemblyOriginatorKeyFile>
<DelaySign>False</DelaySign> <DelaySign>False</DelaySign>
<AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode> <AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode>
<RunCodeAnalysis>False</RunCodeAnalysis>
<CodeAnalysisRules>-Microsoft.Globalization#CA1303</CodeAnalysisRules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -64,6 +66,7 @@
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="WorkerManager.cs" /> <Compile Include="WorkerManager.cs" />
<None Include="app.config" /> <None Include="app.config" />
<Content Include="ICSharpCode.SharpDevelop.BuildWorker.cd" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Configuration" /> <Folder Include="Configuration" />

14
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/HostProcess.cs

@ -7,23 +7,28 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.IO;
using System.Threading;
using System.Reflection; using System.Reflection;
using System.Threading;
namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
{ {
/// <summary> /// <summary>
/// Used in the worker process to refer to the host. /// Used in the worker process to refer to the host.
/// </summary> /// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
public class HostProcess public class HostProcess
{ {
object workerObject; readonly object workerObject;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters")]
public HostProcess(object workerObject) public HostProcess(object workerObject)
{ {
if (workerObject == null)
throw new ArgumentNullException("workerObject");
this.workerObject = workerObject; this.workerObject = workerObject;
} }
@ -38,7 +43,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
public void WorkerProcessMain(string argument) public void WorkerProcessMain(string argument)
{ {
int port = int.Parse(argument); int port = int.Parse(argument, CultureInfo.InvariantCulture);
client = new TcpClient(); client = new TcpClient();
client.Connect(new IPEndPoint(IPAddress.Loopback, port)); client.Connect(new IPEndPoint(IPAddress.Loopback, port));
@ -82,6 +87,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
} }
} }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
void OnPacketReceived(object sender, PacketReceivedEventArgs e) void OnPacketReceived(object sender, PacketReceivedEventArgs e)
{ {
Program.Log("OnPacketReceived"); Program.Log("OnPacketReceived");

5
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/PacketSender.cs

@ -50,7 +50,10 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
} while (c > 0); } while (c > 0);
try { try {
targetStream.Write(buffer, 0, buffer.Length); targetStream.Write(buffer, 0, buffer.Length);
} catch (Exception ex) { } catch (IOException ex) {
ICSharpCode.SharpDevelop.BuildWorker.Program.Log(ex.ToString());
OnWriteFailed();
} catch (ObjectDisposedException ex) {
ICSharpCode.SharpDevelop.BuildWorker.Program.Log(ex.ToString()); ICSharpCode.SharpDevelop.BuildWorker.Program.Log(ex.ToString());
OnWriteFailed(); OnWriteFailed();
} }

13
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/WorkerProcess.cs

@ -9,6 +9,7 @@ using System;
using System.Diagnostics; using System.Diagnostics;
using System.Reflection; using System.Reflection;
using System.Net; using System.Net;
using System.Globalization;
using System.Net.Sockets; using System.Net.Sockets;
using System.IO; using System.IO;
using System.Runtime.Serialization.Formatters; using System.Runtime.Serialization.Formatters;
@ -21,14 +22,15 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
/// <summary> /// <summary>
/// Manages a worker process that communicates with the host using a local TCP connection. /// Manages a worker process that communicates with the host using a local TCP connection.
/// </summary> /// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
public sealed class WorkerProcess public sealed class WorkerProcess
{ {
object hostObject; readonly object hostObject;
public WorkerProcess(IHostObject hostObject) public WorkerProcess(IHostObject hostObject)
{ {
if (hostObject == null) if (hostObject == null)
throw new ArgumentException("hostObject"); throw new ArgumentNullException("hostObject");
this.hostObject = hostObject; this.hostObject = hostObject;
} }
@ -41,9 +43,12 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
public void Start(ProcessStartInfo info) public void Start(ProcessStartInfo info)
{ {
if (info == null)
throw new ArgumentNullException("info");
listener = new TcpListener(IPAddress.Loopback, 0); listener = new TcpListener(IPAddress.Loopback, 0);
listener.Start(); listener.Start();
string argument = ((IPEndPoint)listener.LocalEndpoint).Port.ToString(); string argument = ((IPEndPoint)listener.LocalEndpoint).Port.ToString(CultureInfo.InvariantCulture);
string oldArguments = info.Arguments; string oldArguments = info.Arguments;
info.Arguments += " " + argument; info.Arguments += " " + argument;
@ -217,7 +222,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
{ {
target.GetType().InvokeMember(MethodName, target.GetType().InvokeMember(MethodName,
BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance, BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance,
null, target, Arguments); null, target, Arguments, CultureInfo.InvariantCulture);
} }
} }
} }

12
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs

@ -25,6 +25,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
BuildJob currentJob; BuildJob currentJob;
bool requestCancellation; bool requestCancellation;
[STAThread]
internal static void Main(string[] args) internal static void Main(string[] args)
{ {
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(AppDomain_CurrentDomain_UnhandledException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(AppDomain_CurrentDomain_UnhandledException);
@ -65,6 +66,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
return info; return info;
} }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")]
internal static void ShowMessageBox(string text) internal static void ShowMessageBox(string text)
{ {
System.Windows.Forms.MessageBox.Show(text, "SharpDevelop Build Worker Process"); System.Windows.Forms.MessageBox.Show(text, "SharpDevelop Build Worker Process");
@ -80,6 +82,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
} }
// Called with CallMethodOnWorker // Called with CallMethodOnWorker
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void StartBuild(BuildJob job) public void StartBuild(BuildJob job)
{ {
if (job == null) if (job == null)
@ -103,6 +106,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
} }
// Called with CallMethodOnWorker // Called with CallMethodOnWorker
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void CancelBuild() public void CancelBuild()
{ {
lock (this) { lock (this) {
@ -112,6 +116,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
Engine engine; Engine engine;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
void RunThread() void RunThread()
{ {
Program.Log("In build thread"); Program.Log("In build thread");
@ -176,11 +181,6 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
logger.Shutdown(); logger.Shutdown();
} }
engine.UnregisterAllLoggers(); engine.UnregisterAllLoggers();
} catch (Exception ex) {
if (WorkerManager.ShowError != null)
WorkerManager.ShowError(ex);
else
Program.ShowMessageBox(ex.ToString());
} finally { } finally {
lock (this) { lock (this) {
currentJob = null; currentJob = null;
@ -423,8 +423,8 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
} }
#endif #endif
[Serializable] [Serializable]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1064:ExceptionsShouldBePublic")]
sealed class BuildCancelException : Exception sealed class BuildCancelException : Exception
{ {
} }

3
src/Main/ICSharpCode.SharpDevelop.BuildWorker/WorkerManager.cs

@ -216,6 +216,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
} }
// Called with CallMethodOnHost // Called with CallMethodOnHost
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void ReportEvent(BuildEventArgs e) public void ReportEvent(BuildEventArgs e)
{ {
BuildRun buildRun = currentBuildRun; BuildRun buildRun = currentBuildRun;
@ -225,6 +226,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
} }
// Called with CallMethodOnHost // Called with CallMethodOnHost
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void BuildDone(bool success) public void BuildDone(bool success)
{ {
BuildRun buildRun = Interlocked.Exchange(ref currentBuildRun, null); BuildRun buildRun = Interlocked.Exchange(ref currentBuildRun, null);
@ -238,6 +240,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
} }
} }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
public void ReportException(Exception ex) public void ReportException(Exception ex)
{ {
// shutdown worker if it produced an exception // shutdown worker if it produced an exception

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/ICSharpCode.SharpDevelop.Dom.csproj

@ -21,6 +21,8 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion> <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<RunCodeAnalysis>False</RunCodeAnalysis>
<CodeAnalysisRules>-Microsoft.Design#CA1002;-Microsoft.Design#CA1063;-Microsoft.Performance#CA1800;-Microsoft.Security#CA2104</CodeAnalysisRules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath> <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>

7
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs

@ -44,7 +44,8 @@ namespace ICSharpCode.SharpDevelop.Dom
/// Show the inheritance declaration /// Show the inheritance declaration
/// </summary> /// </summary>
ShowInheritanceList = 0x40, ShowInheritanceList = 0x40,
IncludeHTMLMarkup = 0x80,
IncludeHtmlMarkup = 0x80,
/// <summary> /// <summary>
/// Show the return type /// Show the return type
/// </summary> /// </summary>
@ -163,9 +164,9 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
public bool IncludeHTMLMarkup { public bool IncludeHtmlMarkup {
get { get {
return (conversionFlags & ConversionFlags.IncludeHTMLMarkup) == ConversionFlags.IncludeHTMLMarkup; return (conversionFlags & ConversionFlags.IncludeHtmlMarkup) == ConversionFlags.IncludeHtmlMarkup;
} }
} }

54
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs

@ -52,7 +52,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
{ {
string ret = ""; string ret = "";
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
ret += "<i>"; ret += "<i>";
} }
@ -68,7 +68,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
ret += "new "; ret += "new ";
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
ret += "</i>"; ret += "</i>";
} }
@ -82,7 +82,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(ConvertAccessibility(c.Modifiers)); builder.Append(ConvertAccessibility(c.Modifiers));
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -103,7 +103,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }
@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -147,7 +147,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(c.Name); builder.Append(c.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
if (ShowTypeParameterList && c.TypeParameters.Count > 0) { if (ShowTypeParameterList && c.TypeParameters.Count > 0) {
@ -161,18 +161,18 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
if (ShowParameterList && c.ClassType == ClassType.Delegate) { if (ShowParameterList && c.ClassType == ClassType.Delegate) {
builder.Append(" ("); builder.Append(" (");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
foreach(IMethod m in c.Methods) { foreach(IMethod m in c.Methods) {
if (m.Name != "Invoke") continue; if (m.Name != "Invoke") continue;
for (int i = 0; i < m.Parameters.Count; ++i) { for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i])); builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) builder.Append(", "); if (i + 1 < m.Parameters.Count) builder.Append(", ");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
} }
builder.Append(')'); builder.Append(')');
@ -207,7 +207,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(ConvertAccessibility(field.Modifiers)); builder.Append(ConvertAccessibility(field.Modifiers));
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -229,7 +229,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }
@ -238,7 +238,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(' '); builder.Append(' ');
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -248,7 +248,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(field.Name); builder.Append(field.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -279,7 +279,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
} }
builder.Append("this"); builder.Append("this");
} else { } else {
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
if (UseFullyQualifiedMemberNames) { if (UseFullyQualifiedMemberNames) {
@ -287,22 +287,22 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
} else { } else {
builder.Append(property.Name); builder.Append(property.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
} }
if (property.Parameters.Count > 0 && ShowParameterList) { if (property.Parameters.Count > 0 && ShowParameterList) {
builder.Append(property.IsIndexer ? '[' : '('); builder.Append(property.IsIndexer ? '[' : '(');
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
for (int i = 0; i < property.Parameters.Count; ++i) { for (int i = 0; i < property.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(property.Parameters[i])); builder.Append(Convert(property.Parameters[i]));
if (i + 1 < property.Parameters.Count) { if (i + 1 < property.Parameters.Count) {
builder.Append(", "); builder.Append(", ");
} }
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
builder.Append(property.IsIndexer ? ']' : ')'); builder.Append(property.IsIndexer ? ']' : ')');
@ -343,7 +343,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(' '); builder.Append(' ');
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -353,7 +353,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(e.Name); builder.Append(e.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -376,7 +376,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append(' '); builder.Append(' ');
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -394,7 +394,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -409,17 +409,17 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
if (ShowParameterList) { if (ShowParameterList) {
builder.Append("("); builder.Append("(");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
if (m.IsExtensionMethod) builder.Append("this "); if (m.IsExtensionMethod) builder.Append("this ");
for (int i = 0; i < m.Parameters.Count; ++i) { for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i])); builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) { if (i + 1 < m.Parameters.Count) {
builder.Append(", "); builder.Append(", ");
} }
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
builder.Append(')'); builder.Append(')');
@ -494,7 +494,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -506,7 +506,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
builder.Append("params "); builder.Append("params ");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }

21
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/FilePosition.cs

@ -10,7 +10,7 @@ using ICSharpCode.NRefactory;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
public struct FilePosition public struct FilePosition : IEquatable<FilePosition>
{ {
string filename; string filename;
Location position; Location position;
@ -92,14 +92,27 @@ namespace ICSharpCode.SharpDevelop.Dom
public override bool Equals(object obj) public override bool Equals(object obj)
{ {
if (!(obj is FilePosition)) return false; return obj is FilePosition && Equals((FilePosition)obj);
FilePosition b = (FilePosition)obj; }
return this.FileName == b.FileName && this.Position == b.Position;
public bool Equals(FilePosition other)
{
return this.FileName == other.FileName && this.Position == other.Position;
} }
public override int GetHashCode() public override int GetHashCode()
{ {
return filename.GetHashCode() ^ position.GetHashCode(); return filename.GetHashCode() ^ position.GetHashCode();
} }
public static bool operator ==(FilePosition lhs, FilePosition rhs)
{
return lhs.Equals(rhs);
}
public static bool operator !=(FilePosition lhs, FilePosition rhs)
{
return !lhs.Equals(rhs);
}
} }
} }

34
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/FusionNative.cs

@ -192,11 +192,11 @@ namespace MSjogren.GacTool.FusionNative
} }
internal class Fusion internal static class Fusion
{ {
[DllImport("fusion.dll", CharSet=CharSet.Auto)] [DllImport("fusion.dll", CharSet=CharSet.Auto)]
internal static extern int CreateAssemblyCache(out IAssemblyCache ppAsmCache, internal static extern int CreateAssemblyCache(out IAssemblyCache ppAsmCache,
uint dwReserved); uint dwReserved);
// //
@ -206,20 +206,20 @@ namespace MSjogren.GacTool.FusionNative
// //
[DllImport("fusion.dll", CharSet=CharSet.Auto)] [DllImport("fusion.dll", CharSet=CharSet.Auto)]
internal static extern int CreateAssemblyEnum(out IAssemblyEnum ppEnum, internal static extern int CreateAssemblyEnum(out IAssemblyEnum ppEnum,
IApplicationContext pAppCtx, IApplicationContext pAppCtx,
IAssemblyName pName, IAssemblyName pName,
uint dwFlags, uint dwFlags,
int pvReserved); int pvReserved);
[DllImport("fusion.dll", CharSet=CharSet.Auto)] [DllImport("fusion.dll", CharSet=CharSet.Auto)]
internal static extern int CreateAssemblyNameObject(out IAssemblyName ppName, internal static extern int CreateAssemblyNameObject(out IAssemblyName ppName,
string szAssemblyName, string szAssemblyName,
uint dwFlags, uint dwFlags,
int pvReserved); int pvReserved);
[DllImport("fusion.dll", CharSet=CharSet.Auto)] [DllImport("fusion.dll", CharSet=CharSet.Auto)]
internal static extern int CreateHistoryReader(string wzFilePath, internal static extern int CreateHistoryReader(string wzFilePath,
out IHistoryReader ppHistReader); out IHistoryReader ppHistReader);
// Retrieves the path of the ApplicationHistory folder, typically // Retrieves the path of the ApplicationHistory folder, typically
// Documents and Settings\<user>\Local Settings\Application Data\ApplicationHistory // Documents and Settings\<user>\Local Settings\Application Data\ApplicationHistory
@ -230,7 +230,7 @@ namespace MSjogren.GacTool.FusionNative
// //
[DllImport("fusion.dll", CharSet=CharSet.Unicode)] [DllImport("fusion.dll", CharSet=CharSet.Unicode)]
internal static extern int GetHistoryFileDirectory([MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzDir, internal static extern int GetHistoryFileDirectory([MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzDir,
ref uint pdwSize); ref uint pdwSize);
[DllImport("fusion.dll")] [DllImport("fusion.dll")]
internal static extern int NukeDownloadedCache(); internal static extern int NukeDownloadedCache();
@ -238,12 +238,12 @@ namespace MSjogren.GacTool.FusionNative
// ????? // ?????
[DllImport("fusion.dll")] [DllImport("fusion.dll")]
internal static extern int CreateApplicationContext(out IApplicationContext ppAppContext, internal static extern int CreateApplicationContext(out IApplicationContext ppAppContext,
uint dw); uint dw);
[DllImport("fusion.dll")] [DllImport("fusion.dll")]
internal static extern int GetCachePath(uint flags, internal static extern int GetCachePath(uint flags,
[MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzDir, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzDir,
ref uint pdwSize); ref uint pdwSize);
public static string GetGacPath() public static string GetGacPath()
{ {
@ -267,9 +267,9 @@ namespace MSjogren.GacTool.FusionNative
// //
[DllImport("shfusion.dll", CharSet=CharSet.Unicode)] [DllImport("shfusion.dll", CharSet=CharSet.Unicode)]
internal static extern uint PolicyManager(IntPtr hWndParent, internal static extern uint PolicyManager(IntPtr hWndParent,
string pwzFullyQualifiedAppPath, string pwzFullyQualifiedAppPath,
string pwzAppName, string pwzAppName,
int dwFlags); int dwFlags);
} }
} }

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/CombinedReturnType.cs

@ -40,7 +40,7 @@ namespace ICSharpCode.SharpDevelop.Dom
unchecked { unchecked {
int res = 0; int res = 0;
foreach (IReturnType rt in baseTypes) { foreach (IReturnType rt in baseTypes) {
res *= 27; res *= 1300027;
res += rt.GetHashCode(); res += rt.GetHashCode();
} }
return res; return res;

11
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultClass.cs

@ -191,10 +191,17 @@ namespace ICSharpCode.SharpDevelop.Dom
public override string DotNetName { public override string DotNetName {
get { get {
string fullName;
if (this.DeclaringType != null) {
fullName = this.DeclaringType.DotNetName + "+" + this.Name;
} else {
fullName = this.FullyQualifiedName;
}
IList<ITypeParameter> typeParameters = this.TypeParameters;
if (typeParameters == null || typeParameters.Count == 0) { if (typeParameters == null || typeParameters.Count == 0) {
return FullyQualifiedName; return fullName;
} else { } else {
return FullyQualifiedName + "`" + typeParameters.Count; return fullName + "`" + typeParameters.Count;
} }
} }
} }

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultMethod.cs

@ -31,6 +31,9 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary> /// </summary>
public static Constructor CreateDefault(IClass c) public static Constructor CreateDefault(IClass c)
{ {
if (c == null)
throw new ArgumentNullException("c");
Constructor con = new Constructor(ModifierEnum.Public, c.Region, c.Region, c); Constructor con = new Constructor(ModifierEnum.Public, c.Region, c.Region, c);
con.Documentation = "Default constructor of " + c.Name; con.Documentation = "Default constructor of " + c.Name;
return con; return con;

40
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/Region.cs

@ -11,7 +11,7 @@ using Location = ICSharpCode.NRefactory.Location;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
[Serializable] [Serializable]
public struct DomRegion : IComparable, IComparable<DomRegion> public struct DomRegion : IEquatable<DomRegion>
{ {
readonly int beginLine; readonly int beginLine;
readonly int endLine; readonly int endLine;
@ -102,26 +102,32 @@ namespace ICSharpCode.SharpDevelop.Dom
endColumn); endColumn);
} }
public int CompareTo(DomRegion value) public override bool Equals(object obj)
{ {
int cmp; return obj is DomRegion && Equals((DomRegion)obj);
if (0 != (cmp = (BeginLine - value.BeginLine))) { }
return cmp;
} public override int GetHashCode()
{
if (0 != (cmp = (BeginColumn - value.BeginColumn))) { unchecked {
return cmp; return BeginColumn + 1100009 * BeginLine + 1200007 * BeginColumn + 1300021 * EndColumn;
}
if (0 != (cmp = (EndLine - value.EndLine))) {
return cmp;
} }
return EndColumn - value.EndColumn;
} }
int IComparable.CompareTo(object value) { public bool Equals(DomRegion other)
return CompareTo((DomRegion)value); {
return BeginLine == other.BeginLine && BeginColumn == other.BeginColumn
&& EndLine == other.EndLine && EndColumn == other.EndColumn;
}
public static bool operator ==(DomRegion lhs, DomRegion rhs)
{
return lhs.Equals(rhs);
}
public static bool operator !=(DomRegion lhs, DomRegion rhs)
{
return !lhs.Equals(rhs);
} }
} }
} }

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs

@ -174,7 +174,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ReflectionLayer
InitMembers(type); InitMembers(type);
} }
internal void AddConstraintsFromType(ITypeParameter tp, Type type) internal static void AddConstraintsFromType(ITypeParameter tp, Type type)
{ {
foreach (Type constraint in type.GetGenericParameterConstraints()) { foreach (Type constraint in type.GetGenericParameterConstraints()) {
if (tp.Method != null) { if (tp.Method != null) {

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionMethod.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ReflectionLayer
} }
int i = 0; int i = 0;
foreach (Type g in methodBase.GetGenericArguments()) { foreach (Type g in methodBase.GetGenericArguments()) {
declaringType.AddConstraintsFromType(this.TypeParameters[i++], g); ReflectionClass.AddConstraintsFromType(this.TypeParameters[i++], g);
} }
} }

139
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/ExpressionFinder.cs

@ -68,8 +68,12 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
} }
} }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#")]
public ExpressionResult FindFullExpression(string inText, int offset) public ExpressionResult FindFullExpression(string inText, int offset)
{ {
if (inText == null)
throw new ArgumentNullException("inText");
string expressionBeforeOffset = FindExpressionInternal(inText, offset + 1); string expressionBeforeOffset = FindExpressionInternal(inText, offset + 1);
if (expressionBeforeOffset == null || expressionBeforeOffset.Length == 0) if (expressionBeforeOffset == null || expressionBeforeOffset.Length == 0)
return CreateResult(null); return CreateResult(null);
@ -101,7 +105,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
} }
// Like VBNetFormattingStrategy.SearchBracketForward, but operates on a string. // Like VBNetFormattingStrategy.SearchBracketForward, but operates on a string.
private int SearchBracketForward(string text, int offset, char openBracket, char closingBracket) static int SearchBracketForward(string text, int offset, char openBracket, char closingBracket)
{ {
bool inString = false; bool inString = false;
bool inComment = false; bool inComment = false;
@ -136,6 +140,9 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
/// </example> /// </example>
public string RemoveLastPart(string expression) public string RemoveLastPart(string expression)
{ {
if (expression == null)
throw new ArgumentNullException("expression");
text = expression; text = expression;
offset = text.Length - 1; offset = text.Length - 1;
ReadNextToken(); ReadNextToken();
@ -148,6 +155,9 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
int initialOffset; int initialOffset;
public string FilterComments(string text, ref int offset) public string FilterComments(string text, ref int offset)
{ {
if (text == null)
throw new ArgumentNullException("text");
if (text.Length <= offset) if (text.Length <= offset)
return null; return null;
this.initialOffset = offset; this.initialOffset = offset;
@ -249,25 +259,6 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
} }
return false; return false;
} }
bool ReadMultiLineComment(string text, ref int curOffset, ref int offset)
{
while (curOffset <= initialOffset)
{
char ch = text[curOffset++];
--offset;
if (ch == '*')
{
if (curOffset < text.Length && text[curOffset] == '/')
{
++curOffset;
--offset;
return true;
}
}
}
return false;
}
#endregion #endregion
#region mini backward lexer #region mini backward lexer
@ -292,31 +283,23 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
return '\0'; return '\0';
} }
void UnGet() // void UnGet()
{ // {
++offset; // ++offset;
} // }
// tokens for our lexer // tokens for our lexer
static int Err = 0; const int Err = 0;
static int Dot = 1; const int Dot = 1;
static int StrLit = 2; const int StrLit = 2;
static int Ident = 3; const int Ident = 3;
static int New = 4; const int New = 4;
// static int Bracket = 5; // const int Bracket = 5;
static int Parent = 6; const int Parent = 6;
static int Curly = 7; const int Curly = 7;
static int Using = 8; const int Using = 8;
int curTokenType; int curTokenType;
readonly static string[] tokenStateName = new string[] {
"Err", "Dot", "StrLit", "Ident", "New", "Bracket", "Paren", "Curly", "Using"
};
string GetTokenName(int state)
{
return tokenStateName[state];
}
string lastIdentifier; string lastIdentifier;
void ReadNextToken() void ReadNextToken()
@ -340,19 +323,19 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
switch (ch) switch (ch)
{ {
case '}': case '}':
if (ReadBracket('{', '}')) if (ReadBracket('{'))
{ {
curTokenType = Curly; curTokenType = Curly;
} }
break; break;
case ')': case ')':
if (ReadBracket('(', ')')) if (ReadBracket('('))
{ {
curTokenType = Parent; curTokenType = Parent;
} }
break; break;
case ']': case ']':
if (ReadBracket('[', ']')) if (ReadBracket('['))
{ {
curTokenType = Ident; curTokenType = Ident;
} }
@ -371,20 +354,14 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
if (IsIdentifierPart(ch)) if (IsIdentifierPart(ch))
{ {
string ident = ReadIdentifier(ch); string ident = ReadIdentifier(ch);
if (ident != null) if (ident != null) {
{ if (string.Equals(ident, "new", StringComparison.InvariantCultureIgnoreCase)) {
switch (ident.ToLowerInvariant()) curTokenType = New;
{ } else if (string.Equals(ident, "imports", StringComparison.InvariantCultureIgnoreCase)) {
case "new": curTokenType = Using;
curTokenType = New; } else {
break; lastIdentifier = ident;
case "imports": curTokenType = Ident;
curTokenType = Using;
break;
default:
lastIdentifier = ident;
curTokenType = Ident;
break;
} }
} }
} }
@ -412,7 +389,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
} }
} }
bool ReadBracket(char openBracket, char closingBracket) bool ReadBracket(char openBracket)
{ {
int curlyBraceLevel = 0; int curlyBraceLevel = 0;
int squareBracketLevel = 0; int squareBracketLevel = 0;
@ -472,45 +449,29 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
return identifier; return identifier;
} }
bool IsIdentifierPart(char ch) static bool IsIdentifierPart(char ch)
{ {
return Char.IsLetterOrDigit(ch) || ch == '_'; return Char.IsLetterOrDigit(ch) || ch == '_';
} }
#endregion #endregion
#region finite state machine #region finite state machine
readonly static int ERROR = 0; const int ERROR = 0;
readonly static int START = 1; const int START = 1;
readonly static int DOT = 2; const int DOT = 2;
readonly static int MORE = 3; const int MORE = 3;
readonly static int CURLY = 4; const int CURLY = 4;
readonly static int CURLY2 = 5; const int CURLY2 = 5;
readonly static int CURLY3 = 6; const int CURLY3 = 6;
readonly static int ACCEPT = 7; const int ACCEPT = 7;
readonly static int ACCEPTNOMORE = 8; const int ACCEPTNOMORE = 8;
readonly static int ACCEPT2 = 9; const int ACCEPT2 = 9;
readonly static string[] stateName = new string[] { int state;
"ERROR", int lastAccept;
"START",
"DOT",
"MORE",
"CURLY",
"CURLY2",
"CURLY3",
"ACCEPT",
"ACCEPTNOMORE",
"ACCEPT2"
};
string GetStateName(int state)
{
return stateName[state];
}
int state = 0; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1814:PreferJaggedArraysOverMultidimensional", MessageId = "Member")]
int lastAccept = 0;
static int[,] stateTable = new int[,] { static int[,] stateTable = new int[,] {
// Err, Dot, Str, ID, New, Brk, Par, Cur, Using // Err, Dot, Str, ID, New, Brk, Par, Cur, Using
/*ERROR*/ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR}, /*ERROR*/ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR},

67
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -49,7 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append("Shadows "); builder.Append("Shadows ");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }
@ -82,7 +82,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append(ConvertAccessibility(c.Modifiers)); builder.Append(ConvertAccessibility(c.Modifiers));
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -96,7 +96,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }
@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append(' '); builder.Append(' ');
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -147,7 +147,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append(c.Name); builder.Append(c.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -162,18 +162,18 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
if (ShowParameterList && c.ClassType == ClassType.Delegate) { if (ShowParameterList && c.ClassType == ClassType.Delegate) {
builder.Append("("); builder.Append("(");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
foreach (IMethod m in c.Methods) { foreach (IMethod m in c.Methods) {
if (m.Name != "Invoke") continue; if (m.Name != "Invoke") continue;
for (int i = 0; i < m.Parameters.Count; ++i) { for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i])); builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) builder.Append(", "); if (i + 1 < m.Parameters.Count) builder.Append(", ");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
} }
@ -208,6 +208,9 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
public override string ConvertEnd(IClass c) public override string ConvertEnd(IClass c)
{ {
if (c == null)
throw new ArgumentNullException("c");
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.Append("End "); builder.Append("End ");
@ -238,11 +241,14 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
public override string Convert(IField field) public override string Convert(IField field)
{ {
if (field == null)
throw new ArgumentNullException("field");
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.Append(ConvertAccessibility(field.Modifiers)); builder.Append(ConvertAccessibility(field.Modifiers));
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -254,7 +260,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
} }
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
builder.Append("<b>"); builder.Append("<b>");
} }
@ -265,7 +271,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append(field.Name); builder.Append(field.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -302,7 +308,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append("Property "); builder.Append("Property ");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -312,21 +318,21 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append(property.Name); builder.Append(property.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
if (ShowParameterList && property.Parameters.Count > 0) { if (ShowParameterList && property.Parameters.Count > 0) {
builder.Append("("); builder.Append("(");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
for (int i = 0; i < property.Parameters.Count; ++i) { for (int i = 0; i < property.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(property.Parameters[i])); builder.Append(Convert(property.Parameters[i]));
if (i + 1 < property.Parameters.Count) { if (i + 1 < property.Parameters.Count) {
builder.Append(", "); builder.Append(", ");
} }
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
builder.Append(')'); builder.Append(')');
@ -342,6 +348,9 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
public override string Convert(IEvent e) public override string Convert(IEvent e)
{ {
if (e == null)
throw new ArgumentNullException("e");
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.Append(ConvertAccessibility(e.Modifiers)); builder.Append(ConvertAccessibility(e.Modifiers));
@ -354,7 +363,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append("Event "); builder.Append("Event ");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
@ -364,7 +373,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
builder.Append(e.Name); builder.Append(e.Name);
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -401,13 +410,13 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
dispName = "New"; dispName = "New";
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<b>"); builder.Append("<b>");
} }
builder.Append(dispName); builder.Append(dispName);
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</b>"); builder.Append("</b>");
} }
@ -422,15 +431,15 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
if (ShowParameterList) { if (ShowParameterList) {
builder.Append("("); builder.Append("(");
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
for (int i = 0; i < m.Parameters.Count; ++i) { for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;"); if (IncludeHtmlMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i])); builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) { if (i + 1 < m.Parameters.Count) {
builder.Append(", "); builder.Append(", ");
} }
if (IncludeHTMLMarkup) builder.Append("<br>"); if (IncludeHtmlMarkup) builder.Append("<br>");
} }
builder.Append(')'); builder.Append(')');
@ -446,6 +455,9 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
public override string ConvertEnd(IMethod m) public override string ConvertEnd(IMethod m)
{ {
if (m == null)
throw new ArgumentNullException("m");
if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") { if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") {
return "End Sub"; return "End Sub";
} else { } else {
@ -501,8 +513,11 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
public override string Convert(IParameter param) public override string Convert(IParameter param)
{ {
if (param == null)
throw new ArgumentNullException("param");
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("<i>"); builder.Append("<i>");
} }
@ -514,7 +529,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
} else if (param.IsParams) { } else if (param.IsParams) {
builder.Append("ParamArray "); builder.Append("ParamArray ");
} }
if (IncludeHTMLMarkup) { if (IncludeHtmlMarkup) {
builder.Append("</i>"); builder.Append("</i>");
} }

Loading…
Cancel
Save