Browse Source

Code completion improvements.

Made forms designer capable of loading classes that don't use fully qualified names for the fields.
Added solution that includes unit tests.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@330 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
a80f630082
  1. 13
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/MyNamespaceBuilder.cs
  2. 66
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/NRefactoryDesignerLoader.cs
  3. 9
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerSecondaryDisplayBinding.cs
  4. 35
      src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs
  5. 5
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeReference.cs
  6. 2
      src/Main/Base/Project/Src/Dom/IClass.cs
  7. 265
      src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
  8. 14
      src/Main/Base/Project/Src/Dom/Implementations/DefaultUsing.cs
  9. 11
      src/Main/Base/Project/Src/Dom/Implementations/SearchClassReturnType.cs
  10. 7
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
  11. 2
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
  12. 4
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs
  13. 9
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  14. 19
      src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs
  15. 4
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
  16. 9
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
  17. 1
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractClassImplementorCodeGenerator.cs
  18. 1
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/InterfaceImplementorCodeGenerator.cs
  19. 18
      src/Main/Base/Test/GenericResolverTests.cs
  20. 19
      src/Main/Base/Test/NRefactoryResolverTests.cs
  21. 2
      src/Main/Base/Test/ReflectionLayerTests.cs
  22. 10
      src/Main/Base/Test/SearchClassTests.cs
  23. 215
      src/SharpDevelop.WithTests.sln
  24. 2
      src/build.bat
  25. 2
      src/clean.bat
  26. 2
      src/releasebuild.bat

13
src/AddIns/BackendBindings/VBNetBinding/Project/Src/MyNamespaceBuilder.cs

@ -76,25 +76,30 @@ namespace VBNetBinding @@ -76,25 +76,30 @@ namespace VBNetBinding
c.Attributes.Add(new DefaultAttribute("Microsoft.VisualBasic.HideModuleNameAttribute"));
switch (project.OutputType) {
case OutputType.WinExe:
c.BaseTypes.Add("Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase");
c.BaseTypes.Add(CreateBaseType(cu, "Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase"));
break;
case OutputType.Exe:
c.BaseTypes.Add("Microsoft.VisualBasic.ApplicationServices.ConsoleApplicationBase");
c.BaseTypes.Add(CreateBaseType(cu, "Microsoft.VisualBasic.ApplicationServices.ConsoleApplicationBase"));
break;
default:
c.BaseTypes.Add("Microsoft.VisualBasic.ApplicationServices.ApplicationBase");
c.BaseTypes.Add(CreateBaseType(cu, "Microsoft.VisualBasic.ApplicationServices.ApplicationBase"));
break;
}
return c;
}
static IReturnType CreateBaseType(ICompilationUnit cu, string fullName)
{
return new GetClassReturnType(cu.ProjectContent, fullName);
}
static IClass CreateMyComputer(ICompilationUnit cu, IProject project, string ns)
{
DefaultClass c = new DefaultClass(cu, ns + ".MyComputer");
c.ClassType = ClassType.Class;
c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed | ModifierEnum.Partial;
c.Attributes.Add(new DefaultAttribute("Microsoft.VisualBasic.HideModuleNameAttribute"));
c.BaseTypes.Add("Microsoft.VisualBasic.Devices.Computer");
c.BaseTypes.Add(CreateBaseType(cu, "Microsoft.VisualBasic.Devices.Computer"));
return c;
}

66
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/NRefactoryDesignerLoader.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.Collections;
using System.Drawing;
using System.IO;
using System.ComponentModel.Design;
using System.CodeDom;
@ -15,7 +16,7 @@ using System.ComponentModel.Design.Serialization; @@ -15,7 +16,7 @@ using System.ComponentModel.Design.Serialization;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using ICSharpCode.Core;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
@ -86,14 +87,14 @@ namespace ICSharpCode.FormDesigner @@ -86,14 +87,14 @@ namespace ICSharpCode.FormDesigner
{
return isReloadNeeded | base.IsReloadNeeded();
}
public NRefactoryDesignerLoader(SupportedLanguages language, TextEditorControl textEditorControl)
{
this.language = language;
this.textEditorControl = textEditorControl;
}
public override void BeginLoad(IDesignerLoaderHost host)
public override void BeginLoad(IDesignerLoaderHost host)
{
this.loading = true;
typeResolutionService = (ITypeResolutionService)host.GetService(typeof(ITypeResolutionService));
@ -113,6 +114,10 @@ namespace ICSharpCode.FormDesigner @@ -113,6 +114,10 @@ namespace ICSharpCode.FormDesigner
ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(language, new StringReader(TextContent));
p.Parse();
// Try to fix the type names to fully qualified ones
ParseInformation parseInfo = ParserService.GetParseInformation(textEditorControl.FileName);
FixTypeNames(p.CompilationUnit, parseInfo.BestCompilationUnit);
CodeDOMVisitor visitor = new CodeDOMVisitor();
visitor.Visit(p.CompilationUnit, null);
@ -124,6 +129,61 @@ namespace ICSharpCode.FormDesigner @@ -124,6 +129,61 @@ namespace ICSharpCode.FormDesigner
return visitor.codeCompileUnit;
}
void FixTypeNames(object o, ICSharpCode.SharpDevelop.Dom.ICompilationUnit domCu)
{
if (domCu == null)
return;
CompilationUnit cu = o as CompilationUnit;
if (cu != null) {
foreach (object c in cu.Children) {
FixTypeNames(c, domCu);
}
return;
}
NamespaceDeclaration namespaceDecl = o as NamespaceDeclaration;
if (namespaceDecl != null) {
foreach (object c in namespaceDecl.Children) {
FixTypeNames(c, domCu);
}
return;
}
TypeDeclaration typeDecl = o as TypeDeclaration;
if (typeDecl != null) {
foreach (TypeReference tref in typeDecl.BaseTypes) {
FixTypeReference(tref, typeDecl.StartLocation, domCu);
}
foreach (object c in typeDecl.Children) {
FixTypeNames(c, domCu);
}
return;
}
FieldDeclaration fieldDecl = o as FieldDeclaration;
if (fieldDecl != null) {
FixTypeReference(fieldDecl.TypeReference, fieldDecl.StartLocation, domCu);
foreach (VariableDeclaration var in fieldDecl.Fields) {
if (var != null) {
FixTypeReference(var.TypeReference, fieldDecl.StartLocation, domCu);
}
}
}
}
void FixTypeReference(TypeReference type, Point location, ICSharpCode.SharpDevelop.Dom.ICompilationUnit domCu)
{
if (type == null)
return;
if (type.SystemType != type.Type)
return;
foreach (TypeReference tref in type.GenericTypes) {
FixTypeReference(tref, location, domCu);
}
ICSharpCode.SharpDevelop.Dom.IClass curType = domCu.GetInnermostClass(location.Y, location.X);
ICSharpCode.SharpDevelop.Dom.IReturnType rt = domCu.ProjectContent.SearchType(type.Type, curType, domCu, location.Y, location.X);
if (rt != null) {
type.Type = rt.FullyQualifiedName;
}
}
protected override void Write(CodeCompileUnit unit)
{
provider.GenerateCodeFromCompileUnit(unit, Console.Out, null);

9
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerSecondaryDisplayBinding.cs

@ -58,7 +58,14 @@ namespace ICSharpCode.FormDesigner @@ -58,7 +58,14 @@ namespace ICSharpCode.FormDesigner
public static bool BaseClassIsFormOrControl(IClass c)
{
IProjectContent pc = ProjectContentRegistry.GetExistingProjectContent(new AssemblyName("System.Windows.Forms"));
// Simple test for fully qualified name
foreach (IReturnType baseType in c.BaseTypes) {
if (baseType.Name == "System.Windows.Forms.Form" || baseType.Name == "System.Windows.Forms.UserControl") {
return true;
}
}
// Test for real base type (does not work while solution load thread is still running)
IProjectContent pc = ProjectContentRegistry.WinForms;
return c.IsTypeInInheritanceTree(pc.GetClass("System.Windows.Forms.Form")) ||
c.IsTypeInInheritanceTree(pc.GetClass("System.Windows.Forms.UserControl"));
}

35
src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs

@ -195,20 +195,37 @@ namespace ICSharpCode.NUnitPad @@ -195,20 +195,37 @@ namespace ICSharpCode.NUnitPad
}
foreach (IProject project in ProjectService.OpenSolution.Projects) {
string outputAssembly = project.OutputAssemblyFullPath;
try {
TestDomain testDomain = new TestDomain();
bool referenceFound = false;
foreach (ProjectItem item in project.Items) {
ReferenceProjectItem reference = item as ReferenceProjectItem;
if (reference != null) {
string include = reference.Include;
if (include.IndexOf(',') > 0) {
include = include.Substring(0, include.IndexOf(','));
}
if (string.Equals(include, "nunit.framework", StringComparison.InvariantCultureIgnoreCase)
|| string.Equals(include, "nunit.framework.dll", StringComparison.InvariantCultureIgnoreCase))
{
referenceFound = true;
break;
}
}
}
if (referenceFound) {
string outputAssembly = project.OutputAssemblyFullPath;
try {
TestDomain testDomain = new TestDomain();
// NUnitProject prj = NUnitProject.LoadProject(outputAssembly);
Test test = testDomain.Load(outputAssembly);
Test test = testDomain.Load(outputAssembly);
// TestSuiteBuilder builder = new TestSuiteBuilder();
// Console.WriteLine("Try to load '" + outputAssembly +"'");
// Test testDomain = builder.Build(outputAssembly);
testTreeView.PrintTests(outputAssembly, test, project);
} catch (Exception e) {
testTreeView.PrintTestErrors(outputAssembly, e);
testTreeView.PrintTests(outputAssembly, test, project);
} catch (Exception e) {
testTreeView.PrintTestErrors(outputAssembly, e);
}
}
}
}
}

5
src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeReference.cs

@ -81,6 +81,7 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -81,6 +81,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
set {
Debug.Assert(value != null);
type = value;
systemType = GetSystemType(type);
}
}
@ -163,9 +164,7 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -163,9 +164,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
public TypeReference(string type)
{
Debug.Assert(type != null);
this.systemType = GetSystemType(type);
this.type = type;
this.Type = type;
}
public TypeReference(string type, string systemType)

2
src/Main/Base/Project/Src/Dom/IClass.cs

@ -59,7 +59,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -59,7 +59,7 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
List<string> BaseTypes {
List<IReturnType> BaseTypes {
get;
}

265
src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs

@ -23,7 +23,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -23,7 +23,7 @@ namespace ICSharpCode.SharpDevelop.Dom
ICompilationUnit compilationUnit;
List<string> baseTypes = null;
List<IReturnType> baseTypes = null;
List<IClass> innerClasses = null;
List<IField> fields = null;
@ -125,10 +125,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -125,10 +125,10 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public List<string> BaseTypes {
public List<IReturnType> BaseTypes {
get {
if (baseTypes == null) {
baseTypes = new List<string>();
baseTypes = new List<IReturnType>();
}
return baseTypes;
}
@ -224,14 +224,32 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -224,14 +224,32 @@ namespace ICSharpCode.SharpDevelop.Dom
public IEnumerable<IClass> ClassInheritanceTree {
get {
if (UseInheritanceCache) {
if (inheritanceTreeCache == null) {
inheritanceTreeCache = new List<IClass>(new ClassInheritanceEnumerator(this));
}
if (inheritanceTreeCache != null)
return inheritanceTreeCache;
} else {
return new ClassInheritanceEnumerator(this);
}
List<IClass> visitedList = new List<IClass>();
Queue<IReturnType> typesToVisit = new Queue<IReturnType>();
bool enqueuedLastBaseType = false;
IClass currentClass = this;
do {
if (!visitedList.Contains(currentClass)) {
visitedList.Add(currentClass);
foreach (IReturnType type in currentClass.BaseTypes) {
typesToVisit.Enqueue(type);
}
}
IReturnType nextType;
if (typesToVisit.Count > 0) {
nextType = typesToVisit.Dequeue();
} else {
nextType = enqueuedLastBaseType ? null : GetBaseTypeByClassType();
enqueuedLastBaseType = true;
}
currentClass = (nextType != null) ? nextType.GetUnderlyingClass() : null;
} while (currentClass != null);
if (UseInheritanceCache)
inheritanceTreeCache = visitedList;
currentClass = ReflectionReturnType.Object.GetUnderlyingClass();
return visitedList;
}
}
@ -243,55 +261,53 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -243,55 +261,53 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
// used to prevent StackOverflowException because SearchType might search for inner classes in the base type
bool blockBaseClassSearch = false;
public IReturnType GetBaseType(int index)
{
if (blockBaseClassSearch)
return null;
blockBaseClassSearch = true;
try {
return ProjectContent.SearchType(BaseTypes[index], this, Region != null ? Region.BeginLine : 0, Region != null ? Region.BeginColumn : 0);
} finally {
blockBaseClassSearch = false;
}
return BaseTypes[index];
}
IClass cachedBaseClass;
public IReturnType BaseType {
get {
IClass baseClass = cachedBaseClass;
return (baseClass != null) ? baseClass.DefaultReturnType : null;
foreach (IReturnType baseType in this.BaseTypes) {
IClass baseClass = baseType.GetUnderlyingClass();
if (baseClass != null && baseClass.ClassType == this.ClassType)
return baseType;
}
return GetBaseTypeByClassType();
}
}
IReturnType GetBaseTypeByClassType()
{
switch (ClassType) {
case ClassType.Class:
if (FullyQualifiedName != "System.Object") {
return ReflectionReturnType.Object;
}
break;
case ClassType.Enum:
return ProjectContentRegistry.Mscorlib.GetClass("System.Enum").DefaultReturnType;
case ClassType.Delegate:
return ProjectContentRegistry.Mscorlib.GetClass("System.Delegate").DefaultReturnType;
case ClassType.Struct:
return ProjectContentRegistry.Mscorlib.GetClass("System.ValueType").DefaultReturnType;
}
return null;
}
public IClass BaseClass {
get {
Debug.Assert(ProjectContent != null);
if (BaseTypes.Count > 0) {
if (UseInheritanceCache && cachedBaseClass != null)
return cachedBaseClass;
IReturnType baseType = GetBaseType(0);
IClass baseClass = (baseType != null) ? baseType.GetUnderlyingClass() : null;
if (baseClass != null && baseClass.ClassType != ClassType.Interface) {
if (UseInheritanceCache)
cachedBaseClass = baseClass;
foreach (IReturnType baseType in this.BaseTypes) {
IClass baseClass = baseType.GetUnderlyingClass();
if (baseClass != null && baseClass.ClassType == this.ClassType)
return baseClass;
}
}
// no baseType found
switch (ClassType) {
case ClassType.Class:
if (FullyQualifiedName != "System.Object") {
return ReflectionReturnType.Object.GetUnderlyingClass();
}
break;
case ClassType.Module:
return null;
case ClassType.Enum:
return ProjectContentRegistry.Mscorlib.GetClass("System.Enum");
case ClassType.Delegate:
@ -308,9 +324,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -308,9 +324,6 @@ namespace ICSharpCode.SharpDevelop.Dom
if (possibleBaseClass == null) {
return false;
}
if (FullyQualifiedName == possibleBaseClass.FullyQualifiedName) {
return true;
}
foreach (IClass baseClass in this.ClassInheritanceTree) {
if (possibleBaseClass.FullyQualifiedName == baseClass.FullyQualifiedName)
return true;
@ -381,171 +394,5 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -381,171 +394,5 @@ namespace ICSharpCode.SharpDevelop.Dom
}
return types;
}
/*
public List<IMember> GetAccessibleMembers(IClass callingClass, bool showStatic)
{
List<IMember> members = new List<IMember>();
bool isClassInInheritanceTree = false;
if (callingClass != null)
isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(this);
foreach (IProperty p in Properties) {
if (p.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(p);
}
}
foreach (IMethod m in Methods) {
if (m.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(m);
}
}
foreach (IEvent e in Events) {
if (e.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(e);
}
}
foreach (IField f in Fields) {
if (f.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(f);
}
}
if (ClassType == ClassType.Interface && !showStatic) {
foreach (string s in BaseTypes) {
IReturnType baseType = ProjectContent.SearchType(s, this, Region != null ? Region.BeginLine : -1, Region != null ? Region.BeginColumn : -1);
List<IMember> baseTypeMembers = new List<IMember>();
if (baseType != null && baseType.GetUnderlyingClass() != null && baseType.GetUnderlyingClass().ClassType == ClassType.Interface) {
//members.AddRange(baseClass.GetAccessibleMembers(callingClass, showStatic).ToArray());
}
}
} else {
IClass baseClass = BaseClass;
if (baseClass != null) {
members.AddRange(baseClass.GetAccessibleMembers(callingClass, showStatic));
}
}
return members;
}
*/
public class ClassInheritanceEnumerator : IEnumerator<IClass>, IEnumerable<IClass>
{
IClass topLevelClass;
IClass currentClass = null;
private struct BaseType {
internal IClass parent;
internal string name;
internal BaseType(IClass parent, string name) {
this.parent = parent;
this.name = name;
}
}
Queue<BaseType> baseTypeQueue = new Queue<BaseType>();
List<IClass> finishedClasses = new List<IClass>();
public ClassInheritanceEnumerator(IClass topLevelClass)
{
this.topLevelClass = topLevelClass;
PutBaseClassesOnStack(topLevelClass);
baseTypeQueue.Enqueue(new BaseType(null, "System.Object"));
}
public IEnumerator<IClass> GetEnumerator()
{
return this;
}
IEnumerator IEnumerable.GetEnumerator()
{
return this;
}
void PutBaseClassesOnStack(IClass c)
{
foreach (string baseTypeName in c.BaseTypes) {
baseTypeQueue.Enqueue(new BaseType(c, baseTypeName));
}
}
public IClass Current {
get {
return currentClass;
}
}
object IEnumerator.Current {
get {
return currentClass;
}
}
bool first = true;
public bool MoveNext()
{
try {
if (first) {
first = false;
currentClass = topLevelClass;
return true;
}
if (baseTypeQueue.Count == 0) {
return false;
}
BaseType baseTypeStruct = baseTypeQueue.Dequeue();
IClass baseClass;
if (baseTypeStruct.parent == null) {
baseClass = ProjectContentRegistry.Mscorlib.GetClass(baseTypeStruct.name);
} else {
IReturnType baseType = baseTypeStruct.parent.ProjectContent.SearchType(baseTypeStruct.name, baseTypeStruct.parent, 1, 1);
baseClass = (baseType != null) ? baseType.GetUnderlyingClass() : null;
}
if (baseClass == null || finishedClasses.Contains(baseClass)) {
// prevent enumerating interfaces multiple times and endless loops when
// circular inheritance is found
return MoveNext();
} else {
currentClass = baseClass;
finishedClasses.Add(currentClass);
PutBaseClassesOnStack(currentClass);
return true;
}
} catch (Exception e) {
MessageService.ShowError(e);
}
return false;
}
public void Reset()
{
first = true;
baseTypeQueue.Clear();
finishedClasses.Clear();
PutBaseClassesOnStack(topLevelClass);
baseTypeQueue.Enqueue(new BaseType(null, "System.Object"));
}
public void Dispose()
{
baseTypeQueue = null;
finishedClasses = null;
topLevelClass = null;
currentClass = null;
}
}
}
}

14
src/Main/Base/Project/Src/Dom/Implementations/DefaultUsing.cs

@ -55,11 +55,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -55,11 +55,15 @@ namespace ICSharpCode.SharpDevelop.Dom
if (!entry.Value.IsDefaultReturnType)
continue;
string aliasString = entry.Key;
if (projectContent.Language.NameComparer.Equals(partitialNamespaceName, aliasString))
return entry.Value.FullyQualifiedName;
string nsName;
if (projectContent.Language.NameComparer.Equals(partitialNamespaceName, aliasString)) {
nsName = entry.Value.FullyQualifiedName;
if (projectContent.NamespaceExists(nsName))
return nsName;
}
if (partitialNamespaceName.Length > aliasString.Length) {
if (projectContent.Language.NameComparer.Equals(partitialNamespaceName.Substring(0, aliasString.Length + 1), aliasString + ".")) {
string nsName = nsName = String.Concat(entry.Value.FullyQualifiedName, partitialNamespaceName.Remove(0, aliasString.Length));
nsName = String.Concat(entry.Value.FullyQualifiedName, partitialNamespaceName.Remove(0, aliasString.Length));
if (projectContent.NamespaceExists(nsName)) {
return nsName;
}
@ -81,11 +85,13 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -81,11 +85,13 @@ namespace ICSharpCode.SharpDevelop.Dom
foreach (KeyValuePair<string, IReturnType> entry in aliases) {
string aliasString = entry.Key;
if (projectContent.Language.NameComparer.Equals(partitialTypeName, aliasString)) {
if (entry.Value.IsDefaultReturnType && entry.Value.GetUnderlyingClass() == null)
continue; // type not found, maybe entry was a namespace
return entry.Value;
}
if (partitialTypeName.Length > aliasString.Length) {
if (projectContent.Language.NameComparer.Equals(partitialTypeName.Substring(0, aliasString.Length + 1), aliasString + ".")) {
string className = String.Concat(entry.Value, partitialTypeName.Remove(0, aliasString.Length));
string className = entry.Value.FullyQualifiedName + partitialTypeName.Remove(0, aliasString.Length);
IClass c = projectContent.GetClass(className);
if (c != null) {
return c.DefaultReturnType;

11
src/Main/Base/Project/Src/Dom/Implementations/SearchClassReturnType.cs

@ -60,9 +60,18 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -60,9 +60,18 @@ namespace ICSharpCode.SharpDevelop.Dom
}
// TODO: Cache BaseType until a new CompilationUnit is generated (static counter in ParserService)
bool isSearching;
public override IReturnType BaseType {
get {
return pc.SearchType(name, declaringClass, caretLine, caretColumn);
if (isSearching)
return null;
try {
isSearching = true;
return pc.SearchType(name, declaringClass, caretLine, caretColumn);
} finally {
isSearching = false;
}
}
}

7
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -283,12 +283,13 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -283,12 +283,13 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
cu.Classes.Add(c);
}
currentClass.Push(c);
if (typeDeclaration.BaseTypes != null) {
foreach (AST.TypeReference type in typeDeclaration.BaseTypes) {
c.BaseTypes.Add(type.SystemType);
c.BaseTypes.Add(CreateReturnType(type));
}
}
currentClass.Push(c);
ConvertTemplates(typeDeclaration.Templates, c); // resolve constrains in context of the class
@ -343,7 +344,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -343,7 +344,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
DefaultClass c = new DefaultClass(cu, ClassType.Delegate, ConvertModifier(delegateDeclaration.Modifier, ModifierEnum.Internal), region, GetCurrentClass());
c.Documentation = GetDocumentation(region.BeginLine);
c.Attributes.AddRange(VisitAttributes(delegateDeclaration.Attributes));
c.BaseTypes.Add("System.Delegate");
c.BaseTypes.Add(ReflectionReturnType.CreatePrimitive(typeof(Delegate)));
if (currentClass.Count > 0) {
DefaultClass cur = GetCurrentClass();
cur.InnerClasses.Add(c);

2
src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs

@ -128,6 +128,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -128,6 +128,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public static int FindOverload(List<IMethodOrIndexer> methods, IReturnType[] types, bool forceParameterCount, out bool singleBestOverload)
{
singleBestOverload = true;
if (methods.Count == 0)
return -1;
if (methods.Count == 1)
return 0;

4
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs

@ -244,11 +244,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -244,11 +244,11 @@ namespace ICSharpCode.SharpDevelop.Dom
// set base classes
if (type.BaseType != null) { // it's null for System.Object ONLY !!!
BaseTypes.Add(type.BaseType.FullName);
BaseTypes.Add(ReflectionReturnType.Create(compilationUnit.ProjectContent, type.BaseType, false));
}
foreach (Type iface in type.GetInterfaces()) {
BaseTypes.Add(iface.FullName);
BaseTypes.Add(ReflectionReturnType.Create(compilationUnit.ProjectContent, iface, false));
}
}
}

9
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -126,8 +126,7 @@ namespace ICSharpCode.Core @@ -126,8 +126,7 @@ namespace ICSharpCode.Core
}
createdContents.Add(newContent);
} catch (Exception e) {
Console.WriteLine("Error while retrieving project contents from {0}:", project);
ICSharpCode.Core.MessageService.ShowError(e);
ICSharpCode.Core.MessageService.ShowError(e, "Error while retrieving project contents from " + project);
}
}
int workAmount = 0;
@ -137,8 +136,7 @@ namespace ICSharpCode.Core @@ -137,8 +136,7 @@ namespace ICSharpCode.Core
newContent.Initialize1();
workAmount += newContent.GetInitializationWorkAmount();
} catch (Exception e) {
Console.WriteLine("Error while initializing project references:" + newContent);
ICSharpCode.Core.MessageService.ShowError(e);
ICSharpCode.Core.MessageService.ShowError(e, "Error while initializing project references:" + newContent);
}
}
StatusBarService.ProgressMonitor.BeginTask("Parsing...", workAmount);
@ -147,8 +145,7 @@ namespace ICSharpCode.Core @@ -147,8 +145,7 @@ namespace ICSharpCode.Core
try {
newContent.Initialize2();
} catch (Exception e) {
Console.WriteLine("Error while initializing project contents:" + newContent);
ICSharpCode.Core.MessageService.ShowError(e);
ICSharpCode.Core.MessageService.ShowError(e, "Error while initializing project contents:" + newContent);
}
}
StatusBarService.ProgressMonitor.Done();

19
src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs

@ -51,6 +51,17 @@ namespace ICSharpCode.Core @@ -51,6 +51,17 @@ namespace ICSharpCode.Core
}
}
public static IProjectContent WinForms {
get {
lock (contents) {
if (contents.ContainsKey("System.Windows.Forms")) {
return contents["System.Windows.Forms"];
}
}
return GetProjectContentForReference(new ReferenceProjectItem(null, "System.Windows.Forms"));
}
}
public static IProjectContent GetExistingProjectContent(AssemblyName assembly)
{
lock (contents) {
@ -69,10 +80,10 @@ namespace ICSharpCode.Core @@ -69,10 +80,10 @@ namespace ICSharpCode.Core
public static IProjectContent GetProjectContentForReference(ReferenceProjectItem item)
{
if (item is ProjectReferenceProjectItem) {
if (((ProjectReferenceProjectItem)item).ReferencedProject == null)
{
return null;
}
if (((ProjectReferenceProjectItem)item).ReferencedProject == null)
{
return null;
}
return ParserService.GetProjectContent(((ProjectReferenceProjectItem)item).ReferencedProject);
}
lock (contents) {

4
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -49,7 +49,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -49,7 +49,9 @@ namespace ICSharpCode.SharpDevelop.Project
static ProjectService()
{
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += new EventHandler(ActiveWindowChanged);
if (WorkbenchSingleton.Workbench != null) {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += new EventHandler(ActiveWindowChanged);
}
FileService.FileRenamed += FileServiceFileRenamed;
FileService.FileRemoved += FileServiceFileRemoved;
}

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

@ -39,12 +39,11 @@ namespace ICSharpCode.Core @@ -39,12 +39,11 @@ namespace ICSharpCode.Core
foreach (IClass c in pc.Classes) {
int count = c.BaseTypes.Count;
for (int i = 0; i < count; i++) {
string baseType = c.BaseTypes[i];
if (pc.Language.NameComparer.Equals(baseType, baseClassName) ||
pc.Language.NameComparer.Equals(baseType, baseClassFullName)) {
string baseTypeName = c.BaseTypes[i].Name;
if (pc.Language.NameComparer.Equals(baseTypeName, baseClassName) ||
pc.Language.NameComparer.Equals(baseTypeName, baseClassFullName)) {
IReturnType possibleBaseClass = c.GetBaseType(i);
if (possibleBaseClass != null &&
possibleBaseClass.FullyQualifiedName == baseClass.FullyQualifiedName) {
if (possibleBaseClass.FullyQualifiedName == baseClass.FullyQualifiedName) {
list.Add(c);
}
}

1
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractClassImplementorCodeGenerator.cs

@ -16,7 +16,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -16,7 +16,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
{
public class AbstractClassImplementorCodeGenerator : CodeGenerator
{
ICompilationUnit unit;
public override string CategoryName {
get {

1
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/InterfaceImplementorCodeGenerator.cs

@ -16,7 +16,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -16,7 +16,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
{
public class InterfaceImplementorCodeGenerator : CodeGenerator
{
ICompilationUnit unit;
public override string CategoryName {
get {

18
src/Main/Base/Test/GenericResolverTests.cs

@ -116,6 +116,24 @@ class TestClass { @@ -116,6 +116,24 @@ class TestClass {
MemberResolveResult mrr = (MemberResolveResult) result;
Assert.AreEqual("TestClass.PublicField", mrr.ResolvedMember.FullyQualifiedName);
}
[Test]
public void ImportAliasClassResolveTest()
{
string program = @"using COL = System.Collections.Generic.List<string>;
class TestClass {
void Test() {
COL a = new COL();
}
}
";
TypeResolveResult rr = Resolve(program, "COL", 4) as TypeResolveResult;
Assert.AreEqual("System.Collections.Generic.List", rr.ResolvedClass.FullyQualifiedName, "COL");
Assert.AreEqual("System.Collections.Generic.List{System.String}", rr.ResolvedType.DotNetName, "COL");
LocalResolveResult lr = Resolve(program, "a", 5) as LocalResolveResult;
Assert.AreEqual("System.Collections.Generic.List{System.String}", lr.ResolvedType.DotNetName, "a");
}
#endregion
#region CodeCompletion inside generic classes

19
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -680,12 +680,29 @@ class TestClass { @@ -680,12 +680,29 @@ class TestClass {
public void ImportAliasNamespaceResolveTest()
{
NamespaceResolveResult ns;
string program = "using COL = System.Collections;\r\nclass A {\r\n}\r\n";
string program = "using COL = System.Collections;\r\nclass A {\r\n\r\n}\r\n";
ns = Resolve(program, "COL", 3) as NamespaceResolveResult;
Assert.AreEqual("System.Collections", ns.Name, "COL");
ns = Resolve(program, "COL.Generic", 3) as NamespaceResolveResult;
Assert.AreEqual("System.Collections.Generic", ns.Name, "COL.Generic");
}
[Test]
public void ImportAliasClassResolveTest()
{
string program = @"using COL = System.Collections.ArrayList;
class TestClass {
void Test() {
COL a = new COL();
}
}
";
TypeResolveResult rr = Resolve(program, "COL", 4) as TypeResolveResult;
Assert.AreEqual("System.Collections.ArrayList", rr.ResolvedClass.FullyQualifiedName, "COL");
LocalResolveResult lr = Resolve(program, "a", 5) as LocalResolveResult;
Assert.AreEqual("System.Collections.ArrayList", lr.ResolvedType.FullyQualifiedName, "a");
}
#endregion
#region Visibility tests

2
src/Main/Base/Test/ReflectionLayerTests.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Tests
Assert.IsNotNull(c, "c is null");
Assert.IsNotNull(c2, "c2 is null");
Assert.AreEqual(3, c.BaseTypes.Count); // 2 interfaces
Assert.AreEqual("System.Exception", c.BaseTypes[0]);
Assert.AreEqual("System.Exception", c.BaseTypes[0].FullyQualifiedName);
Assert.AreSame(c2, c.BaseClass);
List<IClass> subClasses = new List<IClass>();

10
src/Main/Base/Test/SearchClassTests.cs

@ -37,18 +37,18 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -37,18 +37,18 @@ namespace ICSharpCode.SharpDevelop.Tests
return @using;
}
IClass SearchType(string type)
IReturnType SearchType(string type)
{
ICompilationUnit cu = Prepare(LanguageProperties.CSharp);
IClass c = cu.ProjectContent.SearchType(type, null, cu, 1, 1);
IReturnType c = cu.ProjectContent.SearchType(type, null, cu, 1, 1);
Assert.IsNotNull(c, type + "not found");
return c;
}
IClass SearchTypeVB(string type)
IReturnType SearchTypeVB(string type)
{
ICompilationUnit cu = Prepare(LanguageProperties.VBNet);
IClass c = cu.ProjectContent.SearchType(type, null, cu, 1, 1);
IReturnType c = cu.ProjectContent.SearchType(type, null, cu, 1, 1);
Assert.IsNotNull(c, type + "not found");
return c;
}
@ -116,7 +116,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -116,7 +116,7 @@ namespace ICSharpCode.SharpDevelop.Tests
public void SearchArrayList()
{
ICompilationUnit cu = Prepare(LanguageProperties.CSharp);
IClass c = cu.ProjectContent.SearchType("Collections.ArrayList", null, cu, 1, 1);
IReturnType c = cu.ProjectContent.SearchType("Collections.ArrayList", null, cu, 1, 1);
Assert.IsNull(c, "Namespaces should not be imported in C#");
}

215
src/SharpDevelop.WithTests.sln

@ -0,0 +1,215 @@ @@ -0,0 +1,215 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.327
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormDesigner", "AddIns\DisplayBindings\FormDesigner\Project\FormDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
EndProject
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}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeListView", "AddIns\Misc\Debugger\TreeListView\Project\TreeListView.csproj", "{B08385CD-F0CC-488C-B4F4-EEB34B6D2688}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitPad", "AddIns\Misc\NUnitPad\Project\NUnitPad.csproj", "{A82F44D7-F336-4AD6-B2EE-D2C082D094EC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HighlightingEditor", "AddIns\Misc\HighlightingEditor\Project\HighlightingEditor.csproj", "{8A462940-E5E9-4E85-982D-D4C006EE31D4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.dll", "Tools\NUnit\src\ClientUtilities\util\nunit.util.dll.csproj", "{61CE9CE5-943E-44D4-A381-814DC1406767}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "{970116b0-f96b-4257-8579-986b9cf086f5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|Any CPU.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.Build.0 = Release|Any CPU
{98B10E98-003C-45A0-9587-119142E39986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{98B10E98-003C-45A0-9587-119142E39986}.Debug|Any CPU.Build.0 = Debug|Any CPU
{98B10E98-003C-45A0-9587-119142E39986}.Release|Any CPU.ActiveCfg = Release|Any CPU
{98B10E98-003C-45A0-9587-119142E39986}.Release|Any CPU.Build.0 = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Any CPU.Build.0 = Release|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Release|Any CPU.Build.0 = Release|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Release|Any CPU.Build.0 = Release|Any CPU
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Any CPU.Build.0 = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Any CPU.Build.0 = Release|Any CPU
{8A462940-E5E9-4E85-982D-D4C006EE31D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A462940-E5E9-4E85-982D-D4C006EE31D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A462940-E5E9-4E85-982D-D4C006EE31D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A462940-E5E9-4E85-982D-D4C006EE31D4}.Release|Any CPU.Build.0 = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Any CPU.Build.0 = Release|Any CPU
{A82F44D7-F336-4AD6-B2EE-D2C082D094EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A82F44D7-F336-4AD6-B2EE-D2C082D094EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Any CPU.Build.0 = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Any CPU.Build.0 = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Any CPU.Build.0 = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{8A462940-E5E9-4E85-982D-D4C006EE31D4} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{A82F44D7-F336-4AD6-B2EE-D2C082D094EC} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{61CE9CE5-943E-44D4-A381-814DC1406767} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{870115DD-960A-4406-A6B9-600BCDC36A03} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal

2
src/build.bat

@ -1,2 +1,2 @@ @@ -1,2 +1,2 @@
%windir%\microsoft.net\framework\v2.0.50215\msbuild
%windir%\microsoft.net\framework\v2.0.50215\msbuild SharpDevelop.sln
@IF %ERRORLEVEL% NEQ 0 PAUSE

2
src/clean.bat

@ -1,2 +1,2 @@ @@ -1,2 +1,2 @@
%windir%\microsoft.net\framework\v2.0.50215\msbuild /t:clean
%windir%\microsoft.net\framework\v2.0.50215\msbuild /t:clean SharpDevelop.sln
@IF %ERRORLEVEL% NEQ 0 PAUSE

2
src/releasebuild.bat

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
Tools\UpdateAssemblyInfo\bin\Debug\UpdateAssemblyInfo.exe Libraries
@IF %ERRORLEVEL% NEQ 0 PAUSE & EXIT
%windir%\microsoft.net\framework\v2.0.50215\msbuild /property:Configuration=Release
%windir%\microsoft.net\framework\v2.0.50215\msbuild /property:Configuration=Release SharpDevelop.sln
@IF %ERRORLEVEL% NEQ 0 PAUSE
Loading…
Cancel
Save