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