diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 92d30862ca..c56f5c13b0 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -427,7 +427,6 @@ - diff --git a/src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs b/src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs index 526fb49d4f..cd7dfdb017 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs @@ -71,7 +71,7 @@ namespace ICSharpCode.SharpDevelop.Dom public bool IsStatic { get { - return (modifiers & ModifierEnum.Static) == ModifierEnum.Static; + return ((modifiers & ModifierEnum.Static) == ModifierEnum.Static) || IsConst; } } diff --git a/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs index 75e63a41e0..10cee8e2a9 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs @@ -10,6 +10,9 @@ using System.Collections.Generic; namespace ICSharpCode.SharpDevelop.Dom { + /// + /// Abstract return type for return types that are not a . + /// [Serializable] public abstract class AbstractReturnType : IReturnType { diff --git a/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs index a185920d42..8fd47a48d4 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs @@ -12,6 +12,12 @@ using ICSharpCode.Core; namespace ICSharpCode.SharpDevelop.Dom { + /// + /// The ArrayReturnType wraps around another type, converting it into an array + /// with the specified number of dimensions. + /// The element type is only used as return type for the indexer; all methods and fields + /// are retrieved from System.Array. + /// public sealed class ArrayReturnType : ProxyReturnType { IReturnType elementType; diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs index 052812a4b0..6343613347 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs @@ -10,6 +10,11 @@ using System.Collections.Generic; namespace ICSharpCode.SharpDevelop.Dom { + /// + /// DefaultReturnType is a reference to a normal class or a reference to a generic class where + /// the type parameters are NOT specified. + /// E.g. "System.Int32", "System.Void", "System.String", "System.Collections.Generic.List" + /// [Serializable] public class DefaultReturnType : AbstractReturnType { @@ -26,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Dom { List l = new List(); foreach (IClass bc in c.ClassInheritanceTree) { - if (bc.ClassType != c.ClassType) + if (bc.ClassType == ClassType.Interface && c.ClassType != ClassType.Interface) continue; // ignore explicit interface implementations // do not add methods that were overridden @@ -53,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Dom { List l = new List(); foreach (IClass bc in c.ClassInheritanceTree) { - if (bc.ClassType != c.ClassType) + if (bc.ClassType == ClassType.Interface && c.ClassType != ClassType.Interface) continue; // ignore explicit interface implementations l.AddRange(bc.Properties); } @@ -64,7 +69,7 @@ namespace ICSharpCode.SharpDevelop.Dom { List l = new List(); foreach (IClass bc in c.ClassInheritanceTree) { - if (bc.ClassType != c.ClassType) + if (bc.ClassType == ClassType.Interface && c.ClassType != ClassType.Interface) continue; // ignore explicit interface implementations l.AddRange(bc.Fields); } @@ -75,7 +80,7 @@ namespace ICSharpCode.SharpDevelop.Dom { List l = new List(); foreach (IClass bc in c.ClassInheritanceTree) { - if (bc.ClassType != c.ClassType) + if (bc.ClassType == ClassType.Interface && c.ClassType != ClassType.Interface) continue; // ignore explicit interface implementations l.AddRange(bc.Events); } diff --git a/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs index ad07322844..9d0490f2ff 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs @@ -21,7 +21,8 @@ namespace ICSharpCode.SharpDevelop.Dom /// /// The LazyReturnType is the most used return type: - /// It is not bound to a class, but only resolved when necessary. + /// It is not bound to a class, but only resolved on demand. + /// The LazyReturnType is nearly always used to point at a . /// public sealed class LazyReturnType : ProxyReturnType { diff --git a/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs index f9e26f908e..355f0805b3 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs @@ -10,6 +10,9 @@ using System.Collections.Generic; namespace ICSharpCode.SharpDevelop.Dom { + /// + /// Base class for return types that wrap around other return types. + /// [Serializable] public abstract class ProxyReturnType : IReturnType { diff --git a/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs index b7b5023a85..ce82eda2e2 100644 --- a/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs +++ b/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs @@ -13,7 +13,10 @@ using ICSharpCode.Core; namespace ICSharpCode.SharpDevelop.Dom { /// - /// SpecificReturnType is a reference to class where the type parameters are specified. + /// SpecificReturnType is a reference to generic class that specifies the type parameters. + /// When getting the Members, this return type modifies the lists in such a way that the + /// s are replaced with the return types in the type parameters + /// collection. /// Example: List<string> /// public sealed class SpecificReturnType : ProxyReturnType diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs index c4264bf922..a31e47b2f1 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs @@ -74,7 +74,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver Debug.Assert(data is DefaultUsing); DefaultUsing us = (DefaultUsing)data; if (u.IsAlias) { - us.Aliases[u.Alias] = u.Name; + us.Aliases[u.Name] = u.Alias; } else { us.Usings.Add(u.Name); } diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs index 6a2569e099..41cb574af0 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs @@ -159,12 +159,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver IReturnType returnType; if (fieldReferenceExpression.FieldName == null || fieldReferenceExpression.FieldName == "") { if (fieldReferenceExpression.TargetObject is TypeReferenceExpression) { - // TODO: !!! - /*returnType = new ReturnType(((TypeReferenceExpression)fieldReferenceExpression.TargetObject).TypeReference); - IClass c = projectContent.GetClass(returnType.FullyQualifiedName); - if (c != null) - return new TypeResolveResult(callingClass, callingMember, returnType, c); - */ + returnType = TypeVisitor.CreateReturnType(((TypeReferenceExpression)fieldReferenceExpression.TargetObject).TypeReference, this); + if (returnType != null) { + IClass c = projectContent.GetClass(returnType.FullyQualifiedName); + if (c != null) + return new TypeResolveResult(callingClass, callingMember, returnType, c); + } } } returnType = fieldReferenceExpression.TargetObject.AcceptVisitor(typeVisitor, null) as IReturnType; @@ -361,21 +361,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver /// public string SearchNamespace(string name, ICompilationUnit unit) { - /*if (projectContent.NamespaceExists(name)) { - return name; - } - - if (CallingClass != null) { - string callspace = this.CallingClass.Namespace; - for (int split = callspace.Length; split > 0; split = callspace.LastIndexOf('.', split - 1)) { - string fullname = callspace.Substring(0, split) + "." + name; - if (projectContent.NamespaceExists(fullname)) { - return fullname; - } - } - } - */ - // TODO: look if all the stuff before is nessessary return projectContent.SearchNamespace(name, unit, caretLine, caretColumn); } @@ -582,41 +567,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver #endregion #endregion - /* - public ArrayList NewCompletion(int caretLine, int caretColumn, string fileName) - { - if (!IsCaseSensitive(language)) { - caseSensitive = false; - } - ArrayList result = new ArrayList(); - 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; - } - NRefactoryASTConvertVisitor cSharpVisitor = new NRefactoryASTConvertVisitor(parseInfo.MostRecentCompilationUnit != null ? parseInfo.MostRecentCompilationUnit.ProjectContent : null); - - cu = (ICompilationUnit)cSharpVisitor.Visit(fileCompilationUnit, null); - if (cu != null) { - callingClass = cu.GetInnermostClass(caretLine, caretColumn); - if (callingClass != null) { - result.AddRange(projectContent.GetNamespaceContents(callingClass.Namespace)); - } - } - result.AddRange(projectContent.GetNamespaceContents("")); - foreach (IUsing u in cu.Usings) { - if (u != null && (u.Region == null || u.Region.IsInside(caretLine, caretColumn))) { - foreach (string name in u.Usings) { - result.AddRange(projectContent.GetNamespaceContents(name)); - } - foreach (string alias in u.Aliases.Keys) { - result.Add(alias); - } - } - } - return result; - }*/ - public ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName) { if (!IsCaseSensitive(language)) { @@ -659,7 +609,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver 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(new ReturnType(v.TypeRef), name, ModifierEnum.None, new DefaultRegion(v.StartPos, v.EndPos), callingClass)); + result.Add(new DefaultField(TypeVisitor.CreateReturnType(v.TypeRef, this), name, ModifierEnum.None, new DefaultRegion(v.StartPos, v.EndPos), callingClass)); break; } } @@ -669,7 +619,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver foreach (IUsing u in cu.Usings) { if (u != null) { foreach (string name in u.Usings) { - result.AddRange(projectContent.GetNamespaceContents(name)); + foreach (object o in projectContent.GetNamespaceContents(name)) { + if (!(o is string)) + result.Add(o); + } } foreach (string alias in u.Aliases.Keys) { result.Add(alias); diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs index b9f6f4cef1..4c57f21c1c 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs @@ -142,7 +142,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver if (name != null) { string n = resolver.SearchNamespace(name + "." + fieldReferenceExpression.FieldName, null); if (n != null) { - return CreateNamespaceReturnType(n); + return new NamespaceReturnType(n); } IClass c = resolver.SearchType(name + "." + fieldReferenceExpression.FieldName, resolver.CallingClass, resolver.CompilationUnit); if (c != null) { @@ -179,7 +179,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver } string name = resolver.SearchNamespace(identifierExpression.Identifier, resolver.CompilationUnit); if (name != null && name != "") { - return CreateNamespaceReturnType(name); + return new NamespaceReturnType(name); } IClass c = resolver.SearchType(identifierExpression.Identifier, resolver.CallingClass, resolver.CompilationUnit); if (c != null) { @@ -384,9 +384,32 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver return t; } - IReturnType CreateNamespaceReturnType(string namespaceName) + class NamespaceReturnType : AbstractReturnType { - return null; + public NamespaceReturnType(string fullName) + { + this.FullyQualifiedName = fullName; + } + + public override List GetMethods() { + return new List(); + } + + public override List GetProperties() { + return new List(); + } + + public override List GetFields() { + return new List(); + } + + public override List GetEvents() { + return new List(); + } + + public override List GetIndexers() { + return new List(); + } } IReturnType CreateReturnType(Type type) diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs index 181dc22e00..6710d169ee 100644 --- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs +++ b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs @@ -20,7 +20,7 @@ namespace ICSharpCode.SharpDevelop.Dom BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | - //BindingFlags.NonPublic | + BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Public; @@ -38,9 +38,9 @@ namespace ICSharpCode.SharpDevelop.Dom get { List fields = new List(); foreach (FieldInfo field in type.GetFields(flags)) { - IField newField = new ReflectionField(field, this); - if (!newField.IsInternal) { - fields.Add(newField); + if (!field.IsPublic && !field.IsFamily) continue; + if (!field.IsSpecialName) { + fields.Add(new ReflectionField(field, this)); } } return fields; @@ -58,7 +58,9 @@ namespace ICSharpCode.SharpDevelop.Dom p = propertyInfo.GetIndexParameters(); } catch (Exception) {} if (p == null || p.Length == 0) { - properties.Add(new ReflectionProperty(propertyInfo, this)); + ReflectionProperty prop = new ReflectionProperty(propertyInfo, this); + if (prop.IsPublic || prop.IsProtected) + properties.Add(prop); } } @@ -90,18 +92,16 @@ namespace ICSharpCode.SharpDevelop.Dom List methods = new List(); foreach (ConstructorInfo constructorInfo in type.GetConstructors(flags)) { + if (!constructorInfo.IsPublic && !constructorInfo.IsFamily) continue; IMethod newMethod = new ReflectionMethod(constructorInfo, this); - if (!newMethod.IsInternal) { - methods.Add(newMethod); - } + methods.Add(newMethod); } foreach (MethodInfo methodInfo in type.GetMethods(flags)) { + if (!methodInfo.IsPublic && !methodInfo.IsFamily) continue; if (!methodInfo.IsSpecialName) { IMethod newMethod = new ReflectionMethod(methodInfo, this); - if (!newMethod.IsInternal) { - methods.Add(newMethod); - } + methods.Add(newMethod); } } return methods; @@ -113,11 +113,7 @@ namespace ICSharpCode.SharpDevelop.Dom List events = new List(); foreach (EventInfo eventInfo in type.GetEvents(flags)) { - IEvent newEvent = new ReflectionEvent(eventInfo, this); - - if (!newEvent.IsInternal) { - events.Add(newEvent); - } + events.Add(new ReflectionEvent(eventInfo, this)); } return events; } diff --git a/src/Main/Base/Project/Src/Dom/ResolveResult.cs b/src/Main/Base/Project/Src/Dom/ResolveResult.cs index b782a8cb42..9797c35b7b 100644 --- a/src/Main/Base/Project/Src/Dom/ResolveResult.cs +++ b/src/Main/Base/Project/Src/Dom/ResolveResult.cs @@ -71,32 +71,30 @@ namespace ICSharpCode.SharpDevelop.Dom } } - /* - public virtual IClass GetResolvedClass(IProjectContent projectContent) + public virtual ArrayList GetCompletionData(IProjectContent projectContent) { - if (resolvedType == null) - return null; - if (resolvedType.ArrayCount > 0) - return ProjectContentRegistry.GetMscorlibContent().GetClass("System.Array"); - return projectContent.GetClass(resolvedType.FullyQualifiedName); + return GetCompletionData(false); } - */ - public virtual ArrayList GetCompletionData(IProjectContent projectContent) + protected ArrayList GetCompletionData(bool showStatic) { if (resolvedType == null) return null; ArrayList res = new ArrayList(); foreach (IMethod m in resolvedType.GetMethods()) { - res.Add(m); + if (m.IsStatic == showStatic) + res.Add(m); } foreach (IEvent e in resolvedType.GetEvents()) { - res.Add(e); + if (e.IsStatic == showStatic) + res.Add(e); } foreach (IField f in resolvedType.GetFields()) { - res.Add(f); + if (f.IsStatic == showStatic) + res.Add(f); } foreach (IProperty p in resolvedType.GetProperties()) { - res.Add(p); + if (p.IsStatic == showStatic) + res.Add(p); } return res; } @@ -241,12 +239,12 @@ namespace ICSharpCode.SharpDevelop.Dom } } - /* - public override IClass GetResolvedClass(IProjectContent projectContent) + public override ArrayList GetCompletionData(IProjectContent projectContent) { - return resolvedClass; + ArrayList ar = GetCompletionData(true); + ar.AddRange(resolvedClass.InnerClasses); + return ar; } - */ public override FilePosition GetDefinitionPosition() { diff --git a/src/Main/Base/Project/Src/Services/ParserService/CaseInsentitiveProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/CaseInsentitiveProjectContent.cs deleted file mode 100644 index 0c733d2ff6..0000000000 --- a/src/Main/Base/Project/Src/Services/ParserService/CaseInsentitiveProjectContent.cs +++ /dev/null @@ -1,793 +0,0 @@ -//using System; -//using System.IO; -//using System.Threading; -//using System.Collections; -//using System.Collections.Utility; -//using System.Collections.Generic; -//using System.Diagnostics; -//using System.Reflection; -//using System.Runtime.InteropServices; -//using System.Runtime.Serialization; -//using System.Runtime.Serialization.Formatters; -//using System.Runtime.Serialization.Formatters.Binary; -//using System.Security; -//using System.Security.Permissions; -//using System.Security.Policy; -//using System.Xml; -//using System.Text; -// -//using ICSharpCode.Core; -//using ICSharpCode.SharpDevelop.Project; -//using ICSharpCode.SharpDevelop.Gui; -//using ICSharpCode.SharpDevelop.Dom; -// -//namespace ICSharpCode.Core -//{ -// public class CaseInsensitiveProjectContent : IProjectContent -// { -// const string CaseInsensitiveKey = "__CASE_INSENSITIVE_HASH"; -// -// List references = new List(); -// -// Dictionary classes = new Dictionary(); -// Dictionary caseInsensitiveClasses = new Dictionary(); -// -// Hashtable namespaces = new Hashtable(); -// Hashtable caseInsensitiveNamespaces = new Hashtable(); -// -// public static ProjectContent Create(IProject project) -// { -// ProjectContent newProjectContent = new ProjectContent(); -// newProjectContent.references.Add(typeof(object).Assembly); -// foreach (ProjectItem item in project.Items) { -// switch (item.ItemType) { -// case ItemType.Reference: -// newProjectContent.references.Add(Assembly.ReflectionOnlyLoadFrom(item.FileName)); -// break; -// case ItemType.Compile: -// ParserService.ParseFile(item.FileName); -// break; -// } -// } -// return newProjectContent; -// } -// -// public Hashtable AddClassToNamespaceList(IClass addClass) -// { -// string nSpace = addClass.Namespace; -// if (nSpace == null) { -// nSpace = String.Empty; -// } -// -// string[] path = nSpace.Split('.'); -// -// lock (namespaces) { -// Hashtable cur = namespaces; -// Hashtable caseInsensitiveCur = caseInsensitiveNamespaces; -// -// for (int i = 0; i < path.Length; ++i) { -// object curPath = cur[path[i]]; -// string lowerPath = path[i].ToLower(); -// if (curPath == null) { -// Hashtable hashTable = new Hashtable(); -// Hashtable caseInsensitivehashTable = new Hashtable(); -// cur[path[i]] = curPath = hashTable; -// caseInsensitiveCur[lowerPath] = caseInsensitivehashTable; -// caseInsensitivehashTable[CaseInsensitiveKey] = hashTable; -// } else { -// if (!(curPath is Hashtable)) { -// return null; -// } -// } -// cur = (Hashtable)curPath; -// -// if (!caseInsensitiveCur.ContainsKey(lowerPath)) { -// caseInsensitiveCur[lowerPath] = new Hashtable(); -// } -// caseInsensitiveCur = (Hashtable)caseInsensitiveCur[lowerPath]; -// } -// -// string name = addClass.Name == null ? "" : addClass.Name; -// -// caseInsensitiveCur[name.ToLower()] = cur[name] = addClass; -// return cur; -// } -// } -// -// public void UpdateCompilationUnit(ICompilationUnit parserOutput, string fileName, bool updateCommentTags) -// { -// if (updateCommentTags) { -// TaskService.RemoveCommentTasks(fileName); -// if (parserOutput.TagComments.Count > 0) { -// foreach (Tag tag in parserOutput.TagComments) { -// TaskService.CommentTasks.Add(new Task(fileName, tag.Key + tag.CommentString, tag.Region.BeginColumn, tag.Region.BeginLine, TaskType.Comment)); -// } -// TaskService.NotifyTaskChange(); -// } -// } -// -// ICompilationUnit cu = (ICompilationUnit)parserOutput; -// foreach (IClass c in cu.Classes) { -// AddClassToNamespaceList(c); -// } -// } -// -// void RemoveClasses(ICompilationUnit cu) -// { -// if (cu != null) { -// lock (classes) { -// foreach (IClass c in cu.Classes) { -// classes.Remove(c.FullyQualifiedName); -// caseInsensitiveClasses.Remove(c.FullyQualifiedName.ToLower()); -// } -// } -// } -// } -// -// #region Default Parser Layer dependent functions -// public IClass GetClass(string typeName) -// { -// return GetClass(typeName, true); -// } -// public IClass GetClass(string typeName, bool caseSensitive) -// { -// if (!caseSensitive) { -// typeName = typeName.ToLower(); -// if (caseInsensitiveClasses.ContainsKey(typeName)) { -// return caseInsensitiveClasses[typeName]; -// } -// } else { -// if (classes.ContainsKey(typeName)) { -// return classes[typeName]; -// } -// } -// -// // 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, caseSensitive); -// if (upperClass != null && upperClass.InnerClasses != null) { -// foreach (IClass c in upperClass.InnerClasses) { -// if (c.Name == innerName) { -// return c; -// } -// } -// } -// } -// return null; -// } -// -// public string[] GetNamespaceList(string subNameSpace) -// { -// return GetNamespaceList(subNameSpace, true); -// } -// public string[] GetNamespaceList(string subNameSpace, bool caseSensitive) -// { -// Console.WriteLine("GET NS LIST : " + subNameSpace); -// System.Diagnostics.Debug.Assert(subNameSpace != null); -// if (!caseSensitive) { -// subNameSpace = subNameSpace.ToLower(); -// } -// -// string[] path = subNameSpace.Split('.'); -// Hashtable cur = caseSensitive ? namespaces : caseInsensitiveNamespaces; -// -// if (subNameSpace.Length > 0) { -// for (int i = 0; i < path.Length; ++i) { -// if (!(cur[path[i]] is Hashtable)) { -// return null; -// } -// cur = (Hashtable)cur[path[i]]; -// } -// } -// -// if (!caseSensitive) { -// cur = (Hashtable)cur[CaseInsensitiveKey]; -// } -// -// ArrayList namespaceList = new ArrayList(); -// foreach (DictionaryEntry entry in cur) { -// if (entry.Value is Hashtable && entry.Key.ToString().Length > 0) { -// namespaceList.Add(entry.Key); -// } -// } -// -// return (string[])namespaceList.ToArray(typeof(string)); -// } -// -// public ArrayList GetNamespaceContents(string subNameSpace) -// { -// return GetNamespaceContents(subNameSpace, true); -// } -// -// public ArrayList GetNamespaceContents(string subNameSpace, bool caseSensitive) -// { -// Console.WriteLine("GET NS CONTENTS : " + subNameSpace); -// ArrayList namespaceList = new ArrayList(); -// if (subNameSpace == null) { -// return namespaceList; -// } -// if (!caseSensitive) { -// subNameSpace = subNameSpace.ToLower(); -// } -// -// string[] path = subNameSpace.Split('.'); -// Hashtable cur = caseSensitive ? namespaces : caseInsensitiveNamespaces; -// -// for (int i = 0; i < path.Length; ++i) { -// if (!(cur[path[i]] is Hashtable)) { -// foreach (DictionaryEntry entry in cur) { -// if (entry.Value is Hashtable) { -// namespaceList.Add(entry.Key); -// } -// } -// -// return namespaceList; -// } -// cur = (Hashtable)cur[path[i]]; -// } -// -// if (!caseSensitive) { -// cur = (Hashtable)cur[CaseInsensitiveKey]; -// } -// -// foreach (DictionaryEntry entry in cur) { -// if (entry.Value is Hashtable) { -// namespaceList.Add(entry.Key); -// } else { -// namespaceList.Add(entry.Value); -// } -// } -// return namespaceList; -// } -// -// public bool NamespaceExists(string name) -// { -// return NamespaceExists(name, true); -// } -// -// public bool NamespaceExists(string name, bool caseSensitive) -// { -// Console.WriteLine("GET NamespaceExists : " + name); -// if (name == null) { -// return false; -// } -// if (!caseSensitive) { -// name = name.ToLower(); -// } -// string[] path = name.Split('.'); -// Hashtable cur = caseSensitive ? namespaces : caseInsensitiveNamespaces; -// -// for (int i = 0; i < path.Length; ++i) { -// if (!(cur[path[i]] is Hashtable)) { -// return false; -// } -// cur = (Hashtable)cur[path[i]]; -// } -// return true; -// } -// -// /// -// /// Returns the innerst class in which the carret currently is, returns null -// /// if the carret is outside any class boundaries. -// /// -// public IClass GetInnermostClass(ICompilationUnit cu, int caretLine, int caretColumn) -// { -// if (cu != null) { -// foreach (IClass c in cu.Classes) { -// if (c != null && c.Region != null && c.Region.IsInside(caretLine, caretColumn)) { -// return GetInnermostClass(c, caretLine, caretColumn); -// } -// } -// } -// return null; -// } -// IClass GetInnermostClass(IClass curClass, int caretLine, int caretColumn) -// { -// if (curClass == null) { -// return null; -// } -// if (curClass.InnerClasses == null) { -// return curClass; -// } -// foreach (IClass c in curClass.InnerClasses) { -// if (c != null && c.Region != null && c.Region.IsInside(caretLine, caretColumn)) { -// return GetInnermostClass(c, caretLine, caretColumn); -// } -// } -// return curClass; -// } -// -// /// -// /// Returns all (nestet) classes in which the carret currently is exept -// /// the innermost class, returns an empty collection if the carret is in -// /// no class or only in the innermost class. -// /// the most outer class is the last in the collection. -// /// -// public List GetOuterClasses(ICompilationUnit cu, int caretLine, int caretColumn) -// { -// List classes = new List(); -// if (cu != null) { -// foreach (IClass c in cu.Classes) { -// if (c != null && c.Region != null && c.Region.IsInside(caretLine, caretColumn)) { -// if (c != GetInnermostClass(cu, caretLine, caretColumn)) { -// GetOuterClasses(classes, c, cu, caretLine, caretColumn); -// if (!classes.Contains(c)) { -// classes.Add(c); -// } -// } -// break; -// } -// } -// } -// -// return classes; -// } -// void GetOuterClasses(List classes, IClass curClass, ICompilationUnit cu, int caretLine, int caretColumn) -// { -// if (curClass != null) { -// foreach (IClass c in curClass.InnerClasses) { -// if (c != null && c.Region != null && c.Region.IsInside(caretLine, caretColumn)) { -// if (c != GetInnermostClass(cu, caretLine, caretColumn)) { -// GetOuterClasses(classes, c, cu, caretLine, caretColumn); -// if (!classes.Contains(c)) { -// classes.Add(c); -// } -// } -// break; -// } -// } -// } -// } -// public string SearchNamespace(string name, ICompilationUnit unit, int caretLine, int caretColumn) -// { -// return SearchNamespace(name, unit, caretLine, caretColumn, true); -// } -// -// /// -// /// use the usings to find the correct name of a namespace -// /// -// public string SearchNamespace(string name, ICompilationUnit unit, int caretLine, int caretColumn, bool caseSensitive) -// { -// if (NamespaceExists(name, caseSensitive)) { -// return name; -// } -// if (unit == null) { -// return null; -// } -// -// foreach (IUsing u in unit.Usings) { -// if (u != null && (u.Region == null || u.Region.IsInside(caretLine, caretColumn))) { -// string nameSpace = u.SearchNamespace(name, caseSensitive); -// if (nameSpace != null) { -// return nameSpace; -// } -// } -// } -// return null; -// } -// -// /// -// /// use the usings and the name of the namespace to find a class -// /// -// public IClass SearchType(string name, IClass curType, int caretLine, int caretColumn) -// { -// return SearchType(name, curType, caretLine, caretColumn, true); -// } -// public IClass SearchType(string name, IClass curType, int caretLine, int caretColumn, bool caseSensitive) -// { -// if (curType == null) { -// return SearchType(name, null, null, caretLine, caretColumn, caseSensitive); -// } -// return SearchType(name, curType, curType.CompilationUnit, caretLine, caretColumn, caseSensitive); -// } -// -// public IClass SearchType(string name, IClass curType, ICompilationUnit unit, int caretLine, int caretColumn) -// { -// return SearchType(name, curType, unit, caretLine, caretColumn, true); -// } -// -// /// -// /// use the usings and the name of the namespace to find a class -// /// -// public IClass SearchType(string name, IClass curType, ICompilationUnit unit, int caretLine, int caretColumn, bool caseSensitive) -// { -// if (name == null || name == String.Empty) { -// return null; -// } -// IClass c = GetClass(name, caseSensitive); -// if (c != null) { -// return c; -// } -// if (unit != null) { -// foreach (IUsing u in unit.Usings) { -// if (u != null && (u.Region == null || u.Region.IsInside(caretLine, caretColumn))) { -// c = u.SearchType(name, caseSensitive); -// if (c != null) { -// return c; -// } -// } -// } -// } -// if (curType == null) { -// return null; -// } -// string fullname = curType.FullyQualifiedName; -// string[] namespaces = fullname.Split('.'); -// StringBuilder curnamespace = new StringBuilder(); -// for (int i = 0; i < namespaces.Length; ++i) { -// curnamespace.Append(namespaces[i]); -// curnamespace.Append('.'); -// StringBuilder nms=new StringBuilder(curnamespace.ToString()); -// nms.Append(name); -// c = GetClass(nms.ToString(), caseSensitive); -// if (c != null) { -// return c; -// } -// } -////// Alex: try to find in namespaces referenced excluding system ones which were checked already -// string[] innamespaces=GetNamespaceList(""); -// foreach (string ns in innamespaces) { -//// if (Array.IndexOf(ParserService.assemblyList,ns)>=0) continue; -// ArrayList objs=GetNamespaceContents(ns); -// if (objs==null) continue; -// foreach (object o in objs) { -// if (o is IClass) { -// IClass oc=(IClass)o; -// // || oc.Name==name -// if (oc.FullyQualifiedName == name) { -// //Debug.WriteLine(((IClass)o).Name); -// /// now we can set completion data -// objs.Clear(); -// objs = null; -// return oc; -// } -// } -// } -// if (objs == null) { -// break; -// } -// } -// innamespaces=null; -////// Alex: end of mod -// return null; -// } -// -// /// -// /// Returns true, if class possibleBaseClass is in the inheritance tree from c -// /// -// public bool IsClassInInheritanceTree(IClass possibleBaseClass, IClass c) -// { -// return IsClassInInheritanceTree(possibleBaseClass, c, true); -// } -// -// public bool IsClassInInheritanceTree(IClass possibleBaseClass, IClass c, bool caseSensitive) -// { -// if (possibleBaseClass == null || c == null) { -// return false; -// } -// if (caseSensitive && possibleBaseClass.FullyQualifiedName == c.FullyQualifiedName || -// !caseSensitive && possibleBaseClass.FullyQualifiedName.ToLower() == c.FullyQualifiedName.ToLower()) { -// return true; -// } -// foreach (string baseClass in c.BaseTypes) { -// if (IsClassInInheritanceTree(possibleBaseClass, SearchType(baseClass, c, c.CompilationUnit, c.Region != null ? c.Region.BeginLine : -1, c.Region != null ? c.Region.BeginColumn : -1))) { -// return true; -// } -// } -// return false; -// } -// -// public IClass BaseClass(IClass curClass) -// { -// return BaseClass(curClass, true); -// } -// -// public IClass BaseClass(IClass curClass, bool caseSensitive) -// { -// foreach (string s in curClass.BaseTypes) { -// IClass baseClass = SearchType(s, curClass, curClass.Region != null ? curClass.Region.BeginLine : 0, curClass.Region != null ? curClass.Region.BeginColumn : 0, caseSensitive); -// if (baseClass != null && baseClass.ClassType != ClassType.Interface) { -// return baseClass; -// } -// } -// // no baseType found -// if (curClass.ClassType == ClassType.Enum) { -// return GetClass("System.Enum", true); -// } else if (curClass.ClassType == ClassType.Class) { -// if (curClass.FullyQualifiedName != "System.Object") { -// return GetClass("System.Object", true); -// } -// } else if (curClass.ClassType == ClassType.Delegate) { -// return GetClass("System.Delegate", true); -// } else if (curClass.ClassType == ClassType.Struct) { -// return GetClass("System.ValueType", true); -// } -// return null; -// } -// -// bool IsInnerClass(IClass c, IClass possibleInnerClass) -// { -// foreach (IClass inner in c.InnerClasses) { -// if (inner.FullyQualifiedName == possibleInnerClass.FullyQualifiedName) { -// return true; -// } -// if (IsInnerClass(inner, possibleInnerClass)) { -// return true; -// } -// } -// return false; -// } -// -// // TODO: check inner classes for protected members too -// // TODO: look for FullyQualifiedName == FullyQualifiedName. Must be replaced by a function wich pays attention to the case. -// // Look at NRefactoryResolver.IsSameName. Also pay attention if you can put this Function in IClass, and if you have to -// // compare the names instead of the FullyQualifiedNames -// public bool IsAccessible(IClass c, IDecoration member, IClass callingClass, bool isClassInInheritanceTree) -// { -// if ((member.Modifiers & ModifierEnum.Internal) == ModifierEnum.Internal) { -// return true; -// } -// if ((member.Modifiers & ModifierEnum.Public) == ModifierEnum.Public) { -// return true; -// } -// if ((member.Modifiers & ModifierEnum.Protected) == ModifierEnum.Protected && (isClassInInheritanceTree)) { -// return true; -// } -// return c != null && callingClass != null && (c.FullyQualifiedName == callingClass.FullyQualifiedName || IsInnerClass(c, callingClass)); -// } -// -// public bool MustBeShown(IClass c, IDecoration member, IClass callingClass, bool showStatic, bool isClassInInheritanceTree) -// { -// if (c != null && c.ClassType == ClassType.Enum) { -// return true; -// } -// if ((!showStatic && ((member.Modifiers & ModifierEnum.Static) == ModifierEnum.Static)) || -// ( showStatic && !(((member.Modifiers & ModifierEnum.Static) == ModifierEnum.Static) || -// ((member.Modifiers & ModifierEnum.Const) == ModifierEnum.Const)))) { // const is automatically static -// return false; -// } -// return IsAccessible(c, member, callingClass, isClassInInheritanceTree); -// } -// -// public ArrayList ListTypes(ArrayList types, IClass curType, IClass callingClass) -// { -// bool isClassInInheritanceTree = IsClassInInheritanceTree(curType, callingClass); -// foreach (IClass c in curType.InnerClasses) { -// if (((c.ClassType == ClassType.Class) || (c.ClassType == ClassType.Struct)) && -// IsAccessible(curType, c, callingClass, isClassInInheritanceTree)) { -// types.Add(c); -// } -// } -// IClass baseClass = BaseClass(curType); -// if (baseClass != null) { -// ListTypes(types, baseClass, callingClass); -// } -// return types; -// } -// -// public ArrayList ListMembers(ArrayList members, IClass curType, IClass callingClass, bool showStatic) -// { -// DateTime now = DateTime.Now; -// -// // enums must be handled specially, because there are several things defined we don't want to show -// // and enum members have neither the modifier nor the modifier public -// if (curType.ClassType == ClassType.Enum) { -// foreach (IField f in curType.Fields) { -// if (f.IsLiteral) { -// members.Add(f); -// } -// } -// ListMembers(members, GetClass("System.Enum", true), callingClass, showStatic); -// return members; -// } -// -// bool isClassInInheritanceTree = IsClassInInheritanceTree(curType, callingClass); -// -// if (showStatic) { -// foreach (IClass c in curType.InnerClasses) { -// if (IsAccessible(curType, c, callingClass, isClassInInheritanceTree)) { -// members.Add(c); -// } -// } -// } -// -// foreach (IProperty p in curType.Properties) { -// if (MustBeShown(curType, p, callingClass, showStatic, isClassInInheritanceTree)) { -// members.Add(p); -// } -// } -// -// foreach (IMethod m in curType.Methods) { -// if (MustBeShown(curType, m, callingClass, showStatic, isClassInInheritanceTree)) { -// members.Add(m); -// } -// } -// -// foreach (IEvent e in curType.Events) { -// if (MustBeShown(curType, e, callingClass, showStatic, isClassInInheritanceTree)) { -// members.Add(e); -// } -// } -// -// foreach (IField f in curType.Fields) { -// if (MustBeShown(curType, f, callingClass, showStatic, isClassInInheritanceTree)) { -// members.Add(f); -// } -// } -// -// if (curType.ClassType == ClassType.Interface && !showStatic) { -// foreach (string s in curType.BaseTypes) { -// IClass baseClass = SearchType(s, curType, curType.Region != null ? curType.Region.BeginLine : -1, curType.Region != null ? curType.Region.BeginColumn : -1); -// if (baseClass != null && baseClass.ClassType == ClassType.Interface) { -// ListMembers(members, baseClass, callingClass, showStatic); -// } -// } -// } else { -// IClass baseClass = BaseClass(curType); -// if (baseClass != null) { -// ListMembers(members, baseClass, callingClass, showStatic); -// } -// } -// -// return members; -// } -// -// public IMember SearchMember(IClass declaringType, string memberName) -// { -// if (declaringType == null || memberName == null || memberName.Length == 0) { -// return null; -// } -// foreach (IField f in declaringType.Fields) { -// if (f.Name == memberName) { -// return f; -// } -// } -// foreach (IProperty p in declaringType.Properties) { -// if (p.Name == memberName) { -// return p; -// } -// } -// foreach (IIndexer i in declaringType.Indexer) { -// if (i.Name == memberName) { -// return i; -// } -// } -// foreach (IEvent e in declaringType.Events) { -// if (e.Name == memberName) { -// return e; -// } -// } -// foreach (IMethod m in declaringType.Methods) { -// if (m.Name == memberName) { -// return m; -// } -// } -// if (declaringType.ClassType == ClassType.Interface) { -// foreach (string baseType in declaringType.BaseTypes) { -// int line = -1; -// int col = -1; -// if (declaringType.Region != null) { -// line = declaringType.Region.BeginLine; -// col = declaringType.Region.BeginColumn; -// } -// IClass c = SearchType(baseType, declaringType, line, col); -// if (c != null) { -// return SearchMember(c, memberName); -// } -// } -// } else { -// IClass c = BaseClass(declaringType); -// return SearchMember(c, memberName); -// } -// return null; -// } -// -// public Position GetPosition(string fullMemberName) -// { -// string[] name = fullMemberName.Split(new char[] {'.'}); -// string curName = name[0]; -// int i = 1; -// while (i < name.Length && NamespaceExists(curName)) { -// curName += '.' + name[i]; -// ++i; -// } -// Debug.Assert(i <= name.Length); -// IClass curClass = GetClass(curName); -// if (curClass == null) { -// return new Position(null, -1, -1); -// } -// ICompilationUnit cu = curClass.CompilationUnit; -// while (i < name.Length) { -// List innerClasses = curClass.InnerClasses; -// foreach (IClass c in innerClasses) { -// if (c.Name == name[i]) { -// curClass = c; -// break; -// } -// } -// if (curClass.Name != name[i]) { -// break; -// } -// ++i; -// } -// if (i >= name.Length) { -// return new Position(cu, curClass.Region != null ? curClass.Region.BeginLine : -1, curClass.Region != null ? curClass.Region.BeginColumn : -1); -// } -// IMember member = SearchMember(curClass, name[i]); -// if (member == null || member.Region == null) { -// return new Position(cu, -1, -1); -// } -// return new Position(cu, member.Region.BeginLine, member.Region.BeginColumn); -// } -// #endregion -// -// int GetAddedItems(ICompilationUnit original, ICompilationUnit changed, ICompilationUnit result) -// { -// int count = 0; -// result.Classes.Clear(); -// count += DiffUtility.GetAddedItems(original.Classes, changed.Classes, result.Classes); -// return count; -// } -// -// int GetRemovedItems(ICompilationUnit original, ICompilationUnit changed, ICompilationUnit result) -// { -// return GetAddedItems(changed, original, result); -// } -// -// -// void OnParseInformationAdded(ParseInformationEventArgs e) -// { -// if (ParseInformationAdded != null) { -// ParseInformationAdded(null, e); -// } -// } -// -// void OnParseInformationRemoved(ParseInformationEventArgs e) -// { -// if (ParseInformationRemoved != null) { -// ParseInformationRemoved(null, e); -// } -// } -// -// void OnParseInformationChanged(ParseInformationEventArgs e) -// { -// if (ParseInformationChanged != null) { -// ParseInformationChanged(null, e); -// } -// } -// -// public event ParseInformationEventHandler ParseInformationAdded; -// public event ParseInformationEventHandler ParseInformationRemoved; -// public event ParseInformationEventHandler ParseInformationChanged; -// } -//} -// -// -////readonly static string[] assemblyList = { -//// "Microsoft.VisualBasic", -//// "Microsoft.JScript", -//// "mscorlib", -//// "System.Data", -//// "System.Design", -//// "System.DirectoryServices", -//// "System.Drawing.Design", -//// "System.Drawing", -//// "System.EnterpriseServices", -//// "System.Management", -//// "System.Messaging", -//// "System.Runtime.Remoting", -//// "System.Runtime.Serialization.Formatters.Soap", -//// -//// "System.Security", -//// "System.ServiceProcess", -//// "System.Web.Services", -//// "System.Web", -//// "System.Windows.Forms", -//// "System", -//// "System.XML" -//// }; -//// -//// diff --git a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs index 388c3daf9e..5cfd89ae6b 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs @@ -150,8 +150,8 @@ namespace ICSharpCode.Core return cur; } } - - public void UpdateCompilationUnit(ICompilationUnit oldUnit, ICompilationUnit parserOutput, string fileName, bool updateCommentTags) + + public void UpdateCompilationUnit(ICompilationUnit oldUnit, ICompilationUnit parserOutput, string fileName, bool updateCommentTags) { if (updateCommentTags) { @@ -212,39 +212,6 @@ namespace ICSharpCode.Core return null; } - public string[] GetNamespaceList(string subNameSpace) - { -// Console.WriteLine("GetNamespaceList({0})", subNameSpace); - System.Diagnostics.Debug.Assert(subNameSpace != null); - List namespaceList = new List(); - - - foreach (IProjectContent content in referencedContents) { - string[] referencedNamespaces = content.GetNamespaceList(subNameSpace); - if (referencedNamespaces != null) { - namespaceList.AddRange(referencedNamespaces); - } - } - - string[] path = subNameSpace.Split('.'); - Hashtable cur = namespaces; - if (subNameSpace.Length > 0) { - for (int i = 0; i < path.Length; ++i) { - if (!(cur[path[i]] is Hashtable)) { - return namespaceList.ToArray(); - } - cur = (Hashtable)cur[path[i]]; - } - } - - foreach (DictionaryEntry entry in cur) { - if (entry.Value is Hashtable && entry.Key.ToString().Length > 0) { - namespaceList.Add(entry.Key.ToString()); - } - } - return namespaceList.ToArray(); - } - public ArrayList GetNamespaceContents(string subNameSpace) { ArrayList namespaceList = new ArrayList(); @@ -253,32 +220,38 @@ namespace ICSharpCode.Core } foreach (IProjectContent content in referencedContents) { - ArrayList referencedNamespaceContents = content.GetNamespaceContents(subNameSpace); - namespaceList.AddRange(referencedNamespaceContents.ToArray()); + foreach (object o in content.GetNamespaceContents(subNameSpace)) { + if (o is string) { + if (!namespaceList.Contains(o)) + namespaceList.Add(o); + } else { + namespaceList.Add(o); + } + } } - string[] path = subNameSpace.Split('.'); Hashtable cur = namespaces; - for (int i = 0; i < path.Length; ++i) { - if (!(cur[path[i]] is Hashtable)) { - foreach (DictionaryEntry entry in cur) { - if (entry.Value is Hashtable) { - namespaceList.Add(entry.Key); - } + if (subNameSpace.Length > 0) { + string[] path = subNameSpace.Split('.'); + 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 namespaceList; + cur = (Hashtable)cur[path[i]]; } - cur = (Hashtable)cur[path[i]]; } foreach (DictionaryEntry entry in cur) { if (entry.Value is Hashtable) { - namespaceList.Add(entry.Key); + if (!namespaceList.Contains(entry.Key)) + namespaceList.Add(entry.Key); } else { namespaceList.Add(entry.Value); } } + return namespaceList; } @@ -448,7 +421,7 @@ namespace ICSharpCode.Core return members; } - */ + */ public Position GetPosition(string fullMemberName) { diff --git a/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs index b86890f570..8c936ad81f 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs @@ -39,7 +39,6 @@ namespace ICSharpCode.Core IClass GetClass(string typeName); bool NamespaceExists(string name); - string[] GetNamespaceList(string subNameSpace); ArrayList GetNamespaceContents(string subNameSpace); string SearchNamespace(string name, ICompilationUnit unit, int caretLine, int caretColumn); diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs index 7c80228539..d0936a8511 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs @@ -115,8 +115,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor if (charTyped == ' ' && (expression.LastIndexOf("using")>=0 || expression.ToUpper().LastIndexOf("IMPORTS")>=0)) { if (expression == "using" || expression.EndsWith(" using") || expression.EndsWith("\tusing")|| expression.EndsWith("\nusing")|| expression.EndsWith("\rusing") || expression.ToUpper() == "IMPORTS" || expression.ToUpper().EndsWith(" IMPORTS") || expression.ToUpper().EndsWith("\tIMPORTS")|| expression.ToUpper().EndsWith("\nIMPORTS")|| expression.ToUpper().EndsWith("\rIMPORTS")) { - string[] namespaces = ParserService.CurrentProjectContent.GetNamespaceList(""); - AddResolveResults(namespaces); + AddResolveResults(ParserService.CurrentProjectContent.GetNamespaceContents("")); } } else { // we don't need to run parser on blank char here