Browse Source

Fixed forum-7200, forum-7286: Exception when trying to remove lines with breakpoints

Improved default selection in "Go to" dialog.
SharpDevelop.Dom: Renamed IDecoration->IEntity, moved common properties in IClass and IMember into IEntity.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2931 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
cad71281f0
  1. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs
  2. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
  3. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
  4. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProjectContent.cs
  5. 4
      src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs
  6. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/PropertyDescriptionService.cs
  7. 2
      src/AddIns/Misc/UnitTesting/Test/Utils/MockProjectContent.cs
  8. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/LineManager/LineManager.cs
  9. 2
      src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs
  10. 2
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  11. 2
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
  12. 13
      src/Main/Base/Project/Src/TextEditor/Bookmarks/Bookmark.cs
  13. 89
      src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs
  14. 24
      src/Main/Base/Test/AbstractEntityIsOverridableTestFixture.cs
  15. 4
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  16. 4
      src/Main/Base/Test/Utils/MockEntity.cs
  17. 5
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/ICSharpCode.SharpDevelop.Dom.csproj
  18. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs
  19. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs
  20. 141
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractEntity.cs
  21. 13
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractMember.cs
  22. 116
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractNamedEntity.cs
  23. 23
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultClass.cs
  24. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultEvent.cs
  25. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultField.cs
  26. 35
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IClass.cs
  27. 25
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IEntity.cs
  28. 30
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IMember.cs
  29. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
  30. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs
  31. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/IProjectContent.cs
  32. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs
  33. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionReturnType.cs
  34. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs
  35. 187
      src/SharpDevelop.Tests.sln

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

@ -116,7 +116,7 @@ namespace Grunwald.BooBinding
return string.Empty; return string.Empty;
} }
string GetModifier(IDecoration decoration) string GetModifier(IEntity decoration)
{ {
string ret = ""; string ret = "";

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs

@ -159,7 +159,7 @@ namespace Grunwald.BooBinding.CodeCompletion
m.TypeParameters = DefaultTypeParameter.EmptyTypeParameterList; m.TypeParameters = DefaultTypeParameter.EmptyTypeParameterList;
} }
void ConvertAttributes(AST.TypeMember node, AbstractDecoration to) void ConvertAttributes(AST.TypeMember node, AbstractEntity to)
{ {
if (node.Attributes.Count == 0) { if (node.Attributes.Count == 0) {
to.Attributes = DefaultAttribute.EmptyAttributeList; to.Attributes = DefaultAttribute.EmptyAttributeList;

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs

@ -230,7 +230,7 @@ namespace CSharpBinding
/// <summary> /// <summary>
/// A class that copies the properties important for the code completion display from another class, /// A class that copies the properties important for the code completion display from another class,
/// but provides its own Name implementation. /// but provides its own Name implementation.
/// Unlike the DefaultClass.Name implementation, here 'Name' may include the namespace or type arguments. /// Unlike the AbstractEntity.Name implementation, here 'Name' may include the namespace or type arguments.
/// </summary> /// </summary>
sealed class RenamedClass : DefaultClass, IClass sealed class RenamedClass : DefaultClass, IClass
{ {
@ -243,7 +243,7 @@ namespace CSharpBinding
this.FullyQualifiedName = c.FullyQualifiedName; this.FullyQualifiedName = c.FullyQualifiedName;
} }
string IClass.Name { string IEntity.Name {
get { return newName; } get { return newName; }
} }
} }

2
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProjectContent.cs

@ -337,7 +337,7 @@ namespace PythonBinding.Tests.Utils
throw new NotImplementedException(); throw new NotImplementedException();
} }
public IDecoration GetElement(string fullMemberName) public IEntity GetElement(string fullMemberName)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

4
src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs

@ -439,13 +439,13 @@ namespace ClassDiagram
// addItem.SubItems.Add(GetSummary(member)); // addItem.SubItems.Add(GetSummary(member));
} }
private static string GetSummary (IDecoration decoration) private static string GetSummary (IEntity decoration)
{ {
if (decoration == null) return String.Empty; if (decoration == null) return String.Empty;
return GetSummary(decoration.Documentation, @"/docroot/summary"); return GetSummary(decoration.Documentation, @"/docroot/summary");
} }
private static string GetParameterSummary (IDecoration decoration, string parameterName) private static string GetParameterSummary (IEntity decoration, string parameterName)
{ {
if (decoration == null) return String.Empty; if (decoration == null) return String.Empty;
return GetSummary(decoration.Documentation, @"/docroot/param[@name='"+parameterName+"']"); return GetSummary(decoration.Documentation, @"/docroot/param[@name='"+parameterName+"']");

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/PropertyDescriptionService.cs

@ -29,7 +29,7 @@ namespace ICSharpCode.WpfDesign.AddIn
IProjectContent pc = MyTypeFinder.GetProjectContent(file); IProjectContent pc = MyTypeFinder.GetProjectContent(file);
if (pc != null) { if (pc != null) {
string fullName = property.DeclaringType.FullName + "." + property.Name; string fullName = property.DeclaringType.FullName + "." + property.Name;
IDecoration dec = pc.GetElement(fullName); IEntity dec = pc.GetElement(fullName);
if (dec != null) if (dec != null)
return CodeCompletionData.GetDocumentation(dec.Documentation); return CodeCompletionData.GetDocumentation(dec.Documentation);
foreach (IProjectContent rpc in pc.ReferencedContents) { foreach (IProjectContent rpc in pc.ReferencedContents) {

2
src/AddIns/Misc/UnitTesting/Test/Utils/MockProjectContent.cs

@ -148,7 +148,7 @@ namespace UnitTesting.Tests.Utils
throw new NotImplementedException(); throw new NotImplementedException();
} }
public IDecoration GetElement(string fullMemberName) public IEntity GetElement(string fullMemberName)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/LineManager/LineManager.cs

@ -91,6 +91,8 @@ namespace ICSharpCode.TextEditor.Document
// Console.WriteLine("New text:"); // Console.WriteLine("New text:");
// Console.WriteLine("'" + document.TextContent + "'"); // Console.WriteLine("'" + document.TextContent + "'");
// #endif // #endif
// Only fire events after RemoveInternal+InsertInternal finished completely:
// Otherwise we would expose inconsistent state to the event handlers.
RunHighlighter(lineStart, 1 + Math.Max(0, this.TotalNumberOfLines - numberOfLinesAfterRemoving)); RunHighlighter(lineStart, 1 + Math.Max(0, this.TotalNumberOfLines - numberOfLinesAfterRemoving));
if (removedLines != null) { if (removedLines != null) {
foreach (LineSegment ls in removedLines) foreach (LineSegment ls in removedLines)

2
src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
} }
set { set {
willBeHit = value; willBeHit = value;
if (Document != null) { if (Document != null && !Line.IsDeleted) {
Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, LineNumber)); Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, LineNumber));
Document.CommitUpdate(); Document.CommitUpdate();
} }

2
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -467,7 +467,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
} }
} }
static string GetMemberText(IAmbience ambience, IDecoration member, string expression, out bool debuggerCanShowValue) static string GetMemberText(IAmbience ambience, IEntity member, string expression, out bool debuggerCanShowValue)
{ {
bool tryDisplayValue = false; bool tryDisplayValue = false;
debuggerCanShowValue = false; debuggerCanShowValue = false;

2
src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs

@ -309,7 +309,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
/// Gets the files of files that could have a reference to the <paramref name="member"/> /// Gets the files of files that could have a reference to the <paramref name="member"/>
/// int the <paramref name="ownerClass"/>. /// int the <paramref name="ownerClass"/>.
/// </summary> /// </summary>
static List<ProjectItem> GetPossibleFiles(IClass ownerClass, IDecoration member) static List<ProjectItem> GetPossibleFiles(IClass ownerClass, IEntity member)
{ {
List<ProjectItem> resultList = new List<ProjectItem>(); List<ProjectItem> resultList = new List<ProjectItem>();
if (ProjectService.OpenSolution == null) { if (ProjectService.OpenSolution == null) {

13
src/Main/Base/Project/Src/TextEditor/Bookmarks/Bookmark.cs

@ -128,13 +128,24 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
public void RemoveMarker() public void RemoveMarker()
{ {
if (oldDocument != null) { if (oldDocument != null) {
int from = SafeGetLineNumberForOffset(oldDocument, oldMarker.Offset);
int to = SafeGetLineNumberForOffset(oldDocument, oldMarker.Offset + oldMarker.Length);
oldDocument.MarkerStrategy.RemoveMarker(oldMarker); oldDocument.MarkerStrategy.RemoveMarker(oldMarker);
oldDocument.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.SingleLine, LineNumber)); oldDocument.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.LinesBetween, from, to));
oldDocument.CommitUpdate(); oldDocument.CommitUpdate();
} }
oldDocument = null; oldDocument = null;
oldMarker = null; oldMarker = null;
} }
static int SafeGetLineNumberForOffset(IDocument document, int offset)
{
if (offset <= 0)
return 0;
if (offset >= document.TextLength)
return document.TotalNumberOfLines;
return document.GetLineNumberForOffset(offset);
}
} }
public class SDBookmarkFactory : IBookmarkFactory public class SDBookmarkFactory : IBookmarkFactory

89
src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs

@ -123,6 +123,7 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
Dictionary<string, object> visibleEntries = new Dictionary<string, object>(); Dictionary<string, object> visibleEntries = new Dictionary<string, object>();
int bestMatchType;
double bestPriority; double bestPriority;
ListViewItem bestItem; ListViewItem bestItem;
@ -209,18 +210,18 @@ namespace ICSharpCode.SharpDevelop.Gui
void AddSourceFile(string text, int lineNumber, ProjectItem item) void AddSourceFile(string text, int lineNumber, ProjectItem item)
{ {
string lowerText = text.ToLowerInvariant();
string fileName = item.FileName; string fileName = item.FileName;
string display = Path.GetFileName(fileName); string display = Path.GetFileName(fileName);
if (display.Length >= text.Length) { if (display.Length >= text.Length) {
if (display.ToLowerInvariant().IndexOf(lowerText) >= 0) { int matchType = GetMatchType(text, display);
if (matchType >= 0) {
if (lineNumber > 0) { if (lineNumber > 0) {
display += ", line " + lineNumber; display += ", line " + lineNumber;
} }
if (item.Project != null) { if (item.Project != null) {
display += StringParser.Parse(" ${res:MainWindow.Windows.SearchResultPanel.In} ") + item.Project.Name; display += StringParser.Parse(" ${res:MainWindow.Windows.SearchResultPanel.In} ") + item.Project.Name;
} }
AddItem(display, ClassBrowserIconService.GotoArrowIndex, new FileLineReference(fileName, lineNumber), 0.5); AddItem(display, ClassBrowserIconService.GotoArrowIndex, new FileLineReference(fileName, lineNumber), 0.5, matchType);
} }
} }
} }
@ -232,7 +233,7 @@ namespace ICSharpCode.SharpDevelop.Gui
TextEditorControl editor = GetEditor(); TextEditorControl editor = GetEditor();
if (editor != null) { if (editor != null) {
num = Math.Min(editor.Document.TotalNumberOfLines, Math.Max(1, num)); num = Math.Min(editor.Document.TotalNumberOfLines, Math.Max(1, num));
AddItem(StringParser.Parse("${res:Dialog.Goto.GotoLine} ") + num, ClassBrowserIconService.GotoArrowIndex, num, 0); AddItem(StringParser.Parse("${res:Dialog.Goto.GotoLine} ") + num, ClassBrowserIconService.GotoArrowIndex, num, 0, int.MaxValue);
} }
} }
} }
@ -245,13 +246,12 @@ namespace ICSharpCode.SharpDevelop.Gui
if (ccd == null) if (ccd == null)
return; return;
string dataText = ccd.Text; string dataText = ccd.Text;
if (dataText.Length >= text.Length) { int matchType = GetMatchType(text, dataText);
if (dataText.ToLowerInvariant().IndexOf(lowerText) >= 0) { if (matchType >= 0) {
if (ccd.Class != null) if (ccd.Class != null)
AddItem(ccd.Class, data.ImageIndex, data.Priority); AddItem(ccd.Class, data.ImageIndex, data.Priority, matchType);
else if (ccd.Member != null) else if (ccd.Member != null)
AddItem(ccd.Member, data.ImageIndex, data.Priority); AddItem(ccd.Member, data.ImageIndex, data.Priority, matchType);
}
} }
} }
} }
@ -260,7 +260,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{ {
ShowCompletionData(GetCompletionData(), text); ShowCompletionData(GetCompletionData(), text);
foreach (IClass c in SearchClasses(text)) { foreach (IClass c in SearchClasses(text)) {
AddItem(c); AddItem(c, GetMatchType(text, c.Name));
} }
} }
@ -292,7 +292,44 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
} }
void AddItem(string text, int imageIndex, object tag, double priority) const int MatchType_NoMatch = -1;
const int MatchType_ContainsMatch_CaseInsensitive = 0;
const int MatchType_ContainsMatch = 1;
const int MatchType_StartingMatch_CaseInsensitive = 2;
const int MatchType_StartingMatch = 3;
const int MatchType_FullMatch_CaseInsensitive = 4;
const int MatchType_FullMatch = 5;
static int GetMatchType(string searchText, string itemText)
{
if (itemText.Length < searchText.Length)
return MatchType_NoMatch;
int indexInsensitive = itemText.IndexOf(searchText, StringComparison.InvariantCultureIgnoreCase);
if (indexInsensitive < 0)
return MatchType_NoMatch;
// This is a case insensitive match
int indexSensitive = itemText.IndexOf(searchText, StringComparison.InvariantCulture);
if (itemText.Length == searchText.Length) {
// this is a full match
if (indexSensitive == 0)
return MatchType_FullMatch;
else
return MatchType_FullMatch_CaseInsensitive;
} else if (indexInsensitive == 0) {
// This is a starting match
if (indexSensitive == 0)
return MatchType_StartingMatch;
else
return MatchType_StartingMatch_CaseInsensitive;
} else {
if (indexSensitive >= 0)
return MatchType_ContainsMatch;
else
return MatchType_ContainsMatch_CaseInsensitive;
}
}
void AddItem(string text, int imageIndex, object tag, double priority, int matchType)
{ {
if (visibleEntries.ContainsKey(text)) if (visibleEntries.ContainsKey(text))
return; return;
@ -300,38 +337,34 @@ namespace ICSharpCode.SharpDevelop.Gui
ListViewItem item = new ListViewItem(text, imageIndex); ListViewItem item = new ListViewItem(text, imageIndex);
item.Tag = tag; item.Tag = tag;
if (bestItem == null if (bestItem == null
|| (priority > bestPriority && !(tag is IClass && bestItem.Tag is IMember)) || (tag is IMember && bestItem.Tag is IClass)
|| (tag is IMember && bestItem.Tag is IClass)) || (!(tag is IClass && bestItem.Tag is IMember)
&& (matchType > bestMatchType || matchType == bestMatchType && priority > bestPriority)))
{ {
bestItem = item; bestItem = item;
bestPriority = priority; bestPriority = priority;
bestMatchType = matchType;
} }
listView.Items.Add(item); listView.Items.Add(item);
} }
void AddItem(IClass c) void AddItem(IClass c, int matchType)
{ {
AddItem(c, ClassBrowserIconService.GetIcon(c), CodeCompletionDataUsageCache.GetPriority(c.DotNetName, true)); AddItem(c, ClassBrowserIconService.GetIcon(c), CodeCompletionDataUsageCache.GetPriority(c.DotNetName, true), matchType);
} }
void AddItemIfMatchText(string text, IMember member, int imageIndex) void AddItemIfMatchText(string text, IMember member, int imageIndex)
{ {
string name = member.Name; string name = member.Name;
if (name.Length >= text.Length) { int matchType = GetMatchType(text, name);
if (text.Equals(name.Substring(0, text.Length), StringComparison.OrdinalIgnoreCase)) { if (matchType >= 0) {
AddItem(member, imageIndex, CodeCompletionDataUsageCache.GetPriority(member.DotNetName, true)); AddItem(member, imageIndex, CodeCompletionDataUsageCache.GetPriority(member.DotNetName, true), matchType);
}
} }
} }
void AddItem(IClass c, int imageIndex, double priority) void AddItem(IEntity e, int imageIndex, double priority, int matchType)
{
AddItem(c.Name + " (" + c.FullyQualifiedName + ")", imageIndex, c, priority);
}
void AddItem(IMember m, int imageIndex, double priority)
{ {
AddItem(m.Name + " (" + m.FullyQualifiedName + ")", imageIndex, m, priority); AddItem(e.Name + " (" + e.FullyQualifiedName + ")", imageIndex, e, priority, matchType);
} }
void CancelButtonClick(object sender, EventArgs e) void CancelButtonClick(object sender, EventArgs e)

24
src/Main/Base/Test/AbstractDecorationIsOverridableTestFixture.cs → src/Main/Base/Test/AbstractEntityIsOverridableTestFixture.cs

@ -16,48 +16,48 @@ namespace ICSharpCode.SharpDevelop.Tests
/// Tests that the IsOverridable property returns the expected value. /// Tests that the IsOverridable property returns the expected value.
/// </summary> /// </summary>
[TestFixture] [TestFixture]
public class AbstractDecorationIsOverridableTestFixture public class AbstractEntityIsOverridableTestFixture
{ {
MockDecoration decoration; MockEntity entity;
[SetUp] [SetUp]
public void SetUp() public void SetUp()
{ {
decoration = new MockDecoration(); entity = new MockEntity();
} }
[Test] [Test]
public void NotOverridableByDefault() public void NotOverridableByDefault()
{ {
Assert.IsFalse(decoration.IsOverridable); Assert.IsFalse(entity.IsOverridable);
} }
[Test] [Test]
public void IsOverrideSet() public void IsOverrideSet()
{ {
decoration.Modifiers = ModifierEnum.Override; entity.Modifiers = ModifierEnum.Override;
Assert.IsTrue(decoration.IsOverridable); Assert.IsTrue(entity.IsOverridable);
} }
[Test] [Test]
public void IsVirtualSet() public void IsVirtualSet()
{ {
decoration.Modifiers = ModifierEnum.Virtual; entity.Modifiers = ModifierEnum.Virtual;
Assert.IsTrue(decoration.IsOverridable); Assert.IsTrue(entity.IsOverridable);
} }
[Test] [Test]
public void IsAbstractSet() public void IsAbstractSet()
{ {
decoration.Modifiers = ModifierEnum.Abstract; entity.Modifiers = ModifierEnum.Abstract;
Assert.IsTrue(decoration.IsOverridable); Assert.IsTrue(entity.IsOverridable);
} }
[Test] [Test]
public void IsAbstractAndSealedSet() public void IsAbstractAndSealedSet()
{ {
decoration.Modifiers = ModifierEnum.Abstract | ModifierEnum.Sealed; entity.Modifiers = ModifierEnum.Abstract | ModifierEnum.Sealed;
Assert.IsFalse(decoration.IsOverridable); Assert.IsFalse(entity.IsOverridable);
} }
} }
} }

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

@ -50,7 +50,7 @@
<Reference Include="Microsoft.Build.Engine" /> <Reference Include="Microsoft.Build.Engine" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="AbstractDecorationIsOverridableTestFixture.cs" /> <Compile Include="AbstractEntityIsOverridableTestFixture.cs" />
<Compile Include="AssemblyInfo.cs" /> <Compile Include="AssemblyInfo.cs" />
<Compile Include="CodeConverterTests.cs" /> <Compile Include="CodeConverterTests.cs" />
<Compile Include="CSharpExpressionFinderTests.cs" /> <Compile Include="CSharpExpressionFinderTests.cs" />
@ -71,7 +71,7 @@
<Compile Include="MemberLookupHelperTests.cs" /> <Compile Include="MemberLookupHelperTests.cs" />
<Compile Include="Utils\MockAmbience.cs" /> <Compile Include="Utils\MockAmbience.cs" />
<Compile Include="Utils\MockClass.cs" /> <Compile Include="Utils\MockClass.cs" />
<Compile Include="Utils\MockDecoration.cs" /> <Compile Include="Utils\MockEntity.cs" />
<Compile Include="Utils\MockDefaultReturnType.cs" /> <Compile Include="Utils\MockDefaultReturnType.cs" />
<Compile Include="Utils\MockMethod.cs" /> <Compile Include="Utils\MockMethod.cs" />
<Compile Include="Utils\MockProject.cs" /> <Compile Include="Utils\MockProject.cs" />

4
src/Main/Base/Test/Utils/MockDecoration.cs → src/Main/Base/Test/Utils/MockEntity.cs

@ -10,9 +10,9 @@ using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.SharpDevelop.Tests.Utils namespace ICSharpCode.SharpDevelop.Tests.Utils
{ {
public class MockDecoration : AbstractDecoration public class MockEntity : AbstractEntity
{ {
public MockDecoration() : base(null) public MockEntity() : base(null)
{ {
} }

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

@ -63,9 +63,8 @@
<Link>Configuration\GlobalAssemblyInfo.cs</Link> <Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile> </Compile>
<Compile Include="Src\ExtensionMethods.cs" /> <Compile Include="Src\ExtensionMethods.cs" />
<Compile Include="Src\Implementations\AbstractDecoration.cs" /> <Compile Include="Src\Implementations\AbstractEntity.cs" />
<Compile Include="Src\Implementations\AbstractMember.cs" /> <Compile Include="Src\Implementations\AbstractMember.cs" />
<Compile Include="Src\Implementations\AbstractNamedEntity.cs" />
<Compile Include="Src\Implementations\AbstractReturnType.cs" /> <Compile Include="Src\Implementations\AbstractReturnType.cs" />
<Compile Include="Src\Implementations\AnonymousMethodReturnType.cs" /> <Compile Include="Src\Implementations\AnonymousMethodReturnType.cs" />
<Compile Include="Src\Implementations\ArrayReturnType.cs" /> <Compile Include="Src\Implementations\ArrayReturnType.cs" />
@ -134,7 +133,7 @@
<Compile Include="Src\Interfaces\IAttribute.cs" /> <Compile Include="Src\Interfaces\IAttribute.cs" />
<Compile Include="Src\Interfaces\IClass.cs" /> <Compile Include="Src\Interfaces\IClass.cs" />
<Compile Include="Src\Interfaces\ICompilationUnit.cs" /> <Compile Include="Src\Interfaces\ICompilationUnit.cs" />
<Compile Include="Src\Interfaces\IDecoration.cs" /> <Compile Include="Src\Interfaces\IEntity.cs" />
<Compile Include="Src\Interfaces\IEvent.cs" /> <Compile Include="Src\Interfaces\IEvent.cs" />
<Compile Include="Src\Interfaces\IField.cs" /> <Compile Include="Src\Interfaces\IField.cs" />
<Compile Include="Src\Interfaces\IMember.cs" /> <Compile Include="Src\Interfaces\IMember.cs" />

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

@ -49,7 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
return string.Empty; return string.Empty;
} }
string GetModifier(IDecoration decoration) string GetModifier(IEntity decoration)
{ {
string ret = ""; string ret = "";

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs

@ -62,7 +62,7 @@ namespace ICSharpCode.SharpDevelop.Dom
/// <summary> /// <summary>
/// Create a SharpDevelop return type from a Cecil type reference. /// Create a SharpDevelop return type from a Cecil type reference.
/// </summary> /// </summary>
internal static IReturnType CreateType(IProjectContent pc, IDecoration member, TypeReference type) internal static IReturnType CreateType(IProjectContent pc, IEntity member, TypeReference type)
{ {
while (type is ModType) { while (type is ModType) {
type = (type as ModType).ElementType; type = (type as ModType).ElementType;

141
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractDecoration.cs → src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractEntity.cs

@ -10,45 +10,137 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
public abstract class AbstractDecoration : AbstractFreezable, IDecoration public abstract class AbstractEntity : AbstractFreezable, IEntity
{ {
ModifierEnum modifiers = ModifierEnum.None; ModifierEnum modifiers = ModifierEnum.None;
IList<IAttribute> attributes; IList<IAttribute> attributes;
DomRegion bodyRegion;
IClass declaringType; IClass declaringType;
object userData = null;
protected override void FreezeInternal() string fullyQualifiedName = null;
string name = null;
string nspace = null;
public AbstractEntity(IClass declaringType)
{ {
attributes = FreezeList(attributes); this.declaringType = declaringType;
base.FreezeInternal();
} }
public IClass DeclaringType { public AbstractEntity(IClass declaringType, string name)
{
if (declaringType == null)
throw new ArgumentNullException("declaringType");
this.declaringType = declaringType;
this.name = name;
nspace = declaringType.FullyQualifiedName;
// lazy-computing the fully qualified name for class members saves ~7 MB RAM (when loading the SharpDevelop solution).
//fullyQualifiedName = nspace + '.' + name;
}
public override string ToString()
{
return String.Format("[{0}: {1}]", GetType().Name, FullyQualifiedName);
}
#region Naming
static readonly char[] nameDelimiters = { '.', '+' };
public string FullyQualifiedName {
get { get {
return declaringType; if (fullyQualifiedName == null) {
if (name != null && nspace != null) {
fullyQualifiedName = nspace + '.' + name;
} else {
return String.Empty;
}
}
return fullyQualifiedName;
}
set {
CheckBeforeMutation();
if (fullyQualifiedName == value)
return;
fullyQualifiedName = value;
name = null;
nspace = null;
OnFullyQualifiedNameChanged(EventArgs.Empty);
} }
} }
public object UserData { protected virtual void OnFullyQualifiedNameChanged(EventArgs e)
{
}
public virtual string DotNetName {
get { get {
return userData; if (this.DeclaringType != null) {
return this.DeclaringType.DotNetName + "." + this.Name;
} else {
return FullyQualifiedName;
}
} }
set { }
userData = value;
public string Name {
get {
if (name == null && FullyQualifiedName != null) {
int lastIndex = FullyQualifiedName.LastIndexOfAny(nameDelimiters);
if (lastIndex < 0) {
name = FullyQualifiedName;
} else {
name = FullyQualifiedName.Substring(lastIndex + 1);
}
}
return name;
}
}
public string Namespace {
get {
if (nspace == null && FullyQualifiedName != null) {
int lastIndex = FullyQualifiedName.LastIndexOf('.');
if (lastIndex < 0) {
nspace = String.Empty;
} else {
nspace = FullyQualifiedName.Substring(0, lastIndex);
}
}
return nspace;
} }
} }
public ModifierEnum Modifiers {
#endregion
protected override void FreezeInternal()
{
attributes = FreezeList(attributes);
base.FreezeInternal();
}
public IClass DeclaringType {
get { get {
return modifiers; return declaringType;
}
}
public virtual DomRegion BodyRegion {
get {
return bodyRegion;
} }
set { set {
CheckBeforeMutation(); CheckBeforeMutation();
modifiers = value; bodyRegion = value;
} }
} }
public object UserData { get; set; }
public IList<IAttribute> Attributes { public IList<IAttribute> Attributes {
get { get {
if (attributes == null) { if (attributes == null) {
@ -92,6 +184,17 @@ namespace ICSharpCode.SharpDevelop.Dom
get; get;
} }
#region Modifiers
public ModifierEnum Modifiers {
get {
return modifiers;
}
set {
CheckBeforeMutation();
modifiers = value;
}
}
public bool IsAbstract { public bool IsAbstract {
get { get {
return (modifiers & ModifierEnum.Abstract) == ModifierEnum.Abstract; return (modifiers & ModifierEnum.Abstract) == ModifierEnum.Abstract;
@ -184,11 +287,7 @@ namespace ICSharpCode.SharpDevelop.Dom
return (modifiers & ModifierEnum.Synthetic) == ModifierEnum.Synthetic; return (modifiers & ModifierEnum.Synthetic) == ModifierEnum.Synthetic;
} }
} }
#endregion
public AbstractDecoration(IClass declaringType)
{
this.declaringType = declaringType;
}
bool IsInnerClass(IClass c, IClass possibleInnerClass) bool IsInnerClass(IClass c, IClass possibleInnerClass)
{ {
@ -230,14 +329,14 @@ namespace ICSharpCode.SharpDevelop.Dom
return IsAccessible(callingClass, isClassInInheritanceTree); return IsAccessible(callingClass, isClassInInheritanceTree);
} }
public virtual int CompareTo(IDecoration value) public virtual int CompareTo(IEntity value)
{ {
return this.Modifiers - value.Modifiers; return this.Modifiers - value.Modifiers;
} }
int IComparable.CompareTo(object value) int IComparable.CompareTo(object value)
{ {
return CompareTo((IDecoration)value); return CompareTo((IEntity)value);
} }
} }
} }

13
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractMember.cs

@ -10,11 +10,10 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
public abstract class AbstractMember : AbstractNamedEntity, IMember public abstract class AbstractMember : AbstractEntity, IMember
{ {
IReturnType returnType; IReturnType returnType;
DomRegion region; DomRegion region;
DomRegion bodyRegion;
IList<ExplicitInterfaceImplementation> interfaceImplementations; IList<ExplicitInterfaceImplementation> interfaceImplementations;
IReturnType declaringTypeReference; IReturnType declaringTypeReference;
@ -34,16 +33,6 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
public virtual DomRegion BodyRegion {
get {
return bodyRegion;
}
set {
CheckBeforeMutation();
bodyRegion = value;
}
}
public virtual IReturnType ReturnType { public virtual IReturnType ReturnType {
get { get {
return returnType; return returnType;

116
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractNamedEntity.cs

@ -1,116 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.SharpDevelop.Dom
{
public abstract class AbstractNamedEntity : AbstractDecoration
{
static readonly char[] nameDelimiters = { '.', '+' };
string fullyQualifiedName = null;
string name = null;
string nspace = null;
public string FullyQualifiedName {
get {
if (fullyQualifiedName == null) {
if (name != null && nspace != null) {
fullyQualifiedName = nspace + '.' + name;
} else {
return String.Empty;
}
}
return fullyQualifiedName;
}
set {
CheckBeforeMutation();
if (fullyQualifiedName == value)
return;
fullyQualifiedName = value;
name = null;
nspace = null;
OnFullyQualifiedNameChanged(EventArgs.Empty);
}
}
protected virtual void OnFullyQualifiedNameChanged(EventArgs e)
{
}
public virtual string DotNetName {
get {
if (this.DeclaringType != null) {
return this.DeclaringType.DotNetName + "." + this.Name;
} else {
return FullyQualifiedName;
}
}
}
public string Name {
get {
if (name == null && FullyQualifiedName != null) {
int lastIndex;
if (CanBeSubclass) {
lastIndex = FullyQualifiedName.LastIndexOfAny(nameDelimiters);
} else {
lastIndex = FullyQualifiedName.LastIndexOf('.');
}
if (lastIndex < 0) {
name = FullyQualifiedName;
} else {
name = FullyQualifiedName.Substring(lastIndex + 1);
}
}
return name;
}
}
public string Namespace {
get {
if (nspace == null && FullyQualifiedName != null) {
int lastIndex = FullyQualifiedName.LastIndexOf('.');
if (lastIndex < 0) {
nspace = String.Empty;
} else {
nspace = FullyQualifiedName.Substring(0, lastIndex);
}
}
return nspace;
}
}
protected virtual bool CanBeSubclass {
get {
return false;
}
}
public AbstractNamedEntity(IClass declaringType) : base(declaringType)
{
}
public AbstractNamedEntity(IClass declaringType, string name) : base(declaringType)
{
System.Diagnostics.Debug.Assert(declaringType != null);
this.name = name;
nspace = declaringType.FullyQualifiedName;
// lazy-computing the fully qualified name for class members saves ~7 MB RAM (when loading the SharpDevelop solution).
//fullyQualifiedName = nspace + '.' + name;
}
public override string ToString()
{
return String.Format("[{0}: {1}]", GetType().Name, FullyQualifiedName);
}
}
}

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

@ -11,11 +11,10 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
public class DefaultClass : AbstractNamedEntity, IClass, IComparable public class DefaultClass : AbstractEntity, IClass, IComparable
{ {
ClassType classType; ClassType classType;
DomRegion region; DomRegion region;
DomRegion bodyRegion;
ICompilationUnit compilationUnit; ICompilationUnit compilationUnit;
@ -40,6 +39,7 @@ namespace ICSharpCode.SharpDevelop.Dom
base.FreezeInternal(); base.FreezeInternal();
} }
/*
public virtual IClass Unfreeze() public virtual IClass Unfreeze()
{ {
DefaultClass copy = new DefaultClass(compilationUnit, DeclaringType); DefaultClass copy = new DefaultClass(compilationUnit, DeclaringType);
@ -60,6 +60,7 @@ namespace ICSharpCode.SharpDevelop.Dom
copy.UserData = this.UserData; copy.UserData = this.UserData;
return copy; return copy;
} }
*/
byte flags; byte flags;
const byte hasPublicOrInternalStaticMembersFlag = 0x02; const byte hasPublicOrInternalStaticMembersFlag = 0x02;
@ -234,16 +235,6 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
public DomRegion BodyRegion {
get {
return bodyRegion;
}
set {
CheckBeforeMutation();
bodyRegion = value;
}
}
public override string DotNetName { public override string DotNetName {
get { get {
string fullName; string fullName;
@ -338,7 +329,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{ {
int cmp; int cmp;
if(0 != (cmp = base.CompareTo((IDecoration)value))) { if(0 != (cmp = base.CompareTo((IEntity)value))) {
return cmp; return cmp;
} }
@ -395,12 +386,6 @@ namespace ICSharpCode.SharpDevelop.Dom
protected bool UseInheritanceCache = false; protected bool UseInheritanceCache = false;
protected override bool CanBeSubclass {
get {
return true;
}
}
public IReturnType GetBaseType(int index) public IReturnType GetBaseType(int index)
{ {
return BaseTypes[index]; return BaseTypes[index];

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

@ -66,7 +66,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{ {
int cmp; int cmp;
if(0 != (cmp = base.CompareTo((IDecoration)value))) if(0 != (cmp = base.CompareTo((IEntity)value)))
return cmp; return cmp;
if (FullyQualifiedName != null) { if (FullyQualifiedName != null) {

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

@ -37,7 +37,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{ {
int cmp; int cmp;
cmp = base.CompareTo((IDecoration)field); cmp = base.CompareTo((IEntity)field);
if (cmp != 0) { if (cmp != 0) {
return cmp; return cmp;
} }

35
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IClass.cs

@ -11,12 +11,15 @@ using System.Collections.ObjectModel;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
public interface IClass : IDecoration public interface IClass : IEntity
{ {
string FullyQualifiedName { /// <summary>
/// Region of the whole class including the body.
/// </summary>
DomRegion Region {
get; get;
} }
/// <summary> /// <summary>
/// The default return type to use for this class. /// The default return type to use for this class.
/// This property is mutable even when the IClass is frozen, see /// This property is mutable even when the IClass is frozen, see
@ -25,21 +28,6 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary> /// </summary>
IReturnType DefaultReturnType { get; } IReturnType DefaultReturnType { get; }
/// <summary>
/// The fully qualified name in the internal .NET notation (with `1 for generic types)
/// </summary>
string DotNetName {
get;
}
string Name {
get;
}
string Namespace {
get;
}
ClassType ClassType { ClassType ClassType {
get; get;
} }
@ -55,17 +43,6 @@ namespace ICSharpCode.SharpDevelop.Dom
get; get;
} }
/// <summary>
/// Region of the whole class including the body.
/// </summary>
DomRegion Region {
get;
}
DomRegion BodyRegion {
get;
}
IList<IReturnType> BaseTypes { IList<IReturnType> BaseTypes {
get; get;
} }

25
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IDecoration.cs → src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IEntity.cs

@ -10,8 +10,31 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
public interface IDecoration : IFreezable, IComparable public interface IEntity : IFreezable, IComparable
{ {
string FullyQualifiedName {
get;
}
string Name {
get;
}
string Namespace {
get;
}
/// <summary>
/// The fully qualified name in the internal .NET notation (with `1 for generic types)
/// </summary>
string DotNetName {
get;
}
DomRegion BodyRegion {
get;
}
IClass DeclaringType { IClass DeclaringType {
get; get;
} }

30
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IMember.cs

@ -10,9 +10,12 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom namespace ICSharpCode.SharpDevelop.Dom
{ {
public interface IMember : IDecoration, ICloneable public interface IMember : IEntity, ICloneable
{ {
string FullyQualifiedName { /// <summary>
/// Declaration region of the member (without body!)
/// </summary>
DomRegion Region {
get; get;
} }
@ -42,34 +45,11 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary> /// </summary>
IMember CreateSpecializedMember(); IMember CreateSpecializedMember();
/// <summary>
/// Declaration region of the member (without body!)
/// </summary>
DomRegion Region {
get;
}
string Name {
get;
}
string Namespace {
get;
}
string DotNetName {
get;
}
IReturnType ReturnType { IReturnType ReturnType {
get; get;
set; set;
} }
DomRegion BodyRegion {
get;
}
IList<ExplicitInterfaceImplementation> InterfaceImplementations { IList<ExplicitInterfaceImplementation> InterfaceImplementations {
get; get;
} }

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -187,7 +187,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return data; return data;
} }
void ConvertAttributes(AST.AttributedNode from, AbstractDecoration to) void ConvertAttributes(AST.AttributedNode from, AbstractEntity to)
{ {
if (from.Attributes.Count == 0) { if (from.Attributes.Count == 0) {
to.Attributes = DefaultAttribute.EmptyAttributeList; to.Attributes = DefaultAttribute.EmptyAttributeList;

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs

@ -863,7 +863,7 @@ namespace ICSharpCode.SharpDevelop.Dom
/// Gets the position of a member in this project content (not a referenced one). /// Gets the position of a member in this project content (not a referenced one).
/// </summary> /// </summary>
/// <param name="fullMemberName">The full member name in Reflection syntax (always case sensitive, ` for generics)</param> /// <param name="fullMemberName">The full member name in Reflection syntax (always case sensitive, ` for generics)</param>
public IDecoration GetElement(string fullMemberName) public IEntity GetElement(string fullMemberName)
{ {
IClass curClass = GetClassByDotNetName(fullMemberName, false); IClass curClass = GetClassByDotNetName(fullMemberName, false);
if (curClass != null) { if (curClass != null) {
@ -932,7 +932,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public FilePosition GetPosition(string fullMemberName) public FilePosition GetPosition(string fullMemberName)
{ {
IDecoration d = GetElement(fullMemberName); IEntity d = GetElement(fullMemberName);
IMember m = d as IMember; IMember m = d as IMember;
IClass c = d as IClass; IClass c = d as IClass;
if (m != null) { if (m != null) {

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/IProjectContent.cs

@ -103,7 +103,7 @@ namespace ICSharpCode.SharpDevelop.Dom
/// Gets the position of a member in this project content (not a referenced one). /// Gets the position of a member in this project content (not a referenced one).
/// </summary> /// </summary>
/// <param name="fullMemberName">The full member name in Reflection syntax (always case sensitive, ` for generics)</param> /// <param name="fullMemberName">The full member name in Reflection syntax (always case sensitive, ` for generics)</param>
IDecoration GetElement(string fullMemberName); IEntity GetElement(string fullMemberName);
/// <summary> /// <summary>
/// Gets the definition position of the class/member. /// Gets the definition position of the class/member.

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

@ -748,7 +748,7 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
void ReadAttributes(AbstractDecoration decoration) void ReadAttributes(AbstractEntity decoration)
{ {
int count = reader.ReadUInt16(); int count = reader.ReadUInt16();
if (count > 0) { if (count > 0) {

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

@ -27,7 +27,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ReflectionLayer
return Create(member.DeclaringType.ProjectContent, member, type, createLazyReturnType); return Create(member.DeclaringType.ProjectContent, member, type, createLazyReturnType);
} }
public static IReturnType Create(IProjectContent pc, IDecoration member, Type type, bool createLazyReturnType) public static IReturnType Create(IProjectContent pc, IEntity member, Type type, bool createLazyReturnType)
{ {
if (type.IsByRef) { if (type.IsByRef) {
// TODO: Use ByRefRefReturnType // TODO: Use ByRefRefReturnType

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

@ -24,7 +24,7 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
get { return instance; } get { return instance; }
} }
string GetModifier(IDecoration decoration) string GetModifier(IEntity decoration)
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();

187
src/SharpDevelop.Tests.sln

@ -1,118 +1,122 @@
 
Microsoft Visual Studio Solution File, Format Version 10.00 Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008 # Visual Studio 2008
# SharpDevelop 3.0.0.2847 # SharpDevelop 3.0.0.2917
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{F94FA21D-78E6-410B-895D-E16D3E7240DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{C12B6EA7-2EFC-4368-B585-EC69EFCC3F97}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding.Tests", "AddIns\BackendBindings\Python\PythonBinding\Test\PythonBinding.Tests.csproj", "{23B517C9-1ECC-4419-A13F-0B7136D085CB}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks.Tests", "AddIns\BackendBindings\Python\Python.Build.Tasks\Test\Python.Build.Tasks.Tests.csproj", "{833904AB-3CD4-4071-9B48-5770E44685AA}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Tests", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Tests\WpfDesign.Tests.csproj", "{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Tests", "AddIns\Misc\Debugger\Debugger.Tests\Project\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "AddIns\BackendBindings\Boo\BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{C12B6EA7-2EFC-4368-B585-EC69EFCC3F97}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Tests", "AddIns\Misc\Debugger\Debugger.Tests\Project\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Tests", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Tests\WpfDesign.Tests.csproj", "{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{F94FA21D-78E6-410B-895D-E16D3E7240DB}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{5DA95927-5F2D-46D8-9265-D092734B6F0E}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "AddIns\BackendBindings\Boo\BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks.Tests", "AddIns\BackendBindings\Python\Python.Build.Tasks\Test\Python.Build.Tasks.Tests.csproj", "{833904AB-3CD4-4071-9B48-5770E44685AA}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding.Tests", "AddIns\BackendBindings\Python\PythonBinding\Test\PythonBinding.Tests.csproj", "{23B517C9-1ECC-4419-A13F-0B7136D085CB}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor.Tests", "Libraries\ICSharpCode.TextEditor\Test\ICSharpCode.TextEditor.Tests.csproj", "{6259D767-BA7C-484D-9472-68F350A20086}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor.Tests", "Libraries\ICSharpCode.TextEditor\Test\ICSharpCode.TextEditor.Tests.csproj", "{6259D767-BA7C-484D-9472-68F350A20086}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
EndProject EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "{970116b0-f96b-4257-8579-986b9cf086f5}" Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "{970116b0-f96b-4257-8579-986b9cf086f5}"
EndProject EndProject
@ -355,52 +359,53 @@ Global
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution GlobalSection(NestedProjects) = preSolution
{F94FA21D-78E6-410B-895D-E16D3E7240DB} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5} {5DA95927-5F2D-46D8-9265-D092734B6F0E} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{C9DE556D-325C-4544-B29F-16A9EB7C9830} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{388E7B64-0393-4EB4-A3E3-5C474F141853} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{C12B6EA7-2EFC-4368-B585-EC69EFCC3F97} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{A569DCC1-C608-45FD-B770-4F79335EF154} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5} {A569DCC1-C608-45FD-B770-4F79335EF154} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97} {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97} {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97} {44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97} {388E7B64-0393-4EB4-A3E3-5C474F141853} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{23B517C9-1ECC-4419-A13F-0B7136D085CB} = {F94FA21D-78E6-410B-895D-E16D3E7240DB} {1F261725-6318-4434-A1B1-6C70CE4CD324} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{833904AB-3CD4-4071-9B48-5770E44685AA} = {F94FA21D-78E6-410B-895D-E16D3E7240DB} {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {F94FA21D-78E6-410B-895D-E16D3E7240DB} {A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{F94FA21D-78E6-410B-895D-E16D3E7240DB} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {F94FA21D-78E6-410B-895D-E16D3E7240DB} {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {833904AB-3CD4-4071-9B48-5770E44685AA} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
{870115DD-960A-4406-A6B9-600BCDC36A03} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {23B517C9-1ECC-4419-A13F-0B7136D085CB} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{6259D767-BA7C-484D-9472-68F350A20086} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97}
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {C12B6EA7-2EFC-4368-B585-EC69EFCC3F97}
{C9DE556D-325C-4544-B29F-16A9EB7C9830} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
{6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {6259D767-BA7C-484D-9472-68F350A20086} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {870115DD-960A-4406-A6B9-600BCDC36A03} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

Loading…
Cancel
Save