Browse Source

Fix SD-1692 - Code Competion shows instance members twice

pull/14/head
Daniel Grunwald 15 years ago
parent
commit
a7e0084e09
  1. 24
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CtrlSpaceResolveHelper.cs

24
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CtrlSpaceResolveHelper.cs

@ -47,31 +47,23 @@ namespace ICSharpCode.SharpDevelop.Dom
if (callingClass != null) { if (callingClass != null) {
AddTypeParametersForCtrlSpace(result, callingClass.TypeParameters); AddTypeParametersForCtrlSpace(result, callingClass.TypeParameters);
List<ICompletionEntry> members = new List<ICompletionEntry>(); List<ICompletionEntry> members = new List<ICompletionEntry>();
IReturnType t = callingClass.DefaultReturnType; IReturnType t = callingClass.DefaultReturnType;
members.AddRange(t.GetMethods()); var language = callingClass.ProjectContent.Language;
members.AddRange(t.GetFields()); foreach (IMember m in MemberLookupHelper.GetAccessibleMembers(t, callingClass, language, true)) {
members.AddRange(t.GetEvents()); if ((!inStatic || m.IsStatic) && language.ShowMember(m, m.IsStatic))
members.AddRange(t.GetProperties());
foreach (IMember m in members) {
if ((!inStatic || m.IsStatic) && m.IsAccessible(callingClass, true)) {
result.Add(m); result.Add(m);
}
} }
members.Clear(); members.Clear();
IClass c = callingClass.DeclaringType; IClass c = callingClass.DeclaringType;
while (c != null) { while (c != null) {
t = c.DefaultReturnType; t = c.DefaultReturnType;
members.AddRange(t.GetMethods()); foreach (IMember m in MemberLookupHelper.GetAccessibleMembers(t, c, language, true)) {
members.AddRange(t.GetFields()); if (language.ShowMember(m, true))
members.AddRange(t.GetEvents()); result.Add(m);
members.AddRange(t.GetProperties());
c = c.DeclaringType;
}
foreach (IMember m in members) {
if (m.IsStatic) {
result.Add(m);
} }
c = c.DeclaringType;
} }
} }
} }

Loading…
Cancel
Save