Browse Source

[Completion] Filter out namespaces that only contain inaccessible

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

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

File diff suppressed because it is too large Load Diff

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

@ -67,10 +67,24 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -67,10 +67,24 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
HashSet<string> usedNamespaces = new HashSet<string> ();
public void AddNamespace (INamespace ns)
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 (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