Browse Source

[Completion] Filter out namespaces that only contain inaccessible

types.
newNRvisualizers
Mike Krüger 13 years ago
parent
commit
c0972c8c95
  1. 823
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 16
      ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs

823
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

File diff suppressed because it is too large Load Diff

16
ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs

@ -66,11 +66,25 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -66,11 +66,25 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
HashSet<string> usedNamespaces = new HashSet<string> ();
bool IsAccessible(MemberLookup lookup, INamespace ns)
{
if (ns.Types.Any (t => lookup.IsAccessible (t, false)))
return true;
foreach (var child in ns.ChildNamespaces)
if (IsAccessible (lookup, child))
return true;
return false;
}
public void AddNamespace (INamespace ns)
public void AddNamespace (MemberLookup lookup, INamespace ns)
{
if (usedNamespaces.Contains (ns.Name))
return;
if (!IsAccessible (lookup, ns)) {
usedNamespaces.Add (ns.Name);
return;
}
usedNamespaces.Add (ns.Name);
result.Add (Factory.CreateNamespaceCompletionData (ns));
}

Loading…
Cancel
Save