From d0400c2e1d0f8b6f05929629b45797312e37db96 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 7 May 2005 13:07:03 +0000 Subject: [PATCH] Fixed code completion for VB.NET. Implemented LanguageProperties to control case sensivity for project content. Fixed solution loading to first create all project contents and then create the references to each other. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@130 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- AddIns/ICSharpCode.SharpDevelop.addin | 2 +- .../file/CSharp/CSharp.Forms.Form.xft | 2 +- .../templates/file/VBNet/VBNet.Forms.Form.xft | 2 +- .../VBNetBinding/Project/Src/Parser/Parser.cs | 4 +- .../Project/Src/Project/VBNetProject.cs | 2 + .../Project/Src/VBNetCompletionBinding.cs | 19 ++ .../VBNetBinding/Project/VBNetBinding.addin | 9 +- .../VBNetBinding/Project/VBNetBinding.csproj | 1 + .../Src/Parser/Visitors/LookupTableVisitor.cs | 23 +- .../Project/ICSharpCode.SharpDevelop.csproj | 1 + src/Main/Base/Project/Src/Dom/IClass.cs | 4 +- .../Src/Dom/Implementations/DefaultClass.cs | 6 +- .../Dom/Implementations/DefaultReturnType.cs | 6 +- .../Project/Src/Dom/LanguageProperties.cs | 45 ++++ .../NRefactoryASTConvertVisitor.cs | 5 +- .../NRefactoryResolver/NRefactoryResolver.cs | 95 +++----- .../Src/Dom/NRefactoryResolver/TypeVisitor.cs | 2 +- .../Project/Src/Project/AbstractProject.cs | 12 + src/Main/Base/Project/Src/Project/IProject.cs | 4 + .../CaseSensitiveProjectContent.cs | 227 +++++++++++++----- .../Services/ParserService/IProjectContent.cs | 11 + .../Services/ParserService/ParserService.cs | 54 +++-- .../ParserService/ProjectContentRegistry.cs | 9 +- .../MethodInsightDataProvider.cs | 5 +- src/Main/Base/Test/NRefactoryResolverTests.cs | 4 +- src/SharpDevelop.sln | 82 +++---- 26 files changed, 425 insertions(+), 211 deletions(-) create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs create mode 100644 src/Main/Base/Project/Src/Dom/LanguageProperties.cs diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin index c1107f668b..9ccadae906 100644 --- a/AddIns/ICSharpCode.SharpDevelop.addin +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -1415,7 +1415,7 @@ - + diff --git a/data/templates/file/CSharp/CSharp.Forms.Form.xft b/data/templates/file/CSharp/CSharp.Forms.Form.xft index 3b10d34a7f..cb89f285d3 100644 --- a/data/templates/file/CSharp/CSharp.Forms.Form.xft +++ b/data/templates/file/CSharp/CSharp.Forms.Form.xft @@ -57,7 +57,7 @@ namespace ${StandardNamespace} // // ${ClassName} // - this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Text = "${ClassName}"; this.Name = "${ClassName}"; diff --git a/data/templates/file/VBNet/VBNet.Forms.Form.xft b/data/templates/file/VBNet/VBNet.Forms.Form.xft index aab7811e3f..490ab8e005 100644 --- a/data/templates/file/VBNet/VBNet.Forms.Form.xft +++ b/data/templates/file/VBNet/VBNet.Forms.Form.xft @@ -51,7 +51,7 @@ Namespace ${StandardNamespace} ' '${ClassName} ' - Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(292, 266) Me.Name = "${ClassName}" Me.Text = "${ClassName}" diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs index 16d4fd53fd..9449c761ee 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs @@ -109,7 +109,7 @@ namespace VBNetBinding.Parser public ICompilationUnit Parse(IProjectContent projectContent, string fileName, string fileContent) { - using (ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.CSharp, new StringReader(fileContent))) { + using (ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet, new StringReader(fileContent))) { p.Lexer.SpecialCommentTags = lexerTags; p.Parse(); @@ -138,7 +138,7 @@ namespace VBNetBinding.Parser public IResolver CreateResolver() { - return new ICSharpCode.SharpDevelop.Dom.NRefactoryResolver.NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguages.CSharp); + return new ICSharpCode.SharpDevelop.Dom.NRefactoryResolver.NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet); } ///////// IParser Interface END } diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs index 4d57ba8bda..14817fb73c 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs @@ -221,6 +221,7 @@ namespace VBNetBinding { this.Name = projectName; Language = "VBNet"; + LanguageProperties = ICSharpCode.SharpDevelop.Dom.LanguageProperties.VBNet; SetupProject(fileName); IdGuid = BaseConfiguration["ProjectGuid"]; } @@ -228,6 +229,7 @@ namespace VBNetBinding public VBNetProject(ProjectCreateInformation info) { Language = "VBNet"; + LanguageProperties = ICSharpCode.SharpDevelop.Dom.LanguageProperties.VBNet; Create(info); imports.Add(@"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets"); } diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs new file mode 100644 index 0000000000..0af023d6fd --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs @@ -0,0 +1,19 @@ +// +// +// +// +// +// + +using System; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + +namespace VBNetBinding +{ + public class VBNetCompletionBinding : DefaultCodeCompletionBinding + { + public VBNetCompletionBinding() : base(".vb") + { + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin index 6bc6f2107c..a51545cbe1 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin @@ -53,8 +53,13 @@ class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.Publish"/> - - + + + + + + diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj index 7c92c21c87..ddc4b09cc5 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj @@ -53,6 +53,7 @@ Always + diff --git a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs index 2d3f58f920..4af82a1d8f 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs @@ -1,6 +1,6 @@ using System; using System.Drawing; -using System.Collections; +using System.Collections.Generic; using ICSharpCode.NRefactory.Parser.AST; @@ -38,18 +38,29 @@ namespace ICSharpCode.NRefactory.Parser public class LookupTableVisitor : AbstractASTVisitor { - public Hashtable variables = new Hashtable(); + Dictionary> variables; + + public Dictionary> Variables { + get { + return variables; + } + } + + public LookupTableVisitor(StringComparer nameComparer) + { + variables = new Dictionary>(nameComparer); + } public void AddVariable(TypeReference typeRef, string name, Point startPos, Point endPos) { if (name == null || name.Length == 0) { return; } - ArrayList list; - if (variables[name] == null) { - variables[name] = list = new ArrayList(); + List list; + if (!variables.ContainsKey(name)) { + variables[name] = list = new List(); } else { - list = (ArrayList)variables[name]; + list = (List)variables[name]; } list.Add(new LocalLookupVariable(typeRef, startPos, endPos)); } diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index c56f5c13b0..426edc4211 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -645,6 +645,7 @@ + diff --git a/src/Main/Base/Project/Src/Dom/IClass.cs b/src/Main/Base/Project/Src/Dom/IClass.cs index e3ebf0171e..2e22f0a47e 100644 --- a/src/Main/Base/Project/Src/Dom/IClass.cs +++ b/src/Main/Base/Project/Src/Dom/IClass.cs @@ -99,9 +99,9 @@ namespace ICSharpCode.SharpDevelop.Dom } IClass GetInnermostClass(int caretLine, int caretColumn); - List GetAccessibleTypes(IClass callingClass); + //List GetAccessibleTypes(IClass callingClass); - bool IsTypeInInheritanceTree(IClass possibleBaseClass); + //bool IsTypeInInheritanceTree(IClass possibleBaseClass); //IMember SearchMember(string memberName); diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs index 856bd6fded..a45c5d2218 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs @@ -273,6 +273,7 @@ namespace ICSharpCode.SharpDevelop.Dom } } + /* public bool IsTypeInInheritanceTree(IClass possibleBaseClass) { if (possibleBaseClass == null) { @@ -291,7 +292,7 @@ namespace ICSharpCode.SharpDevelop.Dom } return false; } - + */ /* public IMember SearchMember(string memberName) { @@ -358,6 +359,7 @@ namespace ICSharpCode.SharpDevelop.Dom return this; } + /* public List GetAccessibleTypes(IClass callingClass) { List types = new List(); @@ -376,7 +378,7 @@ namespace ICSharpCode.SharpDevelop.Dom return types; } - /* + public ArrayList GetAccessibleMembers(IClass callingClass, bool showStatic) { ArrayList members = new ArrayList(); diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs index 6343613347..7fda69507d 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs @@ -34,8 +34,12 @@ namespace ICSharpCode.SharpDevelop.Dom if (bc.ClassType == ClassType.Interface && c.ClassType != ClassType.Interface) continue; // ignore explicit interface implementations - // do not add methods that were overridden foreach (IMethod m in bc.Methods) { + // do not add base class constructors + if (m.IsConstructor && c != bc) + continue; + + // do not add methods that were overridden bool ok = true; foreach (IMethod oldMethod in l) { if (string.Equals(oldMethod.Name, m.Name, StringComparison.InvariantCultureIgnoreCase)) { diff --git a/src/Main/Base/Project/Src/Dom/LanguageProperties.cs b/src/Main/Base/Project/Src/Dom/LanguageProperties.cs new file mode 100644 index 0000000000..3fbda4e9d8 --- /dev/null +++ b/src/Main/Base/Project/Src/Dom/LanguageProperties.cs @@ -0,0 +1,45 @@ +// +// +// +// +// +// + +using System; + +namespace ICSharpCode.SharpDevelop.Dom +{ + public class LanguageProperties + { + public readonly static LanguageProperties CSharp = new LanguageProperties(StringComparer.InvariantCulture); + public readonly static LanguageProperties VBNet = new VBNetProperties(); + + private class VBNetProperties : LanguageProperties + { + public VBNetProperties() : base(StringComparer.InvariantCultureIgnoreCase) {} + + public override bool ShowMember(IMember member, bool showStatic) + { + return member.IsStatic || !showStatic; + } + } + + StringComparer nameComparer; + + public LanguageProperties(StringComparer nameComparer) + { + this.nameComparer = nameComparer; + } + + public StringComparer NameComparer { + get { + return nameComparer; + } + } + + public virtual bool ShowMember(IMember member, bool showStatic) + { + return member.IsStatic == showStatic; + } + } +} diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs index a31e47b2f1..82fa7e8bdd 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs @@ -37,7 +37,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver ModifierEnum ConvertModifier(AST.Modifier m) { - return ConvertModifier(m, ModifierEnum.Private); + if (currentClass.Count > 0 && currentClass.Peek().ClassType == ClassType.Interface) + return ConvertModifier(m, ModifierEnum.Public); + else + return ConvertModifier(m, ModifierEnum.Private); } ModifierEnum ConvertModifier(AST.Modifier m, ModifierEnum defaultModifier) diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs index 41cb574af0..9d3b9d37bd 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs @@ -25,8 +25,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver ICSharpCode.NRefactory.Parser.LookupTableVisitor lookupTableVisitor; IProjectContent projectContent = null; - bool caseSensitive = true; - SupportedLanguages language = SupportedLanguages.CSharp; + SupportedLanguages language; int caretLine; int caretColumn; @@ -70,19 +69,25 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver } } + LanguageProperties languageProperties; + + public LanguageProperties LanguageProperties { + get { + return languageProperties; + } + } + public NRefactoryResolver(SupportedLanguages language) { this.language = language; this.projectContent = ParserService.CurrentProjectContent; - } - - bool IsCaseSensitive(SupportedLanguages language) - { switch (language) { case SupportedLanguages.CSharp: - return true; + languageProperties = LanguageProperties.CSharp; + break; case SupportedLanguages.VBNet: - return false; + languageProperties = LanguageProperties.VBNet; + break; default: throw new NotSupportedException("The language " + language + " is not supported in the resolver"); } @@ -93,15 +98,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver int caretColumn, string fileName) { - caseSensitive = IsCaseSensitive(language); - if (expression == null) { expression = ""; } expression = expression.TrimStart(null); - if (!caseSensitive) { - expression = expression.ToLower(); - } this.caretLine = caretLineNumber; this.caretColumn = caretColumn; @@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver } } } - lookupTableVisitor = new LookupTableVisitor(); + lookupTableVisitor = new LookupTableVisitor(languageProperties.NameComparer); lookupTableVisitor.Visit(fileCompilationUnit, null); NRefactoryASTConvertVisitor cSharpVisitor = new NRefactoryASTConvertVisitor(parseInfo.MostRecentCompilationUnit != null ? parseInfo.MostRecentCompilationUnit.ProjectContent : null); @@ -312,11 +312,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver bool IsSameName(string name1, string name2) { - if (IsCaseSensitive(language)) { - return name1 == name2; - } else { - return name1.ToLower() == name2.ToLower(); - } + return languageProperties.NameComparer.Equals(name1, name2); } bool IsInside(Point between, Point start, Point end) @@ -406,34 +402,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver } #endregion - #region SearchIndexer - public ArrayList SearchIndexer(IReturnType type) - { - // TODO: indexer for arrays - IClass curType = SearchType(type.FullyQualifiedName, null, null); - return SearchIndexer(new ArrayList(), curType); - } - - ArrayList SearchIndexer(ArrayList indexer, IClass curType) - { - if (curType == null) - return indexer; - bool isClassInInheritanceTree = false; - if (callingClass != null) - isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(curType); - foreach (IIndexer i in curType.Indexer) { - if (i.MustBeShown(callingClass, true, isClassInInheritanceTree) && !((i.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) { - indexer.Add(i); - } - } - IClass baseClass = curType.BaseClass; - if (baseClass != null) { - return SearchIndexer(indexer, baseClass); - } - return indexer; - } - #endregion - #region SearchMember // no methods or indexer public IReturnType SearchMember(IReturnType type, string memberName) @@ -552,8 +520,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver LocalLookupVariable SearchVariable(string name) { - ArrayList variables = (ArrayList)lookupTableVisitor.variables[IsCaseSensitive(language) ? name : name.ToLower()]; - if (variables == null || variables.Count <= 0) { + if (!lookupTableVisitor.Variables.ContainsKey(name)) + return null; + List variables = lookupTableVisitor.Variables[name]; + if (variables.Count <= 0) { return null; } @@ -569,16 +539,21 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver public ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName) { - if (!IsCaseSensitive(language)) { - caseSensitive = false; + ArrayList result; + if (language == SupportedLanguages.VBNet) { + result = new ArrayList(); + foreach (string primitive in TypeReference.GetPrimitiveTypesVB()) { + result.Add(Char.ToUpper(primitive[0]) + primitive.Substring(1)); + } + } else { + result = new ArrayList(TypeReference.GetPrimitiveTypes()); } - ArrayList result = new ArrayList(TypeReference.GetPrimitiveTypes()); ParseInformation parseInfo = ParserService.GetParseInformation(fileName); ICSharpCode.NRefactory.Parser.AST.CompilationUnit fileCompilationUnit = parseInfo.MostRecentCompilationUnit.Tag as ICSharpCode.NRefactory.Parser.AST.CompilationUnit; if (fileCompilationUnit == null) { return null; } - lookupTableVisitor = new LookupTableVisitor(); + lookupTableVisitor = new LookupTableVisitor(languageProperties.NameComparer); lookupTableVisitor.Visit(fileCompilationUnit, null); NRefactoryASTConvertVisitor cSharpVisitor = new NRefactoryASTConvertVisitor(parseInfo.MostRecentCompilationUnit != null ? parseInfo.MostRecentCompilationUnit.ProjectContent : null); @@ -602,20 +577,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver //} } } - foreach (string name in lookupTableVisitor.variables.Keys) { - ArrayList variables = (ArrayList)lookupTableVisitor.variables[name]; - if (variables != null && variables.Count > 0) { - foreach (LocalLookupVariable v in variables) { + foreach (KeyValuePair> pair in lookupTableVisitor.Variables) { + if (pair.Value != null && pair.Value.Count > 0) { + foreach (LocalLookupVariable v in pair.Value) { if (IsInside(new Point(caretColumn, caretLine), v.StartPos, v.EndPos)) { - // LocalLookupVariable in no known Type in DisplayBindings.TextEditor - // so add Field for the Variables - result.Add(new DefaultField(TypeVisitor.CreateReturnType(v.TypeRef, this), name, ModifierEnum.None, new DefaultRegion(v.StartPos, v.EndPos), callingClass)); + // convert to a field for display + result.Add(new DefaultField(TypeVisitor.CreateReturnType(v.TypeRef, this), pair.Key, ModifierEnum.None, new DefaultRegion(v.StartPos, v.EndPos), callingClass)); break; } } } } - result.AddRange(projectContent.GetNamespaceContents("")); + projectContent.AddNamespaceContents(result, "", languageProperties, true); foreach (IUsing u in cu.Usings) { if (u != null) { foreach (string name in u.Usings) { diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs index 4c57f21c1c..b9096dd97a 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs @@ -377,7 +377,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver static IReturnType WrapArray(IReturnType t, TypeReference reference) { if (reference.IsArrayType) { - for (int i = 0; i < reference.RankSpecifier.Length; ++i) { + for (int i = reference.RankSpecifier.Length - 1; i >= 0; --i) { t = new ArrayReturnType(t, reference.RankSpecifier[i] + 1); } } diff --git a/src/Main/Base/Project/Src/Project/AbstractProject.cs b/src/Main/Base/Project/Src/Project/AbstractProject.cs index 740ff03d81..f672fd7703 100644 --- a/src/Main/Base/Project/Src/Project/AbstractProject.cs +++ b/src/Main/Base/Project/Src/Project/AbstractProject.cs @@ -121,6 +121,18 @@ namespace ICSharpCode.SharpDevelop.Project } } + ICSharpCode.SharpDevelop.Dom.LanguageProperties languageProperties = ICSharpCode.SharpDevelop.Dom.LanguageProperties.CSharp; + + [Browsable(false)] + public ICSharpCode.SharpDevelop.Dom.LanguageProperties LanguageProperties { + get { + return languageProperties; + } + set { + languageProperties = value; + } + } + [Browsable(false)] public string Configuration { get { diff --git a/src/Main/Base/Project/Src/Project/IProject.cs b/src/Main/Base/Project/Src/Project/IProject.cs index a36d603a0e..0b7a4131cc 100644 --- a/src/Main/Base/Project/Src/Project/IProject.cs +++ b/src/Main/Base/Project/Src/Project/IProject.cs @@ -32,6 +32,10 @@ namespace ICSharpCode.SharpDevelop.Project get; } + ICSharpCode.SharpDevelop.Dom.LanguageProperties LanguageProperties { + get; + } + string FileName { get; } diff --git a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs index 5cfd89ae6b..c846bf7244 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs @@ -22,23 +22,67 @@ using ICSharpCode.SharpDevelop.Dom; namespace ICSharpCode.Core { - public class CaseSensitiveProjectContent : IProjectContent + public class DefaultProjectContent : IProjectContent { List referencedContents = new List(); - Dictionary classes = new Dictionary(); + List> classLists = new List>(); Hashtable namespaces = new Hashtable(); XmlDoc xmlDoc = new XmlDoc(); + public List> ClassLists { + get { + if (classLists.Count == 0) { + classLists.Add(new Dictionary(language.NameComparer)); + } + return classLists; + } + } + + Dictionary GetClasses(LanguageProperties language) + { + for (int i = 0; i < classLists.Count; ++i) { + if (classLists[i].Comparer == language.NameComparer) + return classLists[i]; + } + Dictionary d; + if (classLists.Count > 0) { + Dictionary oldList = classLists[0]; + d = new Dictionary(oldList.Count, language.NameComparer); + foreach (KeyValuePair pair in oldList) { + d.Add(pair.Key, pair.Value); + } + } else { + d = new Dictionary(language.NameComparer); + } + classLists.Add(d); + return d; + } + public XmlDoc XmlDoc { get { return xmlDoc; } } - + public ICollection Classes { get { - return classes.Values; + return ClassLists[0].Values; + } + } + + LanguageProperties language = LanguageProperties.CSharp; + + /// + /// Gets the properties of the language this project content was written in. + /// + public LanguageProperties Language { + get { + return language; + } + set { + if (value == null) throw new ArgumentNullException(); + language = value; } } @@ -70,13 +114,13 @@ namespace ICSharpCode.Core public static IProjectContent Create(Assembly assembly) { - CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent(); + DefaultProjectContent newProjectContent = new DefaultProjectContent(); ICompilationUnit assemblyCompilationUnit = new DefaultCompilationUnit(newProjectContent); foreach (Type type in assembly.GetTypes()) { if (!type.FullName.StartsWith("<") && type.IsPublic) { - newProjectContent.AddClassToNamespaceList(new ReflectionClass(assemblyCompilationUnit, type, null)); + newProjectContent.AddClassToNamespaceListInternal(new ReflectionClass(assemblyCompilationUnit, type, null)); } } string fileName = LookupLocalizedXmlDoc(assembly.Location); @@ -93,44 +137,78 @@ namespace ICSharpCode.Core return newProjectContent; } - public static IProjectContent Create(IProject project) + internal static IProjectContent CreateUninitalized(IProject project) { - CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent(); + DefaultProjectContent newProjectContent = new DefaultProjectContent(); + newProjectContent.project = project; + newProjectContent.language = project.LanguageProperties; newProjectContent.referencedContents.Add(ProjectContentRegistry.GetMscorlibContent()); + return newProjectContent; + } + + public static IProjectContent Create(IProject project) + { + IProjectContent newProjectContent = CreateUninitalized(project); + if (newProjectContent is DefaultProjectContent) { + ((DefaultProjectContent)newProjectContent).Initialize1(); + ((DefaultProjectContent)newProjectContent).Initialize2(); + } + return newProjectContent; + } + + IProject project; + // project is only used for initialization, the field is set to null after + // initialization has completed. + + internal void Initialize1() + { foreach (ProjectItem item in project.Items.ToArray()) { switch (item.ItemType) { case ItemType.Reference: case ItemType.ProjectReference: IProjectContent referencedContent = ProjectContentRegistry.GetProjectContentForReference(item as ReferenceProjectItem); if (referencedContent != null) { - newProjectContent.referencedContents.Add(referencedContent); - } - break; - case ItemType.Compile: - ParseInformation parseInfo = ParserService.ParseFile(item.FileName, null, true, false); - if (parseInfo != null) { - newProjectContent.UpdateCompilationUnit(null, parseInfo.BestCompilationUnit as ICompilationUnit, item.FileName, true); + referencedContents.Add(referencedContent); } break; } } - - return newProjectContent; + } + + internal void Initialize2() + { + foreach (ProjectItem item in project.Items.ToArray()) { + if (item.ItemType == ItemType.Compile) { + ParseInformation parseInfo = ParserService.ParseFile(item.FileName, null, true, false); + if (parseInfo != null) { + UpdateCompilationUnit(null, parseInfo.BestCompilationUnit as ICompilationUnit, item.FileName, true); + } + } + } + project = null; } public Hashtable AddClassToNamespaceList(IClass addClass) { - classes[addClass.FullyQualifiedName] = addClass; + lock (namespaces) { + return AddClassToNamespaceListInternal(addClass); + } + } + + Hashtable AddClassToNamespaceListInternal(IClass addClass) + { + foreach (Dictionary classes in ClassLists) { + classes[addClass.FullyQualifiedName] = addClass; + } string nSpace = addClass.Namespace; if (nSpace == null) { nSpace = String.Empty; } - string[] path = nSpace.Split('.'); + Hashtable cur = namespaces; - lock (namespaces) { - Hashtable cur = namespaces; - + if (nSpace.Length > 0) { + string[] path = nSpace.Split('.'); for (int i = 0; i < path.Length; ++i) { object curPath = cur[path[i]]; if (curPath == null) { @@ -143,12 +221,12 @@ namespace ICSharpCode.Core } cur = (Hashtable)curPath; } - - string name = addClass.Name == null ? "" : addClass.Name; - - cur[name] = addClass; - return cur; } + + string name = addClass.Name == null ? "" : addClass.Name; + + cur[name] = addClass; + return cur; } public void UpdateCompilationUnit(ICompilationUnit oldUnit, ICompilationUnit parserOutput, string fileName, bool updateCommentTags) @@ -158,53 +236,66 @@ namespace ICSharpCode.Core TaskService.UpdateCommentTags(fileName, parserOutput.TagComments); } - if (oldUnit != null) { - RemoveClasses(oldUnit); - } - - ICompilationUnit cu = (ICompilationUnit)parserOutput; - foreach (IClass c in cu.Classes) { - AddClassToNamespaceList(c); + lock (namespaces) { + if (oldUnit != null) { + RemoveClasses(oldUnit); + } + + ICompilationUnit cu = (ICompilationUnit)parserOutput; + foreach (IClass c in cu.Classes) { + AddClassToNamespaceListInternal(c); + } } } void RemoveClasses(ICompilationUnit cu) { if (cu != null) { - lock (classes) { - foreach (IClass c in cu.Classes) { + foreach (IClass c in cu.Classes) { + foreach (Dictionary classes in ClassLists) { classes.Remove(c.FullyQualifiedName); } } + // TODO: remove classes from namespace lists } } #region Default Parser Layer dependent functions public IClass GetClass(string typeName) { + return GetClass(typeName, language, true); + } + + public IClass GetClass(string typeName, LanguageProperties language, bool lookInReferences) + { // Console.WriteLine("GetClass({0}) is known:{1}", typeName, classes.ContainsKey(typeName)); + Dictionary classes = GetClasses(language); if (classes.ContainsKey(typeName)) { return classes[typeName]; } // Search in references: - foreach (IProjectContent content in referencedContents) { - IClass classFromContent = content.GetClass(typeName); - if (classFromContent != null) { - return classFromContent; + if (lookInReferences) { + foreach (IProjectContent content in referencedContents) { + IClass classFromContent = content.GetClass(typeName, language, false); + if (classFromContent != null) { + return classFromContent; + } } } // not found -> maybe nested type -> trying to find class that contains this one. int lastIndex = typeName.LastIndexOf('.'); if (lastIndex > 0) { - string innerName = typeName.Substring(lastIndex + 1); string outerName = typeName.Substring(0, lastIndex); - IClass upperClass = GetClass(outerName); - if (upperClass != null && upperClass.InnerClasses != null) { - foreach (IClass c in upperClass.InnerClasses) { - if (c.Name == innerName) { - return c; + if (classes.ContainsKey(outerName)) { + IClass upperClass = classes[outerName]; + if (upperClass.InnerClasses != null) { + string innerName = typeName.Substring(lastIndex + 1); + foreach (IClass c in upperClass.InnerClasses) { + if (language.NameComparer.Equals(c.Name, innerName)) { + return c; + } } } } @@ -215,18 +306,19 @@ namespace ICSharpCode.Core public ArrayList GetNamespaceContents(string subNameSpace) { ArrayList namespaceList = new ArrayList(); + AddNamespaceContents(namespaceList, subNameSpace, language, true); + return namespaceList; + } + + public void AddNamespaceContents(ArrayList list, string subNameSpace, LanguageProperties language, bool lookInReferences) + { if (subNameSpace == null) { - return namespaceList; + return; } - foreach (IProjectContent content in referencedContents) { - foreach (object o in content.GetNamespaceContents(subNameSpace)) { - if (o is string) { - if (!namespaceList.Contains(o)) - namespaceList.Add(o); - } else { - namespaceList.Add(o); - } + if (lookInReferences) { + foreach (IProjectContent content in referencedContents) { + content.AddNamespaceContents(list, subNameSpace, language, false); } } @@ -237,7 +329,7 @@ namespace ICSharpCode.Core for (int i = 0; i < path.Length; ++i) { if (!(cur[path[i]] is Hashtable)) { // namespace does not exist in this project content - return namespaceList; + return; } cur = (Hashtable)cur[path[i]]; } @@ -245,26 +337,31 @@ namespace ICSharpCode.Core foreach (DictionaryEntry entry in cur) { if (entry.Value is Hashtable) { - if (!namespaceList.Contains(entry.Key)) - namespaceList.Add(entry.Key); + if (!list.Contains(entry.Key)) + list.Add(entry.Key); } else { - namespaceList.Add(entry.Value); + if (!list.Contains(entry.Value)) + list.Add(entry.Value); } } - - return namespaceList; } public bool NamespaceExists(string name) { -// Console.WriteLine("NamespaceExists({0}) == ", name); + return NamespaceExists(name, language, true); + } + + public bool NamespaceExists(string name, LanguageProperties language, bool lookInReferences) + { if (name == null) { return false; } - foreach (IProjectContent content in referencedContents) { - if (content.NamespaceExists(name)) { - return true; + if (lookInReferences) { + foreach (IProjectContent content in referencedContents) { + if (content.NamespaceExists(name, language, false)) { + return true; + } } } diff --git a/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs index 8c936ad81f..25b1a3290c 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs @@ -32,6 +32,13 @@ namespace ICSharpCode.Core get; } + /// + /// Gets the properties of the language this project content was written in. + /// + LanguageProperties Language { + get; + } + string GetXmlDocumentation(string memberTag); Hashtable AddClassToNamespaceList(IClass addClass); @@ -41,6 +48,10 @@ namespace ICSharpCode.Core bool NamespaceExists(string name); ArrayList GetNamespaceContents(string subNameSpace); + IClass GetClass(string typeName, LanguageProperties language, bool lookInReferences); + bool NamespaceExists(string name, LanguageProperties language, bool lookInReferences); + void AddNamespaceContents(ArrayList list, string subNameSpace, LanguageProperties language, bool lookInReferences); + string SearchNamespace(string name, ICompilationUnit unit, int caretLine, int caretColumn); IClass SearchType(string name, IClass curType, int caretLine, int caretColumn); IClass SearchType(string name, IClass curType, ICompilationUnit unit, int caretLine, int caretColumn); diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs index 795285971a..ea2ab9fd03 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs @@ -39,7 +39,7 @@ namespace ICSharpCode.Core public static IProjectContent CurrentProjectContent { get { if (ProjectService.CurrentProject == null || !projectContents.ContainsKey(ProjectService.CurrentProject)) { - return new CaseSensitiveProjectContent(); + return defaultProjectContent; } return projectContents[ProjectService.CurrentProject]; } @@ -74,17 +74,37 @@ namespace ICSharpCode.Core static void LoadSolutionProjects() { + List createdContents = new List(); foreach (IProject project in ProjectService.OpenSolution.Projects) { try { - IProjectContent newContent = CaseSensitiveProjectContent.Create(project); + IProjectContent newContent = DefaultProjectContent.CreateUninitalized(project); lock (projectContents) { projectContents[project] = newContent; } + if (newContent is DefaultProjectContent) { + createdContents.Add((DefaultProjectContent)newContent); + } } catch (Exception e) { Console.WriteLine("Error while retrieving project contents from {0}:", project); ICSharpCode.Core.MessageService.ShowError(e); } } + foreach (DefaultProjectContent newContent in createdContents) { + try { + newContent.Initialize1(); + } catch (Exception e) { + Console.WriteLine("Error while initializing project references:" + newContent); + ICSharpCode.Core.MessageService.ShowError(e); + } + } + foreach (DefaultProjectContent newContent in createdContents) { + try { + newContent.Initialize2(); + } catch (Exception e) { + Console.WriteLine("Error while initializing project contents:" + newContent); + ICSharpCode.Core.MessageService.ShowError(e); + } + } } public static IProjectContent GetProjectContent(IProject project) @@ -190,7 +210,7 @@ namespace ICSharpCode.Core return null; } - static IProjectContent defaultProjectContent = new CaseSensitiveProjectContent(); + static IProjectContent defaultProjectContent = new DefaultProjectContent(); public static ParseInformation ParseFile(string fileName, string fileContent, bool updateCommentTags, bool fireUpdate) { @@ -256,8 +276,8 @@ namespace ICSharpCode.Core if (fireEvent) { try { OnParseInformationUpdated(new ParseInformationEventArgs(fileName, parseInformation, parserOutput)); - } catch (Exception e) { - Console.WriteLine(e); + } catch (Exception e) { + Console.WriteLine(e); } } @@ -270,7 +290,7 @@ namespace ICSharpCode.Core return parseInformation; } - + public static ParseInformation GetParseInformation(string fileName) { @@ -322,19 +342,19 @@ namespace ICSharpCode.Core } public static ResolveResult Resolve(string expression, - int caretLineNumber, - int caretColumn, - string fileName, - string fileContent) + int caretLineNumber, + int caretColumn, + string fileName, + string fileContent) { // added exception handling here to prevent silly parser exceptions from // being thrown and corrupting the textarea control //try { - IParser parser = GetParser(fileName); - if (parser != null) { - return parser.CreateResolver().Resolve(expression, caretLineNumber, caretColumn, fileName); - } - return null; + IParser parser = GetParser(fileName); + if (parser != null) { + return parser.CreateResolver().Resolve(expression, caretLineNumber, caretColumn, fileName); + } + return null; //} catch { // return null; //} @@ -355,13 +375,13 @@ namespace ICSharpCode.Core // { // List miscComments = new List(); // List dokuComments = new List(); -// +// // public override List MiscComments { // get { // return miscComments; // } // } -// +// // public override List DokuComments { // get { // return dokuComments; diff --git a/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs b/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs index 5cbf68abe9..4ccf035bec 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.Core if (contents.ContainsKey("mscorlib")) { return contents["mscorlib"]; } - contents["mscorlib"] = CaseSensitiveProjectContent.Create(typeof(object).Assembly); + contents["mscorlib"] = DefaultProjectContent.Create(typeof(object).Assembly); return contents["mscorlib"]; } @@ -47,24 +47,27 @@ namespace ICSharpCode.Core return contents[item.Include]; } + int time = Environment.TickCount; Assembly assembly = null; try { assembly = Assembly.ReflectionOnlyLoadFrom(item.FileName); if (assembly != null) { - contents[item.FileName] = CaseSensitiveProjectContent.Create(assembly); + contents[item.FileName] = DefaultProjectContent.Create(assembly); return contents[item.FileName]; } } catch (Exception) { try { assembly = LoadGACAssembly(item.Include, true); if (assembly != null) { - contents[item.Include] = CaseSensitiveProjectContent.Create(assembly); + contents[item.Include] = DefaultProjectContent.Create(assembly); return contents[item.Include]; } } catch (Exception e) { Console.WriteLine("Can't load assembly '{0}' : " + e.Message, item.Include); } + } finally { + Console.WriteLine("Loaded {0} in {1}ms", item.Include, Environment.TickCount - time); } return null; diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs index 1ccb2423b7..a98a48ceb1 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs @@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor if (result == null) return; foreach (IMethod method in result.ResolvedType.GetMethods()) { - if (method.IsConstructor) { + if (method.IsConstructor && !method.IsStatic) { methods.Add(method); } } @@ -85,8 +85,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor MethodResolveResult result = results as MethodResolveResult; if (result == null) return; + IProjectContent p = ParserService.CurrentProjectContent; foreach (IMethod method in result.ContainingType.GetMethods()) { - if (method.Name == result.Name) { + if (p.Language.NameComparer.Equals(method.Name, result.Name)) { methods.Add(method); } } diff --git a/src/Main/Base/Test/NRefactoryResolverTests.cs b/src/Main/Base/Test/NRefactoryResolverTests.cs index 4f2ca57bee..dcacff279c 100644 --- a/src/Main/Base/Test/NRefactoryResolverTests.cs +++ b/src/Main/Base/Test/NRefactoryResolverTests.cs @@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Tests { ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.CSharp, new StringReader(fileContent)); p.Parse(); - IProjectContent pc = new CaseSensitiveProjectContent(); + IProjectContent pc = new DefaultProjectContent(); lastPC = pc; NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc); visitor.Visit(p.CompilationUnit, null); @@ -36,7 +36,7 @@ namespace ICSharpCode.SharpDevelop.Tests { ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet, new StringReader(fileContent)); p.Parse(); - IProjectContent pc = new CaseSensitiveProjectContent(); + IProjectContent pc = new DefaultProjectContent(); lastPC = pc; NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc); visitor.Visit(p.CompilationUnit, null); diff --git a/src/SharpDevelop.sln b/src/SharpDevelop.sln index a4a1ed7e1b..f331e49834 100644 --- a/src/SharpDevelop.sln +++ b/src/SharpDevelop.sln @@ -1,35 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 9.00 # SharpDevelop 2.0.0.1 -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.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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}" -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}") = "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}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}" ProjectSection(SolutionItems) = postProject EndProjectSection @@ -76,6 +46,36 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\St 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}") = "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.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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -157,17 +157,6 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {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} - {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} {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} @@ -185,5 +174,16 @@ Global {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} + {AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {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} EndGlobalSection EndGlobal