diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index 4897520b12..bd6f08ae46 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -1384,7 +1384,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion for (var n = scope; n != null; n = n.Parent) { foreach (var pair in n.UsingAliases) { - wrapper.AddNamespace(pair.Key); + wrapper.AddAlias(pair.Key); } foreach (var u in n.Usings) { foreach (var type in u.Types) { @@ -1418,7 +1418,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } foreach (var curNs in n.Namespace.ChildNamespaces) { - wrapper.AddNamespace(curNs.Name); + wrapper.AddNamespace(curNs); } } } @@ -2173,7 +2173,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } } foreach (var ns in nr.Namespace.ChildNamespaces) { - result.AddNamespace(ns.Name); + result.AddNamespace(ns); } } else if (resolveResult is TypeResolveResult) { var type = resolveResult.Type; @@ -2194,7 +2194,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } foreach (var ns in Compilation.RootNamespace.ChildNamespaces) { - yield return factory.CreateNamespaceCompletionData(ns.Name); + yield return factory.CreateNamespaceCompletionData(ns); } } @@ -2306,7 +2306,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } foreach (var ns in nr.Namespace.ChildNamespaces) { - namespaceContents.AddNamespace(ns.Name); + namespaceContents.AddNamespace(ns); } return namespaceContents.Result; } diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs b/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs index ea8352ab67..5455faa85a 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs @@ -58,7 +58,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion { result.Add (data); } - + + public void AddCustom (string displayText, string description = null, string completionText = null) { result.Add (Factory.CreateLiteralCompletionData (displayText, description, completionText)); @@ -66,14 +67,20 @@ namespace ICSharpCode.NRefactory.CSharp.Completion HashSet usedNamespaces = new HashSet (); - public void AddNamespace (string name) + public void AddNamespace (INamespace ns) { - if (string.IsNullOrEmpty (name) || usedNamespaces.Contains (name)) + if (usedNamespaces.Contains (ns.Name)) return; - usedNamespaces.Add (name); - result.Add (Factory.CreateNamespaceCompletionData (name)); + usedNamespaces.Add (ns.Name); + result.Add (Factory.CreateNamespaceCompletionData (ns)); } - + + public void AddAlias(string alias) + { + result.Add (Factory.CreateLiteralCompletionData (alias)); + } + + HashSet usedTypes = new HashSet (); public ICompletionData AddType(IType type, string shortType) diff --git a/ICSharpCode.NRefactory.CSharp/Completion/ICompletionDataFactory.cs b/ICSharpCode.NRefactory.CSharp/Completion/ICompletionDataFactory.cs index a258dff812..95309db448 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/ICompletionDataFactory.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/ICompletionDataFactory.cs @@ -51,7 +51,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion /// ICompletionData CreateLiteralCompletionData (string title, string description = null, string insertText = null); - ICompletionData CreateNamespaceCompletionData (string name); + ICompletionData CreateNamespaceCompletionData (INamespace name); ICompletionData CreateVariableCompletionData (IVariable variable); diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs index 5c340b5e38..fa9773d82e 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs @@ -147,9 +147,9 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion return new CompletionData (title); } - public ICompletionData CreateNamespaceCompletionData (string name) + public ICompletionData CreateNamespaceCompletionData (INamespace ns) { - return new CompletionData (name); + return new CompletionData (ns.Name); } public ICompletionData CreateVariableCompletionData (ICSharpCode.NRefactory.TypeSystem.IVariable variable)